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