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 "1.9.54") 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.100.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 0039 option(OPTION_BUILD_PYTHON_BINDINGS "Build python bindings (experimental)" OFF) 0040 0041 if (OPTION_BUILD_PYTHON_BINDINGS) 0042 set(CMAKE_MODULE_PATH ${Ruqola_SOURCE_DIR}/cmake/Python ${ECM_MODULE_PATH}) 0043 endif() 0044 0045 option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" FALSE) 0046 0047 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT false) 0048 if (USE_UNITY_CMAKE_SUPPORT) 0049 set(COMPILE_WITH_UNITY_CMAKE_SUPPORT true) 0050 endif() 0051 option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) # Set to OFF when using clazy and such 0052 set(COMPILE_WITH_CMAKE_PCH_SUPPORT false) 0053 macro(ruqola_target_precompile_headers) 0054 if (USE_PRECOMPILED_HEADERS) 0055 set(COMPILE_WITH_CMAKE_PCH_SUPPORT true) 0056 0057 if (COMPILE_WITH_CMAKE_PCH_SUPPORT) 0058 target_precompile_headers(${ARGV}) 0059 endif() 0060 endif() 0061 endmacro() 0062 0063 option(PLUGINS_AUTHENTICATION_BASED_ON_O2 "Build authentication based on o2 lib (experimental)" FALSE) 0064 0065 option(EXPERIMENTAL_DATABASE_SUPPORT "Experimental database support (experimental)" FALSE) 0066 if (EXPERIMENTAL_DATABASE_SUPPORT) 0067 set(HAVE_DATABASE_SUPPORT TRUE) 0068 endif() 0069 0070 if (NOT WIN32 AND NOT APPLE) 0071 option(UNITY_SUPPORT "Build unity support" TRUE) 0072 else() 0073 set(UNITY_SUPPORT OFF) 0074 endif() 0075 0076 if (UNITY_SUPPORT) 0077 add_definitions(-DUNITY_SUPPORT) 0078 endif() 0079 set(KTEXTADDONS_MIN_VERSION "1.0.3") 0080 set(REQUIRED_QT_VERSION "5.15.2") 0081 0082 if (QT_MAJOR_VERSION STREQUAL "6") 0083 set(QT_REQUIRED_VERSION "6.4.0") 0084 set(KF_MIN_VERSION "5.240.0") 0085 set(KF_MAJOR_VERSION "6") 0086 set(KTEXTADDONS_MIN_VERSION "1.1.0") 0087 else() 0088 set(KF_MAJOR_VERSION "5") 0089 endif() 0090 0091 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core Gui Widgets WebSockets Network NetworkAuth MultimediaWidgets Sql) 0092 0093 find_package(KF${KF_MAJOR_VERSION} ${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 ) 0105 0106 0107 find_package(KF${KF_MAJOR_VERSION}TextTranslator ${KTEXTADDONS_MIN_VERSION} CONFIG) 0108 set_package_properties(KF${KF_MAJOR_VERSION}TextTranslator PROPERTIES DESCRIPTION 0109 "Add support for text translation" 0110 TYPE OPTIONAL 0111 ) 0112 if (TARGET KF${KF_MAJOR_VERSION}::TextTranslator) 0113 set(HAVE_TEXT_TRANSLATOR TRUE) 0114 endif() 0115 0116 find_package(KF${KF_MAJOR_VERSION}TextAutoCorrection ${KTEXTADDONS_MIN_VERSION} CONFIG) 0117 set_package_properties(KF${KF_MAJOR_VERSION}TextAutoCorrection PROPERTIES DESCRIPTION 0118 "Add support for text auto correction" 0119 TYPE OPTIONAL 0120 ) 0121 if (TARGET KF${KF_MAJOR_VERSION}::TextAutoCorrection) 0122 set(HAVE_TEXT_AUTOCORRECTION TRUE) 0123 endif() 0124 0125 find_package(KF${KF_MAJOR_VERSION}TextEditTextToSpeech ${KTEXTADDONS_MIN_VERSION} CONFIG) 0126 set_package_properties(KF${KF_MAJOR_VERSION}TextEditTextToSpeech PROPERTIES DESCRIPTION 0127 "Add support for text to speech" 0128 TYPE OPTIONAL 0129 ) 0130 if (TARGET KF${KF_MAJOR_VERSION}::TextEditTextToSpeech) 0131 set(HAVE_TEXT_TO_SPEECH TRUE) 0132 endif() 0133 0134 if (NOT WIN32 AND NOT APPLE) 0135 find_package(KF${KF_MAJOR_VERSION}DBusAddons ${KF_MIN_VERSION} CONFIG REQUIRED) 0136 endif() 0137 0138 find_package(KF${KF_MAJOR_VERSION}XmlGui ${KF_MIN_VERSION} CONFIG REQUIRED) 0139 find_package(KF${KF_MAJOR_VERSION}Config ${KF_MIN_VERSION} CONFIG REQUIRED) 0140 find_package(KF${KF_MAJOR_VERSION}KIO ${KF_MIN_VERSION} CONFIG REQUIRED) 0141 find_package(KF${KF_MAJOR_VERSION}Sonnet ${KF_MIN_VERSION} CONFIG REQUIRED) 0142 find_package(KF${KF_MAJOR_VERSION}TextWidgets ${KF_MIN_VERSION} CONFIG REQUIRED) 0143 find_package(KF${KF_MAJOR_VERSION}Purpose ${KF_MIN_VERSION} CONFIG) 0144 0145 find_package(KF${KF_MAJOR_VERSION}DocTools ${KF_MIN_VERSION}) 0146 set_package_properties(KF${KF_MAJOR_VERSION}DocTools PROPERTIES DESCRIPTION 0147 "Tools to generate documentation" 0148 TYPE OPTIONAL 0149 ) 0150 0151 0152 find_package(Qt${QT_MAJOR_VERSION}Keychain CONFIG) 0153 set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES 0154 DESCRIPTION "Provides support for secure credentials storage" 0155 URL "https://github.com/frankosterfeld/qtkeychain" 0156 TYPE REQUIRED) 0157 0158 0159 set(KUSERFEEDBACK_SUFFIX) 0160 if (QT_MAJOR_VERSION STREQUAL "6") 0161 set(KUSERFEEDBACK_SUFFIX "Qt6") 0162 find_package(KUserFeedback${KUSERFEEDBACK_SUFFIX} 1.2.1 CONFIG) 0163 add_definitions(-DUSE_KUSERFEEDBACK_QT6) 0164 else() 0165 find_package(KUserFeedback${KUSERFEEDBACK_SUFFIX} 1.2.0 CONFIG) 0166 endif() 0167 set(HAVE_KUSERFEEDBACK ${KUserFeedback${KUSERFEEDBACK_SUFFIX}_FOUND}) 0168 set_package_properties(KUserFeedback${KUSERFEEDBACK_SUFFIX} PROPERTIES DESCRIPTION "User Feedback lib" TYPE OPTIONAL PURPOSE "Allow to send Telemetry Information (optional).") 0169 0170 find_package(KF${KF_MAJOR_VERSION}Solid ${KF_MIN_VERSION} CONFIG) 0171 if (KF${KF_MAJOR_VERSION}Solid_FOUND) 0172 # SolidPower is not built by default, and the only way to find is to 0173 # check for the header and that it builds 0174 get_target_property(SOLID_INCLUDE_DIRS KF${KF_MAJOR_VERSION}::Solid INTERFACE_INCLUDE_DIRECTORIES) 0175 find_file(SOLID_POWER_FOUND Solid/Power PATHS ${SOLID_INCLUDE_DIRS} NO_DEFAULT_PATH) 0176 if (SOLID_POWER_FOUND) 0177 message(STATUS "Found Solid Power header at ${SOLID_POWER_FOUND}") 0178 set(HAVE_SOLID 1) 0179 else() 0180 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 .`") 0181 endif() 0182 endif() 0183 set_package_properties(KF${KF_MAJOR_VERSION}Solid PROPERTIES DESCRIPTION "Device integration framework" TYPE OPTIONAL PURPOSE "Allows detecting suspend and resume.") 0184 0185 find_package(KF${KF_MAJOR_VERSION}NetworkManagerQt ${KF_MIN_VERSION} CONFIG) 0186 set(HAVE_NETWORKMANAGER ${KF${KF_MAJOR_VERSION}NetworkManagerQt_FOUND}) 0187 set_package_properties(KF${KF_MAJOR_VERSION}NetworkManagerQt PROPERTIES DESCRIPTION "Network management lib" TYPE OPTIONAL PURPOSE "Allows detecting network state changes.") 0188 0189 0190 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0191 ecm_set_disabled_deprecation_versions(QT 6.4 0192 KF 5.104.0 0193 ) 0194 if (OPTION_BUILD_PYTHON_BINDINGS) 0195 remove_definitions(-DQT_STRICT_ITERATORS) 0196 endif() 0197 add_definitions(-DQT_NO_FOREACH) 0198 add_definitions(-DQT_NO_KEYWORDS) 0199 0200 set(RUQOLA_LIB_VERSION "${RUQOLA_VERSION}") 0201 set(RUQOLA_LIB_SOVERSION "0") 0202 0203 0204 configure_file(config-ruqola.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ruqola.h) 0205 0206 if(BUILD_TESTING) 0207 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Test) 0208 add_definitions(-DBUILD_TESTING) 0209 endif(BUILD_TESTING) 0210 0211 if (PLUGINS_AUTHENTICATION_BASED_ON_O2) 0212 find_package(o2) 0213 endif() 0214 0215 0216 add_subdirectory(src) 0217 0218 if (BUILD_TESTING) 0219 add_subdirectory(tests) 0220 endif() 0221 0222 0223 ecm_qt_install_logging_categories( 0224 EXPORT RUQOLA 0225 FILE ruqola.categories 0226 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 0227 ) 0228 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 0229 ki18n_install(po) 0230 if (KF${KF_MAJOR_VERSION}DocTools_FOUND) 0231 kdoctools_install(po) 0232 add_subdirectory(doc) 0233 endif() 0234 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)