Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

CMakeLists.txt 3.63 KB
Newer Older
1 2
cmake_minimum_required(VERSION 3.0)

3
project(kdeconnect)
4

Nicolas Fella's avatar
Nicolas Fella committed
5 6 7 8 9 10 11 12 13 14 15
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)

include(KDEInstallDirs)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings)
include(ECMAddTests)
include(ECMSetupVersion)
include(ECMInstallIcons)
include(FeatureSummary)
include(GenerateExportHeader)
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
16

Nicolas Fella's avatar
Nicolas Fella committed
17 18 19 20 21 22
include(KDEConnectMacros.cmake)

ecm_setup_version(1.3.3
    VARIABLE_PREFIX KDECONNECT
    VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/kdeconnect-version.h
)
23

24
if (SAILFISHOS)
25
    find_package(PkgConfig)
26 27 28 29 30 31 32 33 34 35 36
    set(KF5_MIN_VERSION "5.31.0")
    set(QT_MIN_VERSION "5.6.0")
    set(KF5_REQUIRED_COMPONENTS I18n DBusAddons CoreAddons IconThemes Config)
    set(KF5_OPTIONAL_COMPONENTS)
    set(QCA_MIN_VERSION 2.0.0)
    pkg_search_module(SFOS REQUIRED sailfishapp)
    pkg_check_modules(QCA2 qca2-qt5>=${QCA_MIN_VERSION} REQUIRED)
    add_definitions(-DSAILFISHOS)
    include_directories(${QCA2_INCLUDEDIR})
    add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
else()
Nicolas Fella's avatar
Nicolas Fella committed
37
    set(KF5_MIN_VERSION "5.48.0")
38
    set(QT_MIN_VERSION "5.10.0")
Nicolas Fella's avatar
Nicolas Fella committed
39
    set(KF5_REQUIRED_COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications KIO KCMUtils Service Kirigami2)
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
40
    set(KF5_OPTIONAL_COMPONENTS DocTools)
Weixuan Xiao's avatar
Weixuan Xiao committed
41
    if(UNIX AND NOT APPLE)
Nicolas Fella's avatar
Nicolas Fella committed
42
        set(KF5_OPTIONAL_COMPONENTS ${KF5_OPTIONAL_COMPONENTS} Runner)
43
    endif()
44 45
    set(QCA_MIN_VERSION "2.1.0")
    find_package(Qca-qt5 ${QCA_MIN_VERSION} REQUIRED)
Weixuan Xiao's avatar
Weixuan Xiao committed
46
    if(NOT WIN32 AND NOT APPLE)
Piyush Aggarwal's avatar
Piyush Aggarwal committed
47 48
        find_package(KF5PulseAudioQt REQUIRED)
    endif()
49
    add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_NO_KEYWORDS -DQT_NO_CAST_FROM_ASCII)
50
endif()
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
51

52
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Quick Network)
53 54 55 56
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS ${KF5_REQUIRED_COMPONENTS})
if (KF5_OPTIONAL_COMPONENTS)
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS ${KF5_OPTIONAL_COMPONENTS})
endif()
57

Matthijs Tijink's avatar
Matthijs Tijink committed
58 59 60 61
if (NOT ZSH_AUTOCOMPLETE_DIR)
set(ZSH_AUTOCOMPLETE_DIR "${CMAKE_INSTALL_PREFIX}/share/zsh/site-functions")
endif()

62
find_package(Qt5Multimedia)
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
63

64 65 66 67 68 69 70
set_package_properties(KF5Kirigami2 PROPERTIES
  DESCRIPTION "QtQuick plugins to build user interfaces based on KDE UX guidelines"
  PURPOSE "Required for KDE Connect's QML-based GUI applications"
  URL "https://www.kde.org/products/kirigami/"
  TYPE RUNTIME
)

Weixuan Xiao's avatar
Weixuan Xiao committed
71 72 73 74
option(PRIVATE_DBUS_ENABLED "Use private dbus session for kdeconnect" OFF)
if(PRIVATE_DBUS_ENABLED OR APPLE)
    add_compile_definitions(USE_PRIVATE_DBUS)
endif()
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
75
add_subdirectory(core)
76 77 78 79 80 81
if(NOT SAILFISHOS)
    add_subdirectory(kcm)
    add_subdirectory(kcmplugin)
    add_subdirectory(daemon)
endif()

82 83 84
if(NOT WIN32 AND NOT SAILFISHOS)
    add_subdirectory(kio)
    add_subdirectory(plasmoid)
85
endif()
86

87
add_subdirectory(icon)
Aleix Pol Gonzalez's avatar
Aleix Pol Gonzalez committed
88
add_subdirectory(interfaces)
Nicolas Fella's avatar
Nicolas Fella committed
89
add_subdirectory(data)
90
add_subdirectory(plugins)
91
add_subdirectory(cli)
92
add_subdirectory(declarativeplugin)
93

94 95 96 97
if(KF5Runner_FOUND)
    add_subdirectory(runners)
endif()

98
if (NOT SAILFISHOS)
Nicolas Fella's avatar
Nicolas Fella committed
99
    add_subdirectory(app)
100 101 102
    add_subdirectory(indicator)
    add_subdirectory(urlhandler)
    add_subdirectory(nautilus-extension)
103
    add_subdirectory(fileitemactionplugin)
104 105 106
else()
    add_subdirectory(sfos)
endif()
107

108 109 110 111 112 113 114 115 116 117
find_package(KF5Kirigami2)
find_package(KF5People REQUIRED)
find_package(KF5PeopleVCard)
set_package_properties(KF5PeopleVCard PROPERTIES
    PURPOSE "Read vcards from the file system"
    URL "https://phabricator.kde.org/source/kpeoplevcard/"
    TYPE RUNTIME
)

add_subdirectory(smsapp)
118

119 120 121
if(KF5DocTools_FOUND)
    add_subdirectory(doc)
endif()
David Edmundson's avatar
David Edmundson committed
122

123
if(BUILD_TESTING AND NOT SAILFISHOS)
Andreas Sturmlechner's avatar
Andreas Sturmlechner committed
124 125
    add_subdirectory(tests)
endif()
126 127

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)