Warning, /network/kdeconnect-kde/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16)
0002
0003 # KDE Release Service Version, managed by release script
0004 set (RELEASE_SERVICE_VERSION_MAJOR "24")
0005 set (RELEASE_SERVICE_VERSION_MINOR "04")
0006 set (RELEASE_SERVICE_VERSION_MICRO "70")
0007 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0008
0009 project(kdeconnect VERSION ${RELEASE_SERVICE_VERSION})
0010
0011 set(KF_MIN_VERSION "5.240")
0012 set(QT_MIN_VERSION "6.6.0")
0013
0014 find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
0015 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
0016
0017 include(KDEInstallDirs)
0018 include(KDECompilerSettings NO_POLICY_SCOPE)
0019 include(KDECMakeSettings)
0020 include(ECMAddTests)
0021 include(ECMSetupVersion)
0022 include(ECMInstallIcons)
0023 include(ECMQtDeclareLoggingCategory)
0024 include(FeatureSummary)
0025 include(GenerateExportHeader)
0026 include(ECMGenerateQmlTypes)
0027 include(KDEClangFormat)
0028 include(KDEGitCommitHooks)
0029 include(ECMFindQmlModule)
0030 include(ECMQmlModule)
0031 include(ECMDeprecationSettings)
0032
0033 include(KDEConnectMacros.cmake)
0034
0035 ecm_setup_version(${RELEASE_SERVICE_VERSION}
0036 VARIABLE_PREFIX KDECONNECT
0037 VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/kdeconnect-version.h
0038 )
0039
0040 ecm_set_disabled_deprecation_versions(
0041 QT 5.15
0042 KF 5.110
0043 )
0044
0045 # Make the version header available by linking against kdeconnectversion
0046 add_library(kdeconnectversion INTERFACE)
0047 target_include_directories(kdeconnectversion INTERFACE ${CMAKE_CURRENT_BINARY_DIR})
0048
0049 set_package_properties(KF6Kirigami2 PROPERTIES
0050 DESCRIPTION "QtQuick plugins to build user interfaces based on KDE UX guidelines"
0051 PURPOSE "Required for KDE Connect's QML-based GUI applications"
0052 URL "https://www.kde.org/products/kirigami/"
0053 TYPE RUNTIME
0054 )
0055
0056 find_package(KF6KirigamiAddons 0.11 REQUIRED)
0057 set_package_properties(KF6KirigamiAddons PROPERTIES
0058 TYPE REQUIRED
0059 PURPOSE "Required runtime dependency (all the modules are required)"
0060 )
0061
0062 if(UNIX AND NOT APPLE)
0063 option(WITH_X11 "Build with X11 support" ON)
0064 option(WITH_PULSEAUDIO "Build with Pulseaudio support" ON)
0065 else()
0066 set(WITH_X11 OFF)
0067 set(WITH_PULSEAUDIO OFF)
0068 endif()
0069
0070 if(UNIX AND NOT APPLE)
0071 find_package(KF6Package REQUIRED)
0072 if (WITH_PULSEAUDIO)
0073 find_package(KF6PulseAudioQt REQUIRED)
0074 endif()
0075 find_package(QtWaylandScanner REQUIRED)
0076 find_package(Wayland 1.9 REQUIRED Client)
0077 find_package(Qt6 REQUIRED COMPONENTS WaylandClient)
0078 find_package(WaylandProtocols REQUIRED)
0079 pkg_check_modules(XkbCommon IMPORTED_TARGET xkbcommon)
0080 find_package(PkgConfig QUIET REQUIRED)
0081 pkg_check_modules(DBus REQUIRED IMPORTED_TARGET dbus-1)
0082 endif()
0083
0084 if (NOT WIN32)
0085 find_package(KF6StatusNotifierItem ${KF_MIN_VERSION} REQUIRED)
0086 endif()
0087
0088 #ecm_find_qmlmodule(org.kde.people 1.0) FIXME This results in KPeople code being called which triggers DBus calls which breaks the Windows CI
0089 ecm_find_qmlmodule(QtQuick.Particles 2.0)
0090
0091 add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_NO_KEYWORDS -DQT_NO_CAST_FROM_ASCII)
0092
0093 find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS DBus Quick QuickControls2 Network Multimedia)
0094 find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications
0095 KIO KCMUtils Service Solid Kirigami People WindowSystem GuiAddons DocTools)
0096
0097 if (WIN32)
0098 get_filename_component(WINDOWS_KITS_DIR
0099 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE)
0100 file(READ "${WINDOWS_KITS_DIR}/SDKManifest.xml" SDK_MANIFEST)
0101 string(REGEX MATCH "PlatformIdentity[^\n]*" PLATFORM_IDENTITY "${SDK_MANIFEST}" )
0102 string(REGEX MATCH "[0-9][0-9][0-9][0-9][0-9]" WIN_SDK_VERSION "${PLATFORM_IDENTITY}" )
0103 add_compile_definitions(WIN_SDK_VERSION=${WIN_SDK_VERSION})
0104 endif()
0105
0106 add_subdirectory(core)
0107 add_subdirectory(plugins)
0108 add_subdirectory(interfaces)
0109
0110 find_package(KF6QQC2DesktopStyle ${KF_MIN_VERSION} REQUIRED)
0111 set_package_properties(KF6QQC2DesktopStyle PROPERTIES TYPE RUNTIME)
0112
0113 add_subdirectory(icons)
0114 add_subdirectory(data)
0115 add_subdirectory(cli)
0116 add_subdirectory(declarativeplugin)
0117
0118 add_subdirectory(kcm)
0119 add_subdirectory(kcmplugin)
0120 add_subdirectory(daemon)
0121 add_subdirectory(app)
0122 add_subdirectory(indicator)
0123 add_subdirectory(urlhandler)
0124 add_subdirectory(nautilus-extension)
0125 add_subdirectory(fileitemactionplugin)
0126 add_subdirectory(smsapp)
0127 add_subdirectory(settings)
0128
0129 if(NOT WIN32 AND NOT APPLE)
0130 add_subdirectory(kio)
0131 add_subdirectory(plasmoid)
0132 endif()
0133
0134 add_subdirectory(doc)
0135 kdoctools_install(po)
0136
0137 ki18n_install(po)
0138
0139 if(BUILD_TESTING)
0140 add_subdirectory(tests)
0141 endif()
0142
0143 ecm_qt_install_logging_categories(EXPORT kdeconnect-kde FILE kdeconnect-kde.categories SORT DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}")
0144
0145 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0146 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0147
0148 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0149
0150 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)