Warning, /plasma/breeze/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 3.16)
0002 project(breeze)
0003 set(PROJECT_VERSION "6.0.80")
0004 set(PROJECT_VERSION_MAJOR 6)
0005 
0006 set(KF5_MIN_VERSION "5.102.0")
0007 set(KF6_MIN_VERSION "5.240.0")
0008 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
0009 set(QT5_MIN_VERSION "5.15.2")
0010 set(QT_MIN_VERSION "6.6.0")
0011 
0012 include(GenerateExportHeader)
0013 include(WriteBasicConfigVersionFile)
0014 include(FeatureSummary)
0015 include(GNUInstallDirs)
0016 
0017 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
0018 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH}  ${CMAKE_SOURCE_DIR}/cmake)
0019 
0020 set(CMAKE_CXX_STANDARD 20)
0021 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0022 
0023 # We need this because we can't include KDECMakeSettings here, because that
0024 # would need KDEInstallDirs, which we can only include in the qt{5,6} builds
0025 # to get the correct installation dirs for each Qt version.
0026 option(BUILD_TESTING "Build the testing tree." ON)
0027 if(BUILD_TESTING)
0028     enable_testing()
0029 endif()
0030 
0031 include(CMakePackageConfigHelpers)
0032 include(ECMInstallIcons)
0033 include(KDECompilerSettings NO_POLICY_SCOPE)
0034 include(KDEClangFormat)
0035 include(KDEGitCommitHooks)
0036 
0037 include(GtkUpdateIconCache)
0038 
0039 
0040 option(BUILD_QT5 "Build Qt5 style" ON)
0041 option(BUILD_QT6 "Build with Qt6" ON)
0042 
0043 set(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
0044 set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS ON)
0045 
0046 # For KDE CI only. As the current infrastructure doesn't allow us to set CMAKE options per build variant
0047 if($ENV{CI_JOB_NAME_SLUG} MATCHES "qt5")
0048     set(BUILD_QT5 ON)
0049     set(BUILD_QT6 OFF)
0050 elseif($ENV{CI_JOB_NAME_SLUG} MATCHES "qt6")
0051     set(BUILD_QT5 OFF)
0052     set(BUILD_QT6 ON)
0053 endif()
0054 
0055 if(WIN32 OR APPLE)
0056     set(WITH_DECORATIONS OFF)
0057 endif()
0058 
0059 function(build_Qt5)
0060     set(QT_MAJOR_VERSION 5)
0061     include(KDEInstallDirs5)
0062     include(KDECMakeSettings)
0063 
0064     find_package(Qt5 ${QT5_MIN_VERSION} REQUIRED CONFIG COMPONENTS Widgets DBus)
0065     find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
0066         CoreAddons
0067         Config
0068         ConfigWidgets
0069         GuiAddons
0070         IconThemes
0071         WindowSystem)
0072 
0073     find_package(Qt5 ${QT5_MIN_VERSION} OPTIONAL_COMPONENTS Quick)
0074     if(${Qt5Quick_FOUND})
0075         find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2)
0076     endif()
0077 
0078     find_package(KF5FrameworkIntegration ${KF5_MIN_VERSION} CONFIG )
0079     set_package_properties(KF${QT_MAJOR_VERSION}FrameworkIntegration PROPERTIES
0080         DESCRIPTION "KF${QT_MAJOR_VERSION} Framework Integration"
0081         URL "https://projects.kde.org/projects/frameworks/frameworkintegration"
0082         TYPE OPTIONAL
0083         PURPOSE "Required to use KStyle convenience functionalities in style")
0084 
0085     find_package(Qt5 ${QT5_MIN_VERSION} OPTIONAL_COMPONENTS X11Extras)
0086     set_package_properties(KF${QT_MAJOR_VERSION}FrameworkIntegration PROPERTIES
0087         DESCRIPTION "KF${QT_MAJOR_VERSION} Framework Integration"
0088         URL "https://projects.kde.org/projects/frameworks/frameworkintegration"
0089         TYPE OPTIONAL
0090         PURPOSE "Required to use KStyle convenience functionalities in style")
0091 
0092     set(BREEZE_HAVE_KSTYLE ${KF5FrameworkIntegration_FOUND})
0093     set(BREEZE_HAVE_QTQUICK ${Qt5Quick_FOUND})
0094 
0095     add_subdirectory(kstyle kstyle5)
0096     add_subdirectory(libbreezecommon libbreezecommon5)
0097 
0098     unset(QUERY_EXECUTABLE CACHE)
0099 endfunction()
0100 if(BUILD_QT5)
0101     build_Qt5()
0102 endif()
0103 
0104 function(build_Qt6)
0105     set(QT_MAJOR_VERSION 6)
0106     include(KDEInstallDirs6)
0107     include(KDECMakeSettings)
0108 
0109     option(WITH_DECORATIONS "Build Breeze window decorations for KWin" ON)
0110     option(WITH_WALLPAPERS "Install Breeze default wallpapers" ON)
0111 
0112     find_package(Qt6 ${QT_MIN_VERSION} REQUIRED CONFIG COMPONENTS Widgets DBus)
0113     find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
0114         CoreAddons
0115         ColorScheme
0116         Config
0117         GuiAddons
0118         I18n
0119         IconThemes
0120         WindowSystem)
0121     if(NOT WIN32 AND NOT APPLE)
0122         find_package(KF6KCMUtils ${KF6_MIN_VERSION})
0123         set_package_properties(KF6KCMUtils PROPERTIES
0124             TYPE REQUIRED
0125             DESCRIPTION "Helps create configuration modules"
0126             PURPOSE "KCMUtils used for the configuration modules or the decoration and Qt Style"
0127         )
0128     endif()
0129 
0130     find_package(Qt6 ${QT_MIN_VERSION} OPTIONAL_COMPONENTS Quick)
0131     if(${Qt6Quick_FOUND})
0132         find_package(KF6KirigamiPlatform ${KF6_MIN_VERSION} REQUIRED)
0133     endif()
0134 
0135     find_package(KF6FrameworkIntegration ${KF6_MIN_VERSION} CONFIG )
0136     set_package_properties(KF${QT_MAJOR_VERSION}FrameworkIntegration PROPERTIES
0137         DESCRIPTION "KF6 Framework Integration"
0138         URL "https://projects.kde.org/projects/frameworks/frameworkintegration"
0139         TYPE OPTIONAL
0140         PURPOSE "Required to use KStyle convenience functionalities in style")
0141 
0142     set(BREEZE_HAVE_KSTYLE ${KF6FrameworkIntegration_FOUND})
0143     set(BREEZE_HAVE_QTQUICK ${Qt6Quick_FOUND})
0144 
0145     # https://bugreports.qt.io/browse/QTBUG-114706
0146     add_library(Qt::Core ALIAS Qt6::Core)
0147     add_library(Qt::Gui ALIAS Qt6::Gui)
0148     add_library(Qt::OpenGL ALIAS Qt6::OpenGL)
0149     add_library(Qt::Network ALIAS Qt6::Network)
0150     if(Qt6_VERSION_MINOR GREATER 6)
0151         add_library(Qt::PlatformModuleInternal ALIAS Qt6::PlatformModuleInternal)
0152     endif()
0153 
0154     add_subdirectory(kstyle kstyle6)
0155     add_subdirectory(libbreezecommon libbreezecommon6)
0156     add_subdirectory(misc)
0157 
0158     if(WITH_DECORATIONS)
0159         find_package(KDecoration2 REQUIRED)
0160         add_subdirectory(kdecoration)
0161     endif()
0162     if (WITH_WALLPAPERS)
0163         add_subdirectory(wallpapers)
0164     endif()
0165 
0166     ki18n_install(po)
0167 
0168     # create a Config.cmake and a ConfigVersion.cmake file and install them
0169     include(ECMSetupVersion)
0170     ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX BREEZE
0171         PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/BreezeConfigVersion.cmake"
0172     )
0173     set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/Breeze")
0174 
0175     configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/BreezeConfig.cmake.in"
0176                                   "${CMAKE_CURRENT_BINARY_DIR}/BreezeConfig.cmake"
0177                                   PATH_VARS KDE_INSTALL_FULL_DATADIR
0178                                   INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
0179     )
0180     install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/BreezeConfig.cmake"
0181                    "${CMAKE_CURRENT_BINARY_DIR}/BreezeConfigVersion.cmake"
0182             DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0183             COMPONENT Devel
0184     )
0185 
0186     unset(QUERY_EXECUTABLE CACHE)
0187 endfunction()
0188 if(BUILD_QT6)
0189     build_Qt6()
0190 endif()
0191 
0192 add_subdirectory(colors)
0193 add_subdirectory(cursors)
0194 
0195 # add clang-format target for all our real source files
0196 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0197 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0198 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0199 
0200 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)