diff --git a/CMakeLists.txt b/CMakeLists.txt index 9efb5e5..2a3575c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,86 +1,100 @@ cmake_minimum_required(VERSION 3.0) set(KF5_VERSION "5.35.0") # handled by release scripts set(KF5_DEP_VERSION "5.35.0") # handled by release scripts project(KJobWidgets VERSION ${KF5_VERSION}) include(FeatureSummary) find_package(ECM 5.35.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(ECMPoQmTools) set(REQUIRED_QT_VERSION 5.6.0) find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets DBus) if (NOT APPLE) find_package(X11) endif() set(HAVE_X11 ${X11_FOUND}) if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") find_package(KF5CoreAddons ${KF5_DEP_VERSION} REQUIRED) find_package(KF5WidgetsAddons ${KF5_DEP_VERSION} REQUIRED) endif() include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) +include(ECMAddQch) + +option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) +add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") ecm_setup_version(PROJECT VARIABLE_PREFIX KJOBWIDGETS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kjobwidgets_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5JobWidgetsConfigVersion.cmake" SOVERSION 5) remove_definitions(-DQT_NO_CAST_FROM_ASCII) remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY) if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() add_subdirectory(src) add_subdirectory(tests) add_subdirectory(autotests) # create a Config.cmake and a ConfigVersion.cmake file and install them set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5JobWidgets") +if (BUILD_QCH) + ecm_install_qch_export( + TARGETS KF5JobWidgets_QCH + FILE KF5JobWidgetsQchTargets.cmake + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel + ) + set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5JobWidgetsQchTargets.cmake\")") +endif() + include(CMakePackageConfigHelpers) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5JobWidgetsConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5JobWidgetsConfig.cmake" PATH_VARS KDE_INSTALL_DBUSINTERFACEDIR INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5JobWidgetsConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5JobWidgetsConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT KF5JobWidgetsTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5JobWidgetsTargets.cmake NAMESPACE KF5:: ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kjobwidgets_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) endif() diff --git a/KF5JobWidgetsConfig.cmake.in b/KF5JobWidgetsConfig.cmake.in index 8187e50..0cee94f 100644 --- a/KF5JobWidgetsConfig.cmake.in +++ b/KF5JobWidgetsConfig.cmake.in @@ -1,10 +1,10 @@ @PACKAGE_INIT@ set(KJOBWIDGETS_DBUS_INTERFACES_DIR "@PACKAGE_KDE_INSTALL_DBUSINTERFACEDIR@") include(CMakeFindDependencyMacro) find_dependency(Qt5Widgets @REQUIRED_QT_VERSION@) find_dependency(KF5CoreAddons "@KF5_DEP_VERSION@") include("${CMAKE_CURRENT_LIST_DIR}/KF5JobWidgetsTargets.cmake") - +@PACKAGE_INCLUDE_QCHTARGETS@ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 13e741d..a8250a3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,105 +1,128 @@ configure_file(config-kjobwidgets.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kjobwidgets.h ) ecm_create_qm_loader(kjobwidgets_QM_LOADER kjobwidgets5_qt) set(kjobwidgets_SRCS kabstractwidgetjobtracker.cpp kdialogjobuidelegate.cpp kjobtrackerformatters.cpp kuiserverjobtracker.cpp kjobwidgets.cpp kstatusbarjobtracker.cpp kwidgetjobtracker.cpp debug.cpp ${kjobwidgets_QM_LOADER} ) qt5_add_dbus_interfaces(kjobwidgets_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.JobViewServer.xml ) qt5_add_dbus_interface(kjobwidgets_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.JobView.xml jobviewiface ) add_library(KF5JobWidgets ${kjobwidgets_SRCS}) generate_export_header(KF5JobWidgets BASE_NAME KJobWidgets) add_library(KF5::JobWidgets ALIAS KF5JobWidgets) target_include_directories(KF5JobWidgets INTERFACE "$") target_link_libraries(KF5JobWidgets PUBLIC Qt5::Widgets KF5::CoreAddons # KJob PRIVATE Qt5::DBus KF5::WidgetsAddons # KSqueezedTextLabel ) if (HAVE_X11) find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) target_link_libraries(KF5JobWidgets PRIVATE Qt5::X11Extras) endif () set_target_properties(KF5JobWidgets PROPERTIES VERSION ${KJOBWIDGETS_VERSION_STRING} SOVERSION ${KJOBWIDGETS_SOVERSION} EXPORT_NAME JobWidgets ) ecm_generate_headers(KJobWidgets_HEADERS HEADER_NAMES KAbstractWidgetJobTracker KDialogJobUiDelegate KUiServerJobTracker KJobWidgets KStatusBarJobTracker KWidgetJobTracker REQUIRED_HEADERS KJobWidgets_HEADERS ) find_package(PythonModuleGeneration) if (PythonModuleGeneration_FOUND) ecm_generate_python_binding( TARGET KF5::JobWidgets PYTHONNAMESPACE PyKF5 MODULENAME KJobWidgets INSTALL_DIR_SUFFIX ${KDE_INSTALL_PYTHONBINDINGSDIR} SIP_DEPENDS QtWidgets/QtWidgetsmod.sip PyKF5/KCoreAddons/KCoreAddonsmod.sip HEADERS kabstractwidgetjobtracker.h kdialogjobuidelegate.h kuiserverjobtracker.h kjobwidgets.h kstatusbarjobtracker.h kwidgetjobtracker.h ) endif() install(TARGETS KF5JobWidgets EXPORT KF5JobWidgetsTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES org.kde.JobViewServer.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} RENAME kf5_org.kde.JobViewServer.xml) install(FILES org.kde.JobView.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} RENAME kf5_org.kde.JobView.xml) install(FILES org.kde.JobViewV2.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} RENAME kf5_org.kde.JobViewV2.xml) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kjobwidgets_export.h ${KJobWidgets_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KJobWidgets COMPONENT Devel ) +if(BUILD_QCH) + ecm_add_qch( + KF5JobWidgets_QCH + NAME KJobWidgets + BASE_NAME KF5JobWidgets + VERSION ${KF5_VERSION} + ORG_DOMAIN org.kde + SOURCES # using only public headers, to cover only public API + ${KJobWidgets_HEADERS} + MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" + LINK_QCHS + KF5CoreAddons_QCH + Qt5Widgets_QCH + Qt5Gui_QCH + Qt5Core_QCH + BLANK_MACROS + KJOBWIDGETS_EXPORT + TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + COMPONENT Devel + ) +endif() + include(ECMGeneratePriFile) ecm_generate_pri_file(BASE_NAME KJobWidgets LIB_NAME KF5JobWidgets DEPS "widgets KCoreAddons" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KJobWidgets) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})