dnl Evolution-Data-Server version m4_define([eds_major_version], [2]) m4_define([eds_minor_version], [29]) m4_define([eds_micro_version], [1]) m4_define([eds_version], [eds_major_version.eds_minor_version.eds_micro_version]) dnl Base Version: This is for API/version tracking for things like dnl Bonobo server files. This should always be the major/minor of dnl the stable version or stable version to be. Note, this is set dnl the way it is so that GETTEXT_PACKAGE will be parsed correctly. BASE_VERSION=2.30 m4_define([base_version], [2.30]) dnl This number is meaningless, but we're now stuck with it in our dnl library names for backward compatibility. m4_define([api_version], [1.2]) dnl Autoconf / Automake Initialization AC_PREREQ(2.58) AC_INIT([evolution-data-server],[eds_version],[http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server]) AM_INIT_AUTOMAKE([gnu 1.9]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR(README) AC_CONFIG_HEADERS(config.h) dnl This is for the autoconf tests only - it set's the language we use AC_LANG(C) dnl Automake 1.11 - Silent Build Rules m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) dnl Required Package Versions m4_define([glib_minimum_version], [2.16.1]) m4_define([gtk_minimum_version], [2.14.0]) m4_define([ORBit_minimum_version], [2.9.8]) m4_define([libbonobo_minimum_version], [2.20.3]) m4_define([gconf_minimum_version], [2.0.0]) dnl XXX Just a Guess m4_define([libglade_minimum_version], [2.0.0]) dnl XXX Just a Guess m4_define([libxml_minimum_version], [2.0.0]) dnl XXX Just a Guess m4_define([libsoup_minimum_version], [2.3.0]) m4_define([gnome_keyring_minimum_version], [2.20.1]) m4_define([sqlite_minimum_version], [3.5]) m4_define([gweather_minimum_version], [2.25.4]) m4_define([libical_minimum_version], [0.43]) m4_define([dbus_glib_minimum_version], [0.6]) AC_SUBST([BASE_VERSION],[base_version]) AC_SUBST([API_VERSION],[api_version]) AC_DEFINE_UNQUOTED(BASE_VERSION, ["$BASE_VERSION"], [Base version (Major.Minor)]) AC_DEFINE_UNQUOTED(API_VERSION, ["$API_VERSION"], [API version (Major.Minor)]) EDS_MAJOR_VERSION=eds_major_version EDS_MINOR_VERSION=eds_minor_version EDS_MICRO_VERSION=eds_micro_version dnl ****************************** dnl Libtool versioning dnl ****************************** LIBEDATASERVER_CURRENT=11 LIBEDATASERVER_REVISION=1 LIBEDATASERVER_AGE=0 LIBEDATASERVERUI_CURRENT=9 LIBEDATASERVERUI_REVISION=1 LIBEDATASERVERUI_AGE=1 LIBECAL_CURRENT=9 LIBECAL_REVISION=2 LIBECAL_AGE=2 LIBEDATACAL_CURRENT=6 LIBEDATACAL_REVISION=2 LIBEDATACAL_AGE=0 LIBEDATABOOK_CURRENT=6 LIBEDATABOOK_REVISION=1 LIBEDATABOOK_AGE=4 LIBEBOOK_CURRENT=12 LIBEBOOK_REVISION=1 LIBEBOOK_AGE=3 LIBEGROUPWISE_CURRENT=13 LIBEGROUPWISE_REVISION=1 LIBEGROUPWISE_AGE=0 LIBCAMEL_CURRENT=14 LIBCAMEL_REVISION=1 LIBCAMEL_AGE=0 LIBEXCHANGE_STORAGE_CURRENT=3 LIBEXCHANGE_STORAGE_REVISION=0 LIBEXCHANGE_STORAGE_AGE=0 LIBGDATA_CURRENT=1 LIBGDATA_REVISION=0 LIBGDATA_AGE=0 LIBGDATA_GOOGLE_CURRENT=1 LIBGDATA_GOOGLE_REVISION=0 LIBGDATA_GOOGLE_AGE=0 LIBEBACKEND_CURRENT=0 LIBEBACKEND_REVISION=1 LIBEBACKEND_AGE=0 AC_SUBST(EDS_MAJOR_VERSION) AC_SUBST(EDS_MINOR_VERSION) AC_SUBST(EDS_MICRO_VERSION) AC_SUBST(LIBEDATASERVER_CURRENT) AC_SUBST(LIBEDATASERVER_REVISION) AC_SUBST(LIBEDATASERVER_AGE) AC_SUBST(LIBEDATASERVERUI_CURRENT) AC_SUBST(LIBEDATASERVERUI_REVISION) AC_SUBST(LIBEDATASERVERUI_AGE) AC_SUBST(LIBECAL_CURRENT) AC_SUBST(LIBECAL_REVISION) AC_SUBST(LIBECAL_AGE) AC_SUBST(LIBEDATACAL_CURRENT) AC_SUBST(LIBEDATACAL_REVISION) AC_SUBST(LIBEDATACAL_AGE) AC_SUBST(LIBEBOOK_CURRENT) AC_SUBST(LIBEBOOK_REVISION) AC_SUBST(LIBEBOOK_AGE) AC_SUBST(LIBEDATABOOK_CURRENT) AC_SUBST(LIBEDATABOOK_REVISION) AC_SUBST(LIBEDATABOOK_AGE) AC_SUBST(LIBEGROUPWISE_CURRENT) AC_SUBST(LIBEGROUPWISE_REVISION) AC_SUBST(LIBEGROUPWISE_AGE) AC_SUBST(LIBCAMEL_CURRENT) AC_SUBST(LIBCAMEL_REVISION) AC_SUBST(LIBCAMEL_AGE) AC_SUBST(LIBEXCHANGE_STORAGE_CURRENT) AC_SUBST(LIBEXCHANGE_STORAGE_REVISION) AC_SUBST(LIBEXCHANGE_STORAGE_AGE) AC_SUBST(LIBGDATA_CURRENT) AC_SUBST(LIBGDATA_REVISION) AC_SUBST(LIBGDATA_AGE) AC_SUBST(LIBGDATA_GOOGLE_CURRENT) AC_SUBST(LIBGDATA_GOOGLE_REVISION) AC_SUBST(LIBGDATA_GOOGLE_AGE) AC_SUBST(LIBEBACKEND_CURRENT) AC_SUBST(LIBEBACKEND_REVISION) AC_SUBST(LIBEBACKEND_AGE) dnl ************************************** dnl Put the ACLOCAL flags in the Makefile dnl ************************************** ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" dnl ****************************** dnl Compiler Warning Flags dnl ****************************** AS_COMPILER_FLAGS(WARNING_FLAGS, "-DG_DISABLE_DEPRECATED -DPANGO_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES -Wall -Wextra -Wno-missing-field-initializers -Wno-sign-compare -Wno-unused-parameter -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wformat-security -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wmissing-noreturn -Wnested-externs -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings") AC_SUBST(WARNING_FLAGS) dnl Other useful compiler warnings for test builds only. dnl These may produce warnings we have no control over. dnl dnl -Wformat-nonliteral dnl -Wmissing-format-attribute dnl -Wshadow CFLAGS="$CFLAGS $WARNING_FLAGS" dnl ****************************** dnl Initialize maintainer mode dnl ****************************** AM_MAINTAINER_MODE AC_PROG_CC AC_PROG_CPP AC_C_INLINE AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AM_PROG_LEX AC_PROG_YACC case $YACC in *yacc*) AC_MSG_ERROR([You need bison to build evolution-data-server]) ;; esac dnl ****************************** dnl Test whether jw is installed dnl ****************************** AC_PATH_PROG(JW,jw,no) if test x$JW = xno; then HAVE_JW="no" else HAVE_JW="yes" fi AM_CONDITIONAL(HAVE_JW, test "x$HAVE_JW" = "xyes") AC_SUBST(HAVE_JW) dnl ****************************** dnl I18N stuff dnl ****************************** IT_PROG_INTLTOOL([0.35.5]) AM_GLIB_GNU_GETTEXT GETTEXT_PACKAGE=evolution-data-server-$BASE_VERSION AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext]) localedir='$(prefix)/$(DATADIRNAME)/locale' AC_SUBST(localedir) dnl ****************************** dnl Initialize libtool \ DOLT dnl if switch to libtool >= 2.2, replace existing with following: dnl LT_PREREQ(2.2) dnl LT_INIT(disable-static win32-dll) dnl ****************************** AM_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL DOLT PKG_PROG_PKG_CONFIG dnl ****************************** dnl Check for Win32 dnl ****************************** AC_MSG_CHECKING([for Win32]) case "$host" in *-mingw*) os_win32=yes NO_UNDEFINED='-no-undefined' SOCKET_LIBS='-lws2_32 -ldnsapi' DL_LIB='' SOFTOKN3_LIB='' LIBEXECDIR_IN_SERVER_FILE='../../../libexec' AC_CACHE_VAL(ac_cv_have_addrinfo, [ac_cv_have_addrinfo=yes]) AC_DEFINE(_WIN32_WINNT, 0x501, [To get getaddrinfo etc declarations]) ;; *) os_win32=no NO_UNDEFINED='' SOCKET_LIBS='' DL_LIB='-ldl' SOFTOKN3_LIB='-lsoftokn3' LIBEXECDIR_IN_SERVER_FILE="$libexecdir" ;; esac AC_MSG_RESULT([$os_win32]) AM_CONDITIONAL(OS_WIN32, [test $os_win32 = yes]) AC_SUBST(NO_UNDEFINED) AC_SUBST(SOCKET_LIBS) AC_SUBST(LIBEXECDIR_IN_SERVER_FILE) dnl ************************************** dnl Check for posix compatible sys/wait.h dnl ************************************** AC_HEADER_SYS_WAIT dnl ************************************ dnl Check for posix compatible alloca() dnl ************************************ AC_FUNC_ALLOCA dnl ****************************** dnl Checks for functions dnl ****************************** AC_CHECK_FUNCS(fsync strptime strtok_r) dnl *********************************** dnl Check for base dependencies early. dnl *********************************** PKG_CHECK_MODULES(GNOME_PLATFORM, [glib-2.0 >= glib_minimum_version gtk+-2.0 >= gtk_minimum_version ORBit-2.0 >= ORBit_minimum_version libbonobo-2.0 >= libbonobo_minimum_version gconf-2.0 >= gconf_minimum_version libglade-2.0 >= libglade_minimum_version libxml-2.0 >= libxml_minimum_version libsoup-2.4 >= libsoup_minimum_version]) LIBICAL_REQUIRED=libical_minimum_version AC_SUBST(LIBICAL_REQUIRED) dnl ****************************** dnl regex check dnl ****************************** AC_CHECK_FUNCS(regexec,,[AC_CHECK_LIB(regex,regexec, [REGEX_LIBS=-lregex AC_DEFINE(HAVE_REGEXEC,1,[Define to 1 if you have the regexec function.])], [AC_MSG_ERROR([No regex library found])])]) AC_SUBST(REGEX_LIBS) dnl ****************************** dnl libdb checking dnl ****************************** AC_ARG_WITH([libdb], AS_HELP_STRING([--with-libdb],[Prefix where libdb is installed]), [dynamic_libdb=yes], [dynamic_libdb=no]) if test "x${dynamic_libdb}" = "xyes"; then DB_CFLAGS="-I$withval/include" DB_LIBS="-L$withval/lib -ldb" AC_MSG_CHECKING([Berkeley DB]) save_cflags=$CFLAGS; CFLAGS=$DB_CFLAGS save_libs=$LIBS; LIBS="$DB_LIBS" AC_LINK_IFELSE([AC_LANG_PROGRAM( [[#include ]], [[db_create(NULL, NULL, 0)]])], [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([cannot find libdb])]) CFLAGS=$save_cflags LIBS=$save_libs msg_libdb="dynamically linked" else DB_CFLAGS="-I\$(top_builddir)/libdb/dist" DB_LIBS="\$(top_builddir)/libdb/dist/libdb-4.1.la" if test $os_win32 = yes; then dnl Don't pointlessly auto-export the global symbols dnl from the static libdb DB_LIBS="$DB_LIBS -Wl,--exclude-libs=libdb-4.1.a" fi AC_MSG_NOTICE([Using local libdb]) msg_libdb="statically linked to local copy" fi AM_CONDITIONAL(WITH_LIBDB, [test "x$dynamic_libdb" != "xno"]) AC_SUBST(DB_CFLAGS) AC_SUBST(DB_LIBS) dnl ****************************** dnl iconv checking dnl ****************************** have_iconv=no save_LIBS="$LIBS" LIBS="$LIBS -liconv" AC_CACHE_CHECK([for iconv in -liconv], [ac_cv_libiconv], AC_LINK_IFELSE([AC_LANG_PROGRAM( [[ #include #include ]], [[ iconv_t cd; cd = iconv_open ("UTF-8", "ISO-8859-1"); ]] )],[ac_cv_libiconv=yes],[ac_cv_libiconv=no])) if test $ac_cv_libiconv = yes; then ICONV_LIBS="-liconv" if test $os_win32 = yes; then dnl Don't pointlessly auto-export the global symbols dnl from a potentially static libiconv.a ICONV_LIBS="$ICONV_LIBS -Wl,--exclude-libs=libiconv.a" fi have_iconv=yes else LIBS="$save_LIBS" AC_CHECK_FUNC(iconv, have_iconv=yes, have_iconv=no) fi if test $have_iconv = yes; then if test $ac_cv_libiconv = no; then AC_CHECK_FUNCS(gnu_get_libc_version) fi AC_CACHE_CHECK([if iconv() handles UTF-8], [ac_cv_libiconv_utf8], AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include #ifdef HAVE_GNU_GET_LIBC_VERSION #include #endif int main() { char *jp = "\x1B\x24\x42\x46\x7C\x4B\x5C\x38\x6C"; char *utf8 = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"; char *transbuf = malloc (10), *trans = transbuf; iconv_t cd; size_t jp_len = strlen (jp), utf8_len = 10; size_t utf8_real_len = strlen (utf8); #ifdef HAVE_GNU_GET_LIBC_VERSION /* glibc 2.1.2's iconv is broken in hard to test ways. */ if (!strcmp (gnu_get_libc_version (), "2.1.2")) exit (1); #endif cd = iconv_open ("UTF-8", "ISO-2022-JP"); if (cd == (iconv_t) -1) exit (1); if (iconv (cd, &jp, &jp_len, &trans, &utf8_len) == -1 || jp_len != 0) exit (1); if (memcmp (utf8, transbuf, utf8_real_len) != 0) exit (1); return (0);} ]]) ],[ac_cv_libiconv_utf8=yes],[ac_cv_libiconv_utf8=no; have_iconv=no],[ac_cv_libiconv_utf8=hopefully])) fi if test "$have_iconv" = no; then AC_MSG_ERROR([You need to install a working iconv implementation, such as ftp://ftp.gnu.org/pub/gnu/libiconv]) fi AC_SUBST(ICONV_LIBS) CFLAGS="$CFLAGS -I$srcdir" AC_MSG_CHECKING([preferred charset name formats for system iconv]) AC_RUN_IFELSE([AC_LANG_SOURCE([[ #define CONFIGURE_IN #include "iconv-detect.c" ]])], [AC_MSG_RESULT([found])], [AC_MSG_RESULT([not found]) AC_MSG_WARN([ *** The iconv-detect program was unable to determine the *** preferred charset name formats recognized by your *** iconv library. It is suggested that you install a *** working iconv library such as the one found at *** ftp://ftp.gnu.org/pub/gnu/libiconv ])], [if test x$os_win32 = xyes; then AC_MSG_RESULT([using known win32 result]) echo '/* This is an auto-generated header, DO NOT EDIT! */' > iconv-detect.h echo >>iconv-detect.h echo '#define ICONV_ISO_D_FORMAT "iso-%d-%d"' >>iconv-detect.h echo '#define ICONV_ISO_S_FORMAT "iso-%d-%s"' >>iconv-detect.h echo '#define ICONV_10646 "UCS-4BE"' >>iconv-detect.h else AC_MSG_RESULT([unknown]) AC_MSG_WARN([ *** We can't determine the preferred charset name formats *** recognized by your iconv library. You are *** cross-compiling and supposed to know what you are doing. *** Please construct the iconv-detect.h file manually. ]) fi ]) CFLAGS="$save_CFLAGS" LIBS="$save_LIBS" dnl ********************************** dnl Check for nl_langinfo and CODESET dnl ********************************** AC_MSG_CHECKING([for nl_langinfo (CODESET)]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[#include ]], [[char *codeset = nl_langinfo (CODESET);]] )],[ac_cv_langinfo_codeset=yes],[ac_cv_langinfo_codeset=no]) if test x$ac_cv_langinfo_codeset = xyes; then AC_DEFINE(HAVE_CODESET, 1, [Have nl_langinfo (CODESET)]) fi AC_MSG_RESULT([$ac_cv_langinfo_codeset]) dnl ******************************************************* dnl Check to see if strftime supports the use of %l and %k dnl ******************************************************* AC_MSG_CHECKING([for %l and %k support in strftime]) AC_RUN_IFELSE([AC_LANG_SOURCE( [[ #include #include #include int main(int argc, char **argv) { char buf[10]; time_t rawtime; struct tm *timeinfo; time(&rawtime); timeinfo=localtime(&rawtime); buf[0] = '\0'; strftime(buf, 10, "%lx%k", timeinfo); if (buf[0] == '\0' || buf[0] == 'x' || strstr(buf, "l") || strstr(buf, "k")) exit(1); else exit(0); return 0; } ]] )],[AC_DEFINE(HAVE_LKSTRFTIME, 1, [strftime supports use of l and k]) ac_cv_lkstrftime=yes],[ac_cv_lkstrftime=no],[ac_cv_lkstrftime=no]) AC_MSG_RESULT([$ac_cv_lkstrftime]) dnl ******************************************************************************** dnl security extension support (SSL and S/MIME) dnl dnl The following voodoo does detection of mozilla libraries (nspr and nss) dnl needed by Camel (SSL and S/MIME). dnl dnl The Evolution security extensions are only built if these libraries are found dnl ******************************************************************************** msg_ssl="no" msg_smime="no" dnl these 2 enable's are inverses of each other AC_ARG_ENABLE(nss, AS_HELP_STRING([--enable-nss=@<:@yes/no/static@:>@],[Attempt to use Mozilla libnss for SSL support.]), enable_nss="$enableval", enable_nss="yes") AC_ARG_ENABLE(smime, AS_HELP_STRING([--enable-smime=@<:@yes/no@:>@],[Attempt to use Mozilla libnss for SMIME support (this requires --enable-nss)]), enable_smime="$enableval", enable_smime="yes") AC_ARG_ENABLE(gnome-keyring, AS_HELP_STRING([--enable-gnome-keyring=@<:@yes/no@:>@],[Attempt to use Gnome Keyring for storing passwords]), enable_gnome_keyring="$enableval", enable_gnome_keyring="no") AC_ARG_WITH(nspr-includes, AS_HELP_STRING([--with-nspr-includes=PREFIX],[Location of Mozilla nspr4 includes.]), with_nspr_includes="$withval") AC_ARG_WITH(nspr-libs, AS_HELP_STRING([--with-nspr-libs=PREFIX],[Location of Mozilla nspr4 libs.]), with_nspr_libs="$withval") AC_ARG_WITH(nss-includes, AS_HELP_STRING([--with-nss-includes=PREFIX],[Location of Mozilla nss3 includes.]), with_nss_includes="$withval") AC_ARG_WITH(nss-libs, AS_HELP_STRING([--with-nss-libs=PREFIX],[Location of Mozilla nss3 libs.]), with_nss_libs="$withval") if test "x${enable_gnome_keyring}" = "xyes"; then PKG_CHECK_MODULES(GNOME_KEYRING, gnome-keyring-1 >= gnome_keyring_minimum_version, with_gnome_keyring="yes", with_gnome_keyring="no"); if test "x$with_gnome_keyring" = "xyes"; then AC_DEFINE(WITH_GNOME_KEYRING, 1, [Gnome Keyring available]) GNOME_KEYRING_REQUIREMENT="gnome-keyring-1" else GNOME_KEYRING_REQUIREMENT="" fi fi if test "x${enable_nss}" = "xyes" || test "x${enable_nss}" = "xstatic"; then if test -n "${with_nspr_includes}" || test -n "${with_nspr_libs}" || test -n "${with_nss_includes}" || test -n "${with_nss_libs}" || test "x${enable_nss}" = "xstatic"; then check_manually="yes" else check_manually="no" fi if test "x${check_manually}" = "xno"; then AC_MSG_CHECKING(Mozilla NSPR pkg-config module name) mozilla_nspr_pcs="nspr mozilla-nspr firefox-nspr xulrunner-nspr seamonkey-nspr" for pc in $mozilla_nspr_pcs; do if $PKG_CONFIG --exists $pc; then AC_MSG_RESULT($pc) mozilla_nspr=$pc break; fi done AC_MSG_CHECKING(Mozilla NSS pkg-config module name) mozilla_nss_pcs="nss mozilla-nss firefox-nss xulrunner-nss seamonkey-nss" for pc in $mozilla_nss_pcs; do if $PKG_CONFIG --exists $pc; then AC_MSG_RESULT($pc) mozilla_nss=$pc break; fi done if test -n "$mozilla_nspr" -a -n "$mozilla_nss"; then msg_ssl="yes (Mozilla NSS)" if test "x$enable_smime" = "xyes"; then AC_DEFINE(ENABLE_SMIME,1,[Define if SMIME should be enabled]) msg_smime="yes (Mozilla NSS)" fi AC_DEFINE(HAVE_NSS,1,[Define if you have NSS]) AC_DEFINE(HAVE_SSL,1,[Define if you have a supported SSL library]) MANUAL_NSPR_CFLAGS="" MANUAL_NSPR_LIBS="" MANUAL_NSS_CFLAGS="" MANUAL_NSS_LIBS="" else check_manually="yes" mozilla_nspr="" mozilla_nss="" fi fi if test "x${check_manually}" = "xyes"; then have_nspr_includes="no" if test "x${with_nspr_includes}" != "xno"; then CPPFLAGS_save="$CPPFLAGS" AC_MSG_CHECKING(for Mozilla nspr4 includes in $with_nspr_includes) AC_MSG_RESULT("") CPPFLAGS="$CPPFLAGS -I$with_nspr_includes" AC_CHECK_HEADERS(nspr.h prio.h, [ moz_nspr_includes="yes" ]) CPPFLAGS="$CPPFLAGS_save" if test "x{$moz_nspr_includes}" != "xno" -a "x{$moz_nspr_includes}" != "x" ; then have_nspr_includes="yes" MANUAL_NSPR_CFLAGS="-I$with_nspr_includes" fi else AC_MSG_CHECKING(for Mozilla nspr4 includes) AC_MSG_RESULT(no) fi have_nspr_libs="no" if test "x${with_nspr_libs}" != "xno" -a "x${have_nspr_includes}" != "xno"; then CFLAGS_save="$CFLAGS" LDFLAGS_save="$LDFLAGS" if test "$enable_nss" = "static"; then if test -z "${with_nspr_libs}"; then AC_MSG_ERROR([Static linkage requested, but path to nspr libraries not set.] [Please specify the path to libnspr4.a] [Example: --with-nspr-libs=/usr/lib]) else nsprlibs="$DL_LIB $with_nspr_libs/libplc4.a $with_nspr_libs/libplds4.a $with_nspr_libs/libnspr4.a $PTHREAD_LIB" fi else nsprlibs="$DL_LIB -lplc4 -lplds4 -lnspr4 $PTHREAD_LIB" fi AC_CACHE_CHECK([for Mozilla nspr libraries], ac_cv_moz_nspr_libs, [ LIBS_save="$LIBS" CFLAGS="$CFLAGS $MANUAL_NSPR_CFLAGS" if test "x${with_nspr_libs}" != "x"; then LIBS="$nsprlibs" LDFLAGS="$LDFLAGS -L$with_nspr_libs" else LIBS="$nsprlibs" LDFLAGS="$LDFLAGS" fi AC_TRY_LINK_FUNC(PR_Init, ac_cv_moz_nspr_libs="yes", ac_cv_moz_nspr_libs="no") CFLAGS="$CFLAGS_save" LDFLAGS="$LDFLAGS_save" LIBS="$LIBS_save" ]) if test "x$ac_cv_moz_nspr_libs" != "xno"; then have_nspr_libs="yes" MANUAL_NSPR_LIBS="-L$with_nspr_libs $nsprlibs" else MANUAL_NSPR_CLFAGS="" fi else AC_MSG_CHECKING(for Mozilla nspr4 libraries) AC_MSG_RESULT(no) fi if test "x${with_nss_includes}" != "xno" -a "x${have_nspr_libs}" != "xno"; then CPPFLAGS_save="$CPPFLAGS" AC_MSG_CHECKING(for Mozilla nss3 includes in $with_nss_includes) AC_MSG_RESULT("") if test "x${with_nspr_includes}" != "x"; then CPPFLAGS="$CPPFLAGS -I$with_nspr_includes -I$with_nss_includes" else CPPFLAGS="$CPPFLAGS -I$with_nss_includes" fi AC_CHECK_HEADERS(nss.h ssl.h smime.h, [ have_nss_includes="yes" ], [ have_nss_includes="no" ]) CPPFLAGS="$CPPFLAGS_save" if test "x${have_nss_includes}" = "xyes"; then have_nss_includes="yes" MANUAL_NSS_CFLAGS="-I$with_nss_includes" else MANUAL_NSPR_CFLAGS="" MANUAL_NSPR_LIBS="" fi else AC_MSG_CHECKING(for Mozilla nss3 includes) AC_MSG_RESULT(no) fi if test "x${with_nss_libs}" != "xno" -a "x${have_nss_includes}" != "xno"; then LDFLAGS_save="$LDFLAGS" if test "$enable_nss" = "static"; then if test -z "${with_nss_libs}"; then AC_MSG_ERROR([Static linkage requested, but path to nss libraries not set.] [Please specify the path to libnss3.a] [Example: --with-nspr-libs=/usr/lib/mozilla]) else nsslibs="-ldb1 $with_nss_libs/libnssckfw.a $with_nss_libs/libasn1.a $with_nss_libs/libcrmf.a $with_nss_libs/libswfci.a $with_nss_libs/libjar.a $with_nss_libs/libpkcs12.a $with_nss_libs/libpkcs7.a $with_nss_libs/libpki1.a $with_nss_libs/libsmime.a $with_nss_libs/libssl.a $with_nss_libs/libnss.a $with_nss_libs/libpk11wrap.a $with_nss_libs/libsoftokn.a $with_nss_libs/libfreebl.a $with_nss_libs/libnsspki.a $with_nss_libs/libnssdev.a $with_nss_libs/libcryptohi.a $with_nss_libs/libcerthi.a $with_nss_libs/libcertdb.a $with_nss_libs/libsecutil.a $with_nss_libs/libnssb.a" case "$host" in *solaris*) nsslibs="$nsslibs $with_nss_libs/libfreebl.a" ;; esac fi else nsslibs="-lssl3 -lsmime3 -lnss3" fi AC_CACHE_CHECK([for Mozilla nss libraries], ac_cv_moz_nss_libs, [ LIBS_save="$LIBS" LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs -L$with_nss_libs $nsslibs" LIBS="$nsslibs $nsprlibs" AC_TRY_LINK_FUNC(NSS_Init, ac_cv_moz_nss_libs="yes", ac_cv_moz_nss_libs="no") if test "$ac_cv_moz_nss_libs" = no; then nsslibs="-lssl3 -lsmime3 -lnss3" LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs -L$with_nss_libs $nsslibs" AC_TRY_LINK_FUNC(NSS_Init, ac_cv_moz_nss_libs="yes", ac_cv_moz_nss_libs="no") fi LDFLAGS="$LDFLAGS_save" LIBS="$LIBS_save" ]) if test "$ac_cv_moz_nss_libs" != no; then AC_DEFINE(HAVE_NSS) AC_DEFINE(HAVE_SSL) if test "$enable_nss" = "static"; then msg_ssl="yes (Mozilla NSS:static)" else msg_ssl="yes (Mozilla NSS)" fi # static_nss if test "$enable_smime" = "yes"; then AC_DEFINE(ENABLE_SMIME,1,[Define if SMIME should be enabled]) msg_smime="yes (Mozilla NSS)" fi MANUAL_NSS_LIBS="-L$with_nss_libs $nsslibs" else MANUAL_NSS_CFLAGS="" MANUAL_NSPR_CFLAGS="" MANUAL_NSPR_LIBS="" fi else AC_MSG_CHECKING(for Mozilla nss libraries) AC_MSG_RESULT(no) fi MANUAL_NSS_CFLAGS="$MANUAL_NSPR_CFLAGS $MANUAL_NSS_CFLAGS" MANUAL_NSS_LIBS="$MANUAL_NSPR_LIBS $MANUAL_NSS_LIBS" fi fi AM_CONDITIONAL(ENABLE_SMIME, test "x$msg_smime" != "xno") AC_SUBST(MANUAL_NSPR_CFLAGS) AC_SUBST(MANUAL_NSPR_LIBS) AC_SUBST(MANUAL_NSS_CFLAGS) AC_SUBST(MANUAL_NSS_LIBS) dnl ****************************** dnl system mail stuff dnl ****************************** AC_PATH_PROG(SENDMAIL, sendmail, [/usr/sbin/sendmail], [/usr/sbin:/usr/lib]) AC_DEFINE_UNQUOTED(SENDMAIL_PATH, "$SENDMAIL", [Path to a sendmail binary, or equivalent]) AC_MSG_CHECKING([system mail directory]) if test -d /var/mail -a '!' -h /var/mail ; then system_mail_dir="/var/mail" else system_mail_dir="/var/spool/mail" fi AC_DEFINE_UNQUOTED(SYSTEM_MAIL_DIR, "$system_mail_dir", [Directory local mail is delivered to]) case `ls -ld $system_mail_dir 2>&1 | awk '{print $1;}'` in d??????rw?) CAMEL_LOCK_HELPER_USER="" CAMEL_LOCK_HELPER_GROUP="" system_mail_perm="world writable" ;; d???rw????) CAMEL_LOCK_HELPER_USER="" CAMEL_LOCK_HELPER_GROUP=`ls -ld $system_mail_dir 2>&1 | awk '{print $4;}'` system_mail_perm="writable by group $CAMEL_LOCK_HELPER_GROUP" ;; drw???????) CAMEL_LOCK_HELPER_USER=`ls -ld $system_mail_dir 2>&1 | awk '{print $3;}'` CAMEL_LOCK_HELPER_GROUP="" system_mail_perm="writable by user $CAMEL_LOCK_HELPER_USER" ;; *) CAMEL_LOCK_HELPER_USER="" CAMEL_LOCK_HELPER_GROUP="" system_mail_perm="???" ;; esac AC_MSG_RESULT([$system_mail_dir, $system_mail_perm]) AC_SUBST(CAMEL_LOCK_HELPER_USER) AC_SUBST(CAMEL_LOCK_HELPER_GROUP) dnl ****************************** dnl Timezone checks dnl ****************************** AC_CACHE_CHECK(for tm_gmtoff in struct tm, [ac_cv_struct_tm_gmtoff], AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include ]], [[ struct tm tm; tm.tm_gmtoff = 1; ]] )],[ac_cv_struct_tm_gmtoff=yes],[ac_cv_struct_tm_gmtoff=no])) if test $ac_cv_struct_tm_gmtoff = yes; then AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define if struct tm has a tm_gmtoff member]) else AC_CACHE_CHECK(for timezone variable, [ac_cv_var_timezone], AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include ]], [[ timezone = 1; ]] )],[ac_cv_var_timezone=yes],[ac_cv_var_timezone=no])) if test $ac_cv_var_timezone = yes; then AC_DEFINE(HAVE_TIMEZONE, 1, [Define if libc defines a timezone variable]) AC_CACHE_CHECK(for altzone variable, [ac_cv_var_altzone], AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include ]], [[ altzone = 1; ]] )],[ac_cv_var_altzone=yes],[ac_cv_var_altzone=no])) if test $ac_cv_var_altzone = yes; then AC_DEFINE(HAVE_ALTZONE, 1, [Define if libc defines an altzone variable]) fi else AC_MSG_ERROR([unable to find a way to determine timezone]) fi fi dnl ****************************** dnl ctime_r prototype dnl ****************************** AC_CACHE_CHECK([if ctime_r wants three arguments], [ac_cv_ctime_r_three_args], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include ]], [[ char *buf; time_t date; ctime_r (&date, buf, 100); ]] )],[ac_cv_ctime_r_three_args=yes],[ac_cv_ctime_r_three_args=no]) ]) if test x"$ac_cv_ctime_r_three_args" = xyes ; then AC_DEFINE(CTIME_R_THREE_ARGS, 1, [Solaris-style ctime_r]) fi dnl ****************************** dnl gethostbyname_r prototype dnl ****************************** AC_CHECK_FUNCS(gethostbyname_r,[ AC_CACHE_CHECK([if gethostbyname_r wants five arguments], [ac_cv_gethostbyname_r_five_args], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include "confdefs.h" #include #include #include #include #define BUFSIZE (sizeof(struct hostent)+10) ]], [[ struct hostent hent; char buffer[BUFSIZE]; int bufsize=BUFSIZE; int h_errno; (void)gethostbyname_r ("www.ximian.com", &hent, buffer, bufsize, &h_errno); ]] )],[ac_cv_gethostbyname_r_five_args=yes],[ac_cv_gethostbyname_r_five_args=no]) ])]) if test "x$ac_cv_gethostbyname_r_five_args" = "xyes" ; then AC_DEFINE(GETHOSTBYNAME_R_FIVE_ARGS, 1, [Solaris-style gethostbyname_r]) fi dnl ****************************** dnl gethostbyaddr_r prototype dnl ****************************** AC_CHECK_FUNCS(gethostbyaddr_r,[ AC_CACHE_CHECK([if gethostbyaddr_r wants seven arguments], [ac_cv_gethostbyaddr_r_seven_args], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include "confdefs.h" #include #include #include #include #define BUFSIZE (sizeof(struct hostent)+10) ]], [[ struct hostent hent; char buffer[BUFSIZE]; int bufsize=BUFSIZE; int h_errno; (void)gethostbyaddr_r ("www.ximian.com", 14, AF_INET, &hent, buffer, bufsize, &h_errno); ]] )],[ac_cv_gethostbyaddr_r_seven_args=yes],[ac_cv_gethostbyaddr_r_seven_args=no]) ])]) if test "x$ac_cv_gethostbyaddr_r_seven_args" = "xyes" ; then AC_DEFINE(GETHOSTBYADDR_R_SEVEN_ARGS, 1, [Solaris-style gethostbyaddr_r]) fi dnl ****************************** dnl stat(v)fs location/type dnl ****************************** AC_CHECK_HEADER([sys/statvfs.h], [AC_DEFINE([HAVE_SYS_STATVFS_H], 1, [Have ])],, [[ #if HAVE_SYS_STATVFS_H #include #endif ]]) AC_CHECK_FUNCS(statvfs) AC_CHECK_HEADER([sys/param.h], [AC_DEFINE([HAVE_SYS_PARAM_H], 1, [Have ])],, [[ #if HAVE_SYS_PARAM_H #include #endif ]]) AC_CHECK_HEADER([sys/mount.h], [AC_DEFINE([HAVE_SYS_MOUNT_H], 1, [Have ])],, [[ #if HAVE_SYS_MOUNT_H #include #endif ]]) AC_CHECK_FUNCS(statfs) dnl ****************************** dnl IPv6 support and getaddrinfo calls dnl ****************************** AC_CACHE_CHECK([if system supports getaddrinfo and getnameinfo], [ac_cv_have_addrinfo], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include "confdefs.h" #include #include #include #include #include ]], [[ #ifndef NI_MAXHOST #define NI_MAXHOST 1025 #endif #ifndef NI_MAXSERV #define NI_MAXSERV 32 #endif struct addrinfo hints, *res; struct sockaddr_in6 sin6; int af = AF_INET6; char host[NI_MAXHOST]; char serv[NI_MAXSERV]; getaddrinfo ("www.ximian.com", NULL, &hints, &res); freeaddrinfo (res); getnameinfo((struct sockaddr *)&sin6, sizeof(sin6), host, sizeof(host), serv, sizeof(serv), 0); ]] )],[ac_cv_have_addrinfo=yes],[ac_cv_have_addrinfo=no]) ]) if test x"$ac_cv_have_addrinfo" = "xno" ; then AC_DEFINE(NEED_ADDRINFO,1,[Enable getaddrinfo emulation]) if test x"$enable_ipv6" = "xyes" ; then AC_MSG_ERROR([system doesn't support necessary interfaces for ipv6 support]) fi msg_ipv6=no else AC_ARG_ENABLE([ipv6], AS_HELP_STRING([--enable-ipv6=no/yes], [Enable support for resolving IPv6 addresses.]), [enable_ipv6=$enableval],[enable_ipv6=yes]) if test x"$enable_ipv6" = "xyes"; then msg_ipv6=yes AC_DEFINE(ENABLE_IPv6,1,[Enable IPv6 support]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include "confdefs.h" #include #include #include #include ]], [[ struct addrinfo hints; hints.ai_flags = AI_ADDRCONFIG; ]] )],[AC_DEFINE(HAVE_AI_ADDRCONFIG,1,[Define if the system defines the AI_ADDRCONFIG flag for getaddrinfo])],[]) else msg_ipv6=no fi fi AM_CONDITIONAL(ENABLE_IPv6, [test "x$enable_ipv6" = "xyes"]) dnl ****************************** dnl Calendar support dnl ****************************** AC_MSG_CHECKING([if we should build the calendar]) AC_ARG_ENABLE([calendar], AS_HELP_STRING([--enable-calendar=yes/no], [Enable the calendar components (default yes)]), [enable_calendar=$enableval], [enable_calendar=yes]) if test "x${enable_calendar}" != "xno"; then AC_DEFINE(ENABLE_CALENDAR, 1, [Define if Calendar should be built]) fi AM_CONDITIONAL(ENABLE_CALENDAR, [test x$enable_calendar = xyes]) AC_MSG_RESULT([$enable_calendar]) msg_calendar=$enable_calendar dnl ********************************** dnl Weather calendar backend support dnl ********************************** AC_MSG_CHECKING([if we should build the weather calendar backend]) AC_ARG_WITH([weather], [AS_HELP_STRING([--with-weather], [Build the weather calendar backend (default=yes)])], [use_gweather=$withval], [use_gweather=yes]) if test "$enable_calendar" = "no"; then use_gweather="no (calendar support is disabled)" fi AC_MSG_RESULT([$use_gweather]) if test "$use_gweather" = "yes"; then PKG_CHECK_MODULES([LIBGWEATHER], [gweather >= gweather_minimum_version],[], [AC_MSG_ERROR([The weather calendar backend requires GWeather >= gweather_minimum_version. Alternatively, you may specify --without-weather as a configure option to avoid building the backend.])]) fi AM_CONDITIONAL(ENABLE_WEATHER, [test $use_gweather = yes]) dnl ****************************** dnl NNTP support. dnl ****************************** AC_ARG_ENABLE([nntp], AS_HELP_STRING([--enable-nntp], [Build Usenet news (NNTP) backend]), [enable_nntp=$enableval],[enable_nntp=yes]) if test "x$enable_nntp" = "xyes"; then AC_DEFINE(ENABLE_NNTP,1,[Build NNTP backend]) msg_nntp=yes else msg_nntp=no fi AM_CONDITIONAL(ENABLE_NNTP, [test x$enable_nntp = xyes]) AC_DEFINE(HANDLE_LIBICAL_MEMORY, 1, [Define it once memory returned by libical is free'ed properly]) dnl ****************************** dnl New IMAP code support. dnl ****************************** AC_ARG_ENABLE([imapp], AS_HELP_STRING([--enable-imapp=no/yes], [Attempt to compile alternative, incomplete, very unsupported IMAPv4r1 code]), [],[enable_imapp=no]) if test "x$enable_imapp" = "xyes"; then AC_DEFINE(ENABLE_IMAPP,1,[Really don't try this at home]) msg_imapp=yes else msg_imapp=no fi AM_CONDITIONAL(ENABLE_IMAPP, [test x$enable_imapp = xyes]) dnl ****************************** dnl IMAP4rev1 code support. dnl ****************************** AC_ARG_ENABLE(imap4, AS_HELP_STRING([--enable-imap4=no/yes], [Attempt to compile yet another, incomplete, very unsupported IMAPv4r1 implementation]), [],[enable_imap4=no]) if test "x$enable_imap4" = "xyes"; then AC_DEFINE(ENABLE_IMAP4,1,[Really don't try this at home]) msg_imap4=yes else msg_imap4=no fi AM_CONDITIONAL(ENABLE_IMAP4, [test x$enable_imap4 = xyes]) dnl ****************************** dnl Hula support dnl ****************************** AC_ARG_ENABLE([hula], AS_HELP_STRING([--enable-hula=no/yes], [Enable support for the now-defunct Hula project]), [],[enable_hula=no]) if test "x$enable_hula" = "xyes"; then AC_DEFINE(ENABLE_HULA,1,[Build Hula backend]) msg_hula=yes else msg_hula=no fi AM_CONDITIONAL(ENABLE_HULA, [test x$enable_hula = xyes]) dnl ****************************** dnl File locking dnl ****************************** AC_ARG_ENABLE([dot-locking], AS_HELP_STRING([--enable-dot-locking=yes/no], [Enable support for locking mail files with dot locking]), [enable_dot_locking=$enableval],[enable_dot_locking=yes]) if test $os_win32 != yes -a "x$enable_dot_locking" = "xyes"; then AC_DEFINE(USE_DOT,1,[Define to use dot locking for mbox files]) msg_dot=yes else msg_dot=no fi AC_ARG_ENABLE([file-locking], AS_HELP_STRING([--enable-file-locking=fcntl/flock/no], [Enable support for locking mail files with file locking]), [],[enable_file_locking=fcntl]) if test $os_win32 != yes -a "x$enable_file_locking" = "xfcntl"; then AC_DEFINE(USE_FCNTL,1,[Define to use fcntl locking for mbox files]) msg_file=fcntl else if test $os_win32 != yes -a "x$enable_file_locking" = "xflock"; then AC_DEFINE(USE_FLOCK,1,[Define to use flock locking for mbox files]) msg_file=flock else msg_file=no fi fi dnl ****************************** dnl sendmail operation dnl ****************************** AC_MSG_CHECKING([for SunOS broken spool format]) if test "x$host_os" = "xsunos" ; then with_broken_spool="yes" fi AC_ARG_WITH([broken-spool], AS_HELP_STRING([--with-broken-spool=yes/no], [Using SunOS/Solaris sendmail which has a broken spool format]), [with_broken_spool=$enableval],[with_broken_spool=${with_broken_spool:=no}]) if test "x$with_broken_spool" = "xyes"; then AC_DEFINE(HAVE_BROKEN_SPOOL,1,[Define if mail delivered to the system mail directory is in broken Content-Length format]) fi AC_MSG_RESULT([$with_broken_spool]) dnl ****************************** dnl Kerberos dnl ****************************** AC_ARG_WITH([krb5], AS_HELP_STRING([--with-krb5=PATH], [Location of Kerberos 5 install dir]), [with_krb5="$withval"], [with_krb5="no"]) AC_ARG_WITH([krb5-libs], AS_HELP_STRING([--with-krb5-libs=PATH], [Location of Kerberos 5 libraries]), [with_krb5_libs="$withval"], [with_krb5_libs="$with_krb5/lib"]) AC_ARG_WITH([krb5-includes], AS_HELP_STRING([--with-krb5-includes=PATH], [Location of Kerberos 5 headers]), [with_krb5_includes="$withval"], [with_krb5_includes=""]) AC_ARG_WITH([krb4], AS_HELP_STRING([--with-krb4=PATH], [Location of Kerberos 4 install dir]), [with_krb4="$withval"], [with_krb4="no"]) AC_ARG_WITH([krb4-libs], AS_HELP_STRING([--with-krb4-libs=DIR], [Location of Kerberos 4 libraries]), [with_krb4_libs="$withval"], [with_krb4_libs="$with_krb4/lib"]) AC_ARG_WITH([krb4-includes], AS_HELP_STRING([--with-krb4-includes=DIR], [Location of Kerberos 4 headers]), [with_krb4_includes="$withval"], [with_krb4_includes=""]) dnl ****************************** dnl Kerberos 5 dnl ****************************** msg_krb5="no" if test "x${with_krb5}" != "xno"; then LIBS_save="$LIBS" mitlibs="-lkrb5 -lk5crypto -lcom_err -lgssapi_krb5" heimlibs="-lkrb5 -lcrypto -lasn1 -lcom_err -lroken -lgssapi" sunlibs="-lkrb5 -lgss" AC_CACHE_CHECK([for Kerberos 5], [ac_cv_lib_kerberos5], [ LIBS="$LIBS -L$with_krb5_libs $mitlibs" AC_LINK_IFELSE([AC_LANG_CALL([], [krb5_init_context])], [ac_cv_lib_kerberos5="$mitlibs"], [ LIBS="$LIBS_save -L$with_krb5_libs $heimlibs" AC_LINK_IFELSE([AC_LANG_CALL([], [krb5_init_context])], [ac_cv_lib_kerberos5="$heimlibs"], [ LIBS="$LIBS_save -L$with_krb5_libs $sunlibs" AC_LINK_IFELSE([AC_LANG_CALL([], [krb5_init_context])], [ac_cv_lib_kerberos5="$sunlibs"], [ac_cv_lib_kerberos5="no"]) ]) ]) LIBS="$LIBS_save" ]) if test "$ac_cv_lib_kerberos5" != "no"; then AC_DEFINE(HAVE_KRB5,1,[Define if you have Krb5]) if test "$ac_cv_lib_kerberos5" = "$mitlibs"; then AC_DEFINE(HAVE_MIT_KRB5,1,[Define if you have MIT Krb5]) if test -z "$with_krb5_includes"; then KRB5_CFLAGS="-I$with_krb5/include" else KRB5_CFLAGS="-I$with_krb5_includes" fi msg_krb5="yes (MIT)" else if test "$ac_cv_lib_kerberos5" = "$heimlibs"; then AC_DEFINE(HAVE_HEIMDAL_KRB5,1,[Define if you have Heimdal]) if test -z "$with_krb5_includes"; then KRB5_CFLAGS="-I$with_krb5/include/heimdal" else KRB5_CFLAGS="-I$with_krb5_includes" fi msg_krb5="yes (Heimdal)" else AC_DEFINE(HAVE_SUN_KRB5,1,[Define if you have Sun Kerberosv5]) if test -z "$with_krb5_includes"; then KRB5_CFLAGS="-I$with_krb5/include/kerberosv5" else KRB5_CFLAGS="-I$with_krb5_includes" fi msg_krb5="yes (Sun)" fi fi KRB5_LIBS="-L$with_krb5_libs $ac_cv_lib_kerberos5" AC_MSG_RESULT([msg_krb5]) else dnl AC_MSG_CHECKING([for Kerberos 5]) AC_MSG_RESULT([no]) AC_MSG_ERROR([You specified with krb5, but it was not found.]) fi else AC_MSG_WARN([krb5 support disabled]) fi AM_CONDITIONAL(ENABLE_KRB5, [test x$with_krb5 != xno]) AC_CHECK_HEADER([et/com_err.h], [AC_DEFINE([HAVE_ET_COM_ERR_H], 1, [Have ])],, [[ #if HAVE_ET_COM_ERR_H #include #endif ]]) AC_CHECK_HEADER([com_err.h], [AC_DEFINE([HAVE_COM_ERR_H], 1, [Have ])],, [[ #if HAVE_COM_ERR_H #include #endif ]]) dnl ****************************** dnl Kerberos 4 dnl ****************************** msg_krb4="no" if test "x${with_krb4}" != "xno"; then LIBS_save="$LIBS" AC_CACHE_CHECK([for Kerberos 4], [ac_cv_lib_kerberos4], [ ac_cv_lib_kerberos4="no" mitcompatlibs="-lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err" dnl Look for MIT krb5 compat krb4 LIBS="$LIBS_save -L$with_krb4_libs $mitcompatlibs" AC_LINK_IFELSE([AC_LANG_CALL([], [krb_mk_req])], [ac_cv_lib_kerberos4="$mitcompatlibs"]) if test "$ac_cv_lib_kerberos4" = "no"; then dnl Look for KTH krb4 LIBS="$LIBS_save -L$with_krb4_libs -lkrb -lcrypto -lcom_err -lroken" AC_LINK_IFELSE([AC_LANG_CALL([], [krb_mk_req])], [ac_cv_lib_kerberos4="-lkrb -lcrypto -lcom_err -lroken"]) fi if test "$ac_cv_lib_kerberos4" = "no"; then dnl Look for old MIT krb4 LIBS="$LIBS_save -L$with_krb4_libs -lkrb" AC_LINK_IFELSE([AC_LANG_CALL([], [krb_mk_req])], [ac_cv_lib_kerberos4="-lkrb"], [ LIBS="$LIBS -ldes" AC_LINK_IFELSE([AC_LANG_CALL([], [krb_mk_req])], [ac_cv_lib_kerberos4="-lkrb -ldes"]) ]) fi ]) LIBS="$LIBS_save" if test "$ac_cv_lib_kerberos4" != "no"; then AC_DEFINE(HAVE_KRB4,1,[Define if you have Krb4]) msg_krb4="yes" if test -z "$with_krb4_includes"; then if test -f "$with_krb4/include/krb.h" -o -f "$with_krb4/include/port-sockets.h"; then KRB4_CFLAGS="-I$with_krb4/include" fi if test -d "$with_krb4/include/kerberosIV"; then KRB4_CFLAGS="$KRB4_CFLAGS -I$with_krb4/include/kerberosIV" fi else KRB4_CFLAGS="-I$with_krb4_includes" fi KRB4_LIBS="-L$with_krb4_libs $ac_cv_lib_kerberos4" CFLAGS_save="$CFLAGS" CFLAGS="$CFLAGS $KRB4_CFLAGS" AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include "krb.h" int krb_sendauth; ]], [[ return 0 ]] )],[AC_DEFINE(NEED_KRB_SENDAUTH_PROTO,1,[Need krb_sendauth proto])],[]) CFLAGS="$CFLAGS_save" fi else AC_MSG_CHECKING([for Kerberos 4]) AC_MSG_RESULT([${with_krb4}]) fi AC_SUBST(KRB5_CFLAGS) AC_SUBST(KRB5_LIBS) AC_SUBST(KRB4_CFLAGS) AC_SUBST(KRB4_LIBS) dnl ****************************** dnl Purify support dnl ****************************** EVO_PURIFY_SUPPORT dnl ****************************** dnl Exchange debug dnl ****************************** AC_ARG_ENABLE([e2k-debug], AS_HELP_STRING([--enable-e2kdebug], [Allow debugging]), [enable_e2kdebug=$enableval],[enable_e2kdebug="no"]) if test "$enable_e2kdebug" = "yes"; then AC_DEFINE(E2K_DEBUG, 1, [Define if you want E2K_DEBUG to be available]) fi dnl ****************************** dnl LDAP support. dnl ****************************** if test "$os_win32" != yes; then EVO_LDAP_CHECK(no) case $with_openldap in no) msg_ldap=no ;; *) case $with_static_ldap in yes) msg_ldap="$with_openldap (static)" ;; *) msg_ldap="$with_openldap (dynamic)" ;; esac esac dnl SunLDAP support, but if OpenLDAP support, skip check SunLDAP. if test "$with_openldap" = no ; then EVO_SUNLDAP_CHECK(no) case $with_sunldap in no) msg_ldap=no ;; *) case $with_static_sunldap in yes) msg_ldap="$with_sunldap (static)" ;; *) msg_ldap="$with_sunldap (dynamic)" ;; esac esac else with_sunldap=no fi AM_CONDITIONAL(SUNLDAP, [test "$with_sunldap" != no]) SAVE_CFLAGS="$CFLAGS" SAVE_LIBS="$LIBS" LDAP_CFLAGS="$LDAP_CFLAGS -DLDAP_DEPRECATED" CFLAGS="$CFLAGS $LDAP_CFLAGS" LIBS="$LIBS $LDAP_LIBS" AC_CHECK_FUNCS(ldap_ntlm_bind) CFLAGS="$SAVE_CFLAGS" LIBS="$SAVE_LIBS" dnl You need to enable LDAP and Kerberos to enable Exchange support in e-d-s msg_no_ntlm="no" msg_exchange="no" if test "$msg_ldap" != "no" ; then if test "$ac_cv_func_ldap_ntlm_bind" != no ; then msg_exchange="yes" else dnl The user wanted to build with openldap, but his openldap did not have NTLM dnl support. Make him aware of this with a warning message at the end. msg_no_ntlm="yes" fi fi else dnl Win32 LDAP support LDAP_CFLAGS="-DLDAP_DEPRECATED" LDAP_LIBS="-lwldap32" AC_SUBST(LDAP_CFLAGS) AC_SUBST(LDAP_LIBS) AC_DEFINE(HAVE_LDAP,1,[Define if you have LDAP support]) AM_CONDITIONAL(ENABLE_LDAP, true) AM_CONDITIONAL(SUNLDAP, false) msg_ldap="yes" msg_no_ntlm="no" msg_exchange="yes" fi LIBBONOBO_REQUIRED=libbonobo_minimum_version AC_SUBST(LIBBONOBO_REQUIRED) ORBIT_REQUIRED=ORBit_minimum_version AC_SUBST(ORBIT_REQUIRED) DBUS_GLIB_REQUIRED=dbus_glib_minimum_version AC_SUBST(DBUS_GLIB_REQUIRED) dnl ****************************** dnl GObject marshalling dnl ****************************** AM_PATH_GLIB_2_0 dnl We use AC_SUBST_FILE because AC_SUBST won't deal with newlines EVO_MARSHAL_RULE=$srcdir/marshal.mk AC_SUBST_FILE(EVO_MARSHAL_RULE) dnl ****************************** dnl Posix thread support dnl ****************************** dnl GLIB_CONFIG=${GLIB_CONFIG-glib-config} dnl GNOME_PTHREAD_CHECK dnl if test "x$PTHREAD_LIB" = "x" ; then dnl AC_MSG_ERROR([POSIX threads are currently required for Evolution]) dnl fi dnl Notice that this is a hack, and we wont be able to use this forever, but dnl at least for some time EVO_PTHREAD_CHECK THREADS_LIBS="$PTHREAD_LIB" THREADS_CFLAGS="$PTHREAD_CFLAGS" AC_SUBST(THREADS_LIBS) AC_SUBST(THREADS_CFLAGS) AC_DEFINE(ENABLE_THREADS,1,[Required]) dnl ****************************** dnl Orbit \ Bonobo stuff dnl ****************************** PKG_CHECK_MODULES([ORBIT], [ORBit-2.0 >= ORBit_minimum_version]) test x$ORBIT_IDL = x && ORBIT_IDL=`$PKG_CONFIG --variable=orbit_idl ORBit-2.0` AC_SUBST(ORBIT_CFLAGS) AC_SUBST(ORBIT_LIBS) AC_SUBST(ORBIT_IDL) AC_MSG_CHECKING(for CORBA include paths) IDL_INCLUDES="-I"`${PKG_CONFIG} --variable=idldir libbonobo-2.0`" -I"`${PKG_CONFIG} --variable=idldir bonobo-activation-2.0` AC_MSG_RESULT($IDL_INCLUDES) AC_SUBST(IDL_INCLUDES) PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 >= dbus_glib_minimum_version) AC_SUBST(DBUS_GLIB_CFLAGS) AC_SUBST(DBUS_GLIB_LIBS) dnl ****************************** dnl Utility macro to set compiler flags for a specific lib. dnl EVO_SET_COMPILE_FLAGS(VAR-PREFIX, DEPS, EXTRA-CFLAGS, EXTRA-LIBS) dnl ****************************** AC_DEFUN([EVO_SET_COMPILE_FLAGS], [ PKG_CHECK_MODULES([$1], [$2]) $1_CFLAGS="[$]$1_CFLAGS $3 " $1_LIBS="[$]$1_LIBS $4 " ]) dnl ****************************** dnl libedataserver flags dnl ****************************** E_DATA_SERVER_DEPS="libxml-2.0 libbonobo-2.0 libsoup-2.4 gconf-2.0 $mozilla_nspr" EVO_SET_COMPILE_FLAGS(E_DATA_SERVER, $E_DATA_SERVER_DEPS, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS) AC_SUBST(E_DATA_SERVER_CFLAGS) AC_SUBST(E_DATA_SERVER_LIBS) dnl ****************************** dnl libedataserverui dnl ****************************** E_DATA_SERVER_UI_DEPS="gtk+-2.0 libglade-2.0 gobject-2.0 gthread-2.0 gconf-2.0 $GNOME_KEYRING_REQUIREMENT" EVO_SET_COMPILE_FLAGS(E_DATA_SERVER_UI, $E_DATA_SERVER_UI_DEPS, $THREADS_CFLAGS, $THREADS_LIBS) AC_SUBST(E_DATA_SERVER_UI_CFLAGS) AC_SUBST(E_DATA_SERVER_UI_LIBS) E_BACKEND_DEPS="gobject-2.0 libxml-2.0 gmodule-2.0" dnl ****************************** dnl libebackend flags dnl ****************************** EVO_SET_COMPILE_FLAGS(E_BACKEND, $E_BACKEND_DEPS) AC_SUBST(E_BACKEND_CFLAGS) AC_SUBST(E_BACKEND_LIBS) dnl ****************************** dnl evolution-addressbook flags dnl ****************************** EVOLUTION_ADDRESSBOOK_DEPS="libxml-2.0 dbus-glib-1 gobject-2.0 gthread-2.0 gconf-2.0" EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS) AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS) AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS) dnl ****************************** dnl evolution-calendar flags dnl ****************************** if test "x${enable_calendar}" = "xyes"; then EVOLUTION_CALENDAR_DEPS="libical >= libical_minimum_version libxml-2.0 libbonobo-2.0 gio-2.0 gobject-2.0 gthread-2.0 gconf-2.0" dnl ***** dnl libical.pc from libical-0.43 has a bug in it's CFlags. dnl It wants apps to include but it's CFlags make it difficult dnl to differentiate between and dnl We have fixed all our instances to use . Until the .pc from dnl libical is fixed, we have to work-around the buggy CFlags. dnl ***** LIBICAL_EXTRA_CFLAGS=" -I`$PKG_CONFIG --variable=includedir libical` " LIBICAL_EXTRA_LIBS="" AC_SUBST(LIBICAL_EXTRA_CFLAGS) AC_SUBST(LIBICAL_EXTRA_LIBS) EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, $EVOLUTION_CALENDAR_DEPS, $LIBICAL_EXTRA_CFLAGS, $LIBICAL_EXTRA_LIBS) AC_SUBST(EVOLUTION_CALENDAR_CFLAGS) AC_SUBST(EVOLUTION_CALENDAR_LIBS) fi dnl ****************************** dnl factory flags dnl ****************************** E_FACTORY_DEPS="$mozilla_nspr" if test "x${enable_calendar}" = "xyes"; then E_FACTORY_DEPS="$E_FACTORY_DEPS libical" fi EVO_SET_COMPILE_FLAGS(E_FACTORY, $E_FACTORY_DEPS, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS $LIBICAL_EXTRA_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS $LIBICAL_EXTRA_LIBS) AC_SUBST(E_FACTORY_CFLAGS) AC_SUBST(E_FACTORY_LIBS) dnl ****************************** dnl Google flags dnl ****************************** GDATA_DEPS="libsoup-2.4 libxml-2.0" EVO_SET_COMPILE_FLAGS(GDATA, $GDATA_DEPS) AC_SUBST(GDATA_CFLAGS) AC_SUBST(GDATA_LIBS) dnl ****************************** dnl Groupwise flags dnl ****************************** LIBSOUP_REQUIRED=libsoup_minimum_version AC_SUBST(LIBSOUP_REQUIRED) EVO_SET_COMPILE_FLAGS(SOUP, libsoup-2.4) AC_SUBST(SOUP_CFLAGS) AC_SUBST(SOUP_LIBS) dnl ****************************** dnl Camel flags dnl ****************************** SQLITE_REQUIRED=sqlite_minimum_version AC_SUBST(SQLITE_REQUIRED) zlib_found=false dnl deflateInit is a #define, use deflateEnd instead AC_CHECK_LIB(z, deflateEnd, [AC_CHECK_HEADER(zlib.h, zlib_found=true)]) if test "x$zlib_found" = "xfalse"; then AC_MSG_ERROR([*** zlib is required]) fi dnl ****************************** dnl Checks for large file support dnl ****************************** AC_ARG_ENABLE([largefile], AS_HELP_STRING([--enable-largefile], [enable support for large files [[default=no]]]), [],[enable_largefile="no"]) if test "x$enable_largefile" != "xno"; then AC_SYS_LARGEFILE AC_CACHE_CHECK([for _LARGEFILE64_SOURCE value needed for large files], [ac_cv_largefile64_source], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include #include #include ]], [[ int fd = open ("__o_largefile", O_CREAT | O_RDWR | O_LARGEFILE, 0644); ]] )],[ac_cv_largefile64_source="no"], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #define _LARGEFILE64_SOURCE #include #include #include ]], [[ int fd = open ("__o_largefile", O_CREAT | O_RDWR | O_LARGEFILE, 0644); ]])],[ac_cv_largefile64_source="yes"], [ac_cv_largefile64_source="unknown"])]) ]) enable_largefile="no" if test "x$ac_cv_largefile64_source" = "xyes"; then LARGEFILE_CFLAGS="-D_LARGEFILE64_SOURCE" enable_largefile="yes" elif test "x$ac_cv_largefile64_source" = "xunknown"; then AC_DEFINE(O_LARGEFILE, 0, [Define to 0 if your system does not have the O_LARGEFILE flag]) fi if test -n "$ac_cv_sys_large_files" -a "x$ac_cv_sys_large_files" != "xno"; then LARGEFILE_CFLAGS="$LARGEFILE_CFLAGS -D_LARGE_FILES" enable_largefile="yes" fi if test "x$ac_cv_sys_file_offset_bits" != "xno"; then LARGEFILE_CFLAGS="$LARGEFILE_CFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" enable_largefile="yes" fi else AC_DEFINE(O_LARGEFILE, 0, [Define to 0 if your system does not have the O_LARGEFILE flag]) LARGEFILE_CFLAGS="" fi AM_CONDITIONAL(ENABLE_LARGEFILE, [test "x$enable_largefile" = "xyes"]) EVO_SET_COMPILE_FLAGS(CAMEL, $mozilla_nss gio-2.0 sqlite3 >= sqlite_minimum_version gthread-2.0, $THREADS_CFLAGS $KRB4_CFLAGS $KRB5_CFLAGS $MANUAL_NSS_CFLAGS $LARGEFILE_CFLAGS, -lz $THREADS_LIBS $KRB4_LIBS $KRB5_LIBS $MANUAL_NSS_LIBS) AC_SUBST(CAMEL_CFLAGS) AC_SUBST(CAMEL_LIBS) AC_SUBST(CAMEL_GROUPWISE_CFLAGS) AC_SUBST(CAMEL_GROUPWISE_LIBS) dnl ****************************** dnl Special directories dnl ****************************** dnl If you add something here, consider whether or not you also dnl need to add it to one or more .pc.in files (for Connector, dnl etc) privdatadir='${datadir}'/evolution-data-server-$BASE_VERSION AC_SUBST(privdatadir) privincludedir='${includedir}'/evolution-data-server-$BASE_VERSION AC_SUBST(privincludedir) privlibdir='${libdir}'/evolution-data-server-$BASE_VERSION AC_SUBST(privlibdir) idldir='${datadir}'/idl/evolution-data-server-$API_VERSION AC_SUBST(idldir) imagesdir='${datadir}'/pixmaps/evolution-data-server AC_SUBST(imagesdir) serverdir="$libdir/bonobo/servers" AC_SUBST(serverdir) extensiondir='${libdir}'/evolution-data-server-$API_VERSION/extensions AC_SUBST(extensiondir) gladedir="$privdatadir/glade" AC_SUBST(gladedir) if test $use_gweather = yes; then weatherdatadir="$privdatadir/weather" AC_SUBST(weatherdatadir) fi dnl separate camel from e-d-s? or should it be under the same spot? same for now. camel_providerdir='${libdir}'/evolution-data-server-$API_VERSION/camel-providers AC_SUBST(camel_providerdir) dnl ****************************** dnl IDL/Component Versioning dnl ****************************** INTERFACE_VERSION="$BASE_VERSION" AC_SUBST(INTERFACE_VERSION) AC_DEFINE_UNQUOTED(INTERFACE_VERSION, "$INTERFACE_VERSION", [IDL interface version (Major.Minor)]) EVO_SUBST_SERVER_RULE='%.server.in: %.server.in.in ; sed -e "s|\@BINDIR\@|$(bindir)|" -e "s|\@LIBEXECDIR_IN_SERVER_FILE\@|$(LIBEXECDIR_IN_SERVER_FILE)|" -e "s|\@COMPONENTDIR\@|$(componentdir)|" -e "s|\@IMPORTERSDIR\@|$(importersdir)|" -e "s|\@EXEEXT\@|$(EXEEXT)|" -e "s|\@VERSION\@|$(BASE_VERSION)|" -e "s|\@API_VERSION\@|$(API_VERSION)|" -e "s|\@INTERFACE_VERSION\@|$(INTERFACE_VERSION)|" $< > $@' EVO_NAME_SERVER_RULE='%_$(API_VERSION).server: %.server ; mv $< $@' AC_SUBST(EVO_SUBST_SERVER_RULE) AC_SUBST(EVO_NAME_SERVER_RULE) dnl ******************* dnl D-BUS service stuff dnl ******************* EVO_SUBST_SERVICE_RULE='%.service: %.service.in Makefile ; sed -e "s|\@BINDIR\@|$(bindir)|" -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@COMPONENTDIR\@|$(componentdir)|" -e "s|\@IMPORTERSDIR\@|$(importersdir)|" -e "s|\@VERSION\@|$(BASE_VERSION)|" -e "s|\@INTERFACE_VERSION\@|$(INTERFACE_VERSION)|" $< > $@' AC_SUBST(EVO_SUBST_SERVICE_RULE) dnl ****************************** dnl GConf stuff dnl ****************************** AC_PATH_PROG(GCONFTOOL, gconftool-2, no) AM_GCONF_SOURCE_2 dnl ****************************** dnl Gtk Doc stuff dnl ****************************** GTK_DOC_CHECK(1.9) dnl ****************************** dnl Makefiles dnl ****************************** export privlibdir export privincludedir export privdatadir if test $dynamic_libdb = no; then AC_CONFIG_SUBDIRS(libdb/dist) fi AC_CONFIG_FILES([ Makefile evolution-data-server-zip evolution-data-server.pc addressbook/Makefile addressbook/libebook/Makefile addressbook/libebook/libebook.pc addressbook/libedata-book/Makefile addressbook/libedata-book/libedata-book.pc addressbook/backends/Makefile addressbook/backends/file/Makefile addressbook/backends/vcf/Makefile addressbook/backends/ldap/Makefile addressbook/backends/google/Makefile addressbook/backends/groupwise/Makefile addressbook/backends/webdav/Makefile addressbook/tests/Makefile addressbook/tests/ebook/Makefile addressbook/tests/vcard/Makefile art/Makefile calendar/Makefile calendar/idl/Makefile calendar/libecal/Makefile calendar/libecal/libecal.pc calendar/libedata-cal/Makefile calendar/libedata-cal/libedata-cal.pc calendar/backends/Makefile calendar/backends/caldav/Makefile calendar/backends/file/Makefile calendar/backends/groupwise/Makefile calendar/backends/http/Makefile calendar/backends/contacts/Makefile calendar/backends/weather/Makefile calendar/backends/google/Makefile calendar/tests/Makefile calendar/tests/ecal/Makefile camel/Makefile camel/providers/Makefile camel/providers/groupwise/Makefile camel/providers/hula/Makefile camel/providers/imap/Makefile camel/providers/imapp/Makefile camel/providers/imap4/Makefile camel/providers/local/Makefile camel/providers/nntp/Makefile camel/providers/pop3/Makefile camel/providers/sendmail/Makefile camel/providers/smtp/Makefile camel/tests/Makefile camel/tests/folder/Makefile camel/tests/lib/Makefile camel/tests/message/Makefile camel/tests/mime-filter/Makefile camel/tests/misc/Makefile camel/tests/smime/Makefile camel/tests/stream/Makefile camel/camel.pc camel/camel-provider.pc libdb/Makefile libebackend/Makefile libebackend/libebackend.pc libedataserver/Makefile libedataserver/eds-version.h libedataserver/libedataserver.pc libedataserverui/Makefile libedataserverui/libedataserverui.pc servers/Makefile servers/groupwise/Makefile servers/groupwise/libegroupwise.pc servers/exchange/Makefile servers/exchange/xntlm/Makefile servers/exchange/lib/Makefile servers/exchange/storage/Makefile servers/exchange/storage/libexchange-storage.pc servers/google/Makefile servers/google/libgdata/Makefile servers/google/libgdata/libgdata.pc servers/google/libgdata-google/Makefile servers/google/libgdata-google/libgdata-google.pc src/Makefile win32/Makefile docs/Makefile docs/reference/Makefile docs/reference/addressbook/Makefile docs/reference/addressbook/libebook/Makefile docs/reference/addressbook/libedata-book/Makefile docs/reference/calendar/Makefile docs/reference/calendar/libecal/Makefile docs/reference/calendar/libedata-cal/Makefile docs/reference/camel/Makefile docs/reference/libedataserver/Makefile docs/reference/libedataserverui/Makefile docs/reference/libebackend/Makefile po/Makefile.in ]) AC_OUTPUT case $host in *-mingw*) dnl Override the old libtool in libdb/dist with the one from here cp libtool libdb/dist ;; esac echo " evolution-data-server has been configured as follows: Calendar: $msg_calendar Weather calendar: $use_gweather Mail Directory: $system_mail_dir, $system_mail_perm LDAP support: $msg_ldap NNTP support: $msg_nntp Kerberos 4/5: $msg_krb4/$msg_krb5 Gnome Keyring: $enable_gnome_keyring/$with_gnome_keyring SSL support: $msg_ssl SMIME support: $msg_smime IPv6 support: $msg_ipv6 Berkeley DB: $msg_libdb Exchange support: $msg_exchange Dot Locking: $msg_dot File Locking: $msg_file Large files: $enable_largefile Gtk Doc: $enable_gtk_doc " if test "$msg_hula" = "yes"; then echo "Hula support: $msg_hula" fi if test "$msg_no_ntlm" != "no" ; then echo "" AC_MSG_WARN([ No NTLM support in OpenLDAP; Plaintext password authentication will be used when connecting to the Exchange Global Catalog server. Consider installing the evo-openldap package, or building OpenLDAP with the patch in servers/exchange/docs/openldap-ntlm.diff ]) fi