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)