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.240.0") # handled by release scripts 0004 set(KF_DEP_VERSION "5.240.0") # handled by release scripts 0005 project(Plasma VERSION ${KF_VERSION}) 0006 0007 # ECM setup 0008 include(FeatureSummary) 0009 find_package(ECM 5.240.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(ECMMarkNonGuiExecutable) 0029 include(ECMDeprecationSettings) 0030 include(ECMQmlModule) 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}/KF6PlasmaConfigVersion.cmake" 0039 SOVERSION 6) 0040 0041 ################# now find all used packages ################# 0042 0043 set (REQUIRED_QT_VERSION 6.5.0) 0044 0045 find_package(Qt6 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Quick Gui Qml Svg QuickControls2 DBus) 0046 0047 find_package(KF6 ${KF_DEP_VERSION} REQUIRED 0048 COMPONENTS 0049 Activities 0050 Archive 0051 Config 0052 ConfigWidgets 0053 CoreAddons 0054 GlobalAccel 0055 GuiAddons 0056 I18n 0057 IconThemes 0058 KIO 0059 WindowSystem 0060 Notifications 0061 Package 0062 Kirigami2 0063 KCMUtils 0064 Svg 0065 ) 0066 0067 # Wayland features 0068 find_package(PlasmaWaylandProtocols 1.10.0 REQUIRED) 0069 find_package(Qt6WaylandClient ${REQUIRED_QT_VERSION} REQUIRED CONFIG) 0070 find_package(Wayland 1.9 REQUIRED Client) 0071 0072 option(WITHOUT_X11 "Build without X11 support (skips finding X11)." OFF) 0073 if(NOT WITHOUT_X11) 0074 #optional features 0075 find_package(X11 MODULE) 0076 set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries" 0077 URL "https://www.x.org/" 0078 TYPE OPTIONAL 0079 ) 0080 find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER) 0081 set_package_properties(XCB PROPERTIES DESCRIPTION "X protocol C-language Binding" 0082 URL "https://xcb.freedesktop.org/" 0083 TYPE OPTIONAL 0084 ) 0085 if(X11_FOUND AND XCB_XCB_FOUND) 0086 set(HAVE_X11 1) 0087 #X11_Xrender discovery is done by FindX11 0088 #add_feature_info("X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED") 0089 set(HAVE_XCB_SHAPE ${XCB_SHAPE_FOUND}) 0090 else() 0091 set(HAVE_X11 0) 0092 set(HAVE_XCB_SHAPE 0) 0093 endif() 0094 endif() 0095 0096 find_package(OpenGL) 0097 set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries" 0098 URL "https://www.opengl.org/" 0099 TYPE OPTIONAL 0100 ) 0101 0102 find_package(EGL) 0103 set_package_properties(EGL PROPERTIES 0104 PURPOSE "Fallback when OpenGL not available because of missing GLVND" 0105 TYPE OPTIONAL 0106 ) 0107 0108 get_target_property(QtGui_Enabled_Features Qt6::Gui QT_ENABLED_PUBLIC_FEATURES) 0109 if(OpenGL_GLX_FOUND AND HAVE_X11 AND (QtGui_Enabled_Features MATCHES "opengl")) 0110 add_feature_info(GLX OpenGL_GLX_FOUND "OpenGL GLX libraries.") 0111 set(HAVE_GLX 1) 0112 else() 0113 set(HAVE_GLX 0) 0114 endif() 0115 0116 0117 # OpenGL_EGL_FOUND is defined by FindOpenGL 0118 if(TARGET OpenGL::EGL) 0119 add_feature_info(EGL OpenGL_EGL_FOUND 0120 "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG.") 0121 set(HAVE_EGL 1) 0122 else() 0123 set(HAVE_EGL 0) 0124 message(STATUS "OpenGL::EGL is not available") 0125 endif() 0126 0127 ######################################################################### 0128 0129 ecm_set_disabled_deprecation_versions( 0130 QT 6.4 0131 KF 5.102 0132 ) 0133 0134 #add_definitions(-Wno-deprecated) 0135 0136 include(KF6PlasmaMacros.cmake) 0137 0138 ######################################################################### 0139 0140 0141 option(BUILD_EXAMPLES "Build and install Plasma examples." OFF) 0142 option(BUILD_COVERAGE "Build Plasma Frameworks with gcov support" OFF) 0143 0144 if (BUILD_EXAMPLES) 0145 find_package(KF6DBusAddons ${KF6_MIN_VERSION}) 0146 endif() 0147 0148 if(BUILD_COVERAGE) 0149 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") 0150 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") 0151 endif() 0152 0153 # make plasma_version.h available 0154 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0155 0156 ################# list the subdirectories ################# 0157 add_definitions(-DTRANSLATION_DOMAIN=\"libplasma6\") 0158 ki18n_install(po) 0159 add_subdirectory(src) 0160 0161 if (BUILD_EXAMPLES) 0162 add_subdirectory(examples) 0163 endif() 0164 0165 if (BUILD_TESTING) 0166 add_subdirectory(autotests) 0167 add_subdirectory(tests) 0168 endif() 0169 add_subdirectory(templates) 0170 0171 ################ create PlasmaConfig.cmake and install it ########################### 0172 0173 # create a Config.cmake and a ConfigVersion.cmake file and install them 0174 0175 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Plasma") 0176 0177 if (BUILD_QCH) 0178 ecm_install_qch_export( 0179 TARGETS KF6Plasma_QCH 0180 FILE KF6PlasmaQchTargets.cmake 0181 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0182 COMPONENT Devel 0183 ) 0184 set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF6PlasmaQchTargets.cmake\")") 0185 endif() 0186 0187 configure_package_config_file( 0188 "${CMAKE_CURRENT_SOURCE_DIR}/KF6PlasmaConfig.cmake.in" 0189 "${CMAKE_CURRENT_BINARY_DIR}/KF6PlasmaConfig.cmake" 0190 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0191 PATH_VARS CMAKE_INSTALL_PREFIX 0192 ) 0193 0194 install(FILES 0195 "${CMAKE_CURRENT_BINARY_DIR}/KF6PlasmaConfig.cmake" 0196 "${CMAKE_CURRENT_BINARY_DIR}/KF6PlasmaConfigVersion.cmake" 0197 "${CMAKE_CURRENT_SOURCE_DIR}/KF6PlasmaMacros.cmake" 0198 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0199 COMPONENT Devel 0200 ) 0201 0202 install(EXPORT KF6PlasmaTargets 0203 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0204 FILE KF6PlasmaTargets.cmake 0205 NAMESPACE KF6:: 0206 COMPONENT Devel) 0207 0208 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h 0209 DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Plasma COMPONENT Devel ) 0210 0211 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) 0212 0213 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)