Warning, /network/ruqola/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2020-2024 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.1.0") 0006 # TODO: update it in each release version 0007 set(RUQOLA_RELEASE_VERSION "24.01.30") 0008 0009 project(Ruqola VERSION ${RUQOLA_VERSION}) 0010 set(CMAKE_CXX_STANDARD 17) 0011 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0012 0013 set(KF_MIN_VERSION "5.108.0") 0014 0015 # Do NOT add quote 0016 set(RUQOLA_DEV_VERSION ) 0017 0018 # add an extra space 0019 if(DEFINED RUQOLA_DEV_VERSION) 0020 set(RUQOLA_DEV_VERSION " ${RUQOLA_DEV_VERSION}") 0021 endif() 0022 0023 set(RUQOLA_VERSION_STRING "${RUQOLA_VERSION}${RUQOLA_DEV_VERSION}") 0024 0025 0026 find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED) 0027 set(CMAKE_MODULE_PATH ${Ruqola_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH}) 0028 0029 include(KDECompilerSettings NO_POLICY_SCOPE) 0030 include(KDEInstallDirs) 0031 include(KDECMakeSettings) 0032 include(ECMInstallIcons) 0033 include(ECMQtDeclareLoggingCategory) 0034 include(ECMAddTests) 0035 include(GenerateExportHeader) 0036 include(FeatureSummary) 0037 include(CheckIncludeFileCXX) 0038 include(KDEGitCommitHooks) 0039 include(ECMDeprecationSettings) 0040 include(KDEClangFormat) 0041 include(ECMGenerateHeaders) 0042 include(ECMSetupVersion) 0043 0044 option(OPTION_BUILD_PYTHON_BINDINGS "Build python bindings (experimental)" OFF) 0045 option(OPTION_SELENIUMWEBDRIVER_SUPPORT "Add selenium driver test (experimental)" OFF) 0046 option(OPTION_USE_SIZEHINT_CACHE_SUPPORT "Add sizehint cache" ON) 0047 option(OPTION_USE_ROUNDED_RECT_PIXMAP "Show avatar in a rounded rect" ON) 0048 0049 if (OPTION_USE_ROUNDED_RECT_PIXMAP) 0050 set(USE_ROUNDED_RECT_PIXMAP true) 0051 endif() 0052 0053 if (OPTION_USE_SIZEHINT_CACHE_SUPPORT) 0054 set(USE_SIZEHINT_CACHE_SUPPORT true) 0055 endif() 0056 0057 if (OPTION_BUILD_PYTHON_BINDINGS) 0058 set(CMAKE_MODULE_PATH ${Ruqola_SOURCE_DIR}/cmake/Python ${ECM_MODULE_PATH}) 0059 endif() 0060 0061 option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF) 0062 0063 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT false) 0064 if (USE_UNITY_CMAKE_SUPPORT) 0065 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT true) 0066 endif() 0067 option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) # Set to OFF when using clazy and such 0068 set(COMPILE_WITH_CMAKE_PCH_SUPPORT false) 0069 macro(ruqola_target_precompile_headers) 0070 if (USE_PRECOMPILED_HEADERS) 0071 set(COMPILE_WITH_CMAKE_PCH_SUPPORT true) 0072 0073 if (COMPILE_WITH_CMAKE_PCH_SUPPORT) 0074 target_precompile_headers(${ARGV}) 0075 endif() 0076 endif() 0077 endmacro() 0078 0079 option(PLUGINS_AUTHENTICATION_BASED_ON_O2 "Build authentication based on o2 lib (experimental)" OFF) 0080 if (NOT WIN32 AND NOT APPLE) 0081 option(UNITY_SUPPORT "Build unity support" ON) 0082 else() 0083 set(UNITY_SUPPORT OFF) 0084 endif() 0085 0086 if (UNITY_SUPPORT) 0087 add_definitions(-DUNITY_SUPPORT) 0088 endif() 0089 set(KTEXTADDONS_MIN_VERSION "1.5.2") 0090 set(REQUIRED_QT_VERSION "5.15.2") 0091 0092 set(KLLMWIDGETS_VERSION "0.1.0") 0093 0094 if (QT_MAJOR_VERSION STREQUAL "6") 0095 set(QT_REQUIRED_VERSION "6.6.0") 0096 set(KF_MIN_VERSION "5.246.0") 0097 set(KF_MAJOR_VERSION "6") 0098 set(KTEXTADDONS_MIN_VERSION "1.5.3") 0099 else() 0100 set(KF_MAJOR_VERSION "5") 0101 endif() 0102 0103 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core Gui Widgets WebSockets Network NetworkAuth MultimediaWidgets Sql) 0104 0105 find_package(KF${KF_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS 0106 CoreAddons 0107 I18n 0108 Crash 0109 Notifications 0110 IconThemes 0111 SyntaxHighlighting 0112 NotifyConfig 0113 ItemViews 0114 IdleTime 0115 Prison 0116 Archive 0117 Codecs 0118 ) 0119 0120 0121 find_package(KF${KF_MAJOR_VERSION}TextTranslator ${KTEXTADDONS_MIN_VERSION} CONFIG) 0122 set_package_properties(KF${KF_MAJOR_VERSION}TextTranslator PROPERTIES DESCRIPTION 0123 "Add support for text translation (ktextaddons)" 0124 TYPE OPTIONAL 0125 ) 0126 if (TARGET KF${KF_MAJOR_VERSION}::TextTranslator) 0127 set(HAVE_TEXT_TRANSLATOR TRUE) 0128 endif() 0129 0130 find_package(KF${KF_MAJOR_VERSION}TextAutoCorrectionWidgets ${KTEXTADDONS_MIN_VERSION} CONFIG) 0131 set_package_properties(KF${KF_MAJOR_VERSION}TextAutoCorrectionWidgets PROPERTIES DESCRIPTION 0132 "Add support for text auto correction (ktextaddons)" 0133 TYPE OPTIONAL 0134 ) 0135 if (TARGET KF${KF_MAJOR_VERSION}::TextAutoCorrectionWidgets) 0136 set(HAVE_TEXT_AUTOCORRECTION_WIDGETS TRUE) 0137 endif() 0138 0139 find_package(KF${KF_MAJOR_VERSION}TextEditTextToSpeech ${KTEXTADDONS_MIN_VERSION} CONFIG) 0140 set_package_properties(KF${KF_MAJOR_VERSION}TextEditTextToSpeech PROPERTIES DESCRIPTION 0141 "Add support for text to speech (ktextaddons)" 0142 TYPE OPTIONAL 0143 ) 0144 if (TARGET KF${KF_MAJOR_VERSION}::TextEditTextToSpeech) 0145 set(HAVE_TEXT_TO_SPEECH TRUE) 0146 endif() 0147 0148 find_package(KF${KF_MAJOR_VERSION}TextEmoticonsWidgets ${KTEXTADDONS_MIN_VERSION} CONFIG) 0149 set_package_properties(KF${KF_MAJOR_VERSION}TextEmoticonsWidgets PROPERTIES DESCRIPTION 0150 "Add text emoticons support (ktextaddons)" 0151 TYPE OPTIONAL 0152 ) 0153 0154 if (${KF${KF_MAJOR_VERSION}TextEmoticonsWidgets_VERSION} VERSION_GREATER_EQUAL 1.5.44) 0155 set(HAVE_TEXTADDONS_TEXTEMOTICON_EXCLUDEEMOTICON_SUPPORT TRUE) 0156 else() 0157 if (${KF${KF_MAJOR_VERSION}TextEmoticonsWidgets_VERSION} VERSION_GREATER_EQUAL 1.5.3) 0158 if (${KF${KF_MAJOR_VERSION}TextEmoticonsWidgets_VERSION} VERSION_LESS_EQUAL 1.5.30) 0159 set(HAVE_TEXTADDONS_TEXTEMOTICON_EXCLUDEEMOTICON_SUPPORT TRUE) 0160 endif() 0161 endif() 0162 endif() 0163 0164 find_package(KF${KF_MAJOR_VERSION}TextUtils ${KTEXTADDONS_MIN_VERSION} CONFIG) 0165 set_package_properties(KF${KF_MAJOR_VERSION}TextUtils PROPERTIES DESCRIPTION 0166 "Add utils text functions (ktextaddons)" 0167 TYPE OPTIONAL 0168 ) 0169 0170 if (TARGET KF${KF_MAJOR_VERSION}::TextUtils) 0171 set(HAVE_TEXT_UTILS TRUE) 0172 endif() 0173 0174 0175 find_package(KF${KF_MAJOR_VERSION}TextCustomEditor ${KTEXTADDONS_MIN_VERSION} CONFIG) 0176 set_package_properties(KF${KF_MAJOR_VERSION}TextCustomEditor PROPERTIES DESCRIPTION 0177 "Add text custom editor (ktextaddons)" 0178 TYPE OPTIONAL 0179 ) 0180 0181 if (TARGET KF${KF_MAJOR_VERSION}::TextCustomEditor) 0182 set(HAVE_TEXT_CUSTOM_EDITOR TRUE) 0183 endif() 0184 0185 if (NOT WIN32 AND NOT APPLE) 0186 find_package(KF${KF_MAJOR_VERSION}DBusAddons ${KF_MIN_VERSION} CONFIG REQUIRED) 0187 endif() 0188 0189 0190 find_package(KF${KF_MAJOR_VERSION}XmlGui ${KF_MIN_VERSION} CONFIG REQUIRED) 0191 find_package(KF${KF_MAJOR_VERSION}Config ${KF_MIN_VERSION} CONFIG REQUIRED) 0192 find_package(KF${KF_MAJOR_VERSION}KIO ${KF_MIN_VERSION} CONFIG REQUIRED) 0193 find_package(KF${KF_MAJOR_VERSION}Sonnet ${KF_MIN_VERSION} CONFIG REQUIRED) 0194 find_package(KF${KF_MAJOR_VERSION}TextWidgets ${KF_MIN_VERSION} CONFIG REQUIRED) 0195 find_package(KF${KF_MAJOR_VERSION}Purpose ${KF_MIN_VERSION} CONFIG) 0196 0197 find_package(KF${KF_MAJOR_VERSION}DocTools ${KF_MIN_VERSION}) 0198 set_package_properties(KF${KF_MAJOR_VERSION}DocTools PROPERTIES DESCRIPTION 0199 "Tools to generate documentation" 0200 TYPE OPTIONAL 0201 ) 0202 0203 find_package(KLLMWidgets ${KLLMWIDGETS_VERSION}) 0204 set_package_properties(KLLMWidgets PROPERTIES 0205 TYPE OPTIONAL 0206 PURPOSE "Required for building IA plugins support" 0207 DESCRIPTION "Use local IA plugin" 0208 URL https://invent.kde.org/utilities/alpaka 0209 ) 0210 0211 if (QT_MAJOR_VERSION STREQUAL "6") 0212 find_package(KF6StatusNotifierItem ${KF_MIN_VERSION} REQUIRED) 0213 endif() 0214 0215 find_package(Qt${QT_MAJOR_VERSION}Keychain CONFIG) 0216 set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES 0217 DESCRIPTION "Provides support for secure credentials storage" 0218 URL "https://github.com/frankosterfeld/qtkeychain" 0219 TYPE REQUIRED) 0220 0221 if (Qt${QT_MAJOR_VERSION}Keychain_VERSION VERSION_LESS 0.14.2) 0222 if (QT_MAJOR_VERSION STREQUAL "6") 0223 MESSAGE(STATUS "Qt${QT_MAJOR_VERSION}KeyChain version is less 0.14.2. It will not support KWallet 6... It will not able to load password. Please update it.") 0224 endif() 0225 endif() 0226 0227 if (OPTION_SELENIUMWEBDRIVER_SUPPORT) 0228 find_package(SeleniumWebDriverATSPI) 0229 set_package_properties(SeleniumWebDriverATSPI PROPERTIES PURPOSE "Needed for GUI tests" URL "https://invent.kde.org/sdk/selenium-webdriver-at-spi" TYPE OPTIONAL) 0230 endif() 0231 0232 if (QT_MAJOR_VERSION STREQUAL "6") 0233 find_package(KF6UserFeedback ${KF_MIN_VERSION} CONFIG) 0234 set(HAVE_KUSERFEEDBACK ${KF6UserFeedback_FOUND}) 0235 set_package_properties(KF6UserFeedback PROPERTIES DESCRIPTION "User Feedback lib" TYPE OPTIONAL PURPOSE "Allow to send Telemetry Information (optional).") 0236 else() 0237 find_package(KUserFeedback 1.2.0 CONFIG) 0238 set(HAVE_KUSERFEEDBACK ${KUserFeedback_FOUND}) 0239 set_package_properties(KUserFeedback PROPERTIES DESCRIPTION "User Feedback lib" TYPE OPTIONAL PURPOSE "Allow to send Telemetry Information (optional).") 0240 endif() 0241 0242 find_package(KF${KF_MAJOR_VERSION}Solid ${KF_MIN_VERSION} CONFIG) 0243 if (KF${KF_MAJOR_VERSION}Solid_FOUND) 0244 # SolidPower is not built by default, and the only way to find is to 0245 # check for the header and that it builds 0246 get_target_property(SOLID_INCLUDE_DIRS KF${KF_MAJOR_VERSION}::Solid INTERFACE_INCLUDE_DIRECTORIES) 0247 find_file(SOLID_POWER_FOUND Solid/Power PATHS ${SOLID_INCLUDE_DIRS} NO_DEFAULT_PATH) 0248 if (SOLID_POWER_FOUND) 0249 message(STATUS "Found Solid Power header at ${SOLID_POWER_FOUND}") 0250 set(HAVE_SOLID 1) 0251 else() 0252 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 .`") 0253 endif() 0254 endif() 0255 set_package_properties(KF${KF_MAJOR_VERSION}Solid PROPERTIES DESCRIPTION "Device integration framework" TYPE OPTIONAL PURPOSE "Allows detecting suspend and resume.") 0256 0257 find_package(KF${KF_MAJOR_VERSION}NetworkManagerQt ${KF_MIN_VERSION} CONFIG) 0258 set(HAVE_NETWORKMANAGER ${KF${KF_MAJOR_VERSION}NetworkManagerQt_FOUND}) 0259 set_package_properties(KF${KF_MAJOR_VERSION}NetworkManagerQt PROPERTIES DESCRIPTION "Network management lib" TYPE OPTIONAL PURPOSE "Allows detecting network state changes.") 0260 0261 0262 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0263 ecm_set_disabled_deprecation_versions(QT 6.5 0264 KF 5.248.0 0265 ) 0266 if (OPTION_BUILD_PYTHON_BINDINGS) 0267 remove_definitions(-DQT_STRICT_ITERATORS) 0268 endif() 0269 add_definitions(-DQT_NO_FOREACH) 0270 add_definitions(-DQT_NO_KEYWORDS) 0271 0272 set(RUQOLA_LIB_VERSION "${RUQOLA_VERSION}") 0273 set(RUQOLA_LIB_SOVERSION "0") 0274 0275 0276 configure_file(config-ruqola.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-ruqola.h) 0277 0278 if(BUILD_TESTING) 0279 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Test) 0280 add_definitions(-DBUILD_TESTING) 0281 endif(BUILD_TESTING) 0282 0283 if (PLUGINS_AUTHENTICATION_BASED_ON_O2) 0284 find_package(o2) 0285 endif() 0286 0287 0288 add_subdirectory(src) 0289 0290 if (BUILD_TESTING) 0291 add_subdirectory(tests) 0292 endif() 0293 0294 0295 ecm_qt_install_logging_categories( 0296 EXPORT RUQOLA 0297 FILE ruqola.categories 0298 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 0299 ) 0300 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 0301 ki18n_install(po) 0302 if (KF${KF_MAJOR_VERSION}DocTools_FOUND) 0303 kdoctools_install(po) 0304 add_subdirectory(doc) 0305 endif() 0306 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)