5f81db033796d2505ccbc69f46541e2ff8784f96
[platform/upstream/evolution-data-server.git] / configure.ac
1
2 dnl Evolution-Data-Server version
3 m4_define([eds_major_version], [3])
4 m4_define([eds_minor_version], [7])
5 m4_define([eds_micro_version], [91])
6
7 m4_define([eds_version],
8         [eds_major_version.eds_minor_version.eds_micro_version])
9
10 dnl Base Version: This is for API/version tracking for things like
11 dnl Bonobo server files.  This should always be the major/minor of
12 dnl the stable version or stable version to be.  Note, this is set
13 dnl the way it is so that GETTEXT_PACKAGE will be parsed correctly.
14 BASE_VERSION=3.8
15 m4_define([base_version], [3.8])
16
17 dnl This number is meaningless, but we're now stuck with it in our
18 dnl library names for backward compatibility.
19 m4_define([api_version], [1.2])
20
21 dnl Autoconf / Automake Initialization
22 AC_PREREQ(2.62)
23 AC_INIT([evolution-data-server],[eds_version],[http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server])
24 AM_INIT_AUTOMAKE([gnu 1.10 tar-ustar dist-xz no-dist-gzip -Wall -Wno-portability foreign])
25 AC_CONFIG_MACRO_DIR([m4])
26 AC_CONFIG_SRCDIR(README)
27 AC_CONFIG_HEADERS(config.h)
28
29 dnl This is for the autoconf tests only - it set's the language we use
30 AC_LANG(C)
31
32 dnl Automake 1.11 - Silent Build Rules
33 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
34
35 dnl Required Package Versions
36
37 dnl Keep these two definitions in agreement.
38 m4_define([glib_minimum_version], [2.34])
39 m4_define([glib_encoded_version], [GLIB_VERSION_2_34])
40
41 dnl Keep these two definitions in agreement.
42 m4_define([gdk_minimum_version], [3.2])
43 m4_define([gdk_encoded_version], [GDK_VERSION_3_2])
44
45 dnl Keep these two definitions in agreement.
46 m4_define([soup_minimum_version], [2.40.3])
47 m4_define([soup_encoded_version], [SOUP_VERSION_2_40])
48
49 m4_define([gcr_minimum_version], [3.4])
50 m4_define([libsecret_minimum_version], [0.5])
51 m4_define([libxml_minimum_version], [2.0.0])            dnl XXX Just a Guess
52 m4_define([libgdata_minimum_version], [0.10])
53 m4_define([sqlite_minimum_version], [3.5])
54 m4_define([libical_minimum_version], [0.43])
55
56 dnl Optional Packages
57 m4_define([goa_minimum_version], [3.2])
58 m4_define([gweather_minimum_version], [3.5.0])
59 m4_define([libaccounts_glib_minimum_version], [1.4])
60 m4_define([libsignon_glib_minimum_version], [1.8])
61
62 AC_SUBST([BASE_VERSION],[base_version])
63 AC_SUBST([API_VERSION],[api_version])
64 AC_DEFINE_UNQUOTED(BASE_VERSION, ["$BASE_VERSION"], [Base version (Major.Minor)])
65 AC_DEFINE_UNQUOTED(API_VERSION, ["$API_VERSION"], [API version (Major.Minor)])
66
67 EDS_MAJOR_VERSION=eds_major_version
68 EDS_MINOR_VERSION=eds_minor_version
69 EDS_MICRO_VERSION=eds_micro_version
70
71 GLIB_GSETTINGS
72
73 dnl ******************************
74 dnl D-Bus versioning
75 dnl ******************************
76 ADDRESS_BOOK_DBUS_SERVICE_NAME="org.gnome.evolution.dataserver.AddressBook5"
77 CALENDAR_DBUS_SERVICE_NAME="org.gnome.evolution.dataserver.Calendar4"
78 SOURCES_DBUS_SERVICE_NAME="org.gnome.evolution.dataserver.Sources1"
79 USER_PROMPTER_DBUS_SERVICE_NAME="org.gnome.evolution.dataserver.UserPrompter0"
80
81 AC_DEFINE_UNQUOTED(
82        ADDRESS_BOOK_DBUS_SERVICE_NAME,
83        ["$ADDRESS_BOOK_DBUS_SERVICE_NAME"],
84        [D-Bus service name for the address book factory])
85
86 AC_DEFINE_UNQUOTED(
87        CALENDAR_DBUS_SERVICE_NAME,
88        ["$CALENDAR_DBUS_SERVICE_NAME"],
89        [D-Bus service name for the calendar factory])
90
91 AC_DEFINE_UNQUOTED(
92         SOURCES_DBUS_SERVICE_NAME,
93         ["$SOURCES_DBUS_SERVICE_NAME"],
94         [D-Bus service name for the source registry])
95
96 AC_DEFINE_UNQUOTED(
97         USER_PROMPTER_DBUS_SERVICE_NAME,
98         ["$USER_PROMPTER_DBUS_SERVICE_NAME"],
99         [D-Bus service name for the user prompter])
100
101 AC_SUBST(ADDRESS_BOOK_DBUS_SERVICE_NAME)
102 AC_SUBST(CALENDAR_DBUS_SERVICE_NAME)
103 AC_SUBST(SOURCES_DBUS_SERVICE_NAME)
104 AC_SUBST(USER_PROMPTER_DBUS_SERVICE_NAME)
105
106 dnl ******************************
107 dnl Libtool versioning
108 dnl ******************************
109 LIBEDATASERVER_CURRENT=17
110 LIBEDATASERVER_REVISION=0
111 LIBEDATASERVER_AGE=0
112
113 LIBECAL_CURRENT=15
114 LIBECAL_REVISION=0
115 LIBECAL_AGE=0
116
117 LIBEDATACAL_CURRENT=20
118 LIBEDATACAL_REVISION=0
119 LIBEDATACAL_AGE=0
120
121 LIBEDATABOOK_CURRENT=17
122 LIBEDATABOOK_REVISION=0
123 LIBEDATABOOK_AGE=0
124
125 LIBEBOOK_CURRENT=17
126 LIBEBOOK_REVISION=1
127 LIBEBOOK_AGE=3
128
129 LIBEBOOK_CONTACTS_CURRENT=0
130 LIBEBOOK_CONTACTS_REVISION=0
131 LIBEBOOK_CONTACTS_AGE=0
132
133 LIBCAMEL_CURRENT=43
134 LIBCAMEL_REVISION=0
135 LIBCAMEL_AGE=0
136
137 LIBEBACKEND_CURRENT=6
138 LIBEBACKEND_REVISION=0
139 LIBEBACKEND_AGE=0
140
141 AC_SUBST(EDS_MAJOR_VERSION)
142 AC_SUBST(EDS_MINOR_VERSION)
143 AC_SUBST(EDS_MICRO_VERSION)
144 AC_SUBST(LIBEDATASERVER_CURRENT)
145 AC_SUBST(LIBEDATASERVER_REVISION)
146 AC_SUBST(LIBEDATASERVER_AGE)
147 AC_SUBST(LIBECAL_CURRENT)
148 AC_SUBST(LIBECAL_REVISION)
149 AC_SUBST(LIBECAL_AGE)
150 AC_SUBST(LIBEDATACAL_CURRENT)
151 AC_SUBST(LIBEDATACAL_REVISION)
152 AC_SUBST(LIBEDATACAL_AGE)
153 AC_SUBST(LIBEBOOK_CURRENT)
154 AC_SUBST(LIBEBOOK_REVISION)
155 AC_SUBST(LIBEBOOK_AGE)
156 AC_SUBST(LIBEBOOK_CONTACTS_CURRENT)
157 AC_SUBST(LIBEBOOK_CONTACTS_REVISION)
158 AC_SUBST(LIBEBOOK_CONTACTS_AGE)
159 AC_SUBST(LIBEDATABOOK_CURRENT)
160 AC_SUBST(LIBEDATABOOK_REVISION)
161 AC_SUBST(LIBEDATABOOK_AGE)
162 AC_SUBST(LIBCAMEL_CURRENT)
163 AC_SUBST(LIBCAMEL_REVISION)
164 AC_SUBST(LIBCAMEL_AGE)
165 AC_SUBST(LIBEBACKEND_CURRENT)
166 AC_SUBST(LIBEBACKEND_REVISION)
167 AC_SUBST(LIBEBACKEND_AGE)
168
169 dnl **************************************
170 dnl Put the ACLOCAL flags in the Makefile
171 dnl **************************************
172 ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
173
174 dnl *********************************************
175 dnl Figure out early if we'll need a C++ compiler
176 dnl *********************************************
177
178 evo_with_cxx=no
179 EVO_PHONENUMBER_ARGS
180
181 dnl ******************************
182 dnl Compiler Warning Flags
183 dnl ******************************
184 proposed_warning_flags="-Wall -Wextra
185         -Wdeprecated-declarations
186         -Werror-implicit-function-declaration
187         -Wformat-security -Winit-self
188         -Wmissing-declarations -Wmissing-include-dirs
189         -Wmissing-noreturn -Wpointer-arith
190         -Wredundant-decls -Wundef -Wwrite-strings"
191
192 proposed_c_warning_flags="$proposed_warning_flags
193         -Wdeclaration-after-statement
194         -Wno-missing-field-initializers
195         -Wno-sign-compare
196         -Wno-unused-parameter
197         -Wnested-externs"
198
199 proposed_cxx_warning_flags="$proposed_warning_flags
200         -Wabi -Wnoexcept"
201
202 AS_COMPILER_FLAGS(WARNING_FLAGS, [$proposed_c_warning_flags])
203 AC_SUBST(WARNING_FLAGS)
204
205 dnl Other useful compiler warnings for test builds only.
206 dnl These may produce warnings we have no control over,
207 dnl or false positives we don't always want to see.
208 dnl
209 dnl     -Wformat-nonliteral
210 dnl     -Wmissing-format-attribute
211 dnl     -Wshadow
212 dnl     -Wstrict-aliasing=2
213
214 AM_CFLAGS="$WARNING_FLAGS -fno-strict-aliasing"
215 AC_SUBST(AM_CFLAGS)
216
217 if test "x$evo_with_cxx" = xyes; then
218         AC_PROG_CXX
219
220         AC_LANG_PUSH([C++])
221         AS_COMPILER_FLAGS(CXX_WARNING_FLAGS, [$proposed_cxx_warning_flags])
222         AC_SUBST(CXX_WARNING_FLAGS)
223         AM_CXXFLAGS="$CXX_WARNING_FLAGS"
224         AC_SUBST(AM_CXXFLAGS)
225         AC_LANG_POP([C++])
226 else
227         dnl Autoconf requires those automake conditionals to be defined when
228         dnl generating the config files, but apparently it forgets to initialize
229         dnl them dnl if AC_PROG_CXX never gets called. Therefore we do it manually.
230         am__fastdepCXX_TRUE='#'
231         am__fastdepCXX_FALSE=
232 fi
233
234 dnl *******************************
235 dnl Check for --enable-strict
236 dnl *******************************
237 AC_ARG_ENABLE([strict],
238         [AS_HELP_STRING([--enable-strict],
239         [enable strict building, like without deprecated symbols (default=auto); auto enables strict building only if .git subdirectory exists])],
240         [enable_strict=$enableval], [enable_strict=auto])
241
242 AC_MSG_CHECKING([if strict building is enabled])
243 if test "x$enable_strict" = xauto; then
244         dnl Be strict when compiling with .git subdirectory
245         if test -d .git ; then
246                 enable_strict=yes
247         else
248                 enable_strict=no
249         fi
250 fi
251 AC_MSG_RESULT([$enable_strict])
252
253 AM_CPPFLAGS=
254
255 if test "x$enable_strict" = xyes; then
256         AM_CPPFLAGS="$AM_CPPFLAGS -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
257 fi
258
259 dnl Warn about API usage that violates our minimum requirements.
260 AM_CPPFLAGS="$AM_CPPFLAGS -DGLIB_VERSION_MAX_ALLOWED=glib_encoded_version"
261 AM_CPPFLAGS="$AM_CPPFLAGS -DGDK_VERSION_MAX_ALLOWED=gdk_encoded_version"
262 AM_CPPFLAGS="$AM_CPPFLAGS -DSOUP_VERSION_MAX_ALLOWED=soup_encoded_version"
263
264 dnl These will suppress warnings about newly-deprecated symbols.  Ideally
265 dnl these settings should match our minimum requirements and we will clean
266 dnl up any new deprecation warnings after bumping our minimum requirements.
267 dnl But if the warnings get to be overwhelming, use fixed versions instead.
268 AM_CPPFLAGS="$AM_CPPFLAGS -DGLIB_VERSION_MIN_REQUIRED=glib_encoded_version"
269 AM_CPPFLAGS="$AM_CPPFLAGS -DGDK_VERSION_MIN_REQUIRED=gdk_encoded_version"
270 AM_CPPFLAGS="$AM_CPPFLAGS -DSOUP_VERSION_MIN_REQUIRED=soup_encoded_version"
271
272 AC_SUBST(AM_CPPFLAGS)
273
274 dnl ******************************
275 dnl Initialize maintainer mode
276 dnl ******************************
277 AM_MAINTAINER_MODE([enable])
278
279 if test "x$enable_maintainer_mode" = "xyes" ; then
280         AC_DEFINE(ENABLE_MAINTAINER_MODE, 1, [Configured with enabled maintainer mode])
281 fi
282
283 AC_PROG_CC
284 AC_PROG_CPP
285 AC_C_INLINE
286 AM_PROG_CC_C_O
287 AC_PROG_INSTALL
288 AC_PROG_LN_S
289 AC_PROG_MAKE_SET
290
291 dnl For gen-western-table.py
292 AM_PATH_PYTHON
293
294 dnl GCC 4.4 got more aggressive in its aliasing optimizations, changing
295 dnl behavior that -- according to the C99 standard -- is supposed to be
296 dnl undefined.  We may still have aliasing abuses lying around that rely
297 dnl on GCC's previous "undefined" behavior, so disable strict-aliasing
298 dnl optimization until we can find and fix all the abuses.
299 dnl (AC_PROG_CC must run first to set the GCC variable.)
300 dnl XXX This really belongs in AM_CFLAGS.
301 if test "x${GCC}" = "xyes"; then
302         CFLAGS="$CFLAGS -fno-strict-aliasing"
303 fi
304
305 dnl ******************************
306 dnl I18N stuff
307 dnl ******************************
308 IT_PROG_INTLTOOL([0.35.5])
309
310 GETTEXT_PACKAGE=evolution-data-server-$BASE_VERSION
311 AC_SUBST(GETTEXT_PACKAGE)
312 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
313
314 localedir='$(prefix)/$(DATADIRNAME)/locale'
315 AC_SUBST(localedir)
316
317 dnl ******************************
318 dnl Initialize libtool
319 dnl ******************************
320 LT_PREREQ(2.2)
321 LT_INIT(disable-static win32-dll)
322
323 PKG_PROG_PKG_CONFIG
324
325 dnl This relies on $SED, which is defined in ltmain.sh, which
326 dnl is invoked by LT_INIT (at least I think that's how it works).
327 GNOME_CODE_COVERAGE
328
329 dnl ******************************
330 dnl Gtk Doc stuff
331 dnl ******************************
332 GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
333
334 dnl The private D-Bus documentation is for developers only.
335 AC_ARG_WITH([private-docs],
336         AS_HELP_STRING([--with-private-docs],
337         [Build documentation for private libraries ]
338         [(requires --enable-gtk-doc) [default=no]],),
339         [with_private_docs="$withval"],[with_private_docs="no"])
340 AM_CONDITIONAL(WITH_PRIVATE_DOCS, [test x$with_private_docs = xyes])
341
342 dnl This must appear after AC_CANONICAL_HOST, which defines $host.
343 case "$host" in
344 *openbsd*|*freebsd*)
345         dnl Do not set '-Wl,--no-undefined' on freebsd/openbsd
346         ;;
347 *)
348         LDFLAGS="$LDFLAGS -Wl,--no-undefined"
349         ;;
350 esac
351
352 dnl ******************************
353 dnl Check for Win32
354 dnl ******************************
355 AC_MSG_CHECKING([for Win32])
356 case "$host" in
357 *-mingw*)
358         os_win32='yes'
359         NO_UNDEFINED='-no-undefined'
360         SOCKET_LIBS='-lws2_32 -ldnsapi'
361         DL_LIB=''
362         LIBEXECDIR_IN_SERVER_FILE='../../../libexec'
363         AC_CACHE_VAL(ac_cv_have_addrinfo, [ac_cv_have_addrinfo=yes])
364         AC_DEFINE(_WIN32_WINNT, 0x501, [To get getaddrinfo etc declarations])
365         ;;
366 *openbsd*|*freebsd*)
367         os_win32='no'
368         NO_UNDEFINED=''
369         SOCKET_LIBS=''
370         DL_LIB=''
371         LIBEXECDIR_IN_SERVER_FILE="$libexecdir"
372         ;;
373 *)
374         os_win32='no'
375         NO_UNDEFINED=''
376         SOCKET_LIBS=''
377         DL_LIB='-ldl'
378         LIBEXECDIR_IN_SERVER_FILE="$libexecdir"
379         ;;
380 esac
381 AC_MSG_RESULT([$os_win32])
382 AM_CONDITIONAL(OS_WIN32, [test $os_win32 = yes])
383 AC_SUBST(NO_UNDEFINED)
384 AC_SUBST(SOCKET_LIBS)
385 AC_SUBST(LIBEXECDIR_IN_SERVER_FILE)
386
387 dnl **************************************
388 dnl Check for posix compatible sys/wait.h
389 dnl **************************************
390 AC_HEADER_SYS_WAIT
391
392 dnl ************************************
393 dnl Check for posix compatible alloca()
394 dnl ************************************
395 AC_FUNC_ALLOCA
396
397 dnl ******************************
398 dnl Checks for functions
399 dnl ******************************
400 AC_CHECK_FUNCS(fsync strptime strtok_r nl_langinfo)
401
402 dnl ***********************************
403 dnl Check for base dependencies early.
404 dnl ***********************************
405 PKG_CHECK_MODULES(GNOME_PLATFORM,
406         [gio-2.0 >= glib_minimum_version
407         gmodule-2.0 >= glib_minimum_version
408         libxml-2.0 >= libxml_minimum_version
409         libsoup-2.4 >= soup_minimum_version])
410
411 if test x$os_win32 = xno; then
412         PKG_CHECK_MODULES(GIO_UNIX, [gio-unix-2.0])
413 fi
414
415 dnl ******************************
416 dnl Check for libphonenumber
417 dnl ******************************
418
419 EVO_PHONENUMBER_SUPPORT
420
421 dnl *************************
422 dnl Check for GTK+
423 dnl *************************
424 AC_ARG_ENABLE([gtk],
425         [AS_HELP_STRING([--enable-gtk],
426         [enable GTK+ (default=yes)])],
427         [enable_gtk=$enableval], [enable_gtk=yes])
428 AC_MSG_CHECKING([if GTK+ support is enabled])
429 AC_MSG_RESULT([$enable_gtk])
430 if test "x$enable_gtk" = xyes; then
431         PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= gdk_minimum_version],,
432         [AC_MSG_ERROR([
433
434         gtk+-3.0 not found (or version < gdk_minimum_version)
435
436         If you want to disable GTK+ support,
437         please append --disable-gtk to configure.
438         ])])
439
440         AC_DEFINE(HAVE_GTK, 1, [Define to 1 if you have the gtk+-3.0 package.])
441 fi
442 AM_CONDITIONAL(HAVE_GTK, [test x$enable_gtk = xyes])
443
444 dnl *******************************
445 dnl Check for GNOME Online Accounts
446 dnl *******************************
447 AC_ARG_ENABLE([goa],
448         [AS_HELP_STRING([--enable-goa],
449         [enable GNOME Online Accounts support (default=yes)])],
450         [enable_goa=$enableval], [enable_goa=yes])
451 AC_MSG_CHECKING([if GNOME Online Accounts support is enabled])
452 AC_MSG_RESULT([$enable_goa])
453 if test "x$enable_goa" = xyes; then
454         PKG_CHECK_MODULES([GOA], [goa-1.0 >= goa_minimum_version],,
455         [AC_MSG_ERROR([
456
457         goa-1.0 not found (or version < goa_minimum_version)
458
459         If you want to disable GNOME Online Accounts support,
460         please append --disable-goa to configure.
461         ])])
462
463         AC_DEFINE(HAVE_GOA, 1, [Define to 1 if you have the goa-1.0 package.])
464 fi
465 AM_CONDITIONAL(HAVE_GOA, [test x$enable_goa = xyes])
466
467 dnl GoaPasswordBased was introduced in version 3.5.
468 if `$PKG_CONFIG --atleast-version=3.5 goa-1.0`; then
469         AC_DEFINE(HAVE_GOA_PASSWORD_BASED,1,[Have GoaPasswordBased in goa-1.0])
470 fi
471
472 dnl ********************************
473 dnl Check for Ubuntu Online Accounts
474 dnl ********************************
475 AC_ARG_ENABLE([uoa],
476         [AS_HELP_STRING([--enable-uoa],
477         [enable Ubuntu Online Accounts support (default=yes)])],
478         [enable_uoa=$enableval], [enable_uoa=yes])
479 AC_MSG_CHECKING([if Ubuntu Online Accounts support is enabled])
480 AC_MSG_RESULT([$enable_uoa])
481 if test "x$enable_uoa" = xyes; then
482         PKG_CHECK_MODULES([LIBACCOUNTS_GLIB],
483                 [libaccounts-glib >= libaccounts_glib_minimum_version],,
484                 [AC_MSG_ERROR([
485
486         libaccounts-glib not found (or version < libaccounts_glib_minimum_version)
487
488         If you want to disable Ubuntu Online Accounts support,
489         please append --disable-uoa to configure.
490         ])])
491
492         PKG_CHECK_MODULES([LIBSIGNON_GLIB],
493                 [libsignon-glib >= libsignon_glib_minimum_version],,
494                 [AC_MSG_ERROR([
495
496         libsignon-glib not found (or version < libsignon_glib_minimum_version)
497
498         If you want to disable Ubuntu Online Accounts support,
499         please append --disable-uoa to configure.
500         ])])
501
502         PKG_CHECK_MODULES([JSON_GLIB], [json-glib-1.0],,
503                 [AC_MSG_ERROR([
504
505         json-glib-1.0 not found
506
507         If you want to disable Ubuntu Online Accounts support,
508         please append --disable-uoa to configure.
509         ])])
510
511         PKG_CHECK_MODULES([REST], [rest-0.7],,
512                 [AC_MSG_ERROR([
513
514         librest-0.7 not found
515
516         If you want to disable Ubuntu Online Accounts support,
517         please append --disable-uoa to configure.
518         ])])
519
520         AC_DEFINE(HAVE_UOA, 1, [Have libaccounts-glib])
521 fi
522 AM_CONDITIONAL(HAVE_UOA, [test x$enable_uoa = xyes])
523
524 dnl ***********************************
525 dnl Check for GNOME Keyring.
526 dnl ***********************************
527 if test x$os_win32 = xno; then
528         PKG_CHECK_MODULES(LIBSECRET,
529                 [libsecret-unstable >= libsecret_minimum_version])
530 fi
531 AC_SUBST(LIBSECRET_CFLAGS)
532 AC_SUBST(LIBSECRET_LIBS)
533
534 dnl **********************************************************
535 dnl gcr-base is needed for secure password exchange over D-Bus
536 dnl **********************************************************
537 PKG_CHECK_MODULES(GCR_BASE, [gcr-base-3 >= gcr_minimum_version])
538 AC_SUBST(GCR_BASE_CFLAGS)
539 AC_SUBST(GCR_BASE_LIBS)
540
541 LIBICAL_REQUIRED=libical_minimum_version
542 AC_SUBST(LIBICAL_REQUIRED)
543
544 dnl ******************************
545 dnl regex check
546 dnl ******************************
547 AC_CHECK_FUNCS(regexec,,[AC_CHECK_LIB(regex,regexec,
548                         [REGEX_LIBS=-lregex
549                         AC_DEFINE(HAVE_REGEXEC,1,[Define to 1 if you have the regexec function.])],
550                         [AC_MSG_ERROR([No regex library found])])])
551 AC_SUBST(REGEX_LIBS)
552
553 dnl ******************************
554 dnl libdb checking
555 dnl ******************************
556 AC_ARG_WITH([libdb],
557         AS_HELP_STRING([--with-libdb=PREFIX],
558         [Prefix where libdb is installed]),
559         [libdb_prefix="$withval"], [libdb_prefix='${prefix}'])
560
561 DB_CFLAGS="-I$libdb_prefix/include"
562 DB_LIBS="-L$libdb_prefix/lib -ldb"
563
564 AC_MSG_CHECKING([Berkeley DB])
565 save_cflags=$CFLAGS; CFLAGS=$DB_CFLAGS
566 save_libs=$LIBS; LIBS="$DB_LIBS"
567 AC_LINK_IFELSE([AC_LANG_PROGRAM(
568         [[#include <db.h>]],
569         [[db_create(NULL, NULL, 0)]])],
570         [AC_MSG_RESULT([yes])],
571         [AC_MSG_ERROR([Cannot find libdb])])
572 CFLAGS=$save_cflags
573 LIBS=$save_libs
574 AC_SUBST(DB_CFLAGS)
575 AC_SUBST(DB_LIBS)
576
577 dnl ******************************
578 dnl iconv checking
579 dnl ******************************
580 have_iconv="no"
581 save_LIBS="$LIBS"
582 LIBS="$LIBS -liconv"
583 AC_CACHE_CHECK([for iconv in -liconv], [ac_cv_libiconv],
584         AC_LINK_IFELSE([AC_LANG_PROGRAM(
585         [[
586                 #include <iconv.h>
587                 #include <stdlib.h>
588         ]],
589         [[
590                 iconv_t cd;
591                 cd = iconv_open ("UTF-8", "ISO-8859-1");
592         ]]
593         )],[ac_cv_libiconv=yes],[ac_cv_libiconv=no]))
594
595 if test "x$ac_cv_libiconv" = "xyes"; then
596         ICONV_LIBS="-liconv"
597         if test "x$os_win32" = "xyes"; then
598                 dnl Don't pointlessly auto-export the global symbols
599                 dnl from a potentially static libiconv.a
600                 ICONV_LIBS="$ICONV_LIBS -Wl,--exclude-libs=libiconv.a"
601         fi
602         have_iconv="yes"
603 else
604         LIBS="$save_LIBS"
605         AC_CHECK_FUNC(iconv, [have_iconv=yes], [have_iconv=no])
606 fi
607
608 if test "x$have_iconv" = "xyes"; then
609         if test "x$ac_cv_libiconv" = "xno"; then
610                 AC_CHECK_FUNCS(gnu_get_libc_version)
611         fi
612 AC_CACHE_CHECK([if iconv() handles UTF-8], [ac_cv_libiconv_utf8],
613         AC_RUN_IFELSE([AC_LANG_SOURCE([[
614                 #include <iconv.h>
615                 #include <stdlib.h>
616                 #include <string.h>
617                 #ifdef HAVE_GNU_GET_LIBC_VERSION
618                 #include <gnu/libc-version.h>
619                 #endif
620                 int main() {
621                         char *jp = "\x1B\x24\x42\x46\x7C\x4B\x5C\x38\x6C";
622                         char *utf8 = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E";
623                         char *transbuf = malloc (10), *trans = transbuf;
624                         iconv_t cd;
625                         size_t jp_len = strlen (jp), utf8_len = 10;
626                         size_t utf8_real_len = strlen (utf8);
627
628                         #ifdef HAVE_GNU_GET_LIBC_VERSION
629                         /* glibc 2.1.2's iconv is broken in hard to test ways. */
630                         if (!strcmp (gnu_get_libc_version (), "2.1.2"))
631                                 exit (1);
632                         #endif
633
634                         cd = iconv_open ("UTF-8", "ISO-2022-JP");
635                         if (cd == (iconv_t) -1)
636                                 exit (1);
637                         if (iconv (cd, &jp, &jp_len, &trans, &utf8_len) == -1 || jp_len != 0)
638                                 exit (1);
639                         if (memcmp (utf8, transbuf, utf8_real_len) != 0)
640                                 exit (1);
641                         return (0);}
642                 ]])
643         ],[ac_cv_libiconv_utf8=yes],[ac_cv_libiconv_utf8=no; have_iconv=no],[ac_cv_libiconv_utf8=hopefully]))
644 fi
645
646 if test "x$have_iconv" = "xno"; then
647         AC_MSG_ERROR([You need to install a working iconv implementation, such as ftp://ftp.gnu.org/pub/gnu/libiconv])
648 fi
649 AC_SUBST(ICONV_LIBS)
650
651 CFLAGS="$CFLAGS -I$srcdir"
652
653 AC_MSG_CHECKING([preferred charset name formats for system iconv])
654 AC_RUN_IFELSE([AC_LANG_SOURCE([[
655         #define CONFIGURE_IN
656         #include "iconv-detect.c"
657         ]])],
658         [AC_MSG_RESULT([found])],
659         [AC_MSG_RESULT([not found])
660                 AC_MSG_WARN([
661                 *** The iconv-detect program was unable to determine the
662                 *** preferred charset name formats recognized by your
663                 *** iconv library. It is suggested that you install a
664                 *** working iconv library such as the one found at
665                 *** ftp://ftp.gnu.org/pub/gnu/libiconv
666         ])],
667         [if test "x$os_win32" = xyes; then
668                 AC_MSG_RESULT([using known win32 result])
669                 echo '/* This is an auto-generated header, DO NOT EDIT! */' > iconv-detect.h
670                 echo  >>iconv-detect.h
671                 echo '#define ICONV_ISO_D_FORMAT "iso-%d-%d"' >>iconv-detect.h
672                 echo '#define ICONV_ISO_S_FORMAT "iso-%d-%s"' >>iconv-detect.h
673                 echo '#define ICONV_10646 "UCS-4BE"' >>iconv-detect.h
674         else
675                 AC_MSG_RESULT([unknown])
676                 AC_MSG_WARN([
677                 *** We can't determine the preferred charset name formats
678                 *** recognized by your iconv library. You are
679                 *** cross-compiling and supposed to know what you are doing.
680                 *** Please construct the iconv-detect.h file manually.
681                 ])
682         fi
683 ])
684
685 CFLAGS="$save_CFLAGS"
686 LIBS="$save_LIBS"
687
688 AC_ARG_ENABLE([backtraces],
689         [AS_HELP_STRING([--enable-backtraces],
690         [enable backtraces for camel_pointer_tracker (default=no)])],
691         [enable_backtraces=$enableval], [enable_backtraces=no])
692
693 if test "x$enable_backtraces" = xyes; then
694         dnl ****************************
695         dnl Check for backtrace_symbols function and dwfl from elfutils
696         dnl ****************************
697         AC_MSG_CHECKING([libc backtrace_symbols function])
698         AC_LINK_IFELSE([AC_LANG_PROGRAM(
699                 [[#include <execinfo.h>]],
700                 [[{ void *bt[1]; backtrace_symbols (bt, backtrace(bt, 1)); }]])],
701                 [AC_DEFINE(HAVE_BACKTRACE_SYMBOLS, 1, [libc provides backtrace_symbols function]) ac_cv_have_bsf=yes],[ac_cv_have_bsf=no])
702         AC_MSG_RESULT([$ac_cv_have_bsf])
703
704         if test "x$ac_cv_have_bsf" = xyes; then
705                 LIBS="$LIBS -ldw"
706
707                 AC_MSG_CHECKING([elfutils/libdwfl])
708                 AC_LINK_IFELSE([AC_LANG_PROGRAM(
709                         [[#include <elfutils/libdwfl.h>]],
710                         [[{
711                                 Dwfl *dwfl;
712                                 Dwfl_Module *module;
713                                 Dwarf_Addr module_low_addr;
714                                 Dwfl_Line *line;
715
716                                 dwfl_standard_find_debuginfo;
717                                 dwfl_linux_proc_find_elf;
718                                 dwfl_begin (NULL);
719                                 dwfl_linux_proc_report (NULL, 1);
720                                 dwfl_report_end (NULL, NULL, NULL);
721                                 dwfl_end (NULL);
722                                 dwfl_module_addrname (NULL, NULL);
723                                 dwfl_module_getsrc (NULL, NULL);
724                                 dwfl_lineinfo (NULL, NULL, NULL, NULL, NULL, NULL);
725                                 DWARF_CB_ABORT; DWARF_CB_OK;
726                                 dwfl_getmodules (NULL, NULL, NULL, 0);
727                         }]])],
728                         [AC_DEFINE(HAVE_ELFUTILS_LIBDWFL, 1, [have elfutils/libdwfl.h functions]) ac_cv_have_elfdwfl=yes],[ac_cv_have_elfdwfl=no])
729                 AC_MSG_RESULT([$ac_cv_have_elfdwfl])
730
731                 LIBS="$save_LIBS"
732
733                 if test "x$ac_cv_have_elfdwfl" = xyes; then
734                         LIBDWFL_LIBS="-ldw"
735                         AC_SUBST(LIBDWFL_LIBS)
736                 fi
737         fi
738 fi
739
740 dnl ******************************
741 dnl Check for nl_langinfo features
742 dnl ******************************
743 EVO_CHECK_LANGINFO([CODESET])
744 EVO_CHECK_LANGINFO([_NL_ADDRESS_COUNTRY_AB2])
745
746 dnl *******************************************************
747 dnl Check to see if strftime supports the use of %l and %k
748 dnl *******************************************************
749 AC_MSG_CHECKING([for %l and %k support in strftime])
750 AC_RUN_IFELSE([AC_LANG_SOURCE(
751         [[      #include <stdlib.h>
752                 #include <string.h>
753                 #include <time.h>
754                 int main(int argc, char **argv) {
755                 char buf[10];
756                 time_t rawtime;
757                 struct tm *timeinfo;
758
759                 time(&rawtime);
760                 timeinfo=localtime(&rawtime);
761                 buf[0] = '\0';
762                 strftime(buf, 10, "%lx%k", timeinfo);
763
764                 if (buf[0] == '\0' || buf[0] == 'x' || strstr(buf, "l") || strstr(buf, "k"))
765                         exit(1);
766                 else
767                         exit(0);
768                 return 0;
769                 }
770         ]]
771         )],[AC_DEFINE(HAVE_LKSTRFTIME, 1, [strftime supports use of l and k]) ac_cv_lkstrftime=yes],[ac_cv_lkstrftime=no],[ac_cv_lkstrftime=no])
772 AC_MSG_RESULT([$ac_cv_lkstrftime])
773
774 dnl ********************************************************************************
775 dnl security extension support (SSL and S/MIME)
776 dnl
777 dnl The following voodoo does detection of mozilla libraries (nspr and nss)
778 dnl needed by Camel (SSL and S/MIME).
779 dnl
780 dnl The Evolution security extensions are only built if these libraries are found
781 dnl ********************************************************************************
782 msg_smime="no"
783
784 AC_ARG_ENABLE([smime],
785         AS_HELP_STRING([--enable-smime],
786         [Enable SMIME support through Mozilla nss @<:@default=yes@:>@ ]),
787         [enable_smime="$enableval"],[enable_smime="yes"])
788
789 AC_ARG_WITH([nspr-includes],
790         AS_HELP_STRING([--with-nspr-includes],
791         [Prefix of Mozilla nspr4 includes.]),
792         [with_nspr_includes="$withval"])
793
794 AC_ARG_WITH([nspr-libs],
795         AS_HELP_STRING([--with-nspr-libs],
796         [Prefix of Mozilla nspr4 libs.]),
797         [with_nspr_libs="$withval"])
798
799 AC_ARG_WITH([nss-includes],
800         AS_HELP_STRING([--with-nss-includes],
801         [Prefix of Mozilla nss3 includes.]),
802         [with_nss_includes="$withval"])
803
804 AC_ARG_WITH([nss-libs],
805         AS_HELP_STRING([--with-nss-libs],
806         [Prefix of Mozilla nss3 libs.]),
807         [with_nss_libs="$withval"])
808
809 if test -n "${with_nspr_includes}" || test -n "${with_nspr_libs}" || test -n "${with_nss_includes}" || test -n "${with_nss_libs}"; then
810         check_manually="yes"
811 else
812         check_manually="no"
813 fi
814
815 dnl check if pkg-config files exist (which are only shipped by distributions, not upstream)
816 if test "x${check_manually}" = "xno"; then
817         AC_MSG_CHECKING(Mozilla NSPR pkg-config module name)
818         mozilla_nspr_pcs="nspr mozilla-nspr firefox-nspr xulrunner-nspr seamonkey-nspr"
819         for pc in $mozilla_nspr_pcs; do
820                 if $PKG_CONFIG --exists $pc; then
821                         AC_MSG_RESULT($pc)
822                         mozilla_nspr=$pc
823                         break;
824                 fi
825         done
826
827         AC_MSG_CHECKING(Mozilla NSS pkg-config module name)
828         mozilla_nss_pcs="nss mozilla-nss firefox-nss xulrunner-nss seamonkey-nss"
829         for pc in $mozilla_nss_pcs; do
830                 if $PKG_CONFIG --exists $pc; then
831                         AC_MSG_RESULT($pc)
832                         mozilla_nss=$pc
833                         break;
834                 fi
835         done
836
837         if test -n "$mozilla_nspr" -a -n "$mozilla_nss"; then
838                 if test "x$enable_smime" = "xyes"; then
839                         AC_DEFINE(ENABLE_SMIME,1,[Define if SMIME should be enabled])
840                         msg_smime="yes"
841                 fi
842                 MANUAL_NSPR_CFLAGS=""
843                 MANUAL_NSPR_LIBS=""
844                 MANUAL_NSS_CFLAGS=""
845                 MANUAL_NSS_LIBS=""
846         else
847                 check_manually="yes"
848                 mozilla_nspr=""
849                 mozilla_nss=""
850         fi
851 fi
852
853 if test "x${check_manually}" = "xyes"; then
854 dnl ******************
855 dnl Check for NSPR 4
856 dnl ******************
857         AC_MSG_CHECKING([for Mozilla nspr4 includes])
858                 CPPFLAGS_save="$CPPFLAGS"
859                 if test -n "$with_nspr_includes"; then
860                         CPPFLAGS="$CPPFLAGS -I$with_nspr_includes"
861                 fi
862
863                 AC_CHECK_HEADERS(nspr.h prio.h,
864                 [moz_nspr_includes="yes"],[moz_nspr_includes="no"])
865                 CPPFLAGS="$CPPFLAGS_save"
866
867                 if test "x${moz_nspr_includes}" = "xyes"; then
868                         MANUAL_NSPR_CFLAGS="-I$with_nspr_includes"
869                 else
870                         AC_MSG_FAILURE([NSPR headers not found. Use --with-nspr-includes to specify the include dir of NSPR.])
871                 fi
872         AC_MSG_RESULT([$moz_nspr_includes])
873
874         AC_MSG_CHECKING([for Mozilla nspr libraries])
875                 CFLAGS_save="$CFLAGS"
876                 LDFLAGS_save="$LDFLAGS"
877                 LIBS_save="$LIBS"
878                 nsprlibs="$DL_LIB -lplc4 -lplds4 -lnspr4"
879
880                 CFLAGS="$CFLAGS $MANUAL_NSPR_CFLAGS"
881                 LIBS="$nsprlibs"
882                 dnl Test to protect from giving libtool an -L , which results in failure (used below,too)
883                 if test -n "${with_nspr_libs}"; then
884                         LDFLAGS="$LDFLAGS -L$with_nspr_libs"
885                 else
886                         LDFLAGS="$LDFLAGS"
887                 fi
888
889                 AC_LINK_IFELSE([AC_LANG_CALL([],[PR_Init])],
890                 [moz_nspr_libs="yes"],[moz_nspr_libs="no"])
891
892                 CFLAGS="$CFLAGS_save"
893                 LDFLAGS="$LDFLAGS_save"
894                 LIBS="$LIBS_save"
895
896                 if test "x${moz_nspr_libs}" = "xyes"; then
897                         if test -n "${with_nspr_libs}"; then
898                                 MANUAL_NSPR_LIBS="-L$with_nspr_libs $nsprlibs"
899                         else
900                                 MANUAL_NSPR_LIBS="$nsprlibs"
901                         fi
902                 else
903                         AC_MSG_FAILURE([NSPR libs not found. Use --with-nspr-libs to specify the libdir of NSPR.])
904                 fi
905         AC_MSG_RESULT([$moz_nspr_libs])
906
907 dnl *****************
908 dnl Check for NSS 3
909 dnl *****************
910         AC_MSG_CHECKING([for Mozilla nss3 includes])
911                 CPPFLAGS_save="$CPPFLAGS"
912                 CPPFLAGS="$CPPFLAGS -I$with_nspr_includes -I$with_nss_includes"
913
914                 AC_CHECK_HEADERS(nss.h ssl.h smime.h,
915                 [moz_nss_includes="yes"],[moz_nss_includes="no"])
916                 CPPFLAGS="$CPPFLAGS_save"
917
918                 if test "x${moz_nss_includes}" = "xyes"; then
919                         MANUAL_NSS_CFLAGS="-I$with_nss_includes"
920                 else
921                         AC_MSG_FAILURE([NSS headers not found. Use --with-nss-includes to specify the include dir of NSS.])
922                 fi
923         AC_MSG_RESULT($moz_nss_includes)
924
925         AC_MSG_CHECKING([for Mozilla nss libraries])
926                 LDFLAGS_save="$LDFLAGS"
927                 LIBS_save="$LIBS"
928                 nsslibs="-lssl3 -lsmime3 -lnss3"
929
930                 LIBS="$nsslibs $nsprlibs"
931                 dnl Test to protect from giving libtool an -L , which results in failure (used below,too)
932                 if test -n "${with_nss_libs}"; then
933                         LDFLAGS="$LDFLAGS -L$with_nss_libs $MANUAL_NSPR_LIBS"
934                 else
935                         LDFLAGS="$LDFLAGS $LDFLAGS_NSPR $MANUAL_NSPR_LIBS"
936                 fi
937
938                 AC_LINK_IFELSE([AC_LANG_CALL([],[NSS_Init])],
939                 [moz_nss_libs="yes"],[moz_nss_libs="no"])
940                 LDFLAGS="$LDFLAGS_save"
941                 LIBS="$LIBS_save"
942
943                 if test "x${moz_nss_libs}" = "xyes"; then
944                         if test "x${enable_smime}" = "xyes"; then
945                                 AC_DEFINE(ENABLE_SMIME,1,[Define if SMIME should be enabled])
946                                 msg_smime="yes"
947                         fi
948                         if test -n "${with_nss_libs}"; then
949                                 MANUAL_NSS_LIBS="-L$with_nss_libs $nsslibs"
950                         else
951                                 MANUAL_NSS_LIBS="$nsslibs"
952                         fi
953                 else
954                         AC_MSG_FAILURE([NSS libs not found. Use --with-nss-libs to specify the libdir of NSS.])
955                 fi
956         AC_MSG_RESULT([$moz_nss_libs])
957
958         MANUAL_NSS_CFLAGS="$MANUAL_NSPR_CFLAGS $MANUAL_NSS_CFLAGS"
959         MANUAL_NSS_LIBS="$MANUAL_NSPR_LIBS $MANUAL_NSS_LIBS"
960 fi
961
962 AM_CONDITIONAL(ENABLE_SMIME, test "x$msg_smime" != "xno")
963
964 dnl For pkgconfig files.
965 AC_SUBST(mozilla_nss)
966 AC_SUBST(mozilla_nspr)
967
968 AC_SUBST(MANUAL_NSPR_CFLAGS)
969 AC_SUBST(MANUAL_NSPR_LIBS)
970 AC_SUBST(MANUAL_NSS_CFLAGS)
971 AC_SUBST(MANUAL_NSS_LIBS)
972
973 dnl ******************************
974 dnl system mail stuff
975 dnl ******************************
976 AC_PATH_PROG(SENDMAIL, sendmail, [/usr/sbin/sendmail], [/usr/sbin:/usr/lib])
977 AC_DEFINE_UNQUOTED(SENDMAIL_PATH, "$SENDMAIL", [Path to a sendmail binary, or equivalent])
978
979 AC_MSG_CHECKING([system mail directory])
980 if test -d /var/mail -a '!' -h /var/mail ; then
981         system_mail_dir="/var/mail"
982 else
983         system_mail_dir="/var/spool/mail"
984 fi
985 AC_DEFINE_UNQUOTED(SYSTEM_MAIL_DIR, "$system_mail_dir", [Directory local mail is delivered to])
986
987 case `ls -ld $system_mail_dir 2>&1 | awk '{print $1;}'` in
988         d??????rw?)
989                 CAMEL_LOCK_HELPER_USER=""
990                 CAMEL_LOCK_HELPER_GROUP=""
991                 system_mail_perm="world writable"
992         ;;
993         d???rw????)
994                 CAMEL_LOCK_HELPER_USER=""
995                 CAMEL_LOCK_HELPER_GROUP=`ls -ld $system_mail_dir 2>&1 | awk '{print $4;}'`
996                 system_mail_perm="writable by group $CAMEL_LOCK_HELPER_GROUP"
997         ;;
998         drw???????)
999                 CAMEL_LOCK_HELPER_USER=`ls -ld $system_mail_dir 2>&1 | awk '{print $3;}'`
1000                 CAMEL_LOCK_HELPER_GROUP=""
1001                 system_mail_perm="writable by user $CAMEL_LOCK_HELPER_USER"
1002         ;;
1003         *)
1004                 CAMEL_LOCK_HELPER_USER=""
1005                 CAMEL_LOCK_HELPER_GROUP=""
1006                 system_mail_perm="???"
1007         ;;
1008 esac
1009
1010 AC_MSG_RESULT([$system_mail_dir, $system_mail_perm])
1011 AC_SUBST(CAMEL_LOCK_HELPER_USER)
1012 AC_SUBST(CAMEL_LOCK_HELPER_GROUP)
1013
1014 dnl ******************************
1015 dnl Timezone checks
1016 dnl ******************************
1017 AC_CACHE_CHECK(for tm_gmtoff in struct tm, [ac_cv_struct_tm_gmtoff],
1018         AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1019         [[      #include <time.h>       ]],
1020         [[
1021                 struct tm tm;
1022                 tm.tm_gmtoff = 1;
1023         ]]
1024         )],[ac_cv_struct_tm_gmtoff=yes],[ac_cv_struct_tm_gmtoff=no]))
1025 if test "x$ac_cv_struct_tm_gmtoff" = "xyes"; then
1026         AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define if struct tm has a tm_gmtoff member])
1027 else
1028         AC_CACHE_CHECK(for timezone variable, [ac_cv_var_timezone],
1029                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1030                 [[      #include <time.h> ]],
1031                 [[      timezone = 1;   ]]
1032                 )],[ac_cv_var_timezone=yes],[ac_cv_var_timezone=no]))
1033         if test "x$ac_cv_var_timezone" = "xyes"; then
1034                 AC_DEFINE(HAVE_TIMEZONE, 1, [Define if libc defines a timezone variable])
1035                 AC_CACHE_CHECK(for altzone variable, [ac_cv_var_altzone],
1036                         AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1037                         [[      #include <time.h>       ]],
1038                         [[      altzone = 1; ]]
1039                         )],[ac_cv_var_altzone=yes],[ac_cv_var_altzone=no]))
1040                 if test "x$ac_cv_var_altzone" = "xyes"; then
1041                         AC_DEFINE(HAVE_ALTZONE, 1, [Define if libc defines an altzone variable])
1042                 fi
1043         else
1044                 AC_MSG_ERROR([unable to find a way to determine timezone])
1045         fi
1046 fi
1047
1048 dnl ******************************
1049 dnl ctime_r prototype
1050 dnl ******************************
1051 AC_CACHE_CHECK([if ctime_r wants three arguments], [ac_cv_ctime_r_three_args],
1052 [
1053         AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1054         [[      #include <time.h> ]],
1055         [[      char *buf;
1056                 time_t date;
1057                 ctime_r (&date, buf, 100); ]]
1058         )],[ac_cv_ctime_r_three_args=yes],[ac_cv_ctime_r_three_args=no])
1059 ])
1060
1061 if test "x$ac_cv_ctime_r_three_args" = "xyes" ; then
1062         AC_DEFINE(CTIME_R_THREE_ARGS, 1, [Solaris-style ctime_r])
1063 fi
1064
1065 dnl ******************************
1066 dnl gethostbyname_r prototype
1067 dnl ******************************
1068 AC_CHECK_FUNCS(gethostbyname_r,[
1069 AC_CACHE_CHECK([if gethostbyname_r wants five arguments], [ac_cv_gethostbyname_r_five_args],
1070 [
1071         AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1072         [[
1073                 #include "confdefs.h"
1074                 #include <sys/types.h>
1075                 #include <sys/socket.h>
1076                 #include <netinet/in.h>
1077                 #include <netdb.h>
1078                 #define BUFSIZE (sizeof(struct hostent)+10)
1079         ]],
1080         [[
1081                 struct hostent hent;
1082                 char buffer[BUFSIZE];
1083                 int bufsize=BUFSIZE;
1084                 int h_errno;
1085                 (void)gethostbyname_r ("www.ximian.com", &hent, buffer, bufsize, &h_errno);
1086         ]]
1087         )],[ac_cv_gethostbyname_r_five_args=yes],[ac_cv_gethostbyname_r_five_args=no])
1088 ])])
1089
1090 if test "x$ac_cv_gethostbyname_r_five_args" = "xyes" ; then
1091         AC_DEFINE(GETHOSTBYNAME_R_FIVE_ARGS, 1, [Solaris-style gethostbyname_r])
1092 fi
1093
1094 dnl ******************************
1095 dnl gethostbyaddr_r prototype
1096 dnl ******************************
1097 AC_CHECK_FUNCS(gethostbyaddr_r,[
1098 AC_CACHE_CHECK([if gethostbyaddr_r wants seven arguments], [ac_cv_gethostbyaddr_r_seven_args],
1099 [
1100         AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1101         [[
1102                 #include "confdefs.h"
1103                 #include <sys/types.h>
1104                 #include <sys/socket.h>
1105                 #include <netinet/in.h>
1106                 #include <netdb.h>
1107                 #define BUFSIZE (sizeof(struct hostent)+10)
1108         ]],
1109         [[
1110                 struct hostent hent;
1111                 char buffer[BUFSIZE];
1112                 int bufsize=BUFSIZE;
1113                 int h_errno;
1114                 (void)gethostbyaddr_r ("www.ximian.com", 14, AF_INET, &hent, buffer, bufsize, &h_errno); ]]
1115         )],[ac_cv_gethostbyaddr_r_seven_args=yes],[ac_cv_gethostbyaddr_r_seven_args=no])
1116 ])])
1117
1118 if test "x$ac_cv_gethostbyaddr_r_seven_args" = "xyes" ; then
1119         AC_DEFINE(GETHOSTBYADDR_R_SEVEN_ARGS, 1, [Solaris-style gethostbyaddr_r])
1120 fi
1121
1122 dnl ******************************
1123 dnl stat(v)fs location/type
1124 dnl ******************************
1125 AC_CHECK_HEADER([sys/statvfs.h],
1126         [AC_DEFINE([HAVE_SYS_STATVFS_H], 1, [Have <sys/statvfs.h>])],,
1127         [[      #if HAVE_SYS_STATVFS_H
1128                 #include <sys/statvfs.h>
1129                 #endif
1130         ]])
1131 AC_CHECK_FUNCS(statvfs)
1132
1133 AC_CHECK_HEADER([sys/param.h],
1134         [AC_DEFINE([HAVE_SYS_PARAM_H], 1, [Have <sys/param.h>])],,
1135         [[      #if HAVE_SYS_PARAM_H
1136                 #include <sys/param.h>
1137                 #endif
1138         ]])
1139 AC_CHECK_HEADER([sys/mount.h],
1140         [AC_DEFINE([HAVE_SYS_MOUNT_H], 1, [Have <sys/mount.h>])],,
1141         [[      #if HAVE_SYS_MOUNT_H
1142                 #include <sys/mount.h>
1143                 #endif
1144         ]])
1145 AC_CHECK_FUNCS(statfs)
1146
1147 dnl ******************************
1148 dnl IPv6 support and getaddrinfo calls
1149 dnl ******************************
1150 AC_CACHE_CHECK([if system supports getaddrinfo and getnameinfo], [ac_cv_have_addrinfo],
1151 [
1152         AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1153         [[      #include "confdefs.h"
1154                 #include <sys/types.h>
1155                 #include <sys/socket.h>
1156                 #include <netinet/in.h>
1157                 #include <netdb.h>
1158                 #include <stddef.h>
1159         ]],
1160         [[      #ifndef NI_MAXHOST
1161                 #define NI_MAXHOST      1025
1162                 #endif
1163
1164                 #ifndef NI_MAXSERV
1165                 #define NI_MAXSERV      32
1166                 #endif
1167
1168                 struct addrinfo hints, *res;
1169                 struct sockaddr_in6 sin6;
1170                 int af = AF_INET6;
1171                 char host[NI_MAXHOST];
1172                 char serv[NI_MAXSERV];
1173
1174                 getaddrinfo ("www.ximian.com", NULL, &hints, &res);
1175                 freeaddrinfo (res);
1176                 getnameinfo((struct sockaddr *)&sin6, sizeof(sin6), host, sizeof(host), serv, sizeof(serv), 0); ]]
1177         )],[ac_cv_have_addrinfo=yes],[ac_cv_have_addrinfo=no])
1178 ])
1179
1180 if test "x$ac_cv_have_addrinfo" = "xno" ; then
1181         AC_DEFINE(NEED_ADDRINFO,1,[Enable getaddrinfo emulation])
1182         if test "x$enable_ipv6" = "xyes" ; then
1183                 AC_MSG_ERROR([system doesn't support necessary interfaces for ipv6 support])
1184         fi
1185         msg_ipv6="no"
1186 else
1187         AC_ARG_ENABLE([ipv6],
1188         AS_HELP_STRING([--enable-ipv6=no/yes],
1189         [Enable support for resolving IPv6 addresses.]),
1190         [enable_ipv6=$enableval],[enable_ipv6=yes])
1191         if test "x$enable_ipv6" = "xyes"; then
1192                 msg_ipv6="yes"
1193                 AC_DEFINE(ENABLE_IPv6,1,[Enable IPv6 support])
1194                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1195                 [[      #include "confdefs.h"
1196                         #include <sys/types.h>
1197                         #include <sys/socket.h>
1198                         #include <netinet/in.h>
1199                         #include <netdb.h>
1200                 ]],
1201                 [[      struct addrinfo hints;
1202                         hints.ai_flags = AI_ADDRCONFIG;
1203                 ]]
1204                 )],[AC_DEFINE(HAVE_AI_ADDRCONFIG,1,[Define if the system defines the AI_ADDRCONFIG flag for getaddrinfo])],[])
1205         else
1206                 msg_ipv6="no"
1207         fi
1208 fi
1209
1210 AM_CONDITIONAL(ENABLE_IPv6, [test "x$enable_ipv6" = "xyes"])
1211
1212 AC_CHECK_HEADER([wspiapi.h],
1213         [AC_DEFINE([HAVE_WSPIAPI_H], 1, [Have <wspiapi.h>])],,)
1214
1215 dnl **********************************
1216 dnl Weather calendar backend support
1217 dnl **********************************
1218 AC_MSG_CHECKING([if we should build the weather calendar backend])
1219 AC_ARG_ENABLE([weather],
1220         [AS_HELP_STRING([--enable-weather],
1221         [Build the weather calendar backend (default=yes)])],
1222         [use_gweather=$enableval], [use_gweather=yes])
1223
1224 AC_MSG_RESULT([$use_gweather])
1225 if test "x$use_gweather" = "xyes"; then
1226         PKG_CHECK_MODULES([LIBGWEATHER], [gweather-3.0 >= gweather_minimum_version],[],
1227         [AC_MSG_ERROR([The weather calendar backend requires GWeather >= gweather_minimum_version. Alternatively, you may specify --disable-weather as a configure option to avoid building the backend.])])
1228 fi
1229 AM_CONDITIONAL(ENABLE_WEATHER, [test $use_gweather = yes])
1230
1231 dnl ******************************
1232 dnl NNTP support.
1233 dnl ******************************
1234 AC_ARG_ENABLE([nntp],
1235         AS_HELP_STRING([--enable-nntp],
1236         [Build Usenet news (NNTP) backend]),
1237         [enable_nntp=$enableval],[enable_nntp=yes])
1238 if test "x$enable_nntp" = "xyes"; then
1239         AC_DEFINE(ENABLE_NNTP,1,[Build NNTP backend])
1240         msg_nntp="yes"
1241 else
1242         msg_nntp="no"
1243 fi
1244 AM_CONDITIONAL(ENABLE_NNTP, [test x$enable_nntp = xyes])
1245
1246 AC_DEFINE(HANDLE_LIBICAL_MEMORY, 1, [Define it once memory returned by libical is free'ed properly])
1247
1248 dnl ******************************
1249 dnl File locking
1250 dnl ******************************
1251 AC_ARG_ENABLE([dot-locking],
1252         AS_HELP_STRING([--enable-dot-locking=yes/no],
1253         [Enable support for locking mail files with dot locking]),
1254         [enable_dot_locking=$enableval],[enable_dot_locking=yes])
1255
1256 if test "x$os_win32" != "xyes" -a "x$enable_dot_locking" = "xyes"; then
1257         AC_DEFINE(USE_DOT,1,[Define to use dot locking for mbox files])
1258         msg_dot="yes"
1259 else
1260         msg_dot="no"
1261 fi
1262
1263 AC_ARG_ENABLE([file-locking],
1264         AS_HELP_STRING([--enable-file-locking=fcntl/flock/no],
1265         [Enable support for locking mail files with file locking]),
1266         [],[enable_file_locking=fcntl])
1267
1268 if test "x$os_win32" != "xyes" -a "x$enable_file_locking" = "xfcntl"; then
1269         AC_DEFINE(USE_FCNTL,1,[Define to use fcntl locking for mbox files])
1270         msg_file="fcntl"
1271 else
1272         if test "x$os_win32" != "xyes" -a "x$enable_file_locking" = "xflock"; then
1273                 AC_DEFINE(USE_FLOCK,1,[Define to use flock locking for mbox files])
1274                 msg_file="flock"
1275         else
1276                 msg_file="no"
1277         fi
1278 fi
1279
1280 dnl ******************************
1281 dnl sendmail operation
1282 dnl ******************************
1283 AC_MSG_CHECKING([for SunOS broken spool format])
1284 if test "x$host_os" = "xsunos" ; then
1285         with_broken_spool="yes"
1286 fi
1287
1288 AC_ARG_WITH([broken-spool],
1289         AS_HELP_STRING([--with-broken-spool=yes/no],
1290         [Using SunOS/Solaris sendmail which has a broken spool format]),
1291         [with_broken_spool=$enableval],[with_broken_spool=${with_broken_spool:=no}])
1292
1293 if test "x$with_broken_spool" = "xyes"; then
1294         AC_DEFINE(HAVE_BROKEN_SPOOL,1,[Define if mail delivered to the system mail directory is in broken Content-Length format])
1295 fi
1296
1297 AC_MSG_RESULT([$with_broken_spool])
1298
1299 dnl ***********
1300 dnl Kerberos 5
1301 dnl ***********
1302 EVO_KRB5_SUPPORT(no)
1303
1304 dnl ******************************
1305 dnl Purify support
1306 dnl ******************************
1307 EVO_PURIFY_SUPPORT
1308
1309 dnl ******************************
1310 dnl LDAP support.
1311 dnl ******************************
1312 if test "x$os_win32" != "xyes"; then
1313         EVO_LDAP_CHECK(no)
1314         case $with_openldap in
1315         no)
1316                 msg_ldap="no"
1317         ;;
1318         *)
1319                 case $with_static_ldap in
1320                 yes)
1321                         msg_ldap="$with_openldap (static)"
1322                         ;;
1323                 *)
1324                         msg_ldap="$with_openldap (dynamic)"
1325                         ;;
1326                 esac
1327         esac
1328
1329 dnl SunLDAP support, but if OpenLDAP support, skip check SunLDAP.
1330         if test "x$with_openldap" = "xno" ; then
1331                 EVO_SUNLDAP_CHECK(no)
1332                 case $with_sunldap in
1333                 no)
1334                         msg_ldap="no"
1335                         ;;
1336                 *)
1337                         case $with_static_sunldap in
1338                         yes)
1339                                 msg_ldap="$with_sunldap (static)"
1340                                 ;;
1341                         *)
1342                                 msg_ldap="$with_sunldap (dynamic)"
1343                                 ;;
1344                 esac
1345         esac
1346         else
1347                 with_sunldap="no"
1348         fi
1349         AM_CONDITIONAL(SUNLDAP, [test "$with_sunldap" != no])
1350
1351         LDAP_CFLAGS="$LDAP_CFLAGS -DLDAP_DEPRECATED"
1352 else
1353         dnl Win32 LDAP support
1354         LDAP_CFLAGS="-DLDAP_DEPRECATED"
1355         LDAP_LIBS="-lwldap32"
1356         AC_SUBST(LDAP_CFLAGS)
1357         AC_SUBST(LDAP_LIBS)
1358         AC_DEFINE(HAVE_LDAP,1,[Define if you have LDAP support])
1359         AM_CONDITIONAL(ENABLE_LDAP, true)
1360         AM_CONDITIONAL(SUNLDAP, false)
1361         msg_ldap="yes"
1362 fi
1363
1364 dnl ******************************
1365 dnl GObject marshalling
1366 dnl ******************************
1367 AM_PATH_GLIB_2_0
1368
1369 dnl We use AC_SUBST_FILE because AC_SUBST won't deal with newlines
1370 EVO_MARSHAL_RULE=$srcdir/marshal.mk
1371 AC_SUBST_FILE(EVO_MARSHAL_RULE)
1372
1373 dnl ******************************
1374 dnl Utility macro to set compiler flags for a specific lib.
1375 dnl EVO_SET_COMPILE_FLAGS(VAR-PREFIX, DEPS, EXTRA-CFLAGS, EXTRA-LIBS)
1376 dnl ******************************
1377 AC_DEFUN([EVO_SET_COMPILE_FLAGS], [
1378         PKG_CHECK_MODULES([$1], [$2])
1379         $1_CFLAGS="[$]$1_CFLAGS $3 "
1380         $1_LIBS="[$]$1_LIBS $4 "
1381 ])
1382
1383 dnl ******************************
1384 dnl sqlite3 flags
1385 dnl ******************************
1386 PKG_CHECK_MODULES(SQLITE3, [sqlite3 >= sqlite_minimum_version])
1387
1388 if test "x$enable_maintainer_mode" = "xyes" ; then
1389         EVO_SET_COMPILE_FLAGS(FACTORY_GTK, "gtk+-3.0")
1390         AC_SUBST(FACTORY_GTK_CFLAGS)
1391         AC_SUBST(FACTORY_GTK_LIBS)
1392 fi
1393
1394 dnl ******************************
1395 dnl libedataserver flags
1396 dnl ******************************
1397 E_DATA_SERVER_DEPS="gio-2.0 gmodule-2.0 libsecret-1 libxml-2.0 libsoup-2.4 $mozilla_nspr"
1398
1399 EVO_SET_COMPILE_FLAGS(E_DATA_SERVER, $E_DATA_SERVER_DEPS, $MANUAL_NSPR_CFLAGS, $MANUAL_NSPR_LIBS)
1400 AC_SUBST(E_DATA_SERVER_CFLAGS)
1401 AC_SUBST(E_DATA_SERVER_LIBS)
1402
1403 dnl ******************************
1404 dnl libebackend flags
1405 dnl ******************************
1406 E_BACKEND_DEPS="gio-2.0 gmodule-2.0 libsecret-1 libsoup-2.4 libxml-2.0"
1407
1408 EVO_SET_COMPILE_FLAGS(E_BACKEND, $E_BACKEND_DEPS)
1409 AC_SUBST(E_BACKEND_CFLAGS)
1410 AC_SUBST(E_BACKEND_LIBS)
1411
1412 dnl ******************************
1413 dnl evolution-addressbook flags
1414 dnl ******************************
1415 EVOLUTION_ADDRESSBOOK_DEPS="gio-2.0 libxml-2.0 libsoup-2.4 libsecret-1"
1416
1417 EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS)
1418 AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS)
1419 AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS)
1420
1421 dnl ******************************
1422 dnl evolution-calendar flags
1423 dnl ******************************
1424 EVOLUTION_CALENDAR_DEPS="gio-2.0 libical >= libical_minimum_version libsoup-2.4 libxml-2.0 libsecret-1"
1425
1426 dnl *****
1427 dnl libical.pc from libical-0.43 has a bug in it's CFlags.
1428 dnl It wants apps to include <libical/ical*.h> but it's CFlags make it difficult
1429 dnl to differentiate between <libical/ical.h> and <ical.h>
1430 dnl We have fixed all our instances to use <libical/ical.h>. Until the .pc from
1431 dnl libical is fixed, we have to work-around the buggy CFlags.
1432 dnl *****
1433         LIBICAL_EXTRA_CFLAGS=" -I`$PKG_CONFIG --variable=includedir libical` "
1434         LIBICAL_EXTRA_LIBS=""
1435         AC_SUBST(LIBICAL_EXTRA_CFLAGS)
1436         AC_SUBST(LIBICAL_EXTRA_LIBS)
1437
1438         EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, $EVOLUTION_CALENDAR_DEPS, $LIBICAL_EXTRA_CFLAGS, $LIBICAL_EXTRA_LIBS)
1439         AC_SUBST(EVOLUTION_CALENDAR_CFLAGS)
1440         AC_SUBST(EVOLUTION_CALENDAR_LIBS)
1441
1442         dnl ****************************
1443         dnl Check for ical_set_unknown_token_handling_setting function
1444         dnl ****************************
1445         AC_MSG_CHECKING([ical_set_unknown_token_handling_setting function])
1446         save_cflags=$CFLAGS; CFLAGS=$EVOLUTION_CALENDAR_CFLAGS
1447         save_libs=$LIBS; LIBS="$EVOLUTION_CALENDAR_LIBS"
1448         AC_LINK_IFELSE([AC_LANG_PROGRAM(
1449                 [[#include <libical/ical.h>]],
1450                 [[ical_set_unknown_token_handling_setting (ICAL_DISCARD_TOKEN)]])],
1451                 [AC_DEFINE(HAVE_ICAL_UNKNOWN_TOKEN_HANDLING, 1, [libical provides ical_set_unknown_token_handling_setting function]) ac_cv_have_iuth=yes],[ac_cv_have_iuth=no])
1452         CFLAGS=$save_cflags
1453         LIBS=$save_libs
1454         AC_MSG_RESULT([$ac_cv_have_iuth])
1455
1456 dnl ******************************
1457 dnl Google flags
1458 dnl ******************************
1459 LIBGDATA_REQUIRED=libgdata_minimum_version
1460 AC_SUBST(LIBGDATA_REQUIRED)
1461 AC_ARG_ENABLE([google],
1462         [AS_HELP_STRING([--enable-google],
1463         [enable Google Contacts support (default=yes)])],
1464         [enable_google=$enableval], [enable_google=yes])
1465 AC_MSG_CHECKING([if Google Contacts support is enabled])
1466 AC_MSG_RESULT([$enable_google])
1467 if test "x$enable_google" = xyes; then
1468         EVO_SET_COMPILE_FLAGS(GDATA, libgdata >= libgdata_minimum_version)
1469         AC_SUBST(GDATA_CFLAGS)
1470         AC_SUBST(GDATA_LIBS)
1471
1472         AC_DEFINE(HAVE_GOOGLE, 1, [Define to 1 if you have the google-1.0 package.])
1473 fi
1474 AM_CONDITIONAL(HAVE_GOOGLE, [test x$enable_google = xyes])
1475
1476 EVO_SET_COMPILE_FLAGS(SOUP, libsoup-2.4)
1477 AC_SUBST(SOUP_CFLAGS)
1478 AC_SUBST(SOUP_LIBS)
1479
1480 dnl ******************************
1481 dnl Camel flags
1482 dnl ******************************
1483 SQLITE_REQUIRED=sqlite_minimum_version
1484 AC_SUBST(SQLITE_REQUIRED)
1485
1486 zlib_found="false"
1487 dnl deflateInit is a #define, use deflateEnd instead
1488 AC_CHECK_LIB([z], [deflateEnd], [AC_CHECK_HEADER(zlib.h, [zlib_found=true])])
1489
1490 if test "x$zlib_found" = "xfalse"; then
1491         AC_MSG_ERROR([*** zlib is required])
1492 fi
1493
1494 dnl ******************************
1495 dnl Checks for large file support
1496 dnl ******************************
1497 AC_ARG_ENABLE([largefile],
1498         AS_HELP_STRING([--enable-largefile],
1499         [enable support for large files [[default=no]]]),
1500         [],[enable_largefile="yes"])
1501
1502 if test "x$enable_largefile" != "xno"; then
1503         AC_SYS_LARGEFILE
1504         AC_CACHE_CHECK([for _LARGEFILE64_SOURCE value needed for large files], [ac_cv_largefile64_source],
1505         [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1506         [[      #include <sys/types.h>
1507                 #include <sys/stat.h>
1508                 #include <fcntl.h>
1509         ]],
1510         [[      int fd = open ("__o_largefile", O_CREAT | O_RDWR | O_LARGEFILE, 0644);  ]]
1511         )],[ac_cv_largefile64_source="no"],
1512                 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1513                 [[      #define _LARGEFILE64_SOURCE
1514                         #include <sys/types.h>
1515                         #include <sys/stat.h>
1516                         #include <fcntl.h>
1517                 ]],
1518                 [[ int fd = open ("__o_largefile", O_CREAT | O_RDWR | O_LARGEFILE, 0644); ]])],[ac_cv_largefile64_source="yes"],
1519                 [ac_cv_largefile64_source="unknown"])])
1520         ])
1521
1522         enable_largefile="no"
1523
1524         if test "x$ac_cv_largefile64_source" = "xyes"; then
1525                 LARGEFILE_CFLAGS="-D_LARGEFILE64_SOURCE"
1526                 enable_largefile="yes"
1527         elif test "x$ac_cv_largefile64_source" = "xunknown"; then
1528                 AC_DEFINE(O_LARGEFILE, 0, [Define to 0 if your system does not have the O_LARGEFILE flag])
1529         fi
1530
1531         if test -n "$ac_cv_sys_large_files" -a "x$ac_cv_sys_large_files" != "xno"; then
1532                 LARGEFILE_CFLAGS="$LARGEFILE_CFLAGS -D_LARGE_FILES"
1533                 enable_largefile="yes"
1534         fi
1535
1536         if test "x$ac_cv_sys_file_offset_bits" != "xno"; then
1537                 LARGEFILE_CFLAGS="$LARGEFILE_CFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
1538                 enable_largefile="yes"
1539         fi
1540 else
1541         AC_DEFINE(O_LARGEFILE, 0, [Define to 0 if your system does not have the O_LARGEFILE flag])
1542         LARGEFILE_CFLAGS=""
1543 fi
1544
1545 AM_CONDITIONAL(ENABLE_LARGEFILE, [test "x$enable_largefile" = "xyes"])
1546
1547 EVO_SET_COMPILE_FLAGS(CAMEL, gio-2.0 gmodule-2.0 $mozilla_nss sqlite3 >= sqlite_minimum_version, $KRB5_CFLAGS $MANUAL_NSS_CFLAGS $LARGEFILE_CFLAGS, -lz $KRB5_LIBS $MANUAL_NSS_LIBS)
1548 AC_SUBST(CAMEL_CFLAGS)
1549 AC_SUBST(CAMEL_LIBS)
1550
1551 dnl ******************************
1552 dnl Special directories
1553 dnl ******************************
1554
1555 dnl If you add something here, consider whether or not you also
1556 dnl need to add it to one or more .pc.in files (for Connector,
1557 dnl etc)
1558
1559 privdatadir='${datadir}'/evolution-data-server
1560 AC_SUBST(privdatadir)
1561
1562 privincludedir='${includedir}'/evolution-data-server
1563 AC_SUBST(privincludedir)
1564
1565 privlibdir='${libdir}'/evolution-data-server
1566 AC_SUBST(privlibdir)
1567
1568 imagesdir='${datadir}'/pixmaps/evolution-data-server
1569 AC_SUBST(imagesdir)
1570
1571 moduledir='${privlibdir}'/registry-modules
1572 AC_SUBST(moduledir)
1573
1574 ebook_backenddir='${privlibdir}'/addressbook-backends
1575 AC_SUBST(ebook_backenddir)
1576
1577 ecal_backenddir='${privlibdir}'/calendar-backends
1578 AC_SUBST(ecal_backenddir)
1579
1580 ro_sourcesdir='${privdatadir}'/ro-sources
1581 AC_SUBST(ro_sourcesdir)
1582
1583 rw_sourcesdir='${privdatadir}'/rw-sources
1584 AC_SUBST(rw_sourcesdir)
1585
1586 if test "x$use_gweather" = "xyes"; then
1587         weatherdatadir="$privdatadir/weather"
1588         AC_SUBST(weatherdatadir)
1589 fi
1590
1591 dnl separate camel from e-d-s? or should it be under the same spot? same for now.
1592 camel_providerdir='${privlibdir}'/camel-providers
1593 AC_SUBST(camel_providerdir)
1594
1595 dnl *******************
1596 dnl D-BUS service stuff
1597 dnl *******************
1598 m4_pattern_allow([AM_V_GEN])
1599 EVO_SUBST_SERVICE_RULE='%.service: %.service.in Makefile ; $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" -e s"|\@ADDRESS_BOOK_DBUS_SERVICE_NAME\@|$(ADDRESS_BOOK_DBUS_SERVICE_NAME)|" -e "s|\@CALENDAR_DBUS_SERVICE_NAME\@|$(CALENDAR_DBUS_SERVICE_NAME)|" -e "s|\@SOURCES_DBUS_SERVICE_NAME\@|$(SOURCES_DBUS_SERVICE_NAME)|" -e "s|\@USER_PROMPTER_DBUS_SERVICE_NAME\@|$(USER_PROMPTER_DBUS_SERVICE_NAME)|" $< > $@'
1600 AC_SUBST(EVO_SUBST_SERVICE_RULE)
1601
1602 dnl ******************************
1603 dnl GLib stuff
1604 dnl ******************************
1605 GLIB_GSETTINGS
1606 AM_PATH_GLIB_2_0
1607
1608 dnl We use AC_SUBST_FILE because AC_SUBST won't deal with newlines
1609 EVO_MARSHAL_RULE=$srcdir/marshal.mk
1610 AC_SUBST_FILE(EVO_MARSHAL_RULE)
1611
1612 dnl ******************************
1613 dnl gperf stuff
1614 dnl ******************************
1615 AC_PATH_PROG(GPERF, gperf, [no])
1616 if test "x$GPERF" = "xno"; then
1617   AC_MSG_ERROR([You need gperf to build evolution-data-server])
1618 fi
1619
1620 GOBJECT_INTROSPECTION_CHECK([0.9.12])
1621
1622 dnl ******************************
1623 dnl Vala binding
1624 dnl ******************************
1625 AC_ARG_ENABLE(vala-bindings,
1626         AC_HELP_STRING([--enable-vala-bindings],
1627         [build the EXPERIMENTAL Vala bindings]),
1628         enable_vala_bindings=$enableval,
1629         enable_vala_bindings=no)
1630
1631 if test x$enable_vala_bindings = xyes; then
1632   if test "x$INTROSPECTION_SCANNER" = x; then
1633     AC_MSG_ERROR([GObject-Introspection must be enabled for Vala bindings])
1634   fi
1635
1636   AM_PROG_VALAC([0.13.0])
1637   have_vala=yes
1638
1639   AC_PATH_PROG(VALAC, valac, valac)
1640   AC_SUBST(VALAC)
1641   AC_SUBST(VALAFLAGS)
1642
1643   AC_PATH_PROG([VAPIGEN], [vapigen], [false])
1644
1645   if test "x$VAPIGEN" = "xfalse"; then
1646     AC_MSG_ERROR([vapigen not found. Was vala compiled with --enable-vapigen?])
1647   fi
1648
1649   AC_SUBST(VAPIGEN)
1650 fi
1651
1652 AM_CONDITIONAL([HAVE_VALA], [test "x$have_vala" = "xyes"])
1653 AC_SUBST(HAVE_VALA)
1654
1655 dnl ******************************
1656 dnl Makefiles
1657 dnl ******************************
1658 export privlibdir
1659 export privincludedir
1660 export privdatadir
1661
1662 AC_CONFIG_FILES([
1663 Makefile
1664 evolution-data-server-zip
1665 evolution-data-server.pc
1666 addressbook/Makefile
1667 addressbook/libebook/Makefile
1668 addressbook/libebook/libebook.pc
1669 addressbook/libebook-contacts/Makefile
1670 addressbook/libebook-contacts/libebook-contacts.pc
1671 addressbook/libedata-book/Makefile
1672 addressbook/libedata-book/libedata-book.pc
1673 addressbook/libegdbus/Makefile
1674 addressbook/backends/Makefile
1675 addressbook/backends/file/Makefile
1676 addressbook/backends/ldap/Makefile
1677 addressbook/backends/google/Makefile
1678 addressbook/backends/google/tests/Makefile
1679 addressbook/backends/webdav/Makefile
1680 art/Makefile
1681 calendar/Makefile
1682 calendar/libecal/Makefile
1683 calendar/libecal/libecal.pc
1684 calendar/libedata-cal/Makefile
1685 calendar/libedata-cal/libedata-cal.pc
1686 calendar/libegdbus/Makefile
1687 calendar/backends/Makefile
1688 calendar/backends/caldav/Makefile
1689 calendar/backends/file/Makefile
1690 calendar/backends/http/Makefile
1691 calendar/backends/contacts/Makefile
1692 calendar/backends/weather/Makefile
1693 camel/Makefile
1694 camel/providers/Makefile
1695 camel/providers/imapx/Makefile
1696 camel/providers/local/Makefile
1697 camel/providers/nntp/Makefile
1698 camel/providers/pop3/Makefile
1699 camel/providers/sendmail/Makefile
1700 camel/providers/smtp/Makefile
1701 camel/tests/Makefile
1702 camel/tests/folder/Makefile
1703 camel/tests/lib/Makefile
1704 camel/tests/message/Makefile
1705 camel/tests/mime-filter/Makefile
1706 camel/tests/misc/Makefile
1707 camel/tests/smime/Makefile
1708 camel/camel.pc
1709 data/Makefile
1710 libebackend/Makefile
1711 libebackend/libebackend.pc
1712 libedataserver/Makefile
1713 libedataserver/eds-version.h
1714 libedataserver/libedataserver.pc
1715 modules/Makefile
1716 modules/cache-reaper/Makefile
1717 modules/gnome-online-accounts/Makefile
1718 modules/google-backend/Makefile
1719 modules/owncloud-backend/Makefile
1720 modules/ubuntu-online-accounts/Makefile
1721 modules/ubuntu-online-accounts/calendar.service-type.in
1722 modules/ubuntu-online-accounts/contacts.service-type.in
1723 modules/ubuntu-online-accounts/evolution-data-server.application.in
1724 modules/ubuntu-online-accounts/google-calendar.service.in
1725 modules/ubuntu-online-accounts/google-contacts.service.in
1726 modules/ubuntu-online-accounts/google-gmail.service.in
1727 modules/ubuntu-online-accounts/mail.service-type.in
1728 modules/ubuntu-online-accounts/yahoo-calendar.service.in
1729 modules/ubuntu-online-accounts/yahoo-mail.service.in
1730 modules/trust-prompt/Makefile
1731 modules/yahoo-backend/Makefile
1732 private/Makefile
1733 services/Makefile
1734 services/evolution-addressbook-factory/Makefile
1735 services/evolution-calendar-factory/Makefile
1736 services/evolution-source-registry/Makefile
1737 services/evolution-user-prompter/Makefile
1738 tests/Makefile
1739 tests/libebook/Makefile
1740 tests/libebook/client/Makefile
1741 tests/libebook/vcard/Makefile
1742 tests/libecal/Makefile
1743 tests/libecal/client/Makefile
1744 tests/libedata-cal/Makefile
1745 tests/libedataserver/Makefile
1746 tests/test-server-utils/Makefile
1747 tests/test-server-utils/services/Makefile
1748 tests/test-server-utils/services/org.gnome.evolution.dataserver.AddressBook.service
1749 tests/test-server-utils/services/org.gnome.evolution.dataserver.Calendar.service
1750 tests/test-server-utils/services/org.gnome.evolution.dataserver.Sources.service
1751 docs/Makefile
1752 docs/reference/Makefile
1753 docs/reference/addressbook/Makefile
1754 docs/reference/addressbook/libebook/Makefile
1755 docs/reference/addressbook/libebook-contacts/Makefile
1756 docs/reference/addressbook/libedata-book/Makefile
1757 docs/reference/calendar/Makefile
1758 docs/reference/calendar/libecal/Makefile
1759 docs/reference/calendar/libedata-cal/Makefile
1760 docs/reference/camel/Makefile
1761 docs/reference/libedataserver/Makefile
1762 docs/reference/libebackend/Makefile
1763 docs/reference/private/Makefile
1764 po/Makefile.in
1765 vala/Makefile
1766 ])
1767 AC_OUTPUT
1768
1769 echo "
1770         evolution-data-server has been configured as follows:
1771         Weather calendar:       $use_gweather
1772         Mail Directory:         $system_mail_dir, $system_mail_perm
1773         LDAP support:           $msg_ldap
1774         NNTP support:           $msg_nntp
1775         Kerberos 5:             $msg_krb5
1776         SMIME support:          $msg_smime
1777         IPv6 support:           $msg_ipv6
1778         Phone number support:   $msg_phonenumber
1779         Dot Locking:            $msg_dot
1780         File Locking:           $msg_file
1781         Large files:            $enable_largefile
1782         Gtk Doc:                $enable_gtk_doc
1783         Introspection:          $enable_introspection
1784         Vala bindings:          $enable_vala_bindings
1785         GNOME Online Accounts   $enable_goa
1786         Ubuntu Online Accounts  $enable_uoa
1787         Google Contacts         $enable_google
1788         GTK+:                   $enable_gtk
1789         Code coverage (gcov):   $enable_code_coverage
1790         Strict building:        $enable_strict
1791 "