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)