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