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)