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)