Warning, /plasma/libplasma/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16) 0002 0003 set(PROJECT_VERSION "6.0.80") 0004 project(plasma-framework VERSION ${PROJECT_VERSION}) 0005 0006 set(QT_MIN_VERSION "6.6.0") 0007 set(PROJECT_DEP_VERSION "6.0.80") 0008 set(KF6_MIN_VERSION "5.240.0") 0009 0010 set(CMAKE_CXX_STANDARD 20) 0011 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0012 0013 find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE) 0014 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ) 0015 0016 include(FeatureSummary) 0017 include(KDEInstallDirs) 0018 include(KDECMakeSettings) 0019 include(KDEGitCommitHooks) 0020 include(KDECompilerSettings NO_POLICY_SCOPE) 0021 include(KDEClangFormat) 0022 0023 include(ECMGenerateExportHeader) 0024 include(ECMGenerateHeaders) 0025 include(CMakePackageConfigHelpers) 0026 include(ECMSetupVersion) 0027 include(ECMQtDeclareLoggingCategory) 0028 include(ECMAddQch) 0029 include(KDEPackageAppTemplates) 0030 include(ECMGenerateQmlTypes) 0031 include(ECMMarkNonGuiExecutable) 0032 include(ECMDeprecationSettings) 0033 include(ECMQmlModule) 0034 0035 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) 0036 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") 0037 0038 ecm_setup_version(PROJECT 0039 VARIABLE_PREFIX PLASMA 0040 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h" 0041 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfigVersion.cmake" 0042 SOVERSION 6) 0043 0044 ################# now find all used packages ################# 0045 0046 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Quick Gui Qml Svg QuickControls2 DBus) 0047 0048 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED 0049 COMPONENTS 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 KirigamiPlatform 0063 KCMUtils 0064 Svg 0065 ) 0066 find_package(PlasmaActivities REQUIRED ${PROJECT_DEP_VERSION}) 0067 0068 # Wayland features 0069 find_package(PlasmaWaylandProtocols 1.10.0 REQUIRED) 0070 find_package(Qt6WaylandClient ${QT_MIN_VERSION} REQUIRED CONFIG) 0071 find_package(Wayland 1.9 REQUIRED Client) 0072 0073 option(WITHOUT_X11 "Build without X11 support (skips finding X11)." OFF) 0074 if(NOT WITHOUT_X11) 0075 #optional features 0076 find_package(X11 MODULE) 0077 set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries" 0078 URL "https://www.x.org/" 0079 TYPE OPTIONAL 0080 ) 0081 find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE XFIXES RENDER) 0082 set_package_properties(XCB PROPERTIES DESCRIPTION "X protocol C-language Binding" 0083 URL "https://xcb.freedesktop.org/" 0084 TYPE OPTIONAL 0085 ) 0086 if(X11_FOUND AND XCB_XCB_FOUND) 0087 set(HAVE_X11 1) 0088 #X11_Xrender discovery is done by FindX11 0089 #add_feature_info("X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED") 0090 else() 0091 set(HAVE_X11 0) 0092 endif() 0093 endif() 0094 0095 find_package(OpenGL) 0096 set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries" 0097 URL "https://www.opengl.org/" 0098 TYPE OPTIONAL 0099 ) 0100 0101 find_package(EGL) 0102 set_package_properties(EGL PROPERTIES 0103 PURPOSE "Fallback when OpenGL not available because of missing GLVND" 0104 TYPE OPTIONAL 0105 ) 0106 0107 get_target_property(QtGui_Enabled_Features Qt6::Gui QT_ENABLED_PUBLIC_FEATURES) 0108 if(OpenGL_GLX_FOUND AND HAVE_X11 AND (QtGui_Enabled_Features MATCHES "opengl")) 0109 add_feature_info(GLX OpenGL_GLX_FOUND "OpenGL GLX libraries.") 0110 set(HAVE_GLX 1) 0111 else() 0112 set(HAVE_GLX 0) 0113 endif() 0114 0115 # OpenGL_EGL_FOUND is defined by FindOpenGL 0116 if(TARGET OpenGL::EGL) 0117 add_feature_info(EGL OpenGL_EGL_FOUND 0118 "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG.") 0119 set(HAVE_EGL 1) 0120 else() 0121 set(HAVE_EGL 0) 0122 message(STATUS "OpenGL::EGL is not available") 0123 endif() 0124 0125 ######################################################################### 0126 0127 ecm_set_disabled_deprecation_versions( 0128 QT 6.4 0129 KF 5.102 0130 ) 0131 0132 #add_definitions(-Wno-deprecated) 0133 0134 include(PlasmaMacros.cmake) 0135 0136 ######################################################################### 0137 0138 0139 option(BUILD_EXAMPLES "Build and install Plasma examples." OFF) 0140 option(BUILD_COVERAGE "Build Plasma Frameworks with gcov support" OFF) 0141 0142 if (BUILD_EXAMPLES) 0143 find_package(KF6DBusAddons ${KF6_MIN_VERSION}) 0144 endif() 0145 0146 if(BUILD_COVERAGE) 0147 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") 0148 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") 0149 endif() 0150 0151 # make plasma_version.h available 0152 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0153 0154 ################# list the subdirectories ################# 0155 add_definitions(-DTRANSLATION_DOMAIN=\"libplasma6\") 0156 ki18n_install(po) 0157 add_subdirectory(src) 0158 0159 if (BUILD_EXAMPLES) 0160 add_subdirectory(examples) 0161 endif() 0162 0163 if (BUILD_TESTING) 0164 add_subdirectory(autotests) 0165 add_subdirectory(tests) 0166 endif() 0167 add_subdirectory(templates) 0168 0169 ################ create PlasmaConfig.cmake and install it ########################### 0170 0171 # create a Config.cmake and a ConfigVersion.cmake file and install them 0172 0173 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/Plasma") 0174 0175 if (BUILD_QCH) 0176 ecm_install_qch_export( 0177 TARGETS Plasma_QCH 0178 FILE PlasmaQchTargets.cmake 0179 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0180 COMPONENT Devel 0181 ) 0182 set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/PlasmaQchTargets.cmake\")") 0183 endif() 0184 0185 configure_package_config_file( 0186 "${CMAKE_CURRENT_SOURCE_DIR}/PlasmaConfig.cmake.in" 0187 "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfig.cmake" 0188 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0189 PATH_VARS CMAKE_INSTALL_PREFIX 0190 ) 0191 0192 install(FILES 0193 "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfig.cmake" 0194 "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfigVersion.cmake" 0195 "${CMAKE_CURRENT_SOURCE_DIR}/PlasmaMacros.cmake" 0196 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0197 COMPONENT Devel 0198 ) 0199 0200 install(EXPORT PlasmaTargets 0201 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0202 FILE PlasmaTargets.cmake 0203 NAMESPACE Plasma:: 0204 COMPONENT Devel) 0205 0206 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h 0207 DESTINATION ${KDE_INSTALL_INCLUDEDIR}/Plasma COMPONENT Devel ) 0208 0209 include(ECMFeatureSummary) 0210 ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) 0211 0212 # add clang-format target for all our source files 0213 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h) 0214 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) 0215 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)