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)