CMakeLists.txt 7.83 KB
Newer Older
1
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
2
set(PIM_VERSION "5.17.40")
Laurent Montel's avatar
Laurent Montel committed
3

4
project(kmail VERSION ${PIM_VERSION})
5
6
7
8

include(CheckIncludeFiles)


9
set(KF5_MIN_VERSION "5.83.0")
10
11
12
13
14
15
16
17
18
19
20
21

find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})

include(ECMInstallIcons)
include(ECMSetupVersion)
include(ECMAddTests)

include(GenerateExportHeader)
include(ECMGenerateHeaders)

include(FeatureSummary)
22
include(KDEGitCommitHooks)
23
24
25
26
27
28
29
30
31
32
include(CheckFunctionExists)
include(ECMGeneratePriFile)

include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include(ECMAddAppIcon)
include(ECMQtDeclareLoggingCategory)

# Do NOT add quote
33
34
set(KDEPIM_DEV_VERSION alpha)
set(RELEASE_SERVICE_VERSION "21.07.40")
35
36
37
38
39
40

# add an extra space
if(DEFINED KDEPIM_DEV_VERSION)
    set(KDEPIM_DEV_VERSION " ${KDEPIM_DEV_VERSION}")
endif()

41
set(KDEPIM_VERSION "${PIM_VERSION}${KDEPIM_DEV_VERSION} (${RELEASE_SERVICE_VERSION})")
42
43


44
45
46
47
48
49
50
51
52
set(AKONADI_MIMELIB_VERSION "5.17.40")
set(AKONADI_CONTACT_VERSION "5.17.40")
set(CALENDARUTILS_LIB_VERSION "5.17.40")
set(IDENTITYMANAGEMENT_LIB_VERSION "5.17.40")
set(KLDAP_LIB_VERSION "5.17.40")
set(KMAILTRANSPORT_LIB_VERSION "5.17.40")
set(KONTACTINTERFACE_LIB_VERSION "5.17.40")
set(KMIME_LIB_VERSION "5.17.40")
set(KPIMTEXTEDIT_LIB_VERSION "5.17.40")
53
set(AKONADI_VERSION "5.17.41")
54
55
set(KTNEF_LIB_VERSION "5.17.40")
set(GRANTLEETHEME_LIB_VERSION "5.17.40")
56

57
set(KDEPIM_LIB_VERSION "${PIM_VERSION}")
Laurent Montel's avatar
Laurent Montel committed
58
59
set(KDEPIM_LIB_SOVERSION "5")

60
set(QT_REQUIRED_VERSION "5.15.0")
Laurent Montel's avatar
Laurent Montel committed
61
option(KDEPIM_ENTERPRISE_BUILD "Enable features specific to the enterprise branch, which are normally disabled. Also, it disables many components not needed for Kontact such as the Kolab client." FALSE)
62

63
64
option(KDEPIM_RUN_AKONADI_TEST "Enable autotest based on Akonadi." TRUE)

Laurent Montel's avatar
Laurent Montel committed
65
find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED DBus Network Test Widgets WebEngine WebEngineWidgets)
66
67
68
69
70
71
72
73
set(LIBGRAVATAR_VERSION "5.17.40")
set(MAILCOMMON_LIB_VERSION "5.17.40")
set(MESSAGELIB_LIB_VERSION "5.17.40")
set(LIBKLEO_LIB_VERSION "5.17.40")
set(PIMCOMMON_LIB_VERSION "5.17.40")
set(LIBKDEPIM_LIB_VERSION "5.17.40")
set(LIBKSIEVE_LIB_VERSION "5.17.40")
set(AKONADI_SEARCH_VERSION "5.17.40")
Laurent Montel's avatar
Laurent Montel committed
74

Laurent Montel's avatar
Laurent Montel committed
75
find_package(KF5WebEngineViewer ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
76

Laurent Montel's avatar
Laurent Montel committed
77
find_package(KF5AkonadiSearch ${AKONADI_SEARCH_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
78
set_package_properties(KF5AkonadiSearch PROPERTIES DESCRIPTION "The Akonadi Search libraries" URL "https://www.kde.org" TYPE REQUIRED PURPOSE "Provides search capabilities in KMail and Akonadi")
Laurent Montel's avatar
Laurent Montel committed
79

80
set(GPGMEPP_LIB_VERSION "1.13.1")
81
82
find_package(Gpgmepp ${GPGMEPP_LIB_VERSION} CONFIG REQUIRED)

Laurent Montel's avatar
Laurent Montel committed
83
# Find KF5 package
84
85
86
87
88
find_package(KF5Bookmarks ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Config ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5ConfigWidgets ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Crash ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5DBusAddons ${KF5_MIN_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
89
90
91
92
93
find_package(KF5DocTools ${KF5_MIN_VERSION})
set_package_properties(KF5DocTools PROPERTIES DESCRIPTION
    "Tools to generate documentation"
    TYPE OPTIONAL
)
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
find_package(KF5GuiAddons ${KF5_MIN_VERSION} REQUIRED)
find_package(KF5I18n ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5ItemViews ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5JobWidgets ${KF5_MIN_VERSION} REQUIRED)
find_package(KF5KIO ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5KCMUtils ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Notifications ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5NotifyConfig ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Parts ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Service ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Sonnet ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5TextWidgets ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5WidgetsAddons ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5WindowSystem ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5XmlGui ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5IconThemes ${KF5_MIN_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
110
111
find_package(KF5Contacts ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5CalendarCore ${KF5_MIN_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
112
113
114
115
116
117
118

find_package(KF5Akonadi ${AKONADI_VERSION} CONFIG REQUIRED)
find_package(KF5AkonadiContact ${AKONADI_CONTACT_VERSION} CONFIG REQUIRED)
find_package(KF5AkonadiMime ${AKONADI_MIMELIB_VERSION} CONFIG REQUIRED)
find_package(KF5CalendarUtils ${CALENDARUTILS_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5IdentityManagement ${IDENTITYMANAGEMENT_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5Ldap ${KLDAP_LIB_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
119
find_package(KF5MailTransportAkonadi ${KMAILTRANSPORT_LIB_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
120
find_package(KF5PimTextEdit ${KPIMTEXTEDIT_LIB_VERSION} CONFIG REQUIRED)
121
find_package(KF5GrantleeTheme ${GRANTLEETHEME_LIB_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
122
123
124
125

find_package(KF5KontactInterface ${KONTACTINTERFACE_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5Mime ${KMIME_LIB_VERSION} CONFIG REQUIRED)

Laurent Montel's avatar
Laurent Montel committed
126
127
128
129
130
131
132
133
134
135
136
find_package(KF5Gravatar ${LIBGRAVATAR_VERSION} CONFIG REQUIRED)
find_package(KF5Libkdepim ${LIBKDEPIM_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5Libkleo ${LIBKLEO_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5LibKSieve ${LIBKSIEVE_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5MailCommon ${MAILCOMMON_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5MessageCore ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5MessageComposer ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5MessageList ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5MessageViewer ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5PimCommonAkonadi ${PIMCOMMON_LIB_VERSION} CONFIG REQUIRED)
find_package(KF5TemplateParser ${MESSAGELIB_LIB_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
137
find_package(KF5Tnef ${KTNEF_LIB_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
138
139
find_package(MailTransportDBusService CONFIG REQUIRED)

140
141
142
143
find_package(Qt5Keychain CONFIG)
set_package_properties(Qt5Keychain PROPERTIES
                                   DESCRIPTION "Provides support for secure credentials storage"
                                   URL "https://github.com/frankosterfeld/qtkeychain"
144
				   TYPE REQUIRED)
145
146


Laurent Montel's avatar
Laurent Montel committed
147
configure_file(config-enterprise.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-enterprise.h )
Laurent Montel's avatar
Laurent Montel committed
148

149
150
include_directories(${kmail_SOURCE_DIR} ${kmail_BINARY_DIR})
configure_file(kmail-version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/kmail-version.h @ONLY)
151
152
153
if(BUILD_TESTING)
   add_definitions(-DBUILD_TESTING)
endif()
154
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00)
Luca Beltrame's avatar
Luca Beltrame committed
155
add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055200)
156
set(CMAKE_CXX_STANDARD 17)
157
158
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Laurent Montel's avatar
Laurent Montel committed
159
find_package(KUserFeedback 1.0.0 CONFIG)
Laurent Montel's avatar
Laurent Montel committed
160
set_package_properties(KUserFeedback PROPERTIES DESCRIPTION "User Feedback lib" TYPE OPTIONAL PURPOSE "Allow to send Telemetry Information (optional). It can be disable in apps.")
161

162
163
164
option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF)

set(COMPILE_WITH_UNITY_CMAKE_SUPPORT OFF)
Laurent Montel's avatar
Laurent Montel committed
165
if (USE_UNITY_CMAKE_SUPPORT)
166
    set(COMPILE_WITH_UNITY_CMAKE_SUPPORT ON)
167
168
endif()

169

Laurent Montel's avatar
Laurent Montel committed
170
option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) # Set to OFF when using clazy and such
Laurent Montel's avatar
Laurent Montel committed
171
set(COMPILE_WITH_CMAKE_PCH_SUPPORT OFF)
Laurent Montel's avatar
Laurent Montel committed
172
173
macro(pim_target_precompile_headers)
    if (USE_PRECOMPILED_HEADERS)
Laurent Montel's avatar
Laurent Montel committed
174
	    set(COMPILE_WITH_CMAKE_PCH_SUPPORT ON)
Laurent Montel's avatar
Laurent Montel committed
175
176
177
178
179
180
181
182

        if (COMPILE_WITH_CMAKE_PCH_SUPPORT)
            target_precompile_headers(${ARGV})
        endif()
    endif()
endmacro()


183
add_subdirectory(src)
184
add_subdirectory(agents)
Laurent Montel's avatar
Laurent Montel committed
185
add_subdirectory(ktnef)
186
add_subdirectory(kmail-refresh-settings)
187
ecm_qt_install_logging_categories(
Laurent Montel's avatar
Laurent Montel committed
188
189
190
191
        EXPORT KMAIL
        FILE kmail.categories
        DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
        )
Laurent Montel's avatar
Laurent Montel committed
192

193
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
194
ki18n_install(po)
Laurent Montel's avatar
Laurent Montel committed
195
196
if(KF5DocTools_FOUND)
    kdoctools_install(po)
Laurent Montel's avatar
Laurent Montel committed
197
    add_subdirectory(doc)
Laurent Montel's avatar
Laurent Montel committed
198
endif()
Laurent Montel's avatar
Laurent Montel committed
199
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
200