1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
cmake_minimum_required(VERSION 3.16)
set(KF_VERSION "5.116.0") # handled by release scripts
set(KF_DEP_VERSION "5.116.0") # handled by release scripts
project(KService VERSION ${KF_VERSION})
# Disallow in-source build
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message(FATAL_ERROR "KService requires an out of source build. Please create a separate build directory and run 'cmake path_to_kservice [options]' there.")
endif()
# ECM setup
include(FeatureSummary)
find_package(ECM 5.116.0 NO_MODULE)
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules")
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(KDEInstallDirs)
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings)
include(KDEGitCommitHooks)
include(ECMSetupVersion)
include(ECMGenerateHeaders)
include(ECMAddQch)
include(ECMQtDeclareLoggingCategory)
include(ECMGenerateExportHeader)
include(ECMDeprecationSettings)
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
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 KSERVICE
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kservice_version.h"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5ServiceConfigVersion.cmake"
SOVERSION 5)
set(APPLICATIONS_MENU_NAME applications.menu
CACHE STRING "Name to install the applications.menu file as.")
# Dependencies
set(REQUIRED_QT_VERSION 5.15.2)
find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Xml)
if (NOT ANDROID)
find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus)
endif()
find_package(KF5Config ${KF_DEP_VERSION} CONFIG REQUIRED)
find_package(KF5CoreAddons ${KF_DEP_VERSION} CONFIG REQUIRED)
if (NOT ANDROID)
find_package(KF5DBusAddons ${KF_DEP_VERSION} CONFIG REQUIRED)
endif()
find_package(KF5I18n ${KF_DEP_VERSION} CONFIG REQUIRED)
find_package(KF5DocTools ${KF_DEP_VERSION} CONFIG)
find_package(FLEX REQUIRED)
set_package_properties(FLEX PROPERTIES
URL "http://flex.sourceforge.net"
DESCRIPTION "Fast Lexical Analyzer"
TYPE REQUIRED
PURPOSE "Required for the Trader parser"
)
find_package(BISON 3.0 REQUIRED)
set_package_properties(BISON PROPERTIES
URL "http://www.gnu.org/software/bison"
DESCRIPTION "general-purpose parser generator"
TYPE REQUIRED
PURPOSE "Required for the Trader parser"
)
add_definitions(-DTRANSLATION_DOMAIN=\"kservice5\")
ecm_set_disabled_deprecation_versions(
QT 5.15.2
KF 5.97.0
KCOREADDONS 5.78 # for KPluginInfo::dependencies
)
ki18n_install(po)
if (KF5DocTools_FOUND)
kdoctools_install(po)
endif()
if (KF5DocTools_FOUND)
add_subdirectory(docs)
endif()
add_subdirectory(src)
if (BUILD_TESTING)
add_subdirectory(autotests)
add_subdirectory(tests)
endif()
# create a Config.cmake and a ConfigVersion.cmake file and install them
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Service")
if (BUILD_QCH)
ecm_install_qch_export(
TARGETS KF5Service_QCH
FILE KF5ServiceQchTargets.cmake
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5ServiceQchTargets.cmake\")")
endif()
include(CMakePackageConfigHelpers)
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/KF5ServiceConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/KF5ServiceConfig.cmake"
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
install(EXPORT KF5ServiceTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5ServiceTargets.cmake NAMESPACE KF5:: )
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5ServiceConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/KF5ServiceConfigVersion.cmake"
"${CMAKE_CURRENT_SOURCE_DIR}/KF5ServiceMacros.cmake"
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kservice_version.h
DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KService COMPONENT Devel)
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
|