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)