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)