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)