project(okular)

if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
    include(GenerateExportHeader)
    include(FeatureSummary)

    find_package(KDE4 4.22.0 REQUIRED)
    include(KDE4Defaults)
    include_directories(${KDE4_INCLUDES})
    add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
endif()

include_directories(
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_BINARY_DIR}
)

kde4_optional_find_package(Poppler)
set_package_properties(Poppler PROPERTIES
    DESCRIPTION "A PDF rendering library"
    URL "https://poppler.freedesktop.org"
    PURPOSE "Support for PDF files in Okular"
)

kde4_optional_find_package(LibSpectre 0.2)
set_package_properties(LibSpectre PROPERTIES
    DESCRIPTION "A PostScript rendering library"
    URL "http://libspectre.freedesktop.org/wiki/"
    PURPOSE "Support for PS files in Okular"
)

kde4_optional_find_package(DjVuLibre 3.5.17)
set_package_properties(DjVuLibre PROPERTIES
    DESCRIPTION "A library for dealing with DjVu formatted files"
    URL "http://djvulibre.djvuzone.org"
    PURPOSE "Support for DjVu files in Okular"
)

kde4_optional_find_package(Freetype)
set_package_properties(Freetype PROPERTIES
    DESCRIPTION "A font rendering engine"
    URL "http://www.freetype.org"
    PURPOSE "Provides freetype font support in the Okular DVI generator"
)

kde4_optional_find_package(EPub)
set_package_properties(EPub PROPERTIES
    DESCRIPTION "A library for reading EPub documents"
    URL "http://sourceforge.net/projects/ebook-tools"
    PURPOSE "Support for EPub documents in Okular"
)

kde4_optional_find_package(OpenSSL)
set_package_properties(OpenSSL PROPERTIES
    DESCRIPTION "Robust, commercial-grade, full-featured toolkit for general-purpose cryptography and secure communication"
    URL "https://www.openssl.org/"
    PURPOSE "Support encrypted Open Document in Okular"
)

find_program(GHOSTSCRIPT_EXECUTABLE NAMES gs)
add_feature_info(okular_gs
    GHOSTSCRIPT_EXECUTABLE
    "PostScript support in Okular"
)

find_program(LATEX_EXECUTABLE NAMES latex)
add_feature_info(okular_latex
    LATEX_EXECUTABLE
    "LaTeX support in Okular"
)

find_program(KPSEWHICH_EXECUTABLE NAMES kpsewhich)
add_feature_info(okular_kpsewhich
    KPSEWHICH_EXECUTABLE
    "DVI support in Okular"
)

find_program(DVIPNG_EXECUTABLE NAMES dvipng)
add_feature_info(okular_dvipng
    DVIPNG_EXECUTABLE
    "DVI support in Okular"
)

option(
    OKULAR_FORCE_DRM
    "Forces okular to check for DRM to decide if you can copy/print protected pdf. (default=no)"
    OFF
)
kde4_bool_to_01(OKULAR_FORCE_DRM _OKULAR_FORCE_DRM)

configure_file(
   ${CMAKE_CURRENT_SOURCE_DIR}/config-okular.h.cmake
   ${CMAKE_CURRENT_BINARY_DIR}/config-okular.h
)

add_subdirectory( ui )
add_subdirectory( shell )
add_subdirectory( generators )

if(ENABLE_TESTING)
    add_subdirectory( tests )
endif()

set(MATH_LIB m)

# okularcore

set(okularcore_SRCS
    core/action.cpp
    core/annotations.cpp
    core/area.cpp
    core/audioplayer.cpp
    core/bookmarkmanager.cpp
    core/chooseenginedialog.cpp
    core/document.cpp
    core/documentcommands.cpp
    core/fontinfo.cpp
    core/form.cpp
    core/generator.cpp
    core/generator_p.cpp
    core/misc.cpp
    core/movie.cpp
    core/observer.cpp
    core/page.cpp
    core/pagecontroller.cpp
    core/pagesize.cpp
    core/pagetransition.cpp
    core/rotationjob.cpp
    core/sound.cpp
    core/sourcereference.cpp
    core/textdocumentgenerator.cpp
    core/textdocumentsettings.cpp
    core/textpage.cpp
    core/tilesmanager.cpp
    core/utils.cpp
    core/view.cpp
    core/chooseenginewidget.ui
    core/textdocumentsettings.ui
)

install(
    FILES
    core/action.h
    core/annotations.h
    core/area.h
    core/document.h
    core/fontinfo.h
    core/form.h
    core/generator.h
    core/global.h
    core/page.h
    core/pagesize.h
    core/pagetransition.h
    core/sound.h
    core/sourcereference.h
    core/textdocumentgenerator.h
    core/textdocumentsettings.h
    core/textpage.h
    core/tile.h
    core/utils.h
    core/version.h
    core/observer.h
    ${CMAKE_CURRENT_BINARY_DIR}/settings_core.h
    ${CMAKE_CURRENT_BINARY_DIR}/okular_export.h
    DESTINATION ${KDE4_INCLUDE_INSTALL_DIR}/okular/core
    COMPONENT Devel
)

install(
    FILES
    interfaces/configinterface.h
    interfaces/guiinterface.h
    interfaces/printinterface.h
    interfaces/saveinterface.h
    interfaces/viewerinterface.h
    DESTINATION ${KDE4_INCLUDE_INSTALL_DIR}/okular/interfaces
    COMPONENT Devel
)

kde4_add_kcfg_files(okularcore_SRCS ${PROJECT_SOURCE_DIR}/conf/settings_core.kcfgc )

add_library(okularcore SHARED ${okularcore_SRCS})

target_link_libraries(okularcore
    ${KDE4_KIO_LIBS}
    ${KDE4_KARCHIVE_LIBS}
    ${MATH_LIB}
    KDE4::kmediaplayer
)

set_target_properties(okularcore PROPERTIES
    VERSION ${GENERIC_LIB_VERSION}
    SOVERSION ${GENERIC_LIB_SOVERSION}
)

generate_export_header(okularcore BASE_NAME okular)

install(TARGETS okularcore ${INSTALL_TARGETS_DEFAULT_ARGS} )

install(FILES conf/okular.kcfg DESTINATION ${KDE4_KCFG_INSTALL_DIR})
install(FILES conf/okular_core.kcfg DESTINATION ${KDE4_KCFG_INSTALL_DIR})
install(FILES core/okularGenerator.desktop DESTINATION ${KDE4_SERVICETYPES_INSTALL_DIR})

# okularpart

set(okularpart_SRCS
    part.cpp
    extensions.cpp
    conf/preferencesdialog.cpp
    conf/dlgaccessibility.cpp
    conf/dlgdebug.cpp
    conf/dlgeditor.cpp
    conf/dlggeneral.cpp
    conf/dlgannotations.cpp
    conf/dlgperformance.cpp
    conf/dlgpresentation.cpp
    conf/widgetannottools.cpp
    ui/embeddedfilesdialog.cpp
    ui/annotwindow.cpp
    ui/annotationmodel.cpp
    ui/annotationpopup.cpp
    ui/annotationpropertiesdialog.cpp
    ui/annotationproxymodels.cpp
    ui/annotationtools.cpp
    ui/annotationwidgets.cpp
    ui/bookmarklist.cpp
    ui/findbar.cpp
    ui/formwidgets.cpp
    ui/guiutils.cpp
    ui/ktreeviewsearchline.cpp
    ui/latexrenderer.cpp
    ui/minibar.cpp
    ui/pageitemdelegate.cpp
    ui/pagepainter.cpp
    ui/pagesizelabel.cpp
    ui/pageviewannotator.cpp
    ui/pageview.cpp
    ui/magnifierview.cpp
    ui/pageviewutils.cpp
    ui/presentationsearchbar.cpp
    ui/presentationwidget.cpp
    ui/propertiesdialog.cpp
    ui/searchlineedit.cpp
    ui/searchwidget.cpp
    ui/sidebar.cpp
    ui/side_reviews.cpp
    ui/snapshottaker.cpp
    ui/thumbnaillist.cpp
    ui/toc.cpp
    ui/tocmodel.cpp
    ui/toolaction.cpp
    ui/tts.cpp
    ui/videowidget.cpp
    conf/dlgaccessibilitybase.ui
    conf/dlgeditorbase.ui
    conf/dlggeneralbase.ui
    conf/dlgannotationsbase.ui
    conf/dlgperformancebase.ui
    conf/dlgpresentationbase.ui
)

kde4_add_kcfg_files(okularpart_SRCS ${PROJECT_SOURCE_DIR}/conf/settings.kcfgc )

kde4_add_plugin(okularpart ${okularpart_SRCS})

target_link_libraries(okularpart
    ${KDE4_KPARTS_LIBS}
    ${KDE4_KPASSWDSTORE_LIBS}
    ${KDE4_KSPEECH_LIBS}
    ${KDE4_KARCHIVE_LIBS}
    ${QT_QTGUI_LIBRARY}
    ${QT_QTDBUS_LIBRARY}
    ${MATH_LIB}
    okularcore
)

generate_export_header(okularpart)

install(TARGETS okularpart DESTINATION ${KDE4_PLUGIN_INSTALL_DIR})


########### install files ###############

install(FILES okular_part.desktop DESTINATION ${KDE4_SERVICES_INSTALL_DIR})
install(FILES part.rc part-viewermode.rc DESTINATION ${KDE4_DATA_INSTALL_DIR}/okular)

if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
    feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
endif()
