Warning, /pim/libkleo/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # SPDX-License-Identifier: CC0-1.0
0002 # SPDX-FileCopyrightText: none
0003 cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
0004 set(PIM_VERSION "5.24.52")
0005 
0006 project(libkleo VERSION ${PIM_VERSION})
0007 
0008 set(KF_MIN_VERSION "5.105.0")
0009 
0010 if (WIN32)
0011   set(KF5_WANT_VERSION "5.104.0")
0012   add_compile_definitions(GPG_ERR_ENABLE_GETTEXT_MACROS=1)
0013 else ()
0014   set(KF5_WANT_VERSION ${KF_MIN_VERSION})
0015 endif ()
0016 
0017 find_package(ECM ${KF5_WANT_VERSION} CONFIG REQUIRED)
0018 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0019 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
0020 
0021 include(KDEInstallDirs)
0022 include(KDECMakeSettings)
0023 include(KDECompilerSettings NO_POLICY_SCOPE)
0024 
0025 include(ECMGenerateExportHeader)
0026 include(ECMSetupVersion)
0027 include(ECMGenerateHeaders)
0028 include(ECMGeneratePriFile)
0029 
0030 include(FeatureSummary)
0031 include(ECMQtDeclareLoggingCategory)
0032 include(ECMDeprecationSettings)
0033 include(ECMAddQch)
0034 include(KDEClangFormat)
0035 include(KDEGitCommitHooks)
0036 option(BUILD_WITH_COMPAT_LIBS "Generate compat cmake file (Set at false will allow to co-install lib)" OFF)
0037 
0038 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
0039 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
0040 
0041 set(LIBKLEO_LIB_VERSION ${PIM_VERSION})
0042 set(QT_REQUIRED_VERSION "5.15.2")
0043 if (QT_MAJOR_VERSION STREQUAL "6")
0044     set(QT_REQUIRED_VERSION "6.4.0")
0045     set(KF_MIN_VERSION "5.240.0")
0046     set(KF_MAJOR_VERSION "6")
0047 else()
0048     set(KF_MAJOR_VERSION "5")
0049 endif()
0050 
0051 set(KDEPIMTEXTEDIT_VERSION "5.24.0")
0052 set(GPGME_REQUIRED_VERSION "1.20.0")
0053 set(GPG_ERROR_REQUIRED_VERSION "1.36")
0054 
0055 find_package(Qt${QT_MAJOR_VERSION} ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets)
0056 if (QT_MAJOR_VERSION STREQUAL "6")
0057     find_package(Qt6Core5Compat)
0058 endif()
0059 find_package(KF${KF_MAJOR_VERSION}I18n ${KF5_WANT_VERSION} CONFIG REQUIRED)
0060 find_package(KF${KF_MAJOR_VERSION}Config ${KF5_WANT_VERSION} CONFIG REQUIRED)
0061 find_package(KF${KF_MAJOR_VERSION}WidgetsAddons ${KF5_WANT_VERSION} CONFIG REQUIRED)
0062 find_package(KF${KF_MAJOR_VERSION}ConfigWidgets ${KF5_WANT_VERSION} CONFIG REQUIRED)
0063 find_package(KF${KF_MAJOR_VERSION}Completion ${KF5_WANT_VERSION} CONFIG REQUIRED)
0064 find_package(KF${KF_MAJOR_VERSION}CoreAddons ${KF5_WANT_VERSION} CONFIG REQUIRED)
0065 find_package(KF${KF_MAJOR_VERSION}Codecs ${KF5_WANT_VERSION} CONFIG REQUIRED)
0066 find_package(KF${KF_MAJOR_VERSION}ItemModels ${KF5_WANT_VERSION} CONFIG REQUIRED)
0067 find_package(KPim${KF_MAJOR_VERSION}TextEdit ${KDEPIMTEXTEDIT_VERSION} CONFIG)
0068 
0069 find_package(Gpgmepp ${GPGME_REQUIRED_VERSION} CONFIG REQUIRED)
0070 set_package_properties(Gpgmepp PROPERTIES DESCRIPTION "GpgME++ Library" URL "https://www.gnupg.org" TYPE REQUIRED PURPOSE "GpgME++ is required for OpenPGP support")
0071 message(STATUS "GpgME++ Version ${Gpgmepp_VERSION}")
0072 if (Gpgmepp_VERSION VERSION_GREATER_EQUAL "1.23.0")
0073     set(GPGMEPP_KEY_HAS_HASCERTIFY_SIGN_ENCRYPT_AUTHENTICATE 1)
0074 endif()
0075 set(QGPGME_NAME "QGpgme")
0076 find_package(${QGPGME_NAME} ${GPGME_REQUIRED_VERSION} CONFIG REQUIRED)
0077 
0078 find_package(LibGpgError ${GPG_ERROR_REQUIRED_VERSION} REQUIRED)
0079 set_package_properties(LibGpgError PROPERTIES
0080   TYPE REQUIRED
0081 )
0082 
0083 find_package(Boost 1.34.0)
0084 set_package_properties(Boost PROPERTIES DESCRIPTION "Boost C++ Libraries" URL "https://www.boost.org" TYPE REQUIRED PURPOSE "Boost is required for building most KDEPIM applications")
0085 
0086 
0087 set_package_properties(KPim${KF_MAJOR_VERSION}TextEdit PROPERTIES DESCRIPTION
0088                        "A textedit with PIM-specific features."
0089                        URL "https://commits.kde.org/kpimtextedit"
0090                        TYPE OPTIONAL PURPOSE "Improved audit log viewer.")
0091 
0092 ecm_setup_version(PROJECT VARIABLE_PREFIX LIBKLEO
0093                         VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/libkleo_version.h"
0094                         PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KPim${KF_MAJOR_VERSION}LibkleoConfigVersion.cmake"
0095                         SOVERSION 5
0096 )
0097 
0098 ########### Targets ###########
0099 ecm_set_disabled_deprecation_versions(QT 5.15.2  KF 5.105.0)
0100 
0101 remove_definitions(-DQT_NO_FOREACH)
0102 add_definitions(-DQT_NO_EMIT)
0103 ########### CMake Config Files ###########
0104 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KPim${KF_MAJOR_VERSION}Libkleo")
0105 set(LIBKLEO_KF5_COMPAT FALSE)
0106 configure_package_config_file(
0107   "${CMAKE_CURRENT_SOURCE_DIR}/KPimLibkleoConfig.cmake.in"
0108   "${CMAKE_CURRENT_BINARY_DIR}/KPim${KF_MAJOR_VERSION}LibkleoConfig.cmake"
0109   INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
0110 )
0111 
0112 install(FILES
0113   "${CMAKE_CURRENT_BINARY_DIR}/KPim${KF_MAJOR_VERSION}LibkleoConfig.cmake"
0114   "${CMAKE_CURRENT_BINARY_DIR}/KPim${KF_MAJOR_VERSION}LibkleoConfigVersion.cmake"
0115   DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0116   COMPONENT Devel
0117 )
0118 
0119 install(EXPORT KPim${KF_MAJOR_VERSION}LibkleoTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KPim${KF_MAJOR_VERSION}LibkleoTargets.cmake NAMESPACE KPim${KF_MAJOR_VERSION}::)
0120 
0121 install(FILES
0122    ${CMAKE_CURRENT_BINARY_DIR}/libkleo_version.h
0123   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim${KF_MAJOR_VERSION}/Libkleo COMPONENT Devel
0124 )
0125 
0126 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-libkleo.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-libkleo.h)
0127 include_directories(${CMAKE_CURRENT_BINARY_DIR})
0128 
0129 option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF)
0130 
0131 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT OFF)
0132 if (USE_UNITY_CMAKE_SUPPORT)
0133     set(COMPILE_WITH_UNITY_CMAKE_SUPPORT ON)
0134 endif()
0135 
0136 
0137 add_subdirectory(src)
0138 if (BUILD_TESTING)
0139     add_subdirectory(autotests)
0140     add_subdirectory(tests)
0141 endif()
0142 
0143 ecm_qt_install_logging_categories(
0144         EXPORT LIBKLEO
0145         FILE libkleo.categories
0146         DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
0147         )
0148 
0149 ki18n_install(po)
0150 if (BUILD_QCH)
0151     ecm_install_qch_export(
0152         TARGETS KPim${KF_MAJOR_VERSION}Libkleo_QCH
0153         FILE KPim${KF_MAJOR_VERSION}LibkleoQchTargets.cmake
0154         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0155         COMPONENT Devel
0156     )
0157     set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KPim${KF_MAJOR_VERSION}LibkleoQchTargets.cmake\")")
0158 endif()
0159 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
0160 
0161 # add clang-format target for all our real source files
0162 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
0163 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0164 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0165 
0166 if (BUILD_WITH_COMPAT_LIBS)
0167 #if (QT_MAJOR_VERSION STREQUAL "5")
0168 ##
0169 # TODO: Backwards compatiblity. Remove in next major version
0170 ##
0171 set(CMAKECONFIG_INSTALL_DIR_KF5 "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Libkleo")
0172 set(LIBKLEO_KF5_COMPAT TRUE)
0173 configure_package_config_file(
0174     "${CMAKE_CURRENT_SOURCE_DIR}/KPimLibkleoConfig.cmake.in"
0175     "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfig.cmake"
0176     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR_KF5}
0177 )
0178 
0179 install(FILES
0180     "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfig.cmake"
0181     DESTINATION "${CMAKECONFIG_INSTALL_DIR_KF5}"
0182     COMPONENT Devel
0183 )
0184 install(FILES
0185     "${CMAKE_CURRENT_BINARY_DIR}/KPim${KF_MAJOR_VERSION}LibkleoConfigVersion.cmake"
0186     RENAME "KF5LibkleoConfigVersion.cmake"
0187     DESTINATION "${CMAKECONFIG_INSTALL_DIR_KF5}"
0188     COMPONENT Devel
0189 )
0190 install(EXPORT KPim${KF_MAJOR_VERSION}LibkleoTargets
0191     DESTINATION "${CMAKECONFIG_INSTALL_DIR_KF5}"
0192     FILE KPim${KF_MAJOR_VERSION}LibkleoTargets.cmake
0193     NAMESPACE KF5::
0194 )
0195 if (BUILD_QCH)
0196     install(FILES
0197         "${CMAKE_CURRENT_BINARY_DIR}/KPim${KF_MAJOR_VERSION}LibkleoQchTargets.cmake"
0198         DESTINATION "${CMAKECONFIG_INSTALL_DIR_KF5}"
0199         COMPONENT Devel
0200     )
0201 endif()
0202 #endif()
0203 endif()