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 "5.27.10")
0006 set(PROJECT_VERSION_MAJOR 5)
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 "5.15.2")
0010 set(KF5_MIN_VERSION "5.102.0")
0011 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
0012 
0013 find_package(ECM ${KF5_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(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED CONFIG COMPONENTS DBus Network Widgets Qml Quick)
0035 find_package(Qt${QT_MAJOR_VERSION}WebEngineWidgets ${QT_MIN_VERSION} CONFIG)
0036 set_package_properties(Qt${QT_MAJOR_VERSION}WebEngineWidgets 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(Qt${QT_MAJOR_VERSION}WebChannel ${QT_MIN_VERSION} CONFIG)
0043 set_package_properties(Qt${QT_MAJOR_VERSION}WebChannel 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(KF5 ${KF5_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 9
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         if (QT_MAJOR_VERSION STREQUAL "5")
0078             find_package(Qt5X11Extras REQUIRED)
0079         elseif (QT_MAJOR_VERSION STREQUAL "6")
0080             find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui) # qtx11extras_p.h
0081         endif()
0082         set(HAVE_X11 1)
0083         find_library(X11_XRes_LIB XRes ${X11_LIB_SEARCH_PATH})
0084         find_path(X11_XRes_INCLUDE_PATH X11/extensions/XRes.h ${X11_INC_SEARCH_PATH})
0085 
0086         if(X11_XRes_LIB AND X11_XRes_INCLUDE_PATH)
0087             set(HAVE_XRES 1)
0088         endif()
0089     endif()
0090 else()
0091     set(HAVE_X11 0)
0092     set(HAVE_XRES 0)
0093 endif()
0094 
0095 set(WEBENGINE_SCRIPTING_ENABLED FALSE)
0096 if(Qt${QT_MAJOR_VERSION}WebEngineWidgets_FOUND AND Qt${QT_MAJOR_VERSION}WebChannel_FOUND)
0097     set(WEBENGINE_SCRIPTING_ENABLED TRUE)
0098 endif()
0099 add_feature_info("Scripting plugin support" WEBENGINE_SCRIPTING_ENABLED "Support scripting plugins using WebEngine and WebChannel")
0100 
0101 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
0102     find_package(NL)
0103     set_package_properties(NL PROPERTIES
0104         TYPE REQUIRED
0105         PURPOSE "Used for gathering socket info via the sock_diag netlink subsystem."
0106         URL "https://github.com/thom311/libnl/"
0107     )
0108     find_package(libpcap)
0109     set_package_properties(
0110         libpcap PROPERTIES
0111         TYPE RECOMMENDED
0112         PURPOSE "libpcap is used for per-application network usage."
0113     )
0114 
0115     if(libpcap_FOUND )
0116         set(BUILD_NETWORK_PLUGIN TRUE)
0117 
0118         find_package(Libcap)
0119         set_package_properties(Libcap PROPERTIES
0120             TYPE OPTIONAL
0121             PURPOSE "Needed for setting capabilities of the per-application network plugin."
0122         )
0123     endif()
0124 
0125     find_package(Sensors)
0126     set_package_properties(Sensors PROPERTIES
0127         TYPE REQUIRED
0128         PURPOSE "Used for reading hardware sensors")
0129 endif()
0130 
0131 configure_file(config-ksysguard.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-ksysguard.h )
0132 
0133 option(BUILD_DESIGNERPLUGIN "Build plugin for Qt Designer" ON)
0134 add_feature_info(DESIGNERPLUGIN ${BUILD_DESIGNERPLUGIN} "Build plugin for Qt Designer")
0135 
0136 option(ENABLE_KAUTH_HELPER "Build and install ksysguardprocesslist_helper KAuth helper" ON)
0137 add_feature_info(KAUTH_HELPER ${ENABLE_KAUTH_HELPER} "Build and install ksysguardprocesslist_helper KAuth helper")
0138 
0139 ecm_set_disabled_deprecation_versions(
0140     QT 5.15.0
0141 )
0142 
0143 add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055B00)
0144 add_definitions(-DKF_DEPRECATED_WARNINGS_SINCE=0x060000)
0145 add_definitions(-DQT_USE_QSTRINGBUILDER)
0146 
0147 set(CMAKE_CXX_STANDARD 17)
0148 set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
0149 
0150 add_subdirectory( formatter )
0151 add_subdirectory( lsofui )
0152 add_subdirectory( processcore )
0153 add_subdirectory( processui )
0154 add_subdirectory( sensors )
0155 add_subdirectory( faces )
0156 add_subdirectory( signalplotter )
0157 add_subdirectory( ksgrd )
0158 add_subdirectory( systemstats )
0159 
0160 if(BUILD_TESTING)
0161     add_subdirectory( autotests )
0162 endif()
0163 
0164 # add clang-format target for all our real source files
0165 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0166 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0167 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0168 
0169 install(DIRECTORY scripts/ DESTINATION ${KDE_INSTALL_DATADIR}/ksysguard/scripts)
0170 
0171 set(CMAKECONFIG_INSTALL_DIR ${KDE_INSTALL_LIBDIR}/cmake/KSysGuard)
0172 configure_package_config_file(KSysGuardConfig.cmake.in
0173     "${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfig.cmake"
0174     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR})
0175 
0176 configure_package_config_file(KF5SysGuardConfig.cmake.in
0177     "${CMAKE_CURRENT_BINARY_DIR}/KF5SysGuardConfig.cmake"
0178     INSTALL_DESTINATION ${KDE_INSTALL_LIBDIR}/cmake/KF5SysGuard
0179 )
0180 
0181 install(FILES
0182     ${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfig.cmake
0183     ${CMAKE_CURRENT_BINARY_DIR}/KSysGuardConfigVersion.cmake
0184     DESTINATION ${CMAKECONFIG_INSTALL_DIR})
0185 
0186 install(FILES
0187     ${CMAKE_CURRENT_BINARY_DIR}/KF5SysGuardConfig.cmake
0188     DESTINATION ${KDE_INSTALL_LIBDIR}/cmake/KF5SysGuard
0189 )
0190 
0191 install(EXPORT libksysguardLibraryTargets
0192         NAMESPACE KSysGuard::
0193         DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0194         FILE KSysGuardLibraryTargets.cmake )
0195 
0196 ecm_qt_install_logging_categories(
0197         EXPORT LIBKSYSGUARD
0198         FILE libksysguard.categories
0199         DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
0200         )
0201 
0202 ki18n_install(po)
0203 
0204 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)