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.0") 0004 project(plasma-framework VERSION ${PROJECT_VERSION}) 0005 0006 set(QT_MIN_VERSION "6.6.0") 0007 set(KF6_MIN_VERSION "5.240.0") 0008 0009 set(CMAKE_CXX_STANDARD 20) 0010 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0011 0012 find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE) 0013 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ) 0014 0015 include(FeatureSummary) 0016 include(KDEInstallDirs) 0017 include(KDECMakeSettings) 0018 include(KDEGitCommitHooks) 0019 include(KDECompilerSettings NO_POLICY_SCOPE) 0020 include(KDEClangFormat) 0021 0022 include(ECMGenerateExportHeader) 0023 include(ECMGenerateHeaders) 0024 include(CMakePackageConfigHelpers) 0025 include(ECMSetupVersion) 0026 include(ECMQtDeclareLoggingCategory) 0027 include(ECMAddQch) 0028 include(KDEPackageAppTemplates) 0029 include(ECMGenerateQmlTypes) 0030 include(ECMMarkNonGuiExecutable) 0031 include(ECMDeprecationSettings) 0032 include(ECMQmlModule) 0033 0034 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) 0035 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") 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}/PlasmaConfigVersion.cmake" 0041 SOVERSION 6) 0042 0043 ################# now find all used packages ################# 0044 0045 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Quick Gui Qml Svg QuickControls2 DBus) 0046 0047 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED 0048 COMPONENTS 0049 Archive 0050 Config 0051 ConfigWidgets 0052 CoreAddons 0053 GlobalAccel 0054 GuiAddons 0055 I18n 0056 IconThemes 0057 KIO 0058 WindowSystem 0059 Notifications 0060 Package 0061 KirigamiPlatform 0062 KCMUtils 0063 Svg 0064 ) 0065 find_package(PlasmaActivities REQUIRED ${PROJECT_VERSION}) 0066 0067 # Wayland features 0068 find_package(PlasmaWaylandProtocols 1.10.0 REQUIRED) 0069 find_package(Qt6WaylandClient ${QT_MIN_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 # OpenGL_EGL_FOUND is defined by FindOpenGL 0117 if(TARGET OpenGL::EGL) 0118 add_feature_info(EGL OpenGL_EGL_FOUND 0119 "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG.") 0120 set(HAVE_EGL 1) 0121 else() 0122 set(HAVE_EGL 0) 0123 message(STATUS "OpenGL::EGL is not available") 0124 endif() 0125 0126 ######################################################################### 0127 0128 ecm_set_disabled_deprecation_versions( 0129 QT 6.4 0130 KF 5.102 0131 ) 0132 0133 #add_definitions(-Wno-deprecated) 0134 0135 include(PlasmaMacros.cmake) 0136 0137 ######################################################################### 0138 0139 0140 option(BUILD_EXAMPLES "Build and install Plasma examples." OFF) 0141 option(BUILD_COVERAGE "Build Plasma Frameworks with gcov support" OFF) 0142 0143 if (BUILD_EXAMPLES) 0144 find_package(KF6DBusAddons ${KF6_MIN_VERSION}) 0145 endif() 0146 0147 if(BUILD_COVERAGE) 0148 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") 0149 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") 0150 endif() 0151 0152 # make plasma_version.h available 0153 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 0154 0155 ################# list the subdirectories ################# 0156 add_definitions(-DTRANSLATION_DOMAIN=\"libplasma6\") 0157 ki18n_install(po) 0158 add_subdirectory(src) 0159 0160 if (BUILD_EXAMPLES) 0161 add_subdirectory(examples) 0162 endif() 0163 0164 if (BUILD_TESTING) 0165 add_subdirectory(autotests) 0166 add_subdirectory(tests) 0167 endif() 0168 add_subdirectory(templates) 0169 0170 ################ create PlasmaConfig.cmake and install it ########################### 0171 0172 # create a Config.cmake and a ConfigVersion.cmake file and install them 0173 0174 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/Plasma") 0175 0176 if (BUILD_QCH) 0177 ecm_install_qch_export( 0178 TARGETS Plasma_QCH 0179 FILE PlasmaQchTargets.cmake 0180 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0181 COMPONENT Devel 0182 ) 0183 set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/PlasmaQchTargets.cmake\")") 0184 endif() 0185 0186 configure_package_config_file( 0187 "${CMAKE_CURRENT_SOURCE_DIR}/PlasmaConfig.cmake.in" 0188 "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfig.cmake" 0189 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0190 PATH_VARS CMAKE_INSTALL_PREFIX 0191 ) 0192 0193 install(FILES 0194 "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfig.cmake" 0195 "${CMAKE_CURRENT_BINARY_DIR}/PlasmaConfigVersion.cmake" 0196 "${CMAKE_CURRENT_SOURCE_DIR}/PlasmaMacros.cmake" 0197 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0198 COMPONENT Devel 0199 ) 0200 0201 install(EXPORT PlasmaTargets 0202 DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 0203 FILE PlasmaTargets.cmake 0204 NAMESPACE Plasma:: 0205 COMPONENT Devel) 0206 0207 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h 0208 DESTINATION ${KDE_INSTALL_INCLUDEDIR}/Plasma COMPONENT Devel ) 0209 0210 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)