 Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)

AC_INIT(evolution-data-server, 1.4.2.1)
AC_CONFIG_SRCDIR(README)
AM_INIT_AUTOMAKE([1.9 tar-pax])

AM_CONFIG_HEADER(config.h)

dnl *************************************************************************************************
dnl Base Version
dnl
dnl This is for api/versioning tracking for things like bonobo .server files
dnl
dnl This should always be the major/minor of the stable version or stable version to be
dnl *************************************************************************************************
BASE_VERSION=1.4
API_VERSION=1.2
AC_SUBST(BASE_VERSION)
AC_SUBST(API_VERSION)
AC_DEFINE_UNQUOTED(BASE_VERSION, "$BASE_VERSION", [Base version (Major.Minor)])
AC_DEFINE_UNQUOTED(API_VERSION, "$API_VERSION", [Api version (Major.Minor)])

# Libtool versioning
LIBEDATASERVER_CURRENT=5
LIBEDATASERVER_REVISION=0
LIBEDATASERVER_AGE=1

LIBEDATASERVERUI_CURRENT=6
LIBEDATASERVERUI_REVISION=2
LIBEDATASERVERUI_AGE=0

LIBECAL_CURRENT=4
LIBECAL_REVISION=5
LIBECAL_AGE=1

LIBEDATACAL_CURRENT=3
LIBEDATACAL_REVISION=8
LIBEDATACAL_AGE=2

LIBEDATABOOK_CURRENT=3
LIBEDATABOOK_REVISION=6
LIBEDATABOOK_AGE=1

LIBEBOOK_CURRENT=5
LIBEBOOK_REVISION=2
LIBEBOOK_AGE=0

LIBEGROUPWISE_CURRENT=9
LIBEGROUPWISE_REVISION=0
LIBEGROUPWISE_AGE=1

LIBCAMEL_CURRENT=6
LIBCAMEL_REVISION=3
LIBCAMEL_AGE=0

LIBEXCHANGE_STORAGE_CURRENT=1
LIBEXCHANGE_STORAGE_REVISION=0
LIBEXCHANGE_STORAGE_AGE=1

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)

dnl Put the ACLOCAL flags in the Makefile
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"

dnl Initialize maintainer mode
AM_MAINTAINER_MODE

AC_ISC_POSIX
AC_PROG_CC
AC_PROG_CPP
AC_C_INLINE
AM_PROG_LEX
AC_PROG_YACC
case $YACC in
*yacc*)
	AC_MSG_ERROR(You need bison to build evolution-data-server)
	;;
esac
AC_STDC_HEADERS
AC_ARG_PROGRAM
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET

dnl  Test whether jw is installed
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 I18N stuff
AC_PROG_INTLTOOL

ALL_LINGUAS="am ar az be bg bn bs ca cs cy da de dz el en_AU en_CA en_GB es et eu fa fi fr ga gl gu he hi hr hu id is it ja ko lt lv mk ml mn ms nb ne nl nn no pa pl pt pt_BR ro ru rw sk sl sq sr sr@Latn sv tr uk vi wa xh zh_CN zh_TW"
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 Initialize libtool
AM_DISABLE_STATIC
AC_LIBTOOL_WIN32_DLL
AM_PROG_LIBTOOL

dnl ******************************
dnl Check for Win32
dnl ******************************

AC_MSG_CHECKING([for Win32])
case "$host" in
*-mingw*)
    os_win32=yes
    AC_CACHE_VAL(have_addrinfo, [have_addrinfo=yes])
    NO_UNDEFINED='-no-undefined'
    SOCKET_LIBS='-lws2_32'
    DL_LIB=''
    SOFTOKN3_LIB=''
    ;;
*)  os_win32=no
    NO_UNDEFINED=''
    SOCKET_LIBS=''
    DL_LIB='-ldl'
    SOFTOKN3_LIB='-lsoftokn3'
    ;;
esac
AC_MSG_RESULT([$os_win32])
AM_CONDITIONAL(OS_WIN32, [test $os_win32 = yes])
AC_SUBST(NO_UNDEFINED)
AC_SUBST(SOCKET_LIBS)

AC_CHECK_HEADERS(pthread.h semaphore.h sys/wait.h)
AC_CHECK_FUNCS(fsync strptime strtok_r)

dnl alloca()
AC_CHECK_HEADERS(alloca.h)

dnl **************************************************
dnl * regex checking
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, AC_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.h>]],
                                 [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_srcdir)/libdb/dist"
        DB_LIBS="\$(top_builddir)/libdb/dist/libdb-4.1.la"
        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
AC_ARG_WITH(libiconv, [  --with-libiconv         Prefix where libiconv is installed])
case $withval in
/*)
    ICONV_CFLAGS="-I$withval/include"
    ICONV_LIBS="-L$withval/lib"
    ;;
esac

save_CFLAGS="$CFLAGS"
save_LIBS="$LIBS"
CFLAGS="$CFLAGS $ICONV_CFLAGS"
LIBS="$LIBS $ICONV_LIBS -liconv"
AC_CACHE_CHECK(for iconv in -liconv, ac_cv_libiconv, AC_TRY_LINK([
#include <iconv.h>
], [
	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="$ICONV_LIBS -liconv"
	have_iconv=yes
else
	CFLAGS="$save_CFLAGS"
	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_TRY_RUN([
#include <iconv.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_GNU_GET_LIBC_VERSION
#include <gnu/libc-version.h>
#endif

int main (int argc, char **argv)
{
	const char *from = "Some Text \xA4";
	const char *utf8 = "Some Text \xC2\xA4";
	char *transbuf = malloc (20), *trans = transbuf;
	iconv_t cd;
	size_t from_len = strlen (from), utf8_len = 20;
	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_8859-1");
	if (cd == (iconv_t) -1)
		exit (1);
	if (iconv (cd, &from, &from_len, &trans, &utf8_len) == -1 || from_len != 0)
		exit (1);
	if (memcmp (utf8, transbuf, utf8_real_len) != 0)
		exit (1);

	exit (0);
}], ac_cv_libiconv_utf8=yes, [ac_cv_libiconv_utf8=no; have_iconv=no], [ac_cv_libiconv_utf8=no; have_iconv=no]))
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_CFLAGS)
AC_SUBST(ICONV_LIBS)

CFLAGS="$CFLAGS -I$srcdir"

AC_MSG_CHECKING(preferred charset formats for system iconv)
AC_TRY_RUN([
#define CONFIGURE_IN
#include "iconv-detect.c"
],[
	AC_MSG_RESULT(found)
],[
	AC_MSG_RESULT(not found)
	AC_WARN([
	*** The iconv-detect program was unable to determine the
	*** preferred charset formats recognized by your system
	*** 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
	])
])

CFLAGS="$save_CFLAGS"
LIBS="$save_LIBS"

dnl Check to see if strftime supports the use of %l and %k

AC_MSG_CHECKING(for %l and %k support in strftime)
AC_TRY_RUN([
#include <string.h>
#include <time.h>

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);
}],[
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_DEFINE(HAVE_LKSTRFTIME, 1, [strftime supports use of l and k])
ac_cv_lkstrftime=yes
])
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, [  --enable-nss=[yes,no,static]        Attempt to use Mozilla libnss for SSL support.],
	enable_nss="$enableval", enable_nss="yes")

AC_ARG_ENABLE(smime, [ --enable-smime=[yes,no]            Attempt to use Mozilla libnss for SMIME support (this requires --enable-nss)],
	enable_smime="$enableval", enable_smime="yes")

AC_ARG_WITH(nspr-includes, [  --with-nspr-includes=PREFIX	Location of Mozilla nspr4 includes.],
	with_nspr_includes="$withval")

AC_ARG_WITH(nspr-libs, [  --with-nspr-libs=PREFIX       	Location of Mozilla nspr4 libs.],
	with_nspr_libs="$withval")

AC_ARG_WITH(nss-includes, [  --with-nss-includes=PREFIX 	Location of Mozilla nss3 includes.],
	with_nss_includes="$withval")

AC_ARG_WITH(nss-libs, [  --with-nss-libs=PREFIX         	Location of Mozilla nss3 libs.],
	with_nss_libs="$withval")

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
dnl If the user specifies --with-foo or --enable-nss=static, then we have to do this manually
		check_manually="yes"
	else
		check_manually="no"
	fi
	
	if test "x${check_manually}" = "xno"; then
		PKG_CHECK_MODULES(NSS, mozilla-nss, have_nss="yes", have_nss="no")
		if test "x${have_nss}" = "xyes"; 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				    
			mozilla_nspr="mozilla-nspr"
			mozilla_nss="mozilla-nss"
			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"
		fi
	fi
	
	if test "x${check_manually}" = "xyes"; then
		mozilla_nss=""
		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], 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, moz_nspr_libs="yes", moz_nspr_libs="no")
				CFLAGS="$CFLAGS_save"
				LDFLAGS="$LDFLAGS_save"
	 			LIBS="$LIBS_save"
			])
			if test "x$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 $SOFTOKN3_LIB"
	 		fi	
			
			AC_CACHE_CHECK([for Mozilla nss libraries], 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, moz_nss_libs="yes", moz_nss_libs="no")
				if test "$moz_nss_libs" = no; then
					nsslibs="-lssl3 -lsmime3 -lnss3 $SOFTOKN3_LIB"
					LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs -L$with_nss_libs $nsslibs"
					AC_TRY_LINK_FUNC(NSS_Init, moz_nss_libs="yes", moz_nss_libs="no")	
				fi
				LDFLAGS="$LDFLAGS_save"
	 			LIBS="$LIBS_save"
			])
			if test "$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 check for socklen_t (in Unix98)
AC_MSG_CHECKING(for socklen_t)
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>
socklen_t x;
],[],[AC_MSG_RESULT(yes)],[
AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>
int accept (int, struct sockaddr *, size_t *);
],[],[
AC_MSG_RESULT(size_t)
AC_DEFINE(socklen_t,size_t,[Define to appropriate type if socklen_t is not defined])], [
AC_MSG_RESULT(int)
AC_DEFINE(socklen_t,int)])])

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_TRY_COMPILE([
		#include <time.h>
		], [
		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_TRY_COMPILE([
			#include <time.h>
		], [
			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_TRY_COMPILE([
				#include <time.h>
			], [
				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_ERROR(unable to find a way to determine timezone)
	fi
fi


AC_CHECK_FUNCS(mkstemp mkdtemp isblank)

dnl **************************************************
dnl ctime_r prototype
dnl **************************************************

AC_CACHE_CHECK([if ctime_r wants three arguments], ac_cv_ctime_r_three_args,
[
	AC_TRY_COMPILE([
		#include <time.h>
	],[
		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_TRY_COMPILE([
		#include "confdefs.h"
		#include <sys/types.h>
		#include <sys/socket.h>
		#include <netinet/in.h>
		#include <netdb.h>

		#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_TRY_COMPILE([
		#include "confdefs.h"
		#include <sys/types.h>
		#include <sys/socket.h>
		#include <netinet/in.h>
		#include <netdb.h>

		#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_HEADERS(sys/statvfs.h)
AC_CHECK_FUNCS(statvfs)
AC_CHECK_HEADERS(sys/param.h)
AC_CHECK_HEADERS(sys/mount.h)
AC_CHECK_FUNCS(statfs)

dnl **************************************************
dnl * IPv6 support and getaddrinfo calls
dnl **************************************************
AC_CACHE_CHECK([if system supports getaddrinfo and getnameinfo], have_addrinfo,
[
	AC_TRY_COMPILE([
		#include "confdefs.h"
		#include <sys/types.h>
		#include <sys/socket.h>
		#include <netinet/in.h>
		#include <netdb.h>
		#include <stddef.h>

	],[
		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);
	],[
		have_addrinfo=yes
	],[
		have_addrinfo=no
	])
])

if test x"$have_addrinfo" = "xno" ; then
   AC_DEFINE(NEED_ADDRINFO,1,[Enable getaddrinfo emulation])
   if test x"$enable_ipv6" = "xyes" ; then
      AC_ERROR(system doesn't support necessary interfaces for ipv6 support)
   fi
   msg_ipv6=no
else
   AC_ARG_ENABLE(ipv6, [  --enable-ipv6=[no/yes]      Enable support for resolving IPv6 addresses.],,enable_ipv6=yes)
   if test x"$enable_ipv6" = "xyes"; then
        msg_ipv6=yes
	AC_DEFINE(ENABLE_IPv6,1,[Enable IPv6 support])
	AC_TRY_COMPILE([
		#include "confdefs.h"
		#include <sys/types.h>
		#include <sys/socket.h>
		#include <netinet/in.h>
		#include <netdb.h>

	],[
		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, AC_HELP_STRING([--disable-calendar],[Disable the calendar components]),
        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 NNTP support.
dnl **************************************************
AC_ARG_ENABLE(nntp, 
[  --enable-nntp=[no/yes]      Build Usenet news (NNTP) backend],,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)

dnl **************************************************
dnl New IMAP code support.
dnl **************************************************
AC_ARG_ENABLE(imapp, 
[  --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 Libsoup support
dnl **************************************************
AC_ARG_WITH(soup, 
[  --with-soup=[no/yes]      Build with Soup support],,with_soup=yes)
if test "x$with_soup" = "xyes"; then
	AC_DEFINE(WITH_SOUP,1,[Build with libsoup])
	msg_soup=yes
else
	msg_soup=no
fi
AM_CONDITIONAL(WITH_SOUP, test x$with_soup = xyes)


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
dnl Notice that this is a hack, and we wont be able to use this forever, but
dnl at least for some time
dnl

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 * File locking
dnl **************************************************

AC_ARG_ENABLE(dot-locking, 
[  --enable-dot-locking=[yes/no] Enable support for locking mail files with dot locking],,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, 
[  --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, 
[  --with-broken-spool=[yes/no] Using SunOS/Solaris sendmail which has a broken spool format],,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, [  --with-krb5=DIR      Location of Kerberos 5 install dir], with_krb5="$withval", with_krb5="no")
AC_ARG_WITH(krb5-libs, [  --with-krb5-libs=DIR Location of Kerberos 5 libraries], with_krb5_libs="$withval", with_krb5_libs="$with_krb5/lib")
AC_ARG_WITH(krb5-includes, [  --with-krb5-includes=DIR Location of Kerberos 5 headers], with_krb5_includes="$withval", with_krb5_includes="")
AC_ARG_WITH(krb4, [  --with-krb4=DIR      Location of Kerberos 4 install dir], with_krb4="$withval", with_krb4="no")
AC_ARG_WITH(krb4-libs, [  --with-krb4-libs=DIR Location of Kerberos 4 libraries], with_krb4_libs="$withval", with_krb4_libs="$with_krb4/lib")
AC_ARG_WITH(krb4-includes, [  --with-krb4-includes=DIR Location of Kerberos 4 headers], with_krb4_includes="$withval", with_krb4_includes="")

msg_krb5="no"
if test "x${with_krb5}" != "xno"; then
	LDFLAGS_save="$LDFLAGS"
	
	mitlibs="-lkrb5 -lk5crypto -lcom_err -lgssapi_krb5"
	heimlibs="-lkrb5 -lcrypto -lasn1 -lcom_err -lroken -lgssapi"
	AC_CACHE_CHECK([for Kerberos 5], ac_cv_lib_kerberos5,
	[
		LDFLAGS="$LDFLAGS -L$with_krb5_libs $mitlibs"
		AC_TRY_LINK_FUNC(krb5_init_context, ac_cv_lib_kerberos5="$mitlibs",
		[
			LDFLAGS="$LDFLAGS_save -L$with_krb5_libs $heimlibs"
			AC_TRY_LINK_FUNC(krb5_init_context, ac_cv_lib_kerberos5="$heimlibs", ac_cv_lib_kerberos5="no")
		])
		LDFLAGS="$LDFLAGS_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
			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)"
		fi
		KRB5_LDFLAGS="-L$with_krb5_libs $ac_cv_lib_kerberos5"
	fi
else
	AC_MSG_CHECKING(for Kerberos 5)
	AC_MSG_RESULT($with_krb5)
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 et/comm_err.h])])
AC_CHECK_HEADER([com_err.h],[AC_DEFINE([HAVE_COM_ERR_H], 1, [Have comm_err.h])])

msg_krb4="no"
if test "x${with_krb4}" != "xno"; then
	LDFLAGS_save="$LDFLAGS"
	AC_CACHE_CHECK(for Kerberos 4, ac_cv_lib_kerberos4,
	[
		ac_cv_lib_kerberos4="no"

		mitcompatlibs="-lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
		# Look for MIT krb5 compat krb4
		LDFLAGS="$LDFLAGS -L$with_krb4_libs $mitcompatlibs"
		AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="$mitcompatlibs")
		
		if test "$ac_cv_lib_kerberos4" = "no"; then
			# Look for KTH krb4
			LDFLAGS="$LDFLAGS_save -L$with_krb4_libs -lkrb -lcrypto -lcom_err -lroken"
			AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="-lkrb -lcrypto -lcom_err -lroken")
		fi
		if test "$ac_cv_lib_kerberos4" = "no"; then
			# Look for old MIT krb4
			LDFLAGS="$LDFLAGS_save -L$with_krb4_libs -lkrb"
			AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="-lkrb",
			[
				LDFLAGS="$LDFLAGS -ldes"
				AC_TRY_LINK_FUNC(krb_mk_req, ac_cv_lib_kerberos4="-lkrb -ldes")
			])
		fi
	])
	LDFLAGS="$LDFLAGS_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_LDFLAGS="-L$with_krb4_libs $ac_cv_lib_kerberos4"
		
		CFLAGS_save="$CFLAGS"
		CFLAGS="$CFLAGS $KRB4_CFLAGS"
		AC_TRY_COMPILE([#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_LDFLAGS)
AC_SUBST(KRB4_CFLAGS)
AC_SUBST(KRB4_LDFLAGS)

dnl
dnl Purify support
dnl
EVO_PURIFY_SUPPORT

dnl **************************************************
dnl Exchange debug
dnl **************************************************
AC_ARG_WITH(e2k-debug,     [  --with-e2k-debug              Allow debugging])
case $withval in
no)
	;;
*)
	AC_DEFINE(E2K_DEBUG, 1, [Define if you want E2K_DEBUG to be available])
	;;
esac

dnl **************************************************
dnl LDAP support.
dnl **************************************************
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

SAVE_CFLAGS="$CFLAGS"
SAVE_LIBS="$LIBS"
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

GLIB_REQUIRED="2.9.1"
LIBBONOBO_REQUIRED="2.4.2"
ORBIT_REQUIRED="2.9.8"

AC_SUBST(GLIB_REQUIRED)
AC_SUBST(LIBBONOBO_REQUIRED)
AC_SUBST(ORBIT_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 CFLAGS and LIBS and stuff
dnl *************************

GNOME_COMPILE_WARNINGS(yes)
CFLAGS="$CFLAGS $WARN_CFLAGS"
case $CFLAGS in
*-Wall*)
	# Turn off the annoying "comparison between signed and unsigned"
	# warning in gcc 3.3
	CFLAGS="$CFLAGS -Wno-sign-compare"
	;;
esac

dnl Should we use DBus for IPC
AC_MSG_CHECKING(if we should use dbus)
AC_ARG_WITH(dbus, [  --with-dbus=[yes,no]        Use DBus.],
	with_dbus="$withval", with_dbus="no")
if test "x${with_dbus}" != "xno"; then
        AC_DEFINE(WITH_DBUS, 1, [Define if DBUS should be used])
fi
AM_CONDITIONAL(ENABLE_DBUS, test x$with_dbus = xyes)
AC_MSG_RESULT($with_dbus)

if test "x${with_dbus}" = "xno"; then
        PKG_CHECK_MODULES(ORBIT, ORBit-2.0 >= 2.9.8)
        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)

        IPC_DEPS="ORBit-2.0 >= $ORBIT_REQUIRED libbonobo-2.0 >= $LIBBONOBO_REQUIRED"
        IPC="orbit"
else
        IPC_DEPS="dbus-glib-1 >= 0.6"
        IPC="dbus"
fi

if test "x${with_libgnome}" != "xno"; then
        AC_MSG_CHECKING(for libgnomeui server directory)
        GNOMEUI_SERVERDIR="`$PKG_CONFIG --variable=libgnomeui_serverdir libgnomeui-2.0`"
        AC_MSG_RESULT($GNOMEUI_SERVERDIR)
        AC_DEFINE_UNQUOTED(GNOMEUI_SERVERDIR, "$GNOMEUI_SERVERDIR", [Path where we can find gnome_segv2])
fi

dnl Utility macro to set compiler flags for a specific lib.
dnl  EVO_SET_COMPILE_FLAGS(VAR-PREFIX, DEPS, EXTRA-CFLAGS, EXTRA-LIBS)
AC_DEFUN([EVO_SET_COMPILE_FLAGS], [
	PKG_CHECK_MODULES([$1], [$2])
	$1_CFLAGS="[$]$1_CFLAGS \$(WERROR) $3"
	$1_LIBS="[$]$1_LIBS $4"
])

dnl ****************************************
dnl Flags for the various libraries we build
dnl ****************************************

dnl --- libedataserver and libedataserverui flags

E_DATA_SERVER_DEPS="libxml-2.0 gobject-2.0 >= $GLIB_REQUIRED $IPC_DEPS 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)

E_DATA_SERVER_UI_DEPS="libxml-2.0 gtk+-2.0 libglade-2.0 gconf-2.0"

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)

dnl --- evolution-addressbook flags

EVOLUTION_ADDRESSBOOK_DEPS="libxml-2.0 gthread-2.0 gobject-2.0 gconf-2.0 $IPC_DEPS"

EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS)
AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS)
AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS)

dnl --- evolution-calendar flags
if test "x${enable_calendar}" = "xyes"; then
        EVOLUTION_CALENDAR_DEPS="libxml-2.0 gthread-2.0 gobject-2.0 gconf-2.0 dbus-glib-1"

        EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, $EVOLUTION_CALENDAR_DEPS)
        AC_SUBST(EVOLUTION_CALENDAR_CFLAGS)
        AC_SUBST(EVOLUTION_CALENDAR_LIBS)
fi

if test "x${with_dbus}" = "xno"; then
        dnl --- factory flags

        E_FACTORY_DEPS="gobject-2.0 >= $GLIB_REQUIRED $IPC_DEPS gconf-2.0 gnome-vfs-2.0 libgnome-2.0 $mozilla_nspr"

        EVO_SET_COMPILE_FLAGS(E_FACTORY, $E_FACTORY_DEPS, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS)
        AC_SUBST(E_FACTORY_CFLAGS)
        AC_SUBST(E_FACTORY_LIBS)
fi

dnl --- Groupwise flags
if test "x${with_soup}" != "xno"; then
PKG_CHECK_MODULES(SOUPTEMP, libsoup-2.4, have_libsoup_24=yes, have_libsoup_24=no)
if test $have_libsoup_24 = yes; then
    LIBSOUP_REQUIRED=2.3.0
    LIBSOUP=libsoup-2.4
else
    LIBSOUP_REQUIRED=2.2.2
    LIBSOUP=libsoup-2.2
fi
AC_SUBST(LIBSOUP_REQUIRED)
AC_SUBST(LIBSOUP)
EVO_SET_COMPILE_FLAGS(SOUP, $LIBSOUP >= $LIBSOUP_REQUIRED)
AC_SUBST(SOUP_CFLAGS)
AC_SUBST(SOUP_LIBS)
fi

dnl --- Camel flags

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

EVO_SET_COMPILE_FLAGS(CAMEL, gthread-2.0 gmodule-2.0 gobject-2.0 $mozilla_nss, 
		      $THREADS_CFLAGS $KRB4_CFLAGS $KRB5_CFLAGS $MANUAL_NSS_CFLAGS,
	              -lz $THREADS_LIBS $KRB4_LDFLAGS $KRB5_LDFLAGS $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-$BASE_VERSION"
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)

weatherdatadir="$privdatadir/weather"
AC_SUBST(weatherdatadir)

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 Makefile ; sed -e "s|\@BINDIR\@|$(bindir)|" -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -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.0)

dnl ******************************
dnl Makefiles
dnl ******************************

export privlibdir
export privincludedir
export privdatadir

if test $enable_calendar = yes; then
        AC_CONFIG_SUBDIRS(calendar/libical)
fi
if test $dynamic_libdb = no; then
        AC_CONFIG_SUBDIRS(libdb/dist)
fi

AC_CONFIG_LINKS(
        addressbook/libebook:addressbook/libebook-$IPC
        addressbook/libedata-book:addressbook/libedata-book-$IPC
        calendar/libecal:calendar/libecal-$IPC
        calendar/libedata-cal:calendar/libedata-cal-$IPC
)

AC_OUTPUT([
Makefile
evolution-data-server.pc
addressbook/Makefile
addressbook/idl/Makefile
addressbook/libebook-orbit/Makefile
addressbook/libebook-orbit/libebook.pc
addressbook/libebook-dbus/Makefile
addressbook/libebook-dbus/libebook.pc
addressbook/libedata-book-orbit/Makefile
addressbook/libedata-book-orbit/libedata-book.pc
addressbook/libedata-book-dbus/Makefile
addressbook/libedata-book-dbus/libedata-book.pc
addressbook/backends/Makefile
addressbook/backends/file/Makefile
addressbook/backends/vcf/Makefile
addressbook/backends/ldap/Makefile
addressbook/backends/groupwise/Makefile
addressbook/tests/Makefile
addressbook/tests/ebook/Makefile
addressbook/tests/vcard/Makefile
art/Makefile
calendar/Makefile
calendar/idl/Makefile
calendar/libecal-orbit/Makefile
calendar/libecal-orbit/libecal.pc
calendar/libecal-dbus/Makefile
calendar/libecal-dbus/libecal.pc
calendar/libedata-cal-orbit/Makefile
calendar/libedata-cal-orbit/libedata-cal.pc
calendar/libedata-cal-dbus/Makefile
calendar/libedata-cal-dbus/libedata-cal.pc
calendar/backends/Makefile
calendar/backends/file/Makefile
calendar/backends/groupwise/Makefile
calendar/backends/http/Makefile
calendar/backends/contacts/Makefile
calendar/backends/weather/Makefile
calendar/tests/Makefile
calendar/tests/ecal/Makefile
camel/Makefile
camel/providers/Makefile
camel/providers/groupwise/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
libedataserver/Makefile
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 
src/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/addressbook/Makefile
docs/reference/addressbook/libebook/Makefile
docs/reference/calendar/Makefile
docs/reference/calendar/libecal/Makefile
docs/reference/calendar/libedata-cal/Makefile
docs/reference/libedataserver/Makefile
po/Makefile.in
])

case $host in
*-mingw*)
	# 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
	LDAP support:     $msg_ldap"
if test "$msg_nntp" = "yes"; then
echo "\
	NNTP support:     $msg_nntp"
fi
echo "\
	LibSoup support:  $msg_soup
	Kerberos 4/5:     $msg_krb4/$msg_krb5
	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
	Gtk Doc:          $enable_gtk_doc
"
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
