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