Warning, /graphics/spectacle/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001
0002 # KDE Application Version, managed by release script
0003 set(RELEASE_SERVICE_VERSION_MAJOR "24")
0004 set(RELEASE_SERVICE_VERSION_MINOR "04")
0005 set(RELEASE_SERVICE_VERSION_MICRO "70")
0006 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0007 set(SPECTACLE_VERSION ${RELEASE_SERVICE_VERSION})
0008 # minimum requirements
0009
0010 cmake_minimum_required (VERSION 3.16 FATAL_ERROR)
0011 # Spectacle project
0012 project(Spectacle VERSION ${SPECTACLE_VERSION})
0013
0014 set(QT_MIN_VERSION "6.6.0")
0015 set(KF_MIN_VERSION "5.240.0")
0016
0017 find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
0018 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0019
0020 # set up standard kde build settings
0021
0022 include(KDEInstallDirs)
0023 include(KDECMakeSettings)
0024 include(KDECompilerSettings NO_POLICY_SCOPE)
0025
0026 # Set C++ standard separately from KDECompilerSettings since that is set to an older C++ standard.
0027 set(CMAKE_CXX_STANDARD 20)
0028 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0029
0030 # used cmake macros
0031
0032 include(ECMInstallIcons)
0033 include(ECMSetupVersion)
0034 include(FeatureSummary)
0035 include(ECMQtDeclareLoggingCategory)
0036 include(ECMAddTests)
0037 include(KDEClangFormat)
0038 include(KDEGitCommitHooks)
0039 include(ECMDeprecationSettings)
0040 include(ECMFindQmlModule)
0041
0042 # find dependencies
0043
0044 find_package(
0045 Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED
0046 Core
0047 Concurrent
0048 Qml
0049 Quick
0050 QuickControls2
0051 QuickTemplates2
0052 Widgets
0053 DBus
0054 PrintSupport
0055 Test
0056 WaylandClient
0057 Multimedia
0058 )
0059 qt_policy(SET QTP0001 NEW)
0060
0061 find_package(
0062 KF6 ${KF_MIN_VERSION} REQUIRED
0063 CoreAddons
0064 WidgetsAddons
0065 DBusAddons
0066 Notifications
0067 Config
0068 I18n
0069 KIO
0070 WindowSystem
0071 GlobalAccel
0072 XmlGui
0073 GuiAddons
0074 KirigamiPlatform
0075 )
0076
0077 find_package(Wayland REQUIRED COMPONENTS Client)
0078 find_package(PlasmaWaylandProtocols REQUIRED)
0079 find_package(LayerShellQt REQUIRED)
0080 find_package(KPipeWire)
0081 find_package(ZXing REQUIRED)
0082 set_package_properties(KPipeWire PROPERTIES DESCRIPTION
0083 "Used to record pipewire streams into a file"
0084 TYPE REQUIRED
0085 )
0086
0087 # optional components
0088 find_package(KF6DocTools ${KF_MIN_VERSION})
0089 set_package_properties(KF6DocTools PROPERTIES DESCRIPTION
0090 "Tools to generate documentation"
0091 TYPE OPTIONAL
0092 )
0093 find_package(KF6Purpose)
0094 if (KF6Purpose_FOUND)
0095 set(PURPOSE_FOUND 1)
0096 endif()
0097
0098 find_package(XCB COMPONENTS XFIXES IMAGE UTIL CURSOR RANDR)
0099 set(XCB_COMPONENTS_ERRORS FALSE)
0100 set(XCB_COMPONENTS_FOUND TRUE)
0101 if(NOT XCB_XFIXES_FOUND)
0102 set(XCB_COMPONENTS_ERRORS "${XCB_COMPONENTS_ERRORS} XCB-XFIXES ")
0103 set(XCB_COMPONENTS_FOUND FALSE)
0104 endif()
0105 if(NOT XCB_IMAGE_FOUND)
0106 set(XCB_COMPONENTS_ERRORS "${XCB_COMPONENTS_ERRORS} XCB-IMAGE ")
0107 set(XCB_COMPONENTS_FOUND FALSE)
0108 endif()
0109 if(NOT XCB_UTIL_FOUND)
0110 set(XCB_COMPONENTS_ERRORS "${XCB_COMPONENTS_ERRORS} XCB-UTIL ")
0111 set(XCB_COMPONENTS_FOUND FALSE)
0112 endif()
0113 if(NOT XCB_CURSOR_FOUND)
0114 set(XCB_COMPONENTS_ERRORS "${XCB_COMPONENTS_ERRORS} XCB-CURSOR ")
0115 set(XCB_COMPONENTS_FOUND FALSE)
0116 endif()
0117
0118 # fail build if none of the platform backends can be found
0119 if (NOT XCB_FOUND OR NOT XCB_COMPONENTS_FOUND)
0120 message(FATAL_ERROR "No suitable backend platform was found. Currently supported platforms are: XCB Components Required: ${XCB_COMPONENTS_ERRORS}")
0121 endif()
0122
0123 # setup handling of deprecated Qt & KF API
0124
0125 ecm_set_disabled_deprecation_versions(QT 6.5 KF 5.240.0)
0126
0127 # hand off to subdirectories
0128
0129 add_subdirectory(src)
0130 add_subdirectory(dbus)
0131 add_subdirectory(desktop)
0132 add_subdirectory(icons)
0133 add_subdirectory(kconf_update)
0134 add_subdirectory(tests)
0135
0136 if (KF6DocTools_FOUND)
0137 add_subdirectory(doc)
0138 kdoctools_install(po)
0139 endif()
0140 ki18n_install(po)
0141
0142 ecm_qt_install_logging_categories(EXPORT SPECTACLE FILE spectacle.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
0143
0144 # summaries
0145
0146 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0147
0148 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0149 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0150
0151 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)