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.65 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
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)
15
include(ECMQtDeclareLoggingCategory)
Nicolas Fella's avatar
Nicolas Fella committed
16
include(GenerateExportHeader)
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
17

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

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

25
if (SAILFISHOS)
26
    find_package(PkgConfig)
27 28 29 30 31 32 33 34 35 36 37
    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
38
    set(KF5_MIN_VERSION "5.48.0")
39
    set(QT_MIN_VERSION "5.10.0")
Nicolas Fella's avatar
Nicolas Fella committed
40
    set(KF5_REQUIRED_COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications KIO KCMUtils Service Kirigami2)
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
41
    set(KF5_OPTIONAL_COMPONENTS DocTools)
42
    if(UNIX)
Nicolas Fella's avatar
Nicolas Fella committed
43
        set(KF5_OPTIONAL_COMPONENTS ${KF5_OPTIONAL_COMPONENTS} Runner)
44
    endif()
45 46
    set(QCA_MIN_VERSION "2.1.0")
    find_package(Qca-qt5 ${QCA_MIN_VERSION} REQUIRED)
Weixuan Xiao's avatar
Weixuan Xiao committed
47
    if(NOT WIN32 AND NOT APPLE)
Piyush Aggarwal's avatar
Piyush Aggarwal committed
48 49
        find_package(KF5PulseAudioQt REQUIRED)
    endif()
50
    add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_NO_KEYWORDS -DQT_NO_CAST_FROM_ASCII)
51
endif()
Albert Vaca Cintora's avatar
Albert Vaca Cintora committed
52

53
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Quick Network)
54 55 56 57
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()
58

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

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

65 66 67 68 69 70 71
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
72 73 74 75
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
76
add_subdirectory(core)
77 78 79 80 81 82
if(NOT SAILFISHOS)
    add_subdirectory(kcm)
    add_subdirectory(kcmplugin)
    add_subdirectory(daemon)
endif()

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

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

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

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

109 110 111 112 113 114 115 116 117 118
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)
119

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

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

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)