Warning, /frameworks/plasma-framework/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16) 0002 0003 set(KF_VERSION "5.111.0") # handled by release scripts 0004 set(KF_DEP_VERSION "5.110.0") # handled by release scripts 0005 project(Plasma VERSION ${KF_VERSION}) 0006 0007 # ECM setup 0008 include(FeatureSummary) 0009 find_package(ECM 5.110.0 NO_MODULE) 0010 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") 0011 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) 0012 0013 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) 0014 0015 include(KDEInstallDirs) 0016 include(KDECMakeSettings) 0017 include(KDEGitCommitHooks) 0018 include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) 0019 0020 include(ECMGenerateExportHeader) 0021 include(ECMGenerateHeaders) 0022 include(CMakePackageConfigHelpers) 0023 include(ECMSetupVersion) 0024 include(ECMQtDeclareLoggingCategory) 0025 include(ECMAddQch) 0026 include(KDEPackageAppTemplates) 0027 include(ECMGenerateQmlTypes) 0028 include(ECMSetupQtPluginMacroNames) 0029 include(ECMMarkNonGuiExecutable) 0030 include(ECMDeprecationSettings) 0031 0032 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) 0033 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") 0034 0035 option(BUILD_DESKTOPTHEMES "Build with desktop themes. Turn this off when getting the desktop files from KF6" ON) 0036 0037 ecm_setup_version(PROJECT 0038 VARIABLE_PREFIX PLASMA 0039 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h" 0040 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfigVersion.cmake" 0041 SOVERSION 5) 0042 0043 ################# now find all used packages ################# 0044 0045 set (REQUIRED_QT_VERSION 5.15.2) 0046 0047 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Quick Gui Sql Qml Svg QuickControls2) 0048 if (QT_MAJOR_VERSION EQUAL "6") 0049 find_package(Qt6 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS ShaderTools) 0050 endif() 0051 0052 find_package(KF5 ${KF_DEP_VERSION} REQUIRED 0053 COMPONENTS 0054 Activities 0055 Archive 0056 Config 0057 ConfigWidgets 0058 CoreAddons 0059 DBusAddons 0060 Declarative 0061 GlobalAccel 0062 GuiAddons 0063 I18n 0064 IconThemes 0065 KIO 0066 WindowSystem 0067 XmlGui 0068 Notifications 0069 Package 0070 Kirigami2 0071 OPTIONAL_COMPONENTS 0072 Wayland 0073 DocTools 0074 ) 0075 if(NOT EXCLUDE_DEPRECATED_BEFORE_AND_AT STREQUAL "CURRENT" AND 0076 EXCLUDE_DEPRECATED_BEFORE_AND_AT VERSION_LESS 5.94.0) 0077 find_package(KF5 ${KF_DEP_VERSION} REQUIRED COMPONENTS Service) 0078 endif() 0079 0080 set_package_properties(KF5Wayland PROPERTIES DESCRIPTION "Integration with the Wayland compositor" 0081 TYPE OPTIONAL 0082 ) 0083 if(KF5Wayland_FOUND) 0084 set(HAVE_KWAYLAND 1) 0085 endif() 0086 0087 set_package_properties(KF5DocTools PROPERTIES DESCRIPTION "Tools to generate documentation" 0088 TYPE OPTIONAL 0089 ) 0090 0091 option(WITHOUT_X11 "Build without X11 support (skips finding X11)." OFF) 0092 if(NOT WITHOUT_X11) 0093 #optional features 0094 find_package(X11 MODULE) 0095 set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries" 0096 URL "https://www.x.org/" 0097 TYPE OPTIONAL 0098 ) 0099 find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER) 0100 set_package_properties(XCB PROPERTIES DESCRIPTION "X protocol C-language Binding" 0101 URL "https://xcb.freedesktop.org/" 0102 TYPE OPTIONAL 0103 ) 0104 if(X11_FOUND AND XCB_XCB_FOUND) 0105 set(HAVE_X11 1) 0106 if (QT_MAJOR_VERSION STREQUAL "5") 0107 find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} NO_MODULE) 0108 elseif (QT_MAJOR_VERSION STREQUAL "6") 0109 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui) # qtx11extras_p.h 0110 endif() 0111 #X11_Xrender discovery is done by FindX11 0112 #add_feature_info("X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED") 0113 set(HAVE_XCB_SHAPE ${XCB_SHAPE_FOUND}) 0114 else() 0115 set(HAVE_X11 0) 0116 set(HAVE_XCB_SHAPE 0) 0117 endif() 0118 endif() 0119 0120 find_package(OpenGL) 0121 set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries" 0122 URL "https://www.opengl.org/" 0123 TYPE OPTIONAL 0124 ) 0125 0126 find_package(EGL) 0127 set_package_properties(EGL PROPERTIES 0128 PURPOSE "Fallback when OpenGL not available because of missing GLVND" 0129 TYPE OPTIONAL 0130 ) 0131 0132 get_target_property(QtGui_Enabled_Features Qt${QT_MAJOR_VERSION}::Gui QT_ENABLED_PUBLIC_FEATURES) 0133 if(OpenGL_GLX_FOUND AND HAVE_X11 AND (QtGui_Enabled_Features MATCHES "opengl")) 0134 add_feature_info(GLX OpenGL_GLX_FOUND "OpenGL GLX libraries.") 0135 set(HAVE_GLX 1) 0136 else() 0137 set(HAVE_GLX 0) 0138 endif() 0139 0140 0141 # OpenGL_EGL_FOUND is defined by FindOpenGL 0142 if(TARGET OpenGL::EGL) 0143 add_feature_info(EGL OpenGL_EGL_FOUND 0144 "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG.") 0145 set(HAVE_EGL 1) 0146 else() 0147 set(HAVE_EGL 0) 0148 message(STATUS "OpenGL::EGL is not available") 0149 endif() 0150 0151 0152 ######################################################################### 0153 0154 # TODO KF6 remove 0155 ecm_setup_qtplugin_macro_names( 0156 JSON_NONE 0157 "K_EXPORT_PLASMA_SERVICE" 0158 "K_EXPORT_PLASMA_APPLET" 0159 "K_EXPORT_PLASMA_PACKAGE" 0160 "K_EXPORT_PLASMA_APPLETSCRIPTENGINE" 0161 "K_EXPORT_PLASMA_DATAENGINESCRIPTENGINE" 0162 "K_EXPORT_PLASMA_DATAENGINE" 0163 JSON_ARG2 0164 "K_EXPORT_PLASMA_PACKAGE_WITH_JSON" 0165 JSON_ARG3 0166 "K_EXPORT_PLASMA_SERVICE_WITH_JSON" 0167 "K_EXPORT_PLASMA_APPLET_WITH_JSON" 0168 "K_EXPORT_PLASMA_APPLETSCRIPTENGINE_WITH_JSON" 0169 "K_EXPORT_PLASMA_DATAENGINESCRIPTENGINE_WITH_JSON" 0170 "K_EXPORT_PLASMA_CONTAINMENTACTIONS_WITH_JSON" 0171 "K_EXPORT_PLASMA_DATAENGINE_WITH_JSON" 0172 CONFIG_CODE_VARIABLE 0173 PACKAGE_SETUP_AUTOMOC_VARIABLES 0174 ) 0175 0176 ecm_set_disabled_deprecation_versions( 0177 QT 5.14 # needed for qmlRegisterInterface 0178 KF 5.95 0179 KCOREADDONS 5.88 # KPluginMetaData::serviceTypes 0180 KSERVICE 5.86 # KService::pluginKeyword 0181 KDECLARATIVE 5.88 # KDeclarative::ConfigPropertyMap 0182 ) 0183 0184 #add_definitions(-Wno-deprecated) 0185 0186 include(KF5PlasmaMacros.cmake) 0187 0188 ######################################################################### 0189 0190 0191 option(BUILD_EXAMPLES "Build and install Plasma examples." OFF) 0192 option(BUILD_COVERAGE "Build Plasma Frameworks with gcov support" OFF) 0193 0194 if(BUILD_COVERAGE) 0195 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") 0196 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") 0197 endif() 0198 0199 # make plasma_version.h available 0200 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0201 0202 ################# list the subdirectories ################# 0203 if (KF5DocTools_FOUND) 0204 add_subdirectory(docs) 0205 endif() 0206 add_definitions(-DTRANSLATION_DOMAIN=\"libplasma5\") 0207 ki18n_install(po) 0208 if (KF5DocTools_FOUND) 0209 kdoctools_install(po) 0210 endif() 0211 add_subdirectory(src) 0212 0213 if (BUILD_EXAMPLES) 0214 add_subdirectory(examples) 0215 endif() 0216 0217 if (BUILD_TESTING) 0218 add_subdirectory(autotests) 0219 add_subdirectory(tests) 0220 endif() 0221 add_subdirectory(templates) 0222 0223 ################ create PlasmaConfig.cmake and install it ########################### 0224 0225 # create a Config.cmake and a ConfigVersion.cmake file and install them 0226 0227 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Plasma") 0228 0229 if (BUILD_QCH) 0230 ecm_install_qch_export( 0231 TARGETS KF5Plasma_QCH 0232 FILE KF5PlasmaQchTargets.cmake 0233 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0234 COMPONENT Devel 0235 ) 0236 set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5PlasmaQchTargets.cmake\")") 0237 endif() 0238 0239 configure_package_config_file( 0240 "${CMAKE_CURRENT_SOURCE_DIR}/KF5PlasmaConfig.cmake.in" 0241 "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfig.cmake" 0242 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0243 PATH_VARS CMAKE_INSTALL_PREFIX 0244 ) 0245 0246 install(FILES 0247 "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfig.cmake" 0248 "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfigVersion.cmake" 0249 "${CMAKE_CURRENT_SOURCE_DIR}/KF5PlasmaMacros.cmake" 0250 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0251 COMPONENT Devel 0252 ) 0253 0254 install(EXPORT KF5PlasmaTargets 0255 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0256 FILE KF5PlasmaTargets.cmake 0257 NAMESPACE KF5:: 0258 COMPONENT Devel) 0259 0260 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h 0261 DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Plasma COMPONENT Devel ) 0262 0263 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) 0264 0265 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)