OSDN Git Service

generic: prepare for Katie changes
[kde/kde-extraapps.git] / okular / CMakeLists.txt
index 6fdbb07..a5149dd 100644 (file)
 project(okular)
 
-find_package(KDE4 REQUIRED)
-include(KDE4Defaults)
-include(MacroLibrary)
-include(MacroOptionalAddSubdirectory)
+if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+    include(GenerateExportHeader)
+    include(FeatureSummary)
 
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake/modules)
+    find_package(KDE4 4.22.0 REQUIRED)
+    include(KDE4Defaults)
+    include_directories(${KDE4_INCLUDES})
+    add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
+endif()
 
-macro_optional_find_package(QImageBlitz)
-macro_log_feature(QIMAGEBLITZ_FOUND "QImageBlitz" "An image effects library" "http://sourceforge.net/projects/qimageblitz" TRUE "kdesupport" "Required to build Okular.")
-
-macro_optional_find_package(LibKScreen)
-macro_log_feature(LibKScreen_FOUND "LibKScreen" "KDE screen management library" "https://projects.kde.org/projects/kdereview/libkscreen" FALSE "1.0.2" "DPI detection support")
-
-add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
-add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
 include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}
-   ${KDE4_INCLUDES}
-   ${QIMAGEBLITZ_INCLUDES}
-   ${LibKScreen_INCLUDE_DIR}
 )
 
-add_subdirectory( active )
+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(PS2PDF_EXECUTABLE NAMES ps2pdf)
+add_feature_info(okular_ps2pdf
+    PS2PDF_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 )
-add_subdirectory( tests )
 
-include(OkularConfigureChecks.cmake)
-include(MacroWriteBasicCMakeVersionFile)
+if(ENABLE_TESTING)
+    add_subdirectory( tests )
+endif()
 
-if(NOT WIN32)
- set(MATH_LIB m)
-else(NOT WIN32)
- set(MATH_LIB)
-endif(NOT WIN32)
+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/fileprinter.cpp
-)
-
-kde4_add_ui_files(okularcore_SRCS
-   conf/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/okular_export.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/fileprinter.h
-           core/observer.h
-           ${CMAKE_CURRENT_BINARY_DIR}/settings_core.h
-         DESTINATION ${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 ${INCLUDE_INSTALL_DIR}/okular/interfaces COMPONENT Devel)
-
-kde4_add_ui_files(okularcore_SRCS
-   core/chooseenginewidget.ui
+    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/fileprinter.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 )
 
-kde4_add_library(okularcore SHARED ${okularcore_SRCS})
+add_library(okularcore SHARED ${okularcore_SRCS})
 
-target_link_libraries(okularcore ${KDE4_KIO_LIBS} ${KDE4_PHONON_LIBRARY} ${MATH_LIB} ${KDE4_THREADWEAVER_LIBRARY} )
+target_link_libraries(okularcore
+    ${KDE4_KIO_LIBS}
+    ${KDE4_KARCHIVE_LIBS}
+    ${MATH_LIB}
+    KDE4::kmediaplayer
+)
 
-if(LibKScreen_FOUND)
-    target_link_libraries(okularcore ${LibKScreen_LIBRARY})
-endif(LibKScreen_FOUND)
+set_target_properties(okularcore PROPERTIES
+    VERSION ${GENERIC_LIB_VERSION}
+    SOVERSION ${GENERIC_LIB_SOVERSION}
+)
 
-set_target_properties(okularcore PROPERTIES VERSION 5.0.0 SOVERSION 5 )
+generate_export_header(okularcore BASE_NAME okular)
 
 install(TARGETS okularcore ${INSTALL_TARGETS_DEFAULT_ARGS} )
 
-install(FILES conf/okular.kcfg DESTINATION ${KCFG_INSTALL_DIR})
-install(FILES conf/okular_core.kcfg DESTINATION ${KCFG_INSTALL_DIR})
-install(FILES core/okularGenerator.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR})
+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/fileprinterpreview.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
-)
-
-kde4_add_ui_files(okularpart_SRCS
-   conf/dlgaccessibilitybase.ui
-   conf/dlgeditorbase.ui
-   conf/dlggeneralbase.ui
-   conf/dlgannotationsbase.ui
-   conf/dlgperformancebase.ui
-   conf/dlgpresentationbase.ui
+    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 )
 
-qt4_add_dbus_interfaces(okularpart_SRCS ${KDE4_DBUS_INTERFACES_DIR}/org.kde.KSpeech.xml)
-
-kde4_add_plugin(okularpart SHARED ${okularpart_SRCS})
+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
+)
 
-target_link_libraries(okularpart okularcore ${KDE4_KPARTS_LIBS} ${KDE4_KPRINTUTILS_LIBS} ${MATH_LIB} ${QIMAGEBLITZ_LIBRARIES} ${KDE4_PHONON_LIBRARY} ${KDE4_SOLID_LIBRARY})
+generate_export_header(okularpart)
 
-install(TARGETS okularpart DESTINATION ${PLUGIN_INSTALL_DIR})
+install(TARGETS okularpart DESTINATION ${KDE4_PLUGIN_INSTALL_DIR})
 
 
 ########### install files ###############
 
-install(FILES okular.upd DESTINATION ${DATA_INSTALL_DIR}/kconf_update)
-
-install( FILES okular_part.desktop  DESTINATION  ${SERVICES_INSTALL_DIR} )
-install( FILES part.rc part-viewermode.rc DESTINATION ${DATA_INSTALL_DIR}/okular )
-
-########### cmake files #################
-
-macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/OkularConfigVersion.cmake 0 11 80)
-
-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/OkularConfig.cmake
-              ${CMAKE_CURRENT_BINARY_DIR}/OkularConfigVersion.cmake
-        DESTINATION ${LIB_INSTALL_DIR}/cmake/Okular )
-
-macro_display_feature_log()
+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()