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.107.0") # handled by release scripts
0004 set(KF_DEP_VERSION "5.106.0") # handled by release scripts
0005 project(Plasma VERSION ${KF_VERSION})
0006 
0007 # ECM setup
0008 include(FeatureSummary)
0009 find_package(ECM 5.106.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(ECMSetupQtPluginMacroNames)
0029 include(ECMMarkNonGuiExecutable)
0030 include(ECMDeprecationSettings)
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}/KF5PlasmaConfigVersion.cmake"
0039                   SOVERSION 5)
0040 
0041 ################# now find all used packages #################
0042 
0043 set (REQUIRED_QT_VERSION 5.15.2)
0044 
0045 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Quick Gui Sql Qml Svg QuickControls2)
0046 if (QT_MAJOR_VERSION EQUAL "6")
0047     find_package(Qt6 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS ShaderTools)
0048 endif()
0049 
0050 find_package(KF5 ${KF_DEP_VERSION} REQUIRED
0051     COMPONENTS
0052         Activities
0053         Archive
0054         Config
0055         ConfigWidgets
0056         CoreAddons
0057         DBusAddons
0058         Declarative
0059         GlobalAccel
0060         GuiAddons
0061         I18n
0062         IconThemes
0063         KIO
0064         WindowSystem
0065         XmlGui
0066         Notifications
0067         Package
0068         Kirigami2
0069     OPTIONAL_COMPONENTS
0070         Wayland
0071         DocTools
0072 )
0073 if(NOT EXCLUDE_DEPRECATED_BEFORE_AND_AT STREQUAL "CURRENT" AND
0074    EXCLUDE_DEPRECATED_BEFORE_AND_AT VERSION_LESS 5.94.0)
0075     find_package(KF5 ${KF_DEP_VERSION} REQUIRED COMPONENTS Service)
0076 endif()
0077 
0078 set_package_properties(KF5Wayland PROPERTIES DESCRIPTION "Integration with the Wayland compositor"
0079                        TYPE OPTIONAL
0080                       )
0081 if(KF5Wayland_FOUND)
0082   set(HAVE_KWAYLAND 1)
0083 endif()
0084 
0085 set_package_properties(KF5DocTools PROPERTIES DESCRIPTION "Tools to generate documentation"
0086                        TYPE OPTIONAL
0087                       )
0088 
0089 option(WITHOUT_X11 "Build without X11 support (skips finding X11)." OFF)
0090 if(NOT WITHOUT_X11)
0091     #optional features
0092     find_package(X11 MODULE)
0093     set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries"
0094                         URL "https://www.x.org/"
0095                         TYPE OPTIONAL
0096                         )
0097     find_package(XCB MODULE COMPONENTS XCB COMPOSITE DAMAGE SHAPE XFIXES RENDER)
0098     set_package_properties(XCB PROPERTIES DESCRIPTION "X protocol C-language Binding"
0099                         URL "https://xcb.freedesktop.org/"
0100                         TYPE OPTIONAL
0101                         )
0102     if(X11_FOUND AND XCB_XCB_FOUND)
0103         set(HAVE_X11 1)
0104         if (QT_MAJOR_VERSION STREQUAL "5")
0105             find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} NO_MODULE)
0106         elseif (QT_MAJOR_VERSION STREQUAL "6")
0107             find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui) # qtx11extras_p.h
0108         endif()
0109         #X11_Xrender discovery is done by FindX11
0110         #add_feature_info("X Rendering Extension (libXrender)" X11_Xrender_FOUND "Support for compositing, rendering operations, and alpha-blending. STRONGLY RECOMMENDED")
0111         set(HAVE_XCB_SHAPE ${XCB_SHAPE_FOUND})
0112     else()
0113         set(HAVE_X11 0)
0114         set(HAVE_XCB_SHAPE 0)
0115     endif()
0116 endif()
0117 
0118 find_package(OpenGL)
0119 set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries"
0120                        URL "https://www.opengl.org/"
0121                        TYPE OPTIONAL
0122                       )
0123 
0124 find_package(EGL)
0125 set_package_properties(EGL PROPERTIES
0126                        PURPOSE "Fallback when OpenGL not available because of missing GLVND"
0127                        TYPE OPTIONAL
0128                       )
0129 
0130 get_target_property(QtGui_Enabled_Features Qt${QT_MAJOR_VERSION}::Gui QT_ENABLED_PUBLIC_FEATURES)
0131 if(OpenGL_GLX_FOUND AND HAVE_X11 AND (QtGui_Enabled_Features MATCHES "opengl"))
0132     add_feature_info(GLX OpenGL_GLX_FOUND "OpenGL GLX libraries.")
0133     set(HAVE_GLX 1)
0134 else()
0135     set(HAVE_GLX 0)
0136 endif()
0137 
0138 
0139 # OpenGL_EGL_FOUND is defined by FindOpenGL
0140 if(TARGET OpenGL::EGL)
0141     add_feature_info(EGL OpenGL_EGL_FOUND
0142                      "A platform-agnostic mechanism for creating rendering surfaces for use with other graphics libraries, such as OpenGL|ES and OpenVG.")
0143     set(HAVE_EGL 1)
0144 else()
0145     set(HAVE_EGL 0)
0146     message(STATUS "OpenGL::EGL is not available")
0147 endif()
0148 
0149 
0150 #########################################################################
0151 
0152 # TODO KF6 remove
0153 ecm_setup_qtplugin_macro_names(
0154     JSON_NONE
0155         "K_EXPORT_PLASMA_SERVICE"
0156         "K_EXPORT_PLASMA_APPLET"
0157         "K_EXPORT_PLASMA_PACKAGE"
0158         "K_EXPORT_PLASMA_APPLETSCRIPTENGINE"
0159         "K_EXPORT_PLASMA_DATAENGINESCRIPTENGINE"
0160         "K_EXPORT_PLASMA_DATAENGINE"
0161     JSON_ARG2
0162         "K_EXPORT_PLASMA_PACKAGE_WITH_JSON"
0163     JSON_ARG3
0164         "K_EXPORT_PLASMA_SERVICE_WITH_JSON"
0165         "K_EXPORT_PLASMA_APPLET_WITH_JSON"
0166         "K_EXPORT_PLASMA_APPLETSCRIPTENGINE_WITH_JSON"
0167         "K_EXPORT_PLASMA_DATAENGINESCRIPTENGINE_WITH_JSON"
0168         "K_EXPORT_PLASMA_CONTAINMENTACTIONS_WITH_JSON"
0169         "K_EXPORT_PLASMA_DATAENGINE_WITH_JSON"
0170     CONFIG_CODE_VARIABLE
0171         PACKAGE_SETUP_AUTOMOC_VARIABLES
0172 )
0173 
0174 ecm_set_disabled_deprecation_versions(
0175     QT 5.14 # needed for qmlRegisterInterface
0176     KF 5.95
0177     KCOREADDONS 5.88 # KPluginMetaData::serviceTypes
0178     KSERVICE 5.86 # KService::pluginKeyword
0179     KDECLARATIVE 5.88 # KDeclarative::ConfigPropertyMap
0180 )
0181 
0182 #add_definitions(-Wno-deprecated)
0183 
0184 include(KF5PlasmaMacros.cmake)
0185 
0186 #########################################################################
0187 
0188 
0189 option(BUILD_EXAMPLES "Build and install Plasma examples." OFF)
0190 option(BUILD_COVERAGE "Build Plasma Frameworks with gcov support" OFF)
0191 
0192 if(BUILD_COVERAGE)
0193     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
0194     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov")
0195 endif()
0196 
0197 # make plasma_version.h available
0198 include_directories(${CMAKE_CURRENT_BINARY_DIR})
0199 
0200 ################# list the subdirectories #################
0201 if (KF5DocTools_FOUND)
0202     add_subdirectory(docs)
0203 endif()
0204 add_definitions(-DTRANSLATION_DOMAIN=\"libplasma5\")
0205 ki18n_install(po)
0206 if (KF5DocTools_FOUND)
0207     kdoctools_install(po)
0208 endif()
0209 add_subdirectory(src)
0210 
0211 if (BUILD_EXAMPLES)
0212     add_subdirectory(examples)
0213 endif()
0214 
0215 if (BUILD_TESTING)
0216     add_subdirectory(autotests)
0217     add_subdirectory(tests)
0218 endif()
0219 add_subdirectory(templates)
0220 
0221 ################ create PlasmaConfig.cmake and install it ###########################
0222 
0223 # create a Config.cmake and a ConfigVersion.cmake file and install them
0224 
0225 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Plasma")
0226 
0227 if (BUILD_QCH)
0228     ecm_install_qch_export(
0229         TARGETS KF5Plasma_QCH
0230         FILE KF5PlasmaQchTargets.cmake
0231         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0232         COMPONENT Devel
0233     )
0234     set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5PlasmaQchTargets.cmake\")")
0235 endif()
0236 
0237 configure_package_config_file(
0238   "${CMAKE_CURRENT_SOURCE_DIR}/KF5PlasmaConfig.cmake.in"
0239   "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfig.cmake"
0240   INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
0241   PATH_VARS  CMAKE_INSTALL_PREFIX
0242 )
0243 
0244 install(FILES
0245   "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfig.cmake"
0246   "${CMAKE_CURRENT_BINARY_DIR}/KF5PlasmaConfigVersion.cmake"
0247   "${CMAKE_CURRENT_SOURCE_DIR}/KF5PlasmaMacros.cmake"
0248   DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0249   COMPONENT Devel
0250 )
0251 
0252 install(EXPORT KF5PlasmaTargets
0253         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0254         FILE KF5PlasmaTargets.cmake
0255         NAMESPACE KF5::
0256         COMPONENT Devel)
0257 
0258 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plasma_version.h
0259         DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/Plasma COMPONENT Devel )
0260 
0261 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
0262 
0263 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)