Warning, /network/ruqola/CMakeLists.txt is written in an unsupported language. File is not indexed.

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