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)