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 "6.0.80")
0006 set(PROJECT_VERSION_MAJOR 6)
0007
0008 set(PROJECT_DEP_VERSION "6.0.80")
0009 set(QT_MIN_VERSION "6.6.0")
0010 set(KF6_MIN_VERSION "5.240.0")
0011 set(KDE_COMPILERSETTINGS_LEVEL "5.85")
0012 set(ACCOUNTSQT_DEP_VERSION "1.13")
0013
0014 set(CMAKE_CXX_STANDARD 20)
0015 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0016
0017 find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE)
0018 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
0019
0020 include(KDEInstallDirs)
0021 include(KDECMakeSettings)
0022 include(KDECompilerSettings NO_POLICY_SCOPE)
0023 include(ECMFindQmlModule)
0024 include(ECMGenerateExportHeader)
0025 include(ECMInstallIcons)
0026 include(ECMMarkAsTest)
0027 include(ECMMarkNonGuiExecutable)
0028 include(ECMOptionalAddSubdirectory)
0029 include(ECMQtDeclareLoggingCategory)
0030 include(ECMSetupVersion)
0031 include(FeatureSummary)
0032 include(CheckIncludeFiles)
0033 include(KDEClangFormat)
0034 include(KDEGitCommitHooks)
0035 include(ECMQmlModule)
0036
0037 option(BUILD_KCM_MOUSE_KWIN_WAYLAND "Build the Mouse KCM's KWin+Wayland backend" ON)
0038 option(BUILD_KCM_MOUSE_X11 "Build the Mouse KCM's X11 backend" ON)
0039 option(BUILD_KCM_TOUCHPAD_KWIN_WAYLAND "Build the Touchpad KCM's KWin+Wayland backend" ON)
0040 option(BUILD_KCM_TOUCHPAD_X11 "Build the Touchpad KCM's X11 backend" ON)
0041
0042 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
0043 Quick
0044 QuickWidgets
0045 DBus
0046 Widgets
0047 Svg
0048 Concurrent
0049 Core5Compat
0050 Sql # kcms/activities
0051 )
0052 find_package(Qt6 ${QT_MIN_VERSION} CONFIG OPTIONAL_COMPONENTS WaylandClient)
0053
0054 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
0055 Auth
0056 Crash
0057 Config
0058 DocTools
0059 I18n
0060 KCMUtils
0061 NewStuff
0062 KIO
0063 Notifications
0064 NotifyConfig
0065 Attica
0066 Runner
0067 GlobalAccel
0068 CoreAddons # KSharedDataCache required by KImageCache, KStringHandler required by FolderModel
0069 GuiAddons # KImageCache
0070 DBusAddons
0071 Config
0072 WidgetsAddons
0073 Codecs
0074 Sonnet
0075 Package
0076 IconThemes
0077 XmlGui
0078 Svg
0079 )
0080
0081 find_package(Plasma5Support ${PROJECT_DEP_VERSION} REQUIRED)
0082 find_package(Plasma ${PROJECT_DEP_VERSION} REQUIRED)
0083 find_package(PlasmaQuick ${PROJECT_DEP_VERSION} REQUIRED)
0084 find_package(PlasmaActivities ${PROJECT_DEP_VERSION} REQUIRED)
0085 find_package(PlasmaActivitiesStats ${PROJECT_DEP_VERSION} REQUIRED)
0086
0087 if(BUILD_TESTING)
0088 find_package(Qt6Test ${QT_MIN_VERSION} CONFIG REQUIRED)
0089 include(ECMAddTests)
0090 endif()
0091
0092 find_package(AccountsQt6 ${ACCOUNTSQT_DEP_VERSION} CONFIG)
0093
0094 set_package_properties(AccountsQt6 PROPERTIES
0095 DESCRIPTION "Accounts management library for Qt applications"
0096 URL "https://gitlab.com/accounts-sso/libaccounts-qt"
0097 PURPOSE "Required for building the OpenDesktop integration plugin"
0098 TYPE OPTIONAL
0099 )
0100
0101 find_package(KAccounts6 20.04)
0102 set_package_properties(KAccounts6 PROPERTIES
0103 DESCRIPTION "Accounts management library for KDE applications"
0104 PURPOSE "Required for building the OpenDesktop integration plugin"
0105 TYPE OPTIONAL
0106 )
0107
0108
0109 find_package(PkgConfig REQUIRED)
0110 pkg_check_modules(SignOnOAuth2 IMPORTED_TARGET signon-oauth2plugin)
0111 set_package_properties(signon-oauth2plugin PROPERTIES
0112 DESCRIPTION "Plugin for SignOnQt6 which handles OAuth and OAuth2 logins"
0113 URL "https://gitlab.com/accounts-sso/signon-plugin-oauth2"
0114 PURPOSE "Required for running the OpenDesktop integration plugin"
0115 TYPE RUNTIME
0116 )
0117
0118 find_package(KF6Kirigami2 ${KF6_MIN_VERSION} CONFIG)
0119 set_package_properties(KF6Kirigami2 PROPERTIES
0120 DESCRIPTION "A QtQuick based components set"
0121 PURPOSE "Required at runtime by many KCMs"
0122 TYPE RUNTIME
0123 )
0124
0125
0126 find_package(KF6KirigamiAddons2 0.10.0 CONFIG)
0127 set_package_properties(KF6KirigamiAddons2 PROPERTIES
0128 DESCRIPTION "Extra controls for Kirigami applications"
0129 PURPOSE "Required at runtime for Kickoff"
0130 TYPE RUNTIME
0131 )
0132
0133 find_package(KF6QQC2DesktopStyle ${KF6_MIN_VERSION} CONFIG)
0134 set_package_properties(KF6QQC2DesktopStyle PROPERTIES
0135 DESCRIPTION "QtQuickControls 2 style that uses QWidget's QStyle for painting"
0136 PURPOSE "Required at runtime by many KCMs"
0137 TYPE RUNTIME
0138 )
0139
0140 find_package(WaylandProtocols 1.25)
0141 set_package_properties(WaylandProtocols PROPERTIES
0142 TYPE REQUIRED
0143 PURPOSE "Collection of Wayland protocols that add functionality not available in the Wayland core protocol"
0144 URL "https://gitlab.freedesktop.org/wayland/wayland-protocols/"
0145 )
0146 find_package(Wayland 1.2)
0147 set_package_properties(Wayland PROPERTIES
0148 TYPE REQUIRED
0149 PURPOSE "Required for building Tablet input KCM"
0150 )
0151
0152 find_package(SDL2 2.0.16)
0153 set_package_properties(SDL2 PROPERTIES
0154 TYPE OPTIONAL
0155 PURPOSE "Required for building Game Controller KCM"
0156 )
0157
0158 find_package(LibKWorkspace ${PROJECT_DEP_VERSION} CONFIG REQUIRED)
0159 find_package(LibNotificationManager ${PROJECT_DEP_VERSION} CONFIG REQUIRED)
0160 find_package(LibTaskManager ${PROJECT_DEP_VERSION} CONFIG REQUIRED)
0161 find_package(LibColorCorrect ${PROJECT_DEP_VERSION} CONFIG REQUIRED)
0162 find_package(KWinDBusInterface CONFIG REQUIRED)
0163 find_package(ScreenSaverDBusInterface CONFIG REQUIRED)
0164 find_package(KRunnerAppDBusInterface CONFIG REQUIRED)
0165 find_package(KSMServerDBusInterface CONFIG REQUIRED)
0166 find_package(KF6ItemModels CONFIG REQUIRED)
0167 find_package(KSysGuard CONFIG REQUIRED)
0168 find_package(KF6KDED CONFIG REQUIRED)
0169
0170 find_package(KF6Baloo ${KF6_MIN_VERSION})
0171 set_package_properties(KF6Baloo PROPERTIES
0172 DESCRIPTION "File Searching"
0173 PURPOSE "Needed to build the File Search KCM"
0174 TYPE RECOMMENDED
0175 )
0176
0177 find_package(X11)
0178 set_package_properties(X11 PROPERTIES
0179 DESCRIPTION "X11 libraries"
0180 URL "https://www.x.org"
0181 PURPOSE "Required for building the X11 based workspace"
0182 TYPE REQUIRED
0183 )
0184
0185 if(X11_FOUND)
0186 set(HAVE_X11 1)
0187 endif()
0188
0189 find_package(Canberra)
0190 set_package_properties(Canberra PROPERTIES
0191 PURPOSE "Support audible bell in kaccess"
0192 TYPE REQUIRED)
0193
0194 find_package(UDev)
0195 set_package_properties(UDev PROPERTIES
0196 DESCRIPTION "API for enumerating and introspecting local devices (part of systemd)"
0197 URL "https://www.freedesktop.org/wiki/Software/systemd/"
0198 PURPOSE "Required for device discovery in keyboard daemon"
0199 TYPE OPTIONAL
0200 )
0201
0202 find_package(XCB
0203 REQUIRED COMPONENTS
0204 XCB SHM IMAGE
0205 OPTIONAL_COMPONENTS
0206 XKB XINPUT ATOM RECORD
0207 )
0208
0209 if (BUILD_KCM_TOUCHPAD_X11)
0210 find_package(X11_XCB)
0211 set_package_properties(X11_XCB PROPERTIES
0212 PURPOSE "Required for touchpad KCM (X11 backend) when option BUILD_KCM_TOUCHPAD_X11=ON"
0213 TYPE REQUIRED
0214 )
0215 endif()
0216
0217
0218 find_package(ICU COMPONENTS i18n uc)
0219 set_package_properties(ICU PROPERTIES
0220 PURPOSE "Retrieving timezone info"
0221 TYPE REQUIRED
0222 )
0223
0224 set_package_properties(XCB PROPERTIES TYPE REQUIRED)
0225 add_feature_info("XCB-XKB" XCB_XKB_FOUND "Required for building kcm/keyboard")
0226 add_feature_info("libxft" X11_Xft_FOUND "X FreeType interface library required for font installation")
0227
0228 pkg_check_modules(XORGLIBINPUT xorg-libinput IMPORTED_TARGET)
0229 pkg_check_modules(EVDEV xorg-evdev>=2.8.99.1 IMPORTED_TARGET)
0230 pkg_check_modules(XORGSERVER xorg-server IMPORTED_TARGET)
0231
0232 ecm_find_qmlmodule(org.kde.pipewire 0.1)
0233
0234 if(XORGLIBINPUT_FOUND)
0235 set(HAVE_XORGLIBINPUT 1)
0236 endif()
0237
0238 include(ConfigureChecks.cmake)
0239
0240 find_package(PackageKitQt6)
0241 set_package_properties(PackageKitQt6 PROPERTIES
0242 DESCRIPTION "Software Manager integration"
0243 PURPOSE "Used in the KRunner plugin installer"
0244 TYPE OPTIONAL
0245 )
0246
0247 if(PackageKitQt6_FOUND)
0248 set(HAVE_PACKAGEKIT TRUE)
0249 endif()
0250
0251 find_package(GLIB2)
0252 set_package_properties(GLIB2 PROPERTIES
0253 PURPOSE "Required for building kimpanel"
0254 TYPE OPTIONAL
0255 )
0256
0257 # For kimpanel
0258 pkg_check_modules(IBUS "ibus-1.0>=1.5.0" IMPORTED_TARGET)
0259 pkg_check_modules(GOBJECT gobject-2.0 IMPORTED_TARGET)
0260 pkg_check_modules(SCIM scim IMPORTED_TARGET)
0261
0262 ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX PLASMA VERSION_HEADER plasma_version.h)
0263
0264 include_directories("${CMAKE_CURRENT_BINARY_DIR}")
0265
0266 configure_file(config-workspace.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-workspace.h)
0267 configure_file(config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h)
0268 configure_file(config-build-options.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-build-options.h)
0269
0270 plasma_install_package(desktoppackage org.kde.plasma.desktop shells shell)
0271
0272 add_subdirectory(layout-templates)
0273
0274 add_subdirectory(doc)
0275 add_subdirectory(runners)
0276 add_subdirectory(containments)
0277 add_subdirectory(toolboxes)
0278 add_subdirectory(applets)
0279 add_subdirectory(kcms)
0280 add_subdirectory(knetattach)
0281 if(KAccounts6_FOUND AND AccountsQt6_FOUND)
0282 add_subdirectory(attica-kde)
0283 endif()
0284 add_subdirectory(imports/activitymanager/)
0285 add_subdirectory(solid-device-automounter)
0286 add_subdirectory(emojier)
0287 if(X11_Xkb_FOUND AND XCB_XKB_FOUND)
0288 add_subdirectory(kaccess)
0289 endif()
0290 install(FILES org.kde.plasmashell.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
0291
0292 # add clang-format target for all our real source files
0293 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0294 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0295 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0296
0297 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0298
0299 find_package(XdgUserDir)
0300 set_package_properties(XdgUserDir PROPERTIES
0301 DESCRIPTION "Xdg-user-dir script"
0302 PURPOSE "Used to translate default paths in KCM desktoppath"
0303 TYPE RUNTIME
0304 )
0305
0306 find_package(FontNotoColorEmoji)
0307 set_package_properties(FontNotoColorEmoji PROPERTIES
0308 PURPOSE "Default emoji font, needed to display emojis properly in Emoji Selector"
0309 URL "https://www.google.com/get/noto/"
0310 TYPE RUNTIME
0311 )
0312
0313 add_subdirectory(appiumtests)
0314
0315 ki18n_install(po)
0316 kdoctools_install(po)