Warning, /plasma/libksysguard/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 3.16)
0002 
0003 project(libksysguard)
0004 
0005 set(PROJECT_VERSION "6.0.80")
0006 set(PROJECT_VERSION_MAJOR 6)
0007 
0008 # check with non-Plasma consumers (e.g. KDevelop) before bumping these versions to make sure the KDE CI does not break
0009 set(QT_MIN_VERSION "6.6.0")
0010 set(KF6_MIN_VERSION "5.240.0")
0011 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
0012 
0013 find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE)
0014 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
0015 
0016 include(KDEInstallDirs)
0017 include(KDECMakeSettings)
0018 include(KDECompilerSettings NO_POLICY_SCOPE)
0019 include(KDEClangFormat)
0020 include(KDEGitCommitHooks)
0021 
0022 include(ECMAddTests)
0023 include(ECMInstallIcons)
0024 include(ECMSetupVersion)
0025 include(ECMQtDeclareLoggingCategory)
0026 include(ECMDeprecationSettings)
0027 
0028 include(CMakePackageConfigHelpers)
0029 include(CheckIncludeFiles)
0030 include(CheckLibraryExists)
0031 include(FeatureSummary)
0032 include(GenerateExportHeader)
0033 
0034 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED CONFIG COMPONENTS DBus Network Widgets Qml Quick)
0035 find_package(Qt6WebEngineWidgets ${QT_MIN_VERSION} CONFIG)
0036 set_package_properties(Qt6WebEngineWidgets PROPERTIES
0037                        URL "git://code.qt.org/qt/qtwebenginewidgets.git"
0038                        DESCRIPTION "Qt WebEngine module (web browsing engine)"
0039                        TYPE OPTIONAL
0040                        PURPOSE "Used by the HTML-based GUI ksysguard library"
0041                       )
0042 find_package(Qt6WebChannel ${QT_MIN_VERSION} CONFIG)
0043 set_package_properties(Qt6WebChannel PROPERTIES
0044                        URL "git://code.qt.org/qt/qtwebchannel.git"
0045                        DESCRIPTION "Qt WebChannel module"
0046                        TYPE OPTIONAL
0047                        PURPOSE "Used by the HTML-based GUI ksysguard library"
0048                       )
0049 
0050 
0051 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Config I18n JobWidgets WindowSystem Auth WidgetsAddons IconThemes ConfigWidgets Service GlobalAccel KIO Package NewStuff Solid)
0052 
0053 find_package(ZLIB REQUIRED)
0054 set_package_properties(ZLIB PROPERTIES DESCRIPTION "Support for gzip compressed files and data streams"
0055                        URL "https://zlib.net/"
0056                        TYPE REQUIRED
0057                       )
0058 
0059 check_library_exists(c clock_gettime "time.h" HAVE_CLOCK_GETTIME_C)
0060 
0061 ecm_setup_version(${PROJECT_VERSION}
0062                   VARIABLE_PREFIX KSYSGUARD
0063                   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/ksysguard_version.h"
0064                   PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfigVersion.cmake"
0065                   SOVERSION 10
0066 )
0067 
0068 option(WITH_X11 "Build with X11 support." ON)
0069 if(WITH_X11)
0070     find_package(X11)
0071     set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries"
0072                             URL "https://www.x.org"
0073                             TYPE OPTIONAL
0074                             PURPOSE "Required for building Process UI with X11 support"
0075                         )
0076     if(X11_FOUND)
0077         find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED Gui) # qtx11extras_p.h
0078         set(HAVE_X11 1)
0079         find_library(X11_XRes_LIB XRes ${X11_LIB_SEARCH_PATH})
0080         find_path(X11_XRes_INCLUDE_PATH X11/extensions/XRes.h ${X11_INC_SEARCH_PATH})
0081 
0082         if(X11_XRes_LIB AND X11_XRes_INCLUDE_PATH)
0083             set(HAVE_XRES 1)
0084         endif()
0085     endif()
0086 else()
0087     set(HAVE_X11 0)
0088     set(HAVE_XRES 0)
0089 endif()
0090 
0091 set(WEBENGINE_SCRIPTING_ENABLED FALSE)
0092 if(Qt6WebEngineWidgets_FOUND AND Qt6WebChannel_FOUND)
0093     set(WEBENGINE_SCRIPTING_ENABLED TRUE)
0094 endif()
0095 add_feature_info("Scripting plugin support" WEBENGINE_SCRIPTING_ENABLED "Support scripting plugins using WebEngine and WebChannel")
0096 
0097 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
0098     find_package(NL)
0099     set_package_properties(NL PROPERTIES
0100         TYPE REQUIRED
0101         PURPOSE "Used for gathering socket info via the sock_diag netlink subsystem."
0102         URL "https://github.com/thom311/libnl/"
0103     )
0104     find_package(libpcap)
0105     set_package_properties(
0106         libpcap PROPERTIES
0107         TYPE RECOMMENDED
0108         PURPOSE "libpcap is used for per-application network usage."
0109     )
0110 
0111     if(libpcap_FOUND )
0112         set(BUILD_NETWORK_PLUGIN TRUE)
0113 
0114         find_package(Libcap)
0115         set_package_properties(Libcap PROPERTIES
0116             TYPE OPTIONAL
0117             PURPOSE "Needed for setting capabilities of the per-application network plugin."
0118         )
0119     endif()
0120 
0121     find_package(Sensors)
0122     set_package_properties(Sensors PROPERTIES
0123         TYPE REQUIRED
0124         PURPOSE "Used for reading hardware sensors")
0125 endif()
0126 
0127 configure_file(config-ksysguard.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ksysguard.h )
0128 
0129 option(BUILD_DESIGNERPLUGIN "Build plugin for Qt Designer" ON)
0130 add_feature_info(DESIGNERPLUGIN ${BUILD_DESIGNERPLUGIN} "Build plugin for Qt Designer")
0131 
0132 option(ENABLE_KAUTH_HELPER "Build and install ksysguardprocesslist_helper KAuth helper" ON)
0133 add_feature_info(KAUTH_HELPER ${ENABLE_KAUTH_HELPER} "Build and install ksysguardprocesslist_helper KAuth helper")
0134 
0135 ecm_set_disabled_deprecation_versions(
0136     QT 5.15.0
0137 )
0138 
0139 add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055B00)
0140 add_definitions(-DKF_DEPRECATED_WARNINGS_SINCE=0x060000)
0141 add_definitions(-DQT_USE_QSTRINGBUILDER)
0142 
0143 set(CMAKE_CXX_STANDARD 20)
0144 set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
0145 
0146 add_subdirectory( formatter )
0147 add_subdirectory( lsofui )
0148 add_subdirectory( processcore )
0149 add_subdirectory( processui )
0150 add_subdirectory( sensors )
0151 add_subdirectory( faces )
0152 add_subdirectory( signalplotter )
0153 add_subdirectory( ksgrd )
0154 add_subdirectory( systemstats )
0155 
0156 if(BUILD_TESTING)
0157     add_subdirectory( autotests )
0158 endif()
0159 
0160 # add clang-format target for all our real source files
0161 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0162 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0163 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0164 
0165 install(DIRECTORY scripts/ DESTINATION ${KDE_INSTALL_DATADIR}/ksysguard/scripts)
0166 
0167 set(CMAKECONFIG_INSTALL_DIR ${KDE_INSTALL_LIBDIR}/cmake/KSysGuard)
0168 configure_package_config_file(KSysGuardConfig.cmake.in
0169     "${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfig.cmake"
0170     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR})
0171 
0172 install(FILES
0173     ${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfig.cmake
0174     ${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfigVersion.cmake
0175     DESTINATION ${CMAKECONFIG_INSTALL_DIR})
0176 
0177 install(EXPORT libksysguardLibraryTargets
0178         NAMESPACE KSysGuard::
0179         DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0180         FILE KSysGuardLibraryTargets.cmake )
0181 
0182 ecm_qt_install_logging_categories(
0183         EXPORT LIBKSYSGUARD
0184         FILE libksysguard.categories
0185         DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
0186         )
0187 
0188 ki18n_install(po)
0189 
0190 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)