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)