"Fossies" - the Fresh Open Source Software Archive 
Member "evolution-mapi-3.46.1/CMakeLists.txt" (2 Dec 2022, 9494 Bytes) of package /linux/misc/evolution-mapi-3.46.1.tar.xz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
See also the latest
Fossies "Diffs" side-by-side code changes report for "CMakeLists.txt":
3.46.0_vs_3.46.1.
1 # Evolution-MAPI build script
2
3 cmake_minimum_required(VERSION 3.1)
4 cmake_policy(VERSION 3.1)
5
6 project(evolution-mapi
7 VERSION 3.46.1
8 LANGUAGES C)
9 set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-mapi/issues/")
10
11 # Required for FindIntltool module
12 set(GETTEXT_PACKAGE ${PROJECT_NAME})
13 set(GETTEXT_PO_DIR ${CMAKE_SOURCE_DIR}/po)
14
15 # Required for 'disttest' and 'distcheck' of DistTarget module
16 set(PROJECT_DISTCONFIGURE_PARAMS)
17
18 # Keep these two definitions in agreement.
19 set(glib_minimum_version 2.46)
20 set(glib_encoded_version GLIB_VERSION_2_46)
21
22 # Keep these two definitions in agreement.
23 set(gdk_minimum_version 3.10)
24 set(gdk_encoded_version GDK_VERSION_3_10)
25
26 # Warn about API usage that violates our minimum requirements.
27 add_definitions(-DGLIB_VERSION_MAX_ALLOWED=${glib_encoded_version})
28 add_definitions(-DGDK_VERSION_MAX_ALLOWED=${gdk_encoded_version})
29
30 # These will suppress warnings about newly-deprecated symbols. Ideally
31 # these settings should match our minimum requirements and we will clean
32 # up any new deprecation warnings after bumping our minimum requirements.
33 # But if the warnings get to be overwhelming, use fixed versions instead.
34 add_definitions(-DGLIB_VERSION_MIN_REQUIRED=${glib_encoded_version})
35 add_definitions(-DGDK_VERSION_MIN_REQUIRED=${gdk_encoded_version})
36
37 set(eds_minimum_version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
38 set(evo_minimum_version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
39 set(libmapi_minimum_version 2.0)
40
41 # Load modules from the source tree
42 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
43
44 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
45 # Packagers might want to need different settings for the RPATH related things
46 # From experience, especially CMAKE_BUILD_WITH_INSTALL_RPATH might need to be
47 # switched to ON, if CMake fails to set the right values during make install
48 set(CMAKE_SKIP_RPATH OFF CACHE BOOL INTERNAL)
49 set(CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL INTERNAL)
50 set(CMAKE_BUILD_WITH_INSTALL_RPATH OFF CACHE BOOL INTERNAL)
51 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON CACHE BOOL INTERNAL)
52 # CMAKE_INSTALL_RPATH is set below
53
54 # CMake modules
55 include(CheckCSourceCompiles)
56
57 # Project custom modules
58 include(PrintableOptions)
59
60 add_printable_variable(LIB_SUFFIX "Library directory suffix, usually defined to '64' for x86_64 systems" "")
61 add_printable_variable_bare(CMAKE_INSTALL_PREFIX)
62 add_printable_variable_path(BIN_INSTALL_DIR "Install directory for binary files, defaults to CMAKE_INSTALL_PREFIX/bin" "")
63 add_printable_variable_path(INCLUDE_INSTALL_DIR "Install directory for header files, defaults to CMAKE_INSTALL_PREFIX/include" "")
64 add_printable_variable_path(LIB_INSTALL_DIR "Install directory for library files, defaults to CMAKE_INSTALL_PREFIX/lib{LIB_SUFFIX}" "")
65 add_printable_variable_path(LIBEXEC_INSTALL_DIR "Install directory for library executable files, defaults to CMAKE_INSTALL_PREFIX/libexec" "")
66 add_printable_variable_path(SHARE_INSTALL_PREFIX "Install directory for shared files, defaults to CMAKE_INSTALL_PREFIX/share" "")
67 add_printable_variable_path(LOCALE_INSTALL_DIR "Install directory for locale files, defaults to SHARE_INSTALL_PREFIX/locale" "")
68 add_printable_variable_path(SYSCONF_INSTALL_DIR "Install directory for system configuration files, defaults to CMAKE_INSTALL_PREFIX/etc" "")
69
70 macro(ensure_default_value _var _defvalue)
71 if(${_var} STREQUAL "")
72 set(${_var} ${_defvalue})
73 endif(${_var} STREQUAL "")
74 endmacro(ensure_default_value)
75
76 ensure_default_value(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
77 ensure_default_value(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
78 ensure_default_value(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
79 ensure_default_value(LIBEXEC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/libexec")
80 ensure_default_value(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share")
81 ensure_default_value(LOCALE_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/locale")
82 ensure_default_value(SYSCONF_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/etc")
83
84 # ******************************
85 # Dependencies
86 # ******************************
87
88 include(CodeCoverageGCOV)
89 include(CheckTarget)
90 include(DistTargets)
91 include(EvolutionMacros)
92 include(GLibTools)
93 include(PkgConfigEx)
94 include(SetupBuildFlags)
95 include(UninstallTarget)
96
97 include(FindIntltool)
98
99 add_printable_option(ENABLE_MAINTAINER_MODE "Enable maintainer mode" OFF)
100
101 if(ENABLE_MAINTAINER_MODE)
102 set(BUILD_TESTING ON)
103 endif(ENABLE_MAINTAINER_MODE)
104
105 # Setup compiler/linker flags
106 setup_build_flags(${ENABLE_MAINTAINER_MODE})
107
108 if(${ENABLE_MAINTAINER_MODE})
109 add_definitions(-DCAMEL_DISABLE_DEPRECATED=1 -DEDS_DISABLE_DEPRECATED=1)
110 endif(${ENABLE_MAINTAINER_MODE})
111
112 pkg_check_modules(CAMEL REQUIRED camel-1.2>=${eds_minimum_version})
113 pkg_check_modules(EVOLUTION_DATA_SERVER REQUIRED evolution-data-server-1.2>=${eds_minimum_version})
114 pkg_check_modules(LIBEBACKEND REQUIRED libebackend-1.2>=${eds_minimum_version})
115 pkg_check_modules(LIBEBOOK REQUIRED libebook-1.2>=${eds_minimum_version})
116 pkg_check_modules(LIBECAL REQUIRED libecal-2.0>=${eds_minimum_version})
117 pkg_check_modules(LIBEDATABOOK REQUIRED libedata-book-1.2>=${eds_minimum_version})
118 pkg_check_modules(LIBEDATACAL REQUIRED libedata-cal-2.0>=${eds_minimum_version})
119 pkg_check_modules(LIBEDATASERVER REQUIRED libedataserver-1.2>=${eds_minimum_version})
120
121 pkg_check_modules(EVOLUTION_SHELL REQUIRED evolution-shell-3.0>=${evo_minimum_version})
122 pkg_check_modules(EVOLUTION_MAIL REQUIRED evolution-mail-3.0>=${evo_minimum_version})
123
124 pkg_check_modules(GNOME_PLATFORM REQUIRED
125 glib-2.0>=${glib_minimum_version}
126 gtk+-3.0>=${gdk_minimum_version}
127 )
128
129 pkg_check_modules(LIBMAPI REQUIRED libmapi>=${libmapi_minimum_version})
130
131 set(CMAKE_REQUIRED_DEFINITIONS ${LIBMAPI_CFLAGS_OTHER})
132 set(CMAKE_REQUIRED_INCLUDES ${LIBMAPI_INCLUDE_DIRS})
133 set(CMAKE_REQUIRED_LIBRARIES ${LIBMAPI_LDFLAGS})
134
135 # ******************************
136 # struct mapi_SNotRestriction availability
137 # see http://tracker.openchange.org/issues/377
138 # ******************************
139
140 CHECK_C_SOURCE_COMPILES("#include <libmapi/libmapi.h>
141 int main(void) { struct mapi_SNotRestriction snot; snot.res->rt = RES_NOT; return 0; }" HAVE_RES_NOT_SUPPORTED)
142
143 # ******************************
144 # OpenChange 2.1 fast-transfer tags availability
145 # ******************************
146
147 CHECK_C_SOURCE_COMPILES("#include <libmapi/libmapi.h>
148 int main(void) { uint32_t tag;
149 tag = StartMessage;
150 tag = EndMessage;
151 tag = StartRecip;
152 tag = EndToRecip;
153 tag = NewAttach;
154 tag = EndAttach;
155 tag = StartEmbed;
156 tag = EndEmbed; return 0; }" HAVE_FAST_TRANSFER_TAGS_2_1)
157
158 # ******************************
159 # OpenChange 2.3 QueryRows
160 # ******************************
161
162 CHECK_C_SOURCE_COMPILES("#include <libmapi/libmapi.h>
163 int main(void) { QueryRows(NULL, 1, TBL_ADVANCE, TBL_FORWARD_READ, NULL); return 0; }" HAVE_QUERYROWS_FORWARDREAD)
164
165 unset(CMAKE_REQUIRED_DEFINITIONS)
166 unset(CMAKE_REQUIRED_INCLUDES)
167 unset(CMAKE_REQUIRED_LIBRARIES)
168
169 # ******************************
170 # Special directories
171 # ******************************
172
173 set(privlibdir "${LIB_INSTALL_DIR}/${PROJECT_NAME}")
174
175 pkg_check_variable(camel_providerdir camel-1.2 camel_providerdir)
176 pkg_check_variable(ebook_backenddir libedata-book-1.2 backenddir)
177 pkg_check_variable(ecal_backenddir libedata-cal-2.0 backenddir)
178 pkg_check_variable(eds_moduledir libebackend-1.2 moduledir)
179 pkg_check_variable(evo_privlibdir evolution-shell-3.0 privlibdir)
180 pkg_check_variable(errordir evolution-shell-3.0 errordir)
181 pkg_check_variable(evo_moduledir evolution-shell-3.0 moduledir)
182 pkg_check_variable(mapidatadir evolution-data-server-1.2 privdatadir)
183 pkg_check_variable(libmapi_ldif_dir libmapi datadir)
184
185 add_printable_variable(FORCE_INSTALL_PREFIX "Whether to force install evolution-data-server and evolution files into the install prefix" OFF)
186 if(FORCE_INSTALL_PREFIX)
187 pkg_check_variable(eds_prefix evolution-data-server-1.2 prefix)
188 string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" camel_providerdir "${camel_providerdir}")
189 string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" ebook_backenddir "${ebook_backenddir}")
190 string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" ecal_backenddir "${ecal_backenddir}")
191 string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" eds_moduledir "${eds_moduledir}")
192 string(REGEX REPLACE "^${eds_prefix}" "${CMAKE_INSTALL_PREFIX}" mapidatadir "${mapidatadir}")
193
194 pkg_check_variable(evo_prefix evolution-shell-3.0 prefix)
195 string(REGEX REPLACE "^${evo_prefix}" "${CMAKE_INSTALL_PREFIX}" errordir "${errordir}")
196 string(REGEX REPLACE "^${evo_prefix}" "${CMAKE_INSTALL_PREFIX}" evo_moduledir "${evo_moduledir}")
197 endif(FORCE_INSTALL_PREFIX)
198
199 set(mapidatadir "${mapidatadir}/mapi")
200 set(libmapi_ldif_dir "${libmapi_ldif_dir}/setup")
201
202 SET(CMAKE_INSTALL_RPATH "${privlibdir}:${evo_privlibdir}")
203
204 if(WIN32)
205 # On Win32 there is no "rpath" mechanism. We install the private
206 # shared libraries in $libdir, meaning the DLLs will actually be in
207 # $bindir. This means just having $bindir in PATH will be enough.
208 set(privsolibdir "${LIB_INSTALL_DIR}")
209 else(WIN32)
210 set(privsolibdir "${privlibdir}")
211 endif(WIN32)
212
213 # Generate the ${PROJECT_NAME}-config.h file
214 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-config.h)
215
216 print_build_options()
217
218 add_appdata_file(org.gnome.Evolution-mapi.metainfo.xml.in org.gnome.Evolution-mapi.metainfo.xml)
219
220 add_subdirectory(po)
221 add_subdirectory(src)