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)