CMakeLists.txt 5.66 KB
Newer Older
Andre Heinecke's avatar
Andre Heinecke committed
1
set(kleopatra_version 3.1.11)
Andre Heinecke's avatar
Andre Heinecke committed
2
# The following is for Windows. Keep in line with kleopatra_version.
Andre Heinecke's avatar
Andre Heinecke committed
3
set(kleopatra_fileversion 3,1,11,0)
4
cmake_minimum_required(VERSION 3.5)
Laurent Montel's avatar
Laurent Montel committed
5
6
project(kleopatra VERSION ${kleopatra_version})

7
8
# The RELEASE_SERVICE_VERSION is used by Gpg4win to add the Gpg4win version
if (NOT RELEASE_SERVICE_VERSION)
9
    set (RELEASE_SERVICE_VERSION "20.07.80")
10
endif()
11

12
option(FORCE_DISABLE_KCMUTILS "Force building Kleopatra without KCMUtils. Doing this will disable configuration KCM Plugins. [default=OFF]" OFF)
13
option(DISABLE_KWATCHGNUPG "Don't build the kwatchgnupg tool [default=OFF]" OFF)
14

Allen Winter's avatar
Allen Winter committed
15
# Standalone build. Find / include everything necessary.
16
set(KF5_MIN_VERSION "5.71.0")
17
18
set(KMIME_VERSION "5.14.40")
set(LIBKLEO_VERSION "5.14.40")
19
set(QT_REQUIRED_VERSION "5.13.0")
20
set(GPGME_REQUIRED_VERSION "1.11.1")
Laurent Montel's avatar
Laurent Montel committed
21

22
find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)
Laurent Montel's avatar
Laurent Montel committed
23
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
24
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
Laurent Montel's avatar
Laurent Montel committed
25

26

Laurent Montel's avatar
Laurent Montel committed
27
28
29
include(ECMInstallIcons)
include(ECMSetupVersion)
include(ECMAddTests)
30

Laurent Montel's avatar
Laurent Montel committed
31
32
include(GenerateExportHeader)
include(ECMGenerateHeaders)
33

Laurent Montel's avatar
Laurent Montel committed
34
35
36
37
38
39
include(FeatureSummary)
include(CheckFunctionExists)
include(ECMGeneratePriFile)

include(KDEInstallDirs)
include(KDECMakeSettings)
40
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
Laurent Montel's avatar
Laurent Montel committed
41
42
include(ECMAddAppIcon)
include(ECMQtDeclareLoggingCategory)
43

44
# Find KF5 packages
45
if (NOT FORCE_DISABLE_KCMUTILS)
46
  find_package(KF5KCMUtils ${KF5_MIN_VERSION} CONFIG REQUIRED)
47
endif()
48
49
50
51
52
53
54
55
56
57
58
59
find_package(KF5WidgetsAddons ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5ConfigWidgets ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5CoreAddons ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Codecs ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5Config ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5I18n ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5IconThemes ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5ItemModels ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5XmlGui ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5WindowSystem ${KF5_MIN_VERSION} CONFIG REQUIRED)
find_package(KF5DocTools ${KF5_MIN_VERSION} CONFIG)
find_package(KF5Crash ${KF5_MIN_VERSION} REQUIRED)
Andre Heinecke's avatar
Andre Heinecke committed
60
61

set_package_properties(KF5DocTools PROPERTIES DESCRIPTION "Documentation tools" TYPE OPTIONAL PURPOSE "Required to generate Kleopatra documentation.")
62

63
64
65
66
# Optional packages
if (WIN32)
  # Only a replacement available for Windows so this
  # is required on other platforms.
67
  find_package(KF5DBusAddons ${KF5_MIN_VERSION} CONFIG)
68
69
  set_package_properties(KF5DBusAddons PROPERTIES DESCRIPTION "Support library to work with DBus"
                         PURPOSE "DBus session integration"
Laurent Montel's avatar
Laurent Montel committed
70
                         URL "https://inqlude.org/libraries/kdbusaddons.html"
71
72
                         TYPE OPTIONAL)
else()
73
  find_package(KF5DBusAddons ${KF5_MIN_VERSION} CONFIG REQUIRED)
74
75
76
77
78
  set(_kleopatra_dbusaddons_libs KF5::DBusAddons)
endif()

set(HAVE_QDBUS ${Qt5DBus_FOUND})

79
80
find_package(Gpgmepp ${GPGME_REQUIRED_VERSION} CONFIG REQUIRED)
find_package(QGpgme ${GPGME_REQUIRED_VERSION} CONFIG REQUIRED)
81

82
# Kdepimlibs packages
Laurent Montel's avatar
Laurent Montel committed
83
84
85
find_package(KF5Libkleo ${LIBKLEO_VERSION} CONFIG REQUIRED)
find_package(KF5Mime ${KMIME_VERSION} CONFIG REQUIRED)

Andre Heinecke's avatar
Andre Heinecke committed
86
find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets Test Network PrintSupport)
87

Andre Heinecke's avatar
Andre Heinecke committed
88
find_package(Assuan2 REQUIRED)
89

90
set(HAVE_KCMUTILS ${KF5KCMUtils_FOUND})
91
92
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
93
94


95
96
97
98
find_package(Boost 1.34.0 REQUIRED)

find_path(Boost_TOPOLOGICAL_SORT_DIR NAMES boost/graph/topological_sort.hpp PATHS ${Boost_INCLUDE_DIRS})
if(NOT Boost_TOPOLOGICAL_SORT_DIR)
Laurent Montel's avatar
Laurent Montel committed
99
    message(FATAL_ERROR "The Boost Topological_sort header was NOT found. Should be part of Boost graph module.")
100
endif()
Laurent Montel's avatar
Laurent Montel committed
101

102
103
104
set(kleopatra_release FALSE)

if(NOT kleopatra_release)
Laurent Montel's avatar
Laurent Montel committed
105
106
107
108
109
110
111
112
113
114
115
116
117
    if(GIT_FOUND)
        execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --format=%h ${CMAKE_CURRENT_SOURCE_DIR}
            WORKING_DIRECTORY ${kdepim_SOURCE_DIR}/kleopatra
            OUTPUT_VARIABLE Kleopatra_WC_REVISION)
        string(REGEX REPLACE "\n" "" Kleopatra_WC_REVISION "${Kleopatra_WC_REVISION}")

        execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --format=%ci ${CMAKE_CURRENT_SOURCE_DIR}
            WORKING_DIRECTORY ${kdepim_SOURCE_DIR}/kleopatra
            OUTPUT_VARIABLE Kleopatra_WC_LAST_CHANGED_DATE)
        string(REGEX REPLACE " [-0-9:+ ]*\n" "" Kleopatra_WC_LAST_CHANGED_DATE "${Kleopatra_WC_LAST_CHANGED_DATE}")

        set(kleopatra_version "${kleopatra_version}-git${Kleopatra_WC_REVISION} (${Kleopatra_WC_LAST_CHANGED_DATE})")
    endif()
118
119
120
endif()

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version-kleopatra.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version-kleopatra.h)
121

122
123
124
include (ConfigureChecks.cmake)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-kleopatra.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kleopatra.h)
125
include_directories(
Laurent Montel's avatar
Laurent Montel committed
126
127
128
    ${CMAKE_CURRENT_BINARY_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${Boost_INCLUDE_DIR}
129
    ${ASSUAN2_INCLUDES}
Laurent Montel's avatar
Laurent Montel committed
130
    )
131
132

add_definitions(-D_ASSUAN_ONLY_GPG_ERRORS)
133
#add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00)
134
add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x054800)
Laurent Montel's avatar
Laurent Montel committed
135
if(CMAKE_COMPILER_IS_GNUCXX)
Laurent Montel's avatar
Laurent Montel committed
136
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-braces -Wno-parentheses -Wno-ignored-qualifiers")
137
endif()
138
add_definitions(-DQT_NO_EMIT)
139

140
141
kde_enable_exceptions()

142

143
add_subdirectory(pics)
144
add_subdirectory(src)
145
146
147

if(BUILD_TESTING)
    add_subdirectory(tests)
148
    add_subdirectory(autotests)
149
endif()
Laurent Montel's avatar
Laurent Montel committed
150

151
ecm_qt_install_logging_categories(
Laurent Montel's avatar
Laurent Montel committed
152
153
154
155
        EXPORT KLEOPATRA
        FILE kleopatra.categories
        DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
        )
Andre Heinecke's avatar
Andre Heinecke committed
156
157
158
159

if(KF5DocTools_FOUND)
    add_subdirectory(doc)
endif()