Warning, /plasma/plasma-desktop/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16) 0002 0003 project(plasma-desktop) 0004 0005 set(PROJECT_VERSION "5.27.10") 0006 set(PROJECT_VERSION_MAJOR 5) 0007 0008 set(QT_MIN_VERSION "5.15.2") 0009 set(KF5_MIN_VERSION "5.102.0") 0010 set(KDE_COMPILERSETTINGS_LEVEL "5.85") 0011 set(ACCOUNTSQT_DEP_VERSION "1.13") 0012 0013 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) 0014 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) 0015 0016 include(KDEInstallDirs) 0017 include(KDECMakeSettings) 0018 include(KDECompilerSettings NO_POLICY_SCOPE) 0019 include(ECMFindQmlModule) 0020 include(ECMInstallIcons) 0021 include(ECMMarkAsTest) 0022 include(ECMMarkNonGuiExecutable) 0023 include(ECMOptionalAddSubdirectory) 0024 include(ECMQtDeclareLoggingCategory) 0025 include(ECMSetupVersion) 0026 include(ECMQtDeclareLoggingCategory) 0027 include(FeatureSummary) 0028 include(CheckIncludeFiles) 0029 include(KDEClangFormat) 0030 include(KDEGitCommitHooks) 0031 0032 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS 0033 Quick 0034 QuickWidgets 0035 DBus 0036 Widgets 0037 Svg 0038 Concurrent 0039 ) 0040 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG OPTIONAL_COMPONENTS WaylandClient) 0041 if (QT_MAJOR_VERSION EQUAL "5") 0042 find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS X11Extras) 0043 0044 find_package(QtWaylandScanner) 0045 set_package_properties(QtWaylandScanner PROPERTIES 0046 TYPE REQUIRED 0047 PURPOSE "Required for building KWin with Wayland support" 0048 ) 0049 endif() 0050 0051 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS 0052 Auth 0053 Crash 0054 Plasma 0055 PlasmaQuick 0056 DocTools 0057 I18n 0058 KCMUtils 0059 NewStuff 0060 NewStuffQuick 0061 KIO 0062 Notifications 0063 NotifyConfig 0064 Attica 0065 Runner 0066 GlobalAccel 0067 CoreAddons # KSharedDataCache required by KImageCache, KStringHandler required by FolderModel 0068 GuiAddons # KImageCache 0069 Declarative 0070 DBusAddons 0071 Activities 0072 ActivitiesStats 0073 Config 0074 WidgetsAddons 0075 Codecs 0076 Sonnet 0077 Package 0078 ) 0079 if (QT_MAJOR_VERSION EQUAL "5") 0080 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS KDELibs4Support) # kcms/dateandtime 0081 endif() 0082 0083 find_package(AccountsQt${QT_MAJOR_VERSION} ${ACCOUNTSQT_DEP_VERSION} CONFIG) 0084 0085 set_package_properties(AccountsQt${QT_MAJOR_VERSION} PROPERTIES 0086 DESCRIPTION "Accounts management library for Qt applications" 0087 URL "https://gitlab.com/accounts-sso/libaccounts-qt" 0088 PURPOSE "Required for building the OpenDesktop integration plugin" 0089 TYPE OPTIONAL 0090 ) 0091 0092 find_package(KAccounts 20.04) 0093 set_package_properties(KAccounts PROPERTIES 0094 DESCRIPTION "Accounts management library for KDE applications" 0095 PURPOSE "Required for building the OpenDesktop integration plugin" 0096 TYPE OPTIONAL 0097 ) 0098 0099 find_package(PkgConfig REQUIRED) 0100 pkg_check_modules(SignOnOAuth2 IMPORTED_TARGET signon-oauth2plugin) 0101 set_package_properties(signon-oauth2plugin PROPERTIES 0102 DESCRIPTION "Plugin for SignOnQt${QT_MAJOR_VERSION} which handles OAuth and OAuth2 logins" 0103 URL "https://gitlab.com/accounts-sso/signon-plugin-oauth2" 0104 PURPOSE "Required for running the OpenDesktop integration plugin" 0105 TYPE RUNTIME 0106 ) 0107 0108 find_package(KF5Kirigami2 ${KF5_MIN_VERSION} CONFIG) 0109 set_package_properties(KF5Kirigami2 PROPERTIES 0110 DESCRIPTION "A QtQuick based components set" 0111 PURPOSE "Required at runtime by many KCMs" 0112 TYPE RUNTIME 0113 ) 0114 0115 find_package(KF5QQC2DesktopStyle ${KF5_MIN_VERSION} CONFIG) 0116 set_package_properties(KF5QQC2DesktopStyle PROPERTIES 0117 DESCRIPTION "QtQuickControls 2 style that uses QWidget's QStyle for painting" 0118 PURPOSE "Required at runtime by many KCMs" 0119 TYPE RUNTIME 0120 ) 0121 0122 find_package(WaylandProtocols 1.25) 0123 set_package_properties(WaylandProtocols PROPERTIES 0124 TYPE REQUIRED 0125 PURPOSE "Collection of Wayland protocols that add functionality not available in the Wayland core protocol" 0126 URL "https://gitlab.freedesktop.org/wayland/wayland-protocols/" 0127 ) 0128 find_package(Wayland 1.2) 0129 set_package_properties(Wayland PROPERTIES 0130 TYPE REQUIRED 0131 PURPOSE "Required for building Tablet input KCM" 0132 ) 0133 0134 find_package(LibKWorkspace ${PROJECT_VERSION} CONFIG REQUIRED) 0135 find_package(LibNotificationManager ${PROJECT_VERSION} CONFIG REQUIRED) 0136 find_package(LibTaskManager ${PROJECT_VERSION} CONFIG REQUIRED) 0137 find_package(LibColorCorrect ${PROJECT_VERSION} CONFIG REQUIRED) 0138 find_package(KWinDBusInterface CONFIG REQUIRED) 0139 find_package(ScreenSaverDBusInterface CONFIG REQUIRED) 0140 find_package(KRunnerAppDBusInterface CONFIG REQUIRED) 0141 find_package(KSMServerDBusInterface CONFIG REQUIRED) 0142 find_package(KF5ItemModels CONFIG REQUIRED) 0143 find_package(KSysGuard CONFIG REQUIRED) 0144 find_package(KDED CONFIG REQUIRED) 0145 0146 find_package(KF5Baloo ${KF5_MIN_VERSION}) 0147 set_package_properties(KF5Baloo PROPERTIES 0148 DESCRIPTION "File Searching" 0149 PURPOSE "Needed to build the File Search KCM" 0150 TYPE RECOMMENDED 0151 ) 0152 0153 find_package(X11) 0154 set_package_properties(X11 PROPERTIES 0155 DESCRIPTION "X11 libraries" 0156 URL "https://www.x.org" 0157 PURPOSE "Required for building the X11 based workspace" 0158 TYPE REQUIRED 0159 ) 0160 0161 if(X11_FOUND) 0162 set(HAVE_X11 1) 0163 endif() 0164 0165 find_package(UDev) 0166 set_package_properties(UDev PROPERTIES 0167 DESCRIPTION "API for enumerating and introspecting local devices (part of systemd)" 0168 URL "https://www.freedesktop.org/wiki/Software/systemd/" 0169 PURPOSE "Required for device discovery in keyboard daemon" 0170 TYPE OPTIONAL 0171 ) 0172 0173 find_package(XCB 0174 REQUIRED COMPONENTS 0175 XCB SHM IMAGE 0176 OPTIONAL_COMPONENTS 0177 XKB XINPUT ATOM RECORD 0178 ) 0179 0180 find_package(X11_XCB) 0181 set_package_properties(X11_XCB PROPERTIES 0182 PURPOSE "Required for needed for touchpad KCM (X11 backend)" 0183 TYPE OPTIONAL 0184 ) 0185 0186 set_package_properties(XCB PROPERTIES TYPE REQUIRED) 0187 add_feature_info("XCB-XKB" XCB_XKB_FOUND "Required for building kcm/keyboard") 0188 add_feature_info("libxft" X11_Xft_FOUND "X FreeType interface library required for font installation") 0189 0190 pkg_check_modules(XORGLIBINPUT xorg-libinput IMPORTED_TARGET) 0191 pkg_check_modules(EVDEV xorg-evdev>=2.8.99.1 IMPORTED_TARGET) 0192 pkg_check_modules(XORGSERVER xorg-server IMPORTED_TARGET) 0193 0194 ecm_find_qmlmodule(org.kde.pipewire 0.1) 0195 0196 find_package(Synaptics) 0197 set_package_properties(Synaptics PROPERTIES TYPE OPTIONAL) 0198 add_feature_info("Synaptics" SYNAPTICS_FOUND "Synaptics libraries are needed for the synaptics touchpad KCM") 0199 0200 if(SYNAPTICS_FOUND) 0201 set(HAVE_SYNAPTICS 1) 0202 endif() 0203 0204 if(XORGLIBINPUT_FOUND) 0205 set(HAVE_XORGLIBINPUT 1) 0206 endif() 0207 0208 include(ConfigureChecks.cmake) 0209 0210 find_package(PackageKitQt${QT_MAJOR_VERSION}) 0211 set_package_properties(PackageKitQt${QT_MAJOR_VERSION} PROPERTIES 0212 DESCRIPTION "Software Manager integration" 0213 PURPOSE "Used in the KRunner plugin installer" 0214 TYPE OPTIONAL 0215 ) 0216 0217 if(PackageKitQt${QT_MAJOR_VERSION}_FOUND) 0218 set(HAVE_PACKAGEKIT TRUE) 0219 endif() 0220 0221 find_package(GLIB2) 0222 set_package_properties(GLIB2 PROPERTIES 0223 PURPOSE "Required for building kimpanel" 0224 TYPE OPTIONAL 0225 ) 0226 0227 # For kimpanel 0228 pkg_check_modules(IBUS "ibus-1.0>=1.5.0" IMPORTED_TARGET) 0229 pkg_check_modules(GOBJECT gobject-2.0 IMPORTED_TARGET) 0230 pkg_check_modules(SCIM scim IMPORTED_TARGET) 0231 0232 ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX PLASMA VERSION_HEADER plasma_version.h) 0233 0234 include_directories("${CMAKE_CURRENT_BINARY_DIR}") 0235 0236 configure_file(config-workspace.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-workspace.h) 0237 configure_file(config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h) 0238 0239 plasma_install_package(desktoppackage org.kde.plasma.desktop shells shell) 0240 0241 add_subdirectory(layout-templates) 0242 0243 add_subdirectory(doc) 0244 add_subdirectory(runners) 0245 add_subdirectory(containments) 0246 add_subdirectory(toolboxes) 0247 add_subdirectory(applets) 0248 add_subdirectory(kcms) 0249 add_subdirectory(knetattach) 0250 if(KAccounts_FOUND AND AccountsQt${QT_MAJOR_VERSION}_FOUND) 0251 add_subdirectory(attica-kde) 0252 endif() 0253 add_subdirectory(imports/activitymanager/) 0254 add_subdirectory(solid-device-automounter) 0255 add_subdirectory(emojier) 0256 if(X11_Xkb_FOUND AND XCB_XKB_FOUND) 0257 add_subdirectory(kaccess) 0258 endif() 0259 install(FILES org.kde.plasmashell.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) 0260 0261 # add clang-format target for all our real source files 0262 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h) 0263 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) 0264 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 0265 0266 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) 0267 0268 find_package(XdgUserDir) 0269 set_package_properties(XdgUserDir PROPERTIES 0270 DESCRIPTION "Xdg-user-dir script" 0271 PURPOSE "Used to translate default paths in KCM desktoppath" 0272 TYPE RUNTIME 0273 ) 0274 0275 ki18n_install(po) 0276 kdoctools_install(po)