Warning, /network/ruqola/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2020-2023 Laurent Montel <montel@kde.org> 0002 # SPDX-License-Identifier: BSD-3-Clause 0003 0004 cmake_minimum_required(VERSION 3.16 FATAL_ERROR) 0005 set(RUQOLA_VERSION "1.9.58") 0006 project(Ruqola VERSION ${RUQOLA_VERSION}) 0007 set(CMAKE_CXX_STANDARD 17) 0008 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0009 0010 set(KF_MIN_VERSION "5.100.0") 0011 0012 # Do NOT add quote 0013 set(RUQOLA_DEV_VERSION alpha) 0014 0015 # add an extra space 0016 if(DEFINED RUQOLA_DEV_VERSION) 0017 set(RUQOLA_DEV_VERSION " ${RUQOLA_DEV_VERSION}") 0018 endif() 0019 0020 set(RUQOLA_VERSION_STRING "${RUQOLA_VERSION}${RUQOLA_DEV_VERSION}") 0021 0022 0023 find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED) 0024 set(CMAKE_MODULE_PATH ${Ruqola_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH}) 0025 0026 include(KDECompilerSettings NO_POLICY_SCOPE) 0027 include(KDEInstallDirs) 0028 include(KDECMakeSettings) 0029 include(ECMInstallIcons) 0030 include(ECMQtDeclareLoggingCategory) 0031 include(ECMAddTests) 0032 include(GenerateExportHeader) 0033 include(FeatureSummary) 0034 include(CheckIncludeFileCXX) 0035 include(KDEGitCommitHooks) 0036 include(ECMDeprecationSettings) 0037 include(KDEClangFormat) 0038 include(ECMGenerateHeaders) 0039 include(ECMSetupVersion) 0040 0041 option(OPTION_BUILD_PYTHON_BINDINGS "Build python bindings (experimental)" OFF) 0042 0043 if (OPTION_BUILD_PYTHON_BINDINGS) 0044 set(CMAKE_MODULE_PATH ${Ruqola_SOURCE_DIR}/cmake/Python ${ECM_MODULE_PATH}) 0045 endif() 0046 0047 option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" FALSE) 0048 0049 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT false) 0050 if (USE_UNITY_CMAKE_SUPPORT) 0051 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT true) 0052 endif() 0053 option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) # Set to OFF when using clazy and such 0054 set(COMPILE_WITH_CMAKE_PCH_SUPPORT false) 0055 macro(ruqola_target_precompile_headers) 0056 if (USE_PRECOMPILED_HEADERS) 0057 set(COMPILE_WITH_CMAKE_PCH_SUPPORT true) 0058 0059 if (COMPILE_WITH_CMAKE_PCH_SUPPORT) 0060 target_precompile_headers(${ARGV}) 0061 endif() 0062 endif() 0063 endmacro() 0064 0065 option(PLUGINS_AUTHENTICATION_BASED_ON_O2 "Build authentication based on o2 lib (experimental)" FALSE) 0066 0067 option(EXPERIMENTAL_DATABASE_SUPPORT "Experimental database support (experimental)" FALSE) 0068 if (EXPERIMENTAL_DATABASE_SUPPORT) 0069 set(HAVE_DATABASE_SUPPORT TRUE) 0070 endif() 0071 0072 if (NOT WIN32 AND NOT APPLE) 0073 option(UNITY_SUPPORT "Build unity support" TRUE) 0074 else() 0075 set(UNITY_SUPPORT OFF) 0076 endif() 0077 0078 if (UNITY_SUPPORT) 0079 add_definitions(-DUNITY_SUPPORT) 0080 endif() 0081 set(KTEXTADDONS_MIN_VERSION "1.2.1") 0082 set(REQUIRED_QT_VERSION "5.15.2") 0083 0084 if (QT_MAJOR_VERSION STREQUAL "6") 0085 set(QT_REQUIRED_VERSION "6.4.0") 0086 set(KF_MIN_VERSION "5.240.0") 0087 set(KF_MAJOR_VERSION "6") 0088 set(KTEXTADDONS_MIN_VERSION "1.3.0") 0089 else() 0090 set(KF_MAJOR_VERSION "5") 0091 endif() 0092 0093 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core Gui Widgets WebSockets Network NetworkAuth MultimediaWidgets Sql) 0094 0095 find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS 0096 CoreAddons 0097 I18n 0098 Crash 0099 Notifications 0100 IconThemes 0101 SyntaxHighlighting 0102 NotifyConfig 0103 ItemViews 0104 IdleTime 0105 Prison 0106 ) 0107 0108 0109 find_package(KF${KF_MAJOR_VERSION}TextTranslator ${KTEXTADDONS_MIN_VERSION} CONFIG) 0110 set_package_properties(KF${KF_MAJOR_VERSION}TextTranslator PROPERTIES DESCRIPTION 0111 "Add support for text translation (ktextaddons)" 0112 TYPE OPTIONAL 0113 ) 0114 if (TARGET KF${KF_MAJOR_VERSION}::TextTranslator) 0115 set(HAVE_TEXT_TRANSLATOR TRUE) 0116 endif() 0117 0118 find_package(KF${KF_MAJOR_VERSION}TextAutoCorrectionWidgets ${KTEXTADDONS_MIN_VERSION} CONFIG) 0119 set_package_properties(KF${KF_MAJOR_VERSION}TextAutoCorrectionWidgets PROPERTIES DESCRIPTION 0120 "Add support for text auto correction (ktextaddons)" 0121 TYPE OPTIONAL 0122 ) 0123 if (TARGET KF${KF_MAJOR_VERSION}::TextAutoCorrectionWidgets) 0124 set(HAVE_TEXT_AUTOCORRECTION_WIDGETS TRUE) 0125 else() 0126 find_package(KF${KF_MAJOR_VERSION}TextAutoCorrection ${KTEXTADDONS_MIN_VERSION} CONFIG) 0127 set_package_properties(KF${KF_MAJOR_VERSION}TextAutoCorrection PROPERTIES DESCRIPTION 0128 "Add support for text auto correction (ktextaddons)" 0129 TYPE OPTIONAL 0130 ) 0131 if (TARGET KF${KF_MAJOR_VERSION}::TextAutoCorrection) 0132 set(HAVE_TEXT_AUTOCORRECTION TRUE) 0133 endif() 0134 endif() 0135 0136 find_package(KF${KF_MAJOR_VERSION}TextEditTextToSpeech ${KTEXTADDONS_MIN_VERSION} CONFIG) 0137 set_package_properties(KF${KF_MAJOR_VERSION}TextEditTextToSpeech PROPERTIES DESCRIPTION 0138 "Add support for text to speech (ktextaddons)" 0139 TYPE OPTIONAL 0140 ) 0141 if (TARGET KF${KF_MAJOR_VERSION}::TextEditTextToSpeech) 0142 set(HAVE_TEXT_TO_SPEECH TRUE) 0143 endif() 0144 0145 find_package(KF${KF_MAJOR_VERSION}TextEmoticonsWidgets ${KTEXTADDONS_MIN_VERSION} CONFIG) 0146 set_package_properties(KF${KF_MAJOR_VERSION}TextEmoticonsWidgets PROPERTIES DESCRIPTION 0147 "Add text emoticons support (ktextaddons)" 0148 TYPE OPTIONAL 0149 ) 0150 0151 if (NOT WIN32 AND NOT APPLE) 0152 find_package(KF${KF_MAJOR_VERSION}DBusAddons ${KF_MIN_VERSION} CONFIG REQUIRED) 0153 endif() 0154 0155 0156 find_package(KF${KF_MAJOR_VERSION}XmlGui ${KF_MIN_VERSION} CONFIG REQUIRED) 0157 find_package(KF${KF_MAJOR_VERSION}Config ${KF_MIN_VERSION} CONFIG REQUIRED) 0158 find_package(KF${KF_MAJOR_VERSION}KIO ${KF_MIN_VERSION} CONFIG REQUIRED) 0159 find_package(KF${KF_MAJOR_VERSION}Sonnet ${KF_MIN_VERSION} CONFIG REQUIRED) 0160 find_package(KF${KF_MAJOR_VERSION}TextWidgets ${KF_MIN_VERSION} CONFIG REQUIRED) 0161 find_package(KF${KF_MAJOR_VERSION}Purpose ${KF_MIN_VERSION} CONFIG) 0162 0163 find_package(KF${KF_MAJOR_VERSION}DocTools ${KF_MIN_VERSION}) 0164 set_package_properties(KF${KF_MAJOR_VERSION}DocTools PROPERTIES DESCRIPTION 0165 "Tools to generate documentation" 0166 TYPE OPTIONAL 0167 ) 0168 0169 0170 find_package(Qt${QT_MAJOR_VERSION}Keychain CONFIG) 0171 set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES 0172 DESCRIPTION "Provides support for secure credentials storage" 0173 URL "https://github.com/frankosterfeld/qtkeychain" 0174 TYPE REQUIRED) 0175 0176 0177 set(KUSERFEEDBACK_SUFFIX) 0178 if (QT_MAJOR_VERSION STREQUAL "6") 0179 set(KUSERFEEDBACK_SUFFIX "Qt6") 0180 find_package(KUserFeedback${KUSERFEEDBACK_SUFFIX} 1.2.1 CONFIG) 0181 add_definitions(-DUSE_KUSERFEEDBACK_QT6) 0182 else() 0183 find_package(KUserFeedback${KUSERFEEDBACK_SUFFIX} 1.2.0 CONFIG) 0184 endif() 0185 set(HAVE_KUSERFEEDBACK ${KUserFeedback${KUSERFEEDBACK_SUFFIX}_FOUND}) 0186 set_package_properties(KUserFeedback${KUSERFEEDBACK_SUFFIX} PROPERTIES DESCRIPTION "User Feedback lib" TYPE OPTIONAL PURPOSE "Allow to send Telemetry Information (optional).") 0187 0188 find_package(KF${KF_MAJOR_VERSION}Solid ${KF_MIN_VERSION} CONFIG) 0189 if (KF${KF_MAJOR_VERSION}Solid_FOUND) 0190 # SolidPower is not built by default, and the only way to find is to 0191 # check for the header and that it builds 0192 get_target_property(SOLID_INCLUDE_DIRS KF${KF_MAJOR_VERSION}::Solid INTERFACE_INCLUDE_DIRECTORIES) 0193 find_file(SOLID_POWER_FOUND Solid/Power PATHS ${SOLID_INCLUDE_DIRS} NO_DEFAULT_PATH) 0194 if (SOLID_POWER_FOUND) 0195 message(STATUS "Found Solid Power header at ${SOLID_POWER_FOUND}") 0196 set(HAVE_SOLID 1) 0197 else() 0198 message(WARNING "Solid Power header was not found, suspend/resume detection is disabled. Reconfigure Solid build with `cmake -DWITH_NEW_SOLID_JOB=ON -DWITH_NEW_POWER_ASYNC_API=ON -DWITH_NEW_POWER_ASYNC_FREEDESKTOP=ON .`") 0199 endif() 0200 endif() 0201 set_package_properties(KF${KF_MAJOR_VERSION}Solid PROPERTIES DESCRIPTION "Device integration framework" TYPE OPTIONAL PURPOSE "Allows detecting suspend and resume.") 0202 0203 find_package(KF${KF_MAJOR_VERSION}NetworkManagerQt ${KF_MIN_VERSION} CONFIG) 0204 set(HAVE_NETWORKMANAGER ${KF${KF_MAJOR_VERSION}NetworkManagerQt_FOUND}) 0205 set_package_properties(KF${KF_MAJOR_VERSION}NetworkManagerQt PROPERTIES DESCRIPTION "Network management lib" TYPE OPTIONAL PURPOSE "Allows detecting network state changes.") 0206 0207 0208 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0209 ecm_set_disabled_deprecation_versions(QT 6.4 0210 KF 5.105.0 0211 ) 0212 if (OPTION_BUILD_PYTHON_BINDINGS) 0213 remove_definitions(-DQT_STRICT_ITERATORS) 0214 endif() 0215 add_definitions(-DQT_NO_FOREACH) 0216 add_definitions(-DQT_NO_KEYWORDS) 0217 0218 set(RUQOLA_LIB_VERSION "${RUQOLA_VERSION}") 0219 set(RUQOLA_LIB_SOVERSION "0") 0220 0221 0222 configure_file(config-ruqola.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ruqola.h) 0223 0224 if(BUILD_TESTING) 0225 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Test) 0226 add_definitions(-DBUILD_TESTING) 0227 endif(BUILD_TESTING) 0228 0229 if (PLUGINS_AUTHENTICATION_BASED_ON_O2) 0230 find_package(o2) 0231 endif() 0232 0233 0234 add_subdirectory(src) 0235 0236 if (BUILD_TESTING) 0237 add_subdirectory(tests) 0238 endif() 0239 0240 0241 ecm_qt_install_logging_categories( 0242 EXPORT RUQOLA 0243 FILE ruqola.categories 0244 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 0245 ) 0246 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 0247 ki18n_install(po) 0248 if (KF${KF_MAJOR_VERSION}DocTools_FOUND) 0249 kdoctools_install(po) 0250 add_subdirectory(doc) 0251 endif() 0252 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)