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 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
# SPDX-FileCopyrightText: none
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
set(PIM_VERSION "6.6.1")
project(KontactInterface VERSION ${PIM_VERSION})
# ECM setup
set(KF_MIN_VERSION "6.18.0")
set(QT_REQUIRED_VERSION "6.8.0")
find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMGenerateExportHeader)
include(ECMGenerateHeaders)
include(ECMSetupVersion)
file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES src/*.cpp src/*.h)
set(PRE_COMMIT_INSTALLED FALSE)
if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit")
file(READ "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit" FILE_CONTENTS)
string(FIND "${FILE_CONTENTS}" "File generated by pre-commit" INDEX)
if(${INDEX} GREATER_EQUAL 0)
set(PRE_COMMIT_INSTALLED TRUE)
endif()
endif()
endif()
if(NOT ${PRE_COMMIT_INSTALLED})
include(KDEGitCommitHooks)
include(KDEClangFormat)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
endif()
include(ECMQtDeclareLoggingCategory)
include(ECMDeprecationSettings)
include(ECMFeatureSummary)
include(ECMSetupQtPluginMacroNames)
include(ECMAddQch)
include(ECMCheckOutboundLicense)
file(GLOB_RECURSE ALL_SOURCE_FILES src/*.cpp src/*.h)
ecm_check_outbound_license(LICENSES GPL-2.0-only FILES ${ALL_SOURCE_FILES})
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)"
)
add_definitions(-DTRANSLATION_DOMAIN=\"kontactinterfaces6\")
set(KONTACTINTERFACE_LIB_VERSION ${PIM_VERSION})
set(CMAKECONFIG_INSTALL_DIR
"${KDE_INSTALL_CMAKEPACKAGEDIR}/KPim6KontactInterface"
)
ecm_setup_version(PROJECT VARIABLE_PREFIX KONTACTINTERFACE
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/kontactinterface_version.h"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPim6KontactInterfaceConfigVersion.cmake"
SOVERSION 6
)
ecm_setup_qtplugin_macro_names(
JSON_ARG2
EXPORT_KONTACT_PLUGIN_WITH_JSON
CONFIG_CODE_VARIABLE
PACKAGE_SETUP_AUTOMOC_VARIABLES
)
find_package(Qt6Gui ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
find_package(Qt6DBus ${QT_REQUIRED_VERSION} CONFIG REQUIRED)
if(Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
find_package(Qt6GuiPrivate ${QT_REQUIRED_VERSION} REQUIRED NO_MODULE)
endif()
########### Find packages ###########
find_package(
KF6
${KF_MIN_VERSION}
REQUIRED
COMPONENTS CoreAddons Parts WindowSystem I18n XmlGui
)
if(NOT APPLE AND NOT WIN32)
find_package(X11 REQUIRED)
endif()
option(
USE_UNITY_CMAKE_SUPPORT
"Use UNITY cmake support (speedup compile time)"
OFF
)
set(COMPILE_WITH_UNITY_CMAKE_SUPPORT OFF)
if(USE_UNITY_CMAKE_SUPPORT)
set(COMPILE_WITH_UNITY_CMAKE_SUPPORT ON)
endif()
add_definitions(-DQT_NO_CONTEXTLESS_CONNECT)
ecm_set_disabled_deprecation_versions(QT 6.10.0
KF 6.20.0
)
set(KONTACTINTERFACE_HAVE_X11 ${X11_FOUND})
add_subdirectory(src)
configure_file(
config-kontactinterface.h.in
${CMAKE_CURRENT_BINARY_DIR}/config-kontactinterface.h
)
if(BUILD_QCH)
ecm_install_qch_export(
TARGETS KPim6KontactInterface_QCH
FILE KPim6KontactInterfaceQchTargets.cmake
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
set(PACKAGE_INCLUDE_QCHTARGETS
"include(\"\${CMAKE_CURRENT_LIST_DIR}/KPim6KontactInterfaceQchTargets.cmake\")"
)
endif()
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/KPimKontactInterfaceConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/KPim6KontactInterfaceConfig.cmake"
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
########### Install Files ###########
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/KPim6KontactInterfaceConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/KPim6KontactInterfaceConfigVersion.cmake"
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/src/kontactinterface_version.h
DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KontactInterface
COMPONENT Devel
)
install(
EXPORT KPim6KontactInterfaceTargets
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
FILE KPim6KontactInterfaceTargets.cmake
NAMESPACE KPim6::
)
if(DEFINED kde_configure_git_pre_commit_hook)
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
endif()
ki18n_install(po)
ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
|