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 "2.0.41") 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.108.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 option(OPTION_SELENIUMWEBDRIVER_SUPPORT "Add selenium driver test (experimental)" OFF) 0043 0044 if (OPTION_BUILD_PYTHON_BINDINGS) 0045 set(CMAKE_MODULE_PATH ${Ruqola_SOURCE_DIR}/cmake/Python ${ECM_MODULE_PATH}) 0046 endif() 0047 0048 option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" FALSE) 0049 0050 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT false) 0051 if (USE_UNITY_CMAKE_SUPPORT) 0052 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT true) 0053 endif() 0054 option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) # Set to OFF when using clazy and such 0055 set(COMPILE_WITH_CMAKE_PCH_SUPPORT false) 0056 macro(ruqola_target_precompile_headers) 0057 if (USE_PRECOMPILED_HEADERS) 0058 set(COMPILE_WITH_CMAKE_PCH_SUPPORT true) 0059 0060 if (COMPILE_WITH_CMAKE_PCH_SUPPORT) 0061 target_precompile_headers(${ARGV}) 0062 endif() 0063 endif() 0064 endmacro() 0065 0066 option(PLUGINS_AUTHENTICATION_BASED_ON_O2 "Build authentication based on o2 lib (experimental)" FALSE) 0067 if (NOT WIN32 AND NOT APPLE) 0068 option(UNITY_SUPPORT "Build unity support" TRUE) 0069 else() 0070 set(UNITY_SUPPORT OFF) 0071 endif() 0072 0073 if (UNITY_SUPPORT) 0074 add_definitions(-DUNITY_SUPPORT) 0075 endif() 0076 set(KTEXTADDONS_MIN_VERSION "1.5.2") 0077 set(REQUIRED_QT_VERSION "5.15.2") 0078 0079 if (QT_MAJOR_VERSION STREQUAL "6") 0080 set(QT_REQUIRED_VERSION "6.4.0") 0081 set(KF_MIN_VERSION "5.240.0") 0082 set(KF_MAJOR_VERSION "6") 0083 else() 0084 set(KF_MAJOR_VERSION "5") 0085 endif() 0086 0087 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core Gui Widgets WebSockets Network NetworkAuth MultimediaWidgets Sql) 0088 0089 find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS 0090 CoreAddons 0091 I18n 0092 Crash 0093 Notifications 0094 IconThemes 0095 SyntaxHighlighting 0096 NotifyConfig 0097 ItemViews 0098 IdleTime 0099 Prison 0100 Archive 0101 ) 0102 0103 0104 find_package(KF${KF_MAJOR_VERSION}TextTranslator ${KTEXTADDONS_MIN_VERSION} CONFIG) 0105 set_package_properties(KF${KF_MAJOR_VERSION}TextTranslator PROPERTIES DESCRIPTION 0106 "Add support for text translation (ktextaddons)" 0107 TYPE OPTIONAL 0108 ) 0109 if (TARGET KF${KF_MAJOR_VERSION}::TextTranslator) 0110 set(HAVE_TEXT_TRANSLATOR TRUE) 0111 endif() 0112 0113 find_package(KF${KF_MAJOR_VERSION}TextAutoCorrectionWidgets ${KTEXTADDONS_MIN_VERSION} CONFIG) 0114 set_package_properties(KF${KF_MAJOR_VERSION}TextAutoCorrectionWidgets PROPERTIES DESCRIPTION 0115 "Add support for text auto correction (ktextaddons)" 0116 TYPE OPTIONAL 0117 ) 0118 if (TARGET KF${KF_MAJOR_VERSION}::TextAutoCorrectionWidgets) 0119 set(HAVE_TEXT_AUTOCORRECTION_WIDGETS TRUE) 0120 else() 0121 find_package(KF${KF_MAJOR_VERSION}TextAutoCorrection ${KTEXTADDONS_MIN_VERSION} CONFIG) 0122 set_package_properties(KF${KF_MAJOR_VERSION}TextAutoCorrection PROPERTIES DESCRIPTION 0123 "Add support for text auto correction (ktextaddons)" 0124 TYPE OPTIONAL 0125 ) 0126 if (TARGET KF${KF_MAJOR_VERSION}::TextAutoCorrection) 0127 set(HAVE_TEXT_AUTOCORRECTION TRUE) 0128 endif() 0129 endif() 0130 0131 find_package(KF${KF_MAJOR_VERSION}TextEditTextToSpeech ${KTEXTADDONS_MIN_VERSION} CONFIG) 0132 set_package_properties(KF${KF_MAJOR_VERSION}TextEditTextToSpeech PROPERTIES DESCRIPTION 0133 "Add support for text to speech (ktextaddons)" 0134 TYPE OPTIONAL 0135 ) 0136 if (TARGET KF${KF_MAJOR_VERSION}::TextEditTextToSpeech) 0137 set(HAVE_TEXT_TO_SPEECH TRUE) 0138 endif() 0139 0140 find_package(KF${KF_MAJOR_VERSION}TextEmoticonsWidgets ${KTEXTADDONS_MIN_VERSION} CONFIG) 0141 set_package_properties(KF${KF_MAJOR_VERSION}TextEmoticonsWidgets PROPERTIES DESCRIPTION 0142 "Add text emoticons support (ktextaddons)" 0143 TYPE OPTIONAL 0144 ) 0145 0146 find_package(KF${KF_MAJOR_VERSION}TextUtils ${KTEXTADDONS_MIN_VERSION} CONFIG) 0147 set_package_properties(KF${KF_MAJOR_VERSION}TextUtils PROPERTIES DESCRIPTION 0148 "Add utils text functions (ktextaddons)" 0149 TYPE OPTIONAL 0150 ) 0151 0152 if (TARGET KF${KF_MAJOR_VERSION}::TextUtils) 0153 set(HAVE_TEXT_UTILS TRUE) 0154 endif() 0155 0156 0157 find_package(KF${KF_MAJOR_VERSION}TextCustomEditor ${KTEXTADDONS_MIN_VERSION} CONFIG) 0158 set_package_properties(KF${KF_MAJOR_VERSION}TextCustomEditor PROPERTIES DESCRIPTION 0159 "Add text custom editor (ktextaddons)" 0160 TYPE OPTIONAL 0161 ) 0162 0163 if (TARGET KF${KF_MAJOR_VERSION}::TextCustomEditor) 0164 set(HAVE_TEXT_CUSTOM_EDITOR TRUE) 0165 endif() 0166 0167 if (NOT WIN32 AND NOT APPLE) 0168 find_package(KF${KF_MAJOR_VERSION}DBusAddons ${KF_MIN_VERSION} CONFIG REQUIRED) 0169 endif() 0170 0171 0172 find_package(KF${KF_MAJOR_VERSION}XmlGui ${KF_MIN_VERSION} CONFIG REQUIRED) 0173 find_package(KF${KF_MAJOR_VERSION}Config ${KF_MIN_VERSION} CONFIG REQUIRED) 0174 find_package(KF${KF_MAJOR_VERSION}KIO ${KF_MIN_VERSION} CONFIG REQUIRED) 0175 find_package(KF${KF_MAJOR_VERSION}Sonnet ${KF_MIN_VERSION} CONFIG REQUIRED) 0176 find_package(KF${KF_MAJOR_VERSION}TextWidgets ${KF_MIN_VERSION} CONFIG REQUIRED) 0177 find_package(KF${KF_MAJOR_VERSION}Purpose ${KF_MIN_VERSION} CONFIG) 0178 0179 find_package(KF${KF_MAJOR_VERSION}DocTools ${KF_MIN_VERSION}) 0180 set_package_properties(KF${KF_MAJOR_VERSION}DocTools PROPERTIES DESCRIPTION 0181 "Tools to generate documentation" 0182 TYPE OPTIONAL 0183 ) 0184 0185 if (QT_MAJOR_VERSION STREQUAL "6") 0186 find_package(KF6StatusNotifierItem ${KF_MIN_VERSION} REQUIRED) 0187 endif() 0188 0189 find_package(Qt${QT_MAJOR_VERSION}Keychain CONFIG) 0190 set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES 0191 DESCRIPTION "Provides support for secure credentials storage" 0192 URL "https://github.com/frankosterfeld/qtkeychain" 0193 TYPE REQUIRED) 0194 0195 if (Qt${QT_MAJOR_VERSION}Keychain_VERSION VERSION_LESS 0.14.99) 0196 if (QT_MAJOR_VERSION STREQUAL "6") 0197 MESSAGE(STATUS "Qt${QT_MAJOR_VERSION}KeyChain version is less 0.14.99. It will not support KWallet 6... It will not able to load password. Please update it.") 0198 endif() 0199 endif() 0200 0201 if (OPTION_SELENIUMWEBDRIVER_SUPPORT) 0202 find_package(SeleniumWebDriverATSPI) 0203 set_package_properties(SeleniumWebDriverATSPI PROPERTIES PURPOSE "Needed for GUI tests" URL "https://invent.kde.org/sdk/selenium-webdriver-at-spi" TYPE OPTIONAL) 0204 endif() 0205 0206 set(KUSERFEEDBACK_SUFFIX) 0207 if (QT_MAJOR_VERSION STREQUAL "6") 0208 set(KUSERFEEDBACK_SUFFIX "Qt6") 0209 find_package(KUserFeedback${KUSERFEEDBACK_SUFFIX} 1.2.1 CONFIG) 0210 add_definitions(-DUSE_KUSERFEEDBACK_QT6) 0211 else() 0212 find_package(KUserFeedback${KUSERFEEDBACK_SUFFIX} 1.2.0 CONFIG) 0213 endif() 0214 set(HAVE_KUSERFEEDBACK ${KUserFeedback${KUSERFEEDBACK_SUFFIX}_FOUND}) 0215 set_package_properties(KUserFeedback${KUSERFEEDBACK_SUFFIX} PROPERTIES DESCRIPTION "User Feedback lib" TYPE OPTIONAL PURPOSE "Allow to send Telemetry Information (optional).") 0216 0217 find_package(KF${KF_MAJOR_VERSION}Solid ${KF_MIN_VERSION} CONFIG) 0218 if (KF${KF_MAJOR_VERSION}Solid_FOUND) 0219 # SolidPower is not built by default, and the only way to find is to 0220 # check for the header and that it builds 0221 get_target_property(SOLID_INCLUDE_DIRS KF${KF_MAJOR_VERSION}::Solid INTERFACE_INCLUDE_DIRECTORIES) 0222 find_file(SOLID_POWER_FOUND Solid/Power PATHS ${SOLID_INCLUDE_DIRS} NO_DEFAULT_PATH) 0223 if (SOLID_POWER_FOUND) 0224 message(STATUS "Found Solid Power header at ${SOLID_POWER_FOUND}") 0225 set(HAVE_SOLID 1) 0226 else() 0227 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 .`") 0228 endif() 0229 endif() 0230 set_package_properties(KF${KF_MAJOR_VERSION}Solid PROPERTIES DESCRIPTION "Device integration framework" TYPE OPTIONAL PURPOSE "Allows detecting suspend and resume.") 0231 0232 find_package(KF${KF_MAJOR_VERSION}NetworkManagerQt ${KF_MIN_VERSION} CONFIG) 0233 set(HAVE_NETWORKMANAGER ${KF${KF_MAJOR_VERSION}NetworkManagerQt_FOUND}) 0234 set_package_properties(KF${KF_MAJOR_VERSION}NetworkManagerQt PROPERTIES DESCRIPTION "Network management lib" TYPE OPTIONAL PURPOSE "Allows detecting network state changes.") 0235 0236 0237 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0238 ecm_set_disabled_deprecation_versions(QT 6.5 0239 KF 5.109.0 0240 ) 0241 if (OPTION_BUILD_PYTHON_BINDINGS) 0242 remove_definitions(-DQT_STRICT_ITERATORS) 0243 endif() 0244 add_definitions(-DQT_NO_FOREACH) 0245 add_definitions(-DQT_NO_KEYWORDS) 0246 0247 set(RUQOLA_LIB_VERSION "${RUQOLA_VERSION}") 0248 set(RUQOLA_LIB_SOVERSION "0") 0249 0250 0251 configure_file(config-ruqola.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ruqola.h) 0252 0253 if(BUILD_TESTING) 0254 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Test) 0255 add_definitions(-DBUILD_TESTING) 0256 endif(BUILD_TESTING) 0257 0258 if (PLUGINS_AUTHENTICATION_BASED_ON_O2) 0259 find_package(o2) 0260 endif() 0261 0262 0263 add_subdirectory(src) 0264 0265 if (BUILD_TESTING) 0266 add_subdirectory(tests) 0267 endif() 0268 0269 0270 ecm_qt_install_logging_categories( 0271 EXPORT RUQOLA 0272 FILE ruqola.categories 0273 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 0274 ) 0275 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 0276 ki18n_install(po) 0277 if (KF${KF_MAJOR_VERSION}DocTools_FOUND) 0278 kdoctools_install(po) 0279 add_subdirectory(doc) 0280 endif() 0281 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)