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)