]> code.citadel.org Git - citadel.git/blobdiff - citadel/configure.ac
The battle against bit rot continues!
[citadel.git] / citadel / configure.ac
index 8f7f4495ace31e885b8918ff0079fb6bb9e8d5e2..a513f58951324252761b7cd5f2ee554175ae01cf 100644 (file)
@@ -1,19 +1,24 @@
 dnl Process this file with autoconf to produce a configure script.
-dnl $Id$
 AC_PREREQ(2.52)
-AC_INIT([Citadel], [7.24], [http://www.citadel.org/])
-AC_REVISION([$Revision: 5108 $])
+
+AC_INIT([Citadel],m4_esyscmd_s([grep REV_LEVEL citadel.h | sed 's/[^0-9]*//g']),[http://uncensored.citadel.org])
+
+AC_REVISION(m4_esyscmd_s([git log --pretty=%h | head -1]))
+
 AC_CONFIG_SRCDIR([citserver.c])
+AC_CONFIG_HEADER([sysdep.h])
+AC_CONFIG_MACRO_DIR([m4])
 AC_PREFIX_DEFAULT(/usr/local/citadel)
 if test "$prefix" = NONE; then
        AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix", [define this to the Citadel home directory])
        ssl_dir="$ac_default_prefix/keys"
+       localedir=$ac_default_prefix
 else
        AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory])
        ssl_dir="$prefix/keys"
+       localedir=$prefix
 fi
 
-
 dnl Make sure we see all GNU and Solaris extensions.
 AC_GNU_SOURCE
 
@@ -30,7 +35,20 @@ AC_ARG_WITH(datadir,
                        ]
 )
 
-dnl Checks for the Datadir
+
+dnl Checks for the helpDatadir
+AC_ARG_WITH(helpdir, 
+                   [  --with-helpdir          directory to store the helpfiles under],
+                       [ if test "x$withval" != "xno" ; then
+                                             AC_DEFINE(HAVE_HELP_DIR,[],[use alternate database location?])
+                                             AC_DEFINE_UNQUOTED(HELP_DIR, "$withval",[define, if the user suplied a helpfile-directory to use.])
+                                             MAKE_HELP_DIR=$withval
+                                             AC_SUBST(MAKE_HELP_DIR)
+                         fi
+                       ]
+)
+
+dnl Checks for the Static Datadir
 AC_ARG_WITH(staticdatadir, 
                    [  --with-staticdatadir    directory to store citadels system messages under],
                        [ if test "x$withval" != "xno" ; then
@@ -47,7 +65,7 @@ dnl Checks for the SSLdir
 dnl this is a bit different than the rest, 
 dnl because of the citadel used to have a keys/ subdir.
 AC_ARG_WITH(ssldir, 
-                   [  --with-ssldir          directory to store the ssl certificates under],
+                   [  --with-ssldir           directory to store the ssl certificates under],
                        [ if test "x$withval" != "xno" ; then
                                              
                                                  ssl_dir="$withval"
@@ -83,9 +101,21 @@ AC_ARG_WITH(sysconfdir,
                        ]
 )
 
+dnl Checks for the Configdir
+AC_ARG_WITH(autosysconfdir, 
+                       [  --with-autosysconfdir         directory to store the automaticaly maintained configs under],
+                       [ if test "x$withval" != "xno" ; then
+                                           AC_DEFINE(HAVE_AUTO_ETC_DIR, [], [should we search our automatic config in an alternate place?])
+                                               AC_DEFINE_UNQUOTED(AUTO_ETC_DIR, "$withval", [where to search our automatic config files])
+                                               MAKE_AUTO_ETC_DIR=$withval
+                                               AC_SUBST(MAKE_AUTO_ETC_DIR)
+                         fi
+                       ]
+)
+
 dnl Checks for where to put our utilities
 AC_ARG_WITH(utility-bindir, 
-                       [  --with-utility-bindir       directory where to find helper binaries],
+                       [  --with-utility-bindir   directory where to find helper binaries],
                        [ if test "x$withval" != "xno" ; then
                                            AC_DEFINE(HAVE_UTILBIN_DIR,[],[should we put our helper binaries to another location?])
                                                AC_DEFINE_UNQUOTED(UTILBIN_DIR, "$withval", [were to put our helper programs])
@@ -109,36 +139,112 @@ AC_ARG_WITH(rundir,
 )
 
 
-dnl Checks for the Pseudo Random Generator sockets TODO: this keeps being default.
-AC_DEFINE_UNQUOTED(EGD_POOL, "/var/run/egd-pool", [place to keep our pseudo random generator file])
-AC_ARG_WITH(egdpool, 
-                       [  --with-egdpool          the socket from Pseudo Random Generator, defaults to /var/run/egd-pool],
+AC_ARG_WITH(docdir,
+                       [  --with-docdir           where to install the documentation. default: /usr/local/citadel/],
                        [ if test "x$withval" != "xno" ; then
-                                               AC_DEFINE_UNQUOTED(EGD_POOL, "$withval", [the socket from Pseudo Random Generator])
+                                       MAKE_DOC_DIR=$withval
+                                       AC_SUBST(MAKE_DOC_DIR)
                          fi
                        ]
 )
 
-
-AC_ARG_WITH(docdir,
-                       [  --with-docdir           where to install the documentation. default: /usr/local/citadel/],
+dnl where to put the locale files
+AC_ARG_WITH(localedir, 
+                   [  --with-localedir          directory to put the locale files to],
                        [ if test "x$withval" != "xno" ; then
-                                       MAKE_DOC_DIR=$withval
-                                       AC_SUBST(MAKE_DOC_DIR)
+                           localedir=$withval
                          fi
                        ]
 )
+AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir",[where to find our pot files])
+LOCALEDIR=$localedir
+AC_SUBST(LOCALEDIR)
 
 
 
-AC_ARG_ENABLE(threaded-client, [  --disable-threaded-client
-                         disable multithreaded client])
+dnl Checks for the zlib compression library.
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $SERVER_LIBS"
+AC_CHECK_HEADER(zlib.h,
+       [AC_CHECK_LIB(z, zlibVersion,
+               [
+                       LIBS="-lz $LIBS $SERVER_LIBS"
+               ],
+               [
+                       AC_MSG_ERROR(zlib was not found or is not usable.  Please install zlib.)
+               ]
+       ,
+       )],
+       [
+               AC_MSG_ERROR(zlib.h was not found or is not usable.  Please install zlib.)
+       ]
+)
+CFLAGS="$saved_CFLAGS"
+
+dnl Here is the check for a libc integrated iconv
+AC_ARG_ENABLE(iconv,
+       [  --disable-iconv         do not use iconv charset conversion],
+       ok_iconv=no, ok_iconv=yes)
+
+AC_MSG_CHECKING(Checking to see if your system supports iconv)
+AC_TRY_RUN([
+       #include <iconv.h>
+       main() {
+               iconv_t ic = (iconv_t)(-1) ;
+               ic = iconv_open("UTF-8", "us-ascii");
+               iconv_close(ic);
+               exit(0);
+       }
+ ],
+               [
+                 ok_iconv=yes
+                 AC_MSG_RESULT([yes])
+               ],
+               [ 
+                 ok_iconv=no
+                 AC_MSG_RESULT([no])
+               ]
+)
+
+dnl Check for iconv in external libiconv
+if test "$ok_iconv" = no; then
+       AC_MSG_CHECKING(Checking for an external libiconv)
+       OLD_LDFLAGS="$LDFLAGS"
+       LDFLAGS="$LDFLAGS -liconv"
+       AC_TRY_RUN([
+                       #include <iconv.h>
+                       main() {
+                               iconv_t ic = (iconv_t)(-1) ;
+                               ic = iconv_open("UTF-8", "us-ascii");
+                               iconv_close(ic);
+                       }
+               ],
+                       [
+                         ok_iconv=yes
+                         AC_MSG_RESULT([yes])
+                       ],
+                       [ 
+                         ok_iconv=no
+                         LDFLAGS="$OLD_LDFLAGS"
+                         AC_MSG_RESULT([no])
+                       ]
+               )
+fi
+
+if test "$ok_iconv" != "no"; then
+       AC_MSG_RESULT(Citadel will be built with character set conversion.)
+       AC_DEFINE(HAVE_ICONV,[],[whether we have iconv for charset conversion])
+else
+       AC_MSG_RESULT(Citadel will be built without character set conversion.)
+fi
+
+AC_CHECK_LIB(intl, libintl_bindtextdomain, [LDFLAGS="$LDFLAGS -lintl"])
 
 AC_ARG_ENABLE(pie, [  --enable-pie            build position-independent executables])
 
 AC_ARG_WITH(pam, [  --with-pam              use PAM if present (see PAM.txt before you try this)])
 AC_ARG_WITH(kthread, [  --with-kthread          use kernel threads (on FreeBSD) (not recommended yet)])
-AC_ARG_WITH(db, [  --with-db@<:@=DIR@:>@         use Sleepycat DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
+AC_ARG_WITH(db, [  --with-db@<:@=DIR@:>@         use Berkeley DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
 AC_ARG_WITH(ssl,
        [  --with-ssl=PATH         Specify path to OpenSSL installation ],
        [
@@ -147,34 +253,15 @@ AC_ARG_WITH(ssl,
                fi
        ]
 )
-AC_ARG_WITH(ncurses, [  --without-ncurses       don't use ncurses])
-
-AC_ARG_WITH(with_zlib, [  --with-zlib             use zlib compression if present])
-AC_ARG_WITH(with_ldap, [  --with-ldap             use OpenLDAP client library])
-AC_ARG_WITH(with_libical, [  --with-libical          use libical calendaring library])
-AC_ARG_WITH(with_libsieve, [  --with-libsieve         use libsieve mail sorting library])
-AC_ARG_WITH(with_libdspam, [  --with-libdspam         use libdspam mail spam scanning library])
-AC_ARG_WITH(with_expat, [  --with-expat            use Expat XML parser])
 
 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
        db_dir="$with_db"
        with_db=yes
 else
        test -f /usr/local/lib/libdb.a -o -f /usr/local/lib/libdb.so \
-         -o -f /usr/local/lib/libdb4.a -o -f /usr/local/lib/libdb4.so \
          && db_dir=/usr/local
-
-       test -d /usr/local/BerkeleyDB.4.1 && db_dir=/usr/local/BerkeleyDB.4.1
-       test -d /usr/local/BerkeleyDB.4.2 && db_dir=/usr/local/BerkeleyDB.4.2
-       test -d /usr/local/BerkeleyDB.4.3 && db_dir=/usr/local/BerkeleyDB.4.3
-       test -d /usr/local/BerkeleyDB.4.4 && db_dir=/usr/local/BerkeleyDB.4.4
-       test -d /usr/local/BerkeleyDB.4.5 && db_dir=/usr/local/BerkeleyDB.4.5
 fi
 
-dnl By default, we only build the client (citadel and whobbs) unless we can
-dnl figure out how to build with POSIX threads.
-TARGETS=client
-
 AC_CANONICAL_HOST
 PTHREAD_DEFS=-D_REENTRANT
 AC_MSG_CHECKING([how to compile with POSIX threads])
@@ -195,7 +282,6 @@ case "$host" in
        dnl TCP buffering isn't ideal under OS X. This define should also be
        dnl checked in other cases of OS X-Linux differences.
        *-*-darwin*)
-               AC_DEFINE(DISABLE_CURSES,[],[define this to disable use of curses])
                AC_DEFINE(HAVE_DARWIN, [], [define if using OS X/Darwin])
                AC_MSG_RESULT([Mac OS X])
        ;;
@@ -258,7 +344,7 @@ if test "$GCC" = yes; then
                                CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS"
                        ;;
                        *)
-                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
+                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-strict-aliasing $PTHREAD_DEFS"
                        ;;
                esac
        fi
@@ -279,19 +365,21 @@ if test "x$enable_pie" = xyes; then
 fi
 
 AC_MSG_CHECKING([how to create dependancy checks])
-                if test -n "`$CC -V 2>&1 |grep Sun`"; then 
-                       DEPEND_FLAG=-xM;
-                else 
-                       DEPEND_FLAG=-M
-                fi
+        if test -n "`$CC -V 2>&1 |grep Sun`"; then 
+               DEPEND_FLAG=-xM;
+        else 
+               DEPEND_FLAG=-M
+         fi
 AC_SUBST(DEPEND_FLAG)
 
 
 AC_PROG_INSTALL
 AC_PROG_YACC
-dnl missing_dir=`cd $ac_aux_dir && pwd`
-dnl AC_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
-dnl AC_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AC_PATH_PROG(DIFF,diff)
+AC_PATH_PROG(PATCH,patch)
+missing_dir=`cd $ac_aux_dir && pwd`
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
 
 dnl Checks for system services.
 
@@ -301,6 +389,7 @@ AC_CHECK_SIZEOF(short, 0)
 AC_CHECK_SIZEOF(int, 0)
 AC_CHECK_SIZEOF(long, 0)
 AC_CHECK_SIZEOF(size_t, 0)
+AC_CHECK_SIZEOF(loff_t, 0)
 dnl AC_CHECK_SIZEOF(long long, 0)
 
 dnl Checks for libraries.
@@ -308,42 +397,56 @@ dnl Checks for libraries.
 dnl We want to test for the following in libc before checking for their
 dnl respective libraries, because some systems (like Irix) have both, and the
 dnl non-libc versions may be broken.
-AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r)
+AC_CHECK_FUNCS(crypt gethostbyname connect getpwnam_r getpwuid_r getloadavg)
 
+AC_CHECK_FUNCS(strftime_l uselocale gettext)
+
+if test "$ok_nls" != "no"; then
+       AC_CHECK_PROG(ok_xgettext, xgettext, yes, no)
+       ok_nls=$ok_xgettext
+fi
+
+if test "$ok_nls" != "no"; then
+       AC_CHECK_PROG(ok_msgmerge, msgmerge, yes, no)
+       ok_nls=$ok_msgmerge
+fi
+
+if test "$ok_nls" != "no"; then
+       AC_CHECK_PROG(ok_msgfmt, msgfmt, yes, no)
+       ok_nls=$ok_msgfmt
+fi
+
+if test "$ok_nls" != "no"; then
+       AC_MSG_RESULT(citadel will be built with national language support.)
+       AC_DEFINE(ENABLE_NLS, [], [whether we have NLS support])
+       PROG_SUBDIRS="$PROG_SUBDIRS po/citadel-setup"
+else
+       AC_MSG_RESULT(citadel will be built without national language support.)
+fi
 
 dnl disable backtrace if we don't want it.
 AC_ARG_WITH(backtrace, 
-                   [  --with-backtrace          enable backtrace dumps in the syslog],
-                       [ if test "x$withval" != "xno" ; then
-                            CFLAGS="$CFLAGS  -rdynamic "
-                            LDFLAGS="$LDFLAGS  -rdynamic "
-                            SERVER_LDFLAGS="$SERVER_LDFLAGS  -rdynamic "
-                             AC_CHECK_FUNCS(backtrace)
-                         fi
-                       ]
+    [  --with-backtrace        enable backtrace dumps in the syslog],
+       [ if test "x$withval" != "xno" ; then
+            CFLAGS="$CFLAGS  -rdynamic "
+            LDFLAGS="$LDFLAGS  -rdynamic "
+            SERVER_LDFLAGS="$SERVER_LDFLAGS  -rdynamic "
+                           AC_CHECK_FUNCS(backtrace)
+         fi
+       ]
 )
 
 dnl disable backtrace if we don't want it.
 AC_ARG_WITH(gprof, 
-                   [  --with-gprof          enable profiling],
-                       [ if test "x$withval" != "xno" ; then
-                            CFLAGS="$CFLAGS  -pg "
-                            LDFLAGS="$LDFLAGS  -pg "
-                            SERVER_LDFLAGS="$SERVER_LDFLAGS  -pg "
-                         fi
-                       ]
-)
-
-dnl disable thread table reporting
-AC_ARG_WITH(threadlog,
-               [ --with-threadlog      enable logging of thread table],
-                       [ if test "x$withval" != "xno" ; then
-                               AC_DEFINE(WITH_THREADLOG, [], [Define if you want logging of the thread tables.])
-                         fi
-                       ]
+           [  --with-gprof            enable profiling],
+               [ if test "x$withval" != "xno" ; then
+                    CFLAGS="$CFLAGS  -pg "
+                    LDFLAGS="$LDFLAGS  -pg "
+                    SERVER_LDFLAGS="$SERVER_LDFLAGS  -pg "
+                 fi
+               ]
 )
 
-
 if test "$ac_cv_func_gethostbyname" = no; then
        AC_CHECK_LIB(nsl, gethostbyname)
 fi
@@ -359,13 +462,11 @@ dnl Determine the system's authentication capabilities.
 dnl We currently support PAM, standard getpwnam(), and getspnam()
 dnl (Linux shadow passwords)
 
-       if test "$with_pam" = yes; then
-               save_LIBS=$LIBS
-               AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
-                       LIBS="-lpam $LIBS"])
-               AC_CHECK_FUNCS(pam_start)
-               test "$enable_chkpwd" != no && LIBS=$save_LIBS
-       fi
+save_LIBS=$LIBS
+AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
+       LIBS="-lpam $LIBS"])
+AC_CHECK_FUNCS(pam_start)
+test "$enable_chkpwd" != no && LIBS=$save_LIBS
        if test "$ac_cv_func_pam_start" = no -o "$with_pam" != yes; then
                save_LIBS=$LIBS
                AC_SEARCH_LIBS(getspnam, shadow, [
@@ -381,29 +482,6 @@ dnl (Linux shadow passwords)
                fi
        fi
 
-case "`uname -a`" in 
- OpenBSD*)
-       echo "we don't need to check for resolv on openbsd"  
-       ;;
- *)
-       test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
-       AC_CHECK_LIB(resolv, res_query,
-               RESOLV="$RESOLV -lresolv",
-               [
-                       AC_MSG_ERROR(libresolv was not found.  Citadel requires the resolver library.)
-               ]
-       )
-       ;;
-esac
-
-if test "x$with_ncurses" != "xno"; then
-       AC_SEARCH_LIBS(tgetent, [ncurses curses termcap])
-       AC_SEARCH_LIBS(scrollok, [ncurses curses])
-       AC_SEARCH_LIBS(initscr, [ncurses curses])
-else
-       AC_SEARCH_LIBS(tgetent, [curses termcap])
-       AC_SEARCH_LIBS(initscr, [curses])
-fi
 AC_CHECK_FUNCS(vw_printw wcolor_set resizeterm wresize)
 
 dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On
@@ -415,13 +493,47 @@ fi
 
 test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
 
+dnl Checks for the libical iCalendar library.
+AC_CHECK_HEADER(libical/ical.h,
+       [AC_CHECK_LIB(ical, icaltimezone_set_tzid_prefix,
+               [
+                       SERVER_LIBS="-lical $SERVER_LIBS"
+               ],
+               [
+                       AC_MSG_ERROR(libical was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+               ]
+       ,
+       )],
+       [
+               AC_MSG_ERROR(libical/ical.h was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+       ]
+)
+
 
+dnl Checks for the libsieve mailbox sorting library.
+AC_CHECK_HEADER(sieve2.h,
+       [AC_CHECK_LIB(sieve, sieve2_license,
+               [
+                       SERVER_LIBS="-lsieve $SERVER_LIBS"
+               ],
+               [
+                       AC_MSG_ERROR(libsieve was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+               ]
+       ,
+       )],
+       [
+               AC_MSG_ERROR(sieve2.h was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+       ]
+)
+
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $SERVER_LIBS"
 dnl Check for libcitadel
 AC_CHECK_HEADER(libcitadel.h,
        [AC_CHECK_LIB(citadel, libcitadel_version_string,
                [
-                       AC_MSG_RESULT(OK)
-                       LIBS="-lcitadel $LIBS"
+                       LIBS="-lcitadel $LIBS $SERVER_LIBS"
+                       chkpwd_LIBS="-lcitadel $chkpwd_LIBS"
                ],
                [
                        AC_MSG_ERROR(libcitadel was not found or is not usable.  Please install libcitadel.)
@@ -432,7 +544,7 @@ AC_CHECK_HEADER(libcitadel.h,
                AC_MSG_ERROR(libcitadel.h was not found or is not usable.  Please install libcitadel.)
        ]
 )
-
+CFLAGS="$saved_CFLAGS"
 
 
 # The big search for OpenSSL
@@ -550,20 +662,14 @@ if test "x$with_db" != xno; then
 
        dblib=""
 
-       if test -d "$db_dir/include/db4"; then
-               CPPFLAGS="$CPPFLAGS -I$db_dir/include/db4"
-               dblib="db4"
-       elif test "$db_dir"; then
+       if test "$db_dir"; then
                CPPFLAGS="$CPPFLAGS -I$db_dir/include"
-       elif test -d /usr/include/db4; then
-               CPPFLAGS="$CPPFLAGS -I/usr/include/db4"
-               dblib="db4"
        fi
 
 
-       AC_CHECK_DB([db db-4.1 db-4 db4],
+       AC_CHECK_DB([db],
                    [
-                    DATABASE=database_sleepycat.c
+                    DATABASE=database.c
                    ],
                    AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
                                  library.  Use --with-db=PATH to specify
@@ -571,120 +677,56 @@ if test "x$with_db" != xno; then
 
 fi
 
-dnl Checks for the zlib compression library.
-if test "x$with_zlib" != xno ; then
-       AC_CHECK_HEADERS(zlib.h,
-               [AC_CHECK_LIB(z, zlibVersion,
-                       [ok_zlib=yes],,
-       )])
-fi
-
-if test "x$ok_zlib" = xyes ; then
-       SERVER_LIBS="-lz $SERVER_LIBS"
-       AC_DEFINE(HAVE_ZLIB, [], [define this if you have zlib compression available])
-fi
-
-
-
 
 dnl Checks for the OpenLDAP client library.
-if test "x$with_ldap" != xno ; then
-       AC_CHECK_HEADERS(ldap.h,
-               [AC_CHECK_LIB(ldap, ldap_init,
-                       [ok_ldap=yes],,
-       )])
-fi
-
-if test "x$ok_ldap" = xyes ; then
-       SERVER_LIBS="-lldap $SERVER_LIBS"
-       AC_DEFINE(HAVE_LDAP, [], [define this if you have OpenLDAP client available])
-fi
-
-
-
-
-
-dnl Checks for the libsieve mailbox sorting library.
-if test "x$with_libsieve" != xno ; then
-       AC_CHECK_HEADERS(sieve2.h,
-               [AC_CHECK_LIB(sieve, sieve2_license,
-                       [ok_libsieve=yes],,
-       )])
-fi
-
-if test "x$ok_libsieve" = xyes ; then
-       SERVER_LIBS="-lsieve $SERVER_LIBS"
-       AC_DEFINE(HAVE_LIBSIEVE, [], [define this if you have the libsieve mailbox filtering library available])
-fi
-
-
-dnl Checks for the libdspam mail spam scanning library.
-if test "x$with_libdspam" != xno ; then
-       AC_CHECK_HEADERS(dspam/libdspam.h,
-               [AC_CHECK_LIB(dspam, dspam_init,
-                       [ok_libdspam=yes],,
-       )])
-fi
-
-if test "x$ok_libdspam" = xyes ; then
-       SERVER_LIBS="-ldspam $SERVER_LIBS"
-       AC_DEFINE(HAVE_LIBDSPAM, [], [define this if you have the libdspam mail spam scanning library available])
-fi
-
-
+AC_CHECK_HEADER(ldap.h,
+       [AC_CHECK_LIB(ldap, ldap_initialize,
+               [
+                       SERVER_LIBS="-lldap $SERVER_LIBS"
+               ],
+               [
+                       AC_MSG_ERROR(OpenLDAP development library was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+               ]
+       ,
+       )],
+       [
+               AC_MSG_ERROR(OpenLDAP development headers were not found and are required.  More info: http://www.citadel.org/doku.php/installation:start)
+       ]
+)
 
 
 dnl Checks for the Expat XML parser.
-if test "x$with_expat" != xno ; then
-       AC_CHECK_HEADERS(expat.h,
-               [AC_CHECK_LIB(expat, XML_ParserCreateNS,
-                       [ok_expat=yes],,
-       )])
-fi
-
-if test "x$ok_expat" = xyes ; then
-       SERVER_LIBS="-lexpat $SERVER_LIBS"
-       AC_DEFINE(HAVE_EXPAT, [], [define this if you have the Expat XML parser available])
-fi
-
-
-
-
-dnl Checks for the libical calendaring library.
-if test "x$with_libical" != xno ; then
-       AC_CHECK_HEADERS(ical.h,
-               [AC_CHECK_LIB(ical, icalcomponent_new,
-                       [ok_libical=yes],,
-       )])
-fi
-
-if test "x$ok_libical" = xyes ; then
-
-       AC_TRY_RUN(
+AC_CHECK_HEADER(expat.h,
+       [AC_CHECK_LIB(expat, XML_ParserCreateNS,
                [
-#include <ical.h>
-main() {
-        int major, minor, v;
-        sscanf(ICAL_VERSION, "%d.%d", &major, &minor);
-        v = 100*major + minor;
-        printf("libical version: %i\n", v);
-        if (v >= 24) {
-                printf("This version is ok.\n");
-               return(0);
-       }
-       printf("libical 0.24 or newer required.\n");
-       printf("Citadel will be built without calendar support.\n");
-       return(1);
-}
-               ], 
+                       SERVER_LIBS="-lexpat $SERVER_LIBS"
+               ],
                [
-                       SERVER_LIBS="-lical $SERVER_LIBS"
-                       AC_DEFINE(HAVE_LIBICAL, [], [define this if you have the libical calendaring library available])
+                       AC_MSG_ERROR(The Expat XML parser was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
                ]
-       )
-fi
+       ,
+       )],
+       [
+               AC_MSG_ERROR(expat.h was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+       ]
+)
 
 
+dnl Checks for libcurl.
+AC_CHECK_HEADER(curl/curl.h,
+       [AC_CHECK_LIB(curl, curl_version,
+               [
+                       SERVER_LIBS="-lcurl $SERVER_LIBS"
+               ],
+               [
+                       AC_MSG_ERROR(libcurl was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+               ]
+       ,
+       )],
+       [
+               AC_MSG_ERROR(curl/curl.h was not found and is required.  More info: http://www.citadel.org/doku.php/installation:start)
+       ]
+)
 
 
 dnl Checks for header files.
@@ -696,15 +738,7 @@ dnl
 dnl TODO: for the DB header checks, we should check whether the headers
 dnl define db_env_create, somehow
 dnl
-AC_CHECK_HEADERS(curses.h dl.h fcntl.h limits.h malloc.h termios.h sys/ioctl.h sys/select.h sys/stat.h sys/time.h sys/prctl.h syslog.h unistd.h utmp.h utmpx.h paths.h db.h db4/db.h pthread.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h)
-
-dnl
-dnl need to check if this is actually compilable, sometimes there are
-dnl conflicts with the system's headers (eg solaris xpg4 style headers)
-dnl
-if test "x$with_ncurses" != xno; then
-       AC_CHECK_HEADERS(ncurses.h,,,[ ])
-fi
+AC_CHECK_HEADERS(dl.h fcntl.h limits.h malloc.h termios.h sys/ioctl.h sys/select.h sys/stat.h sys/time.h sys/prctl.h syslog.h unistd.h utmp.h utmpx.h paths.h db.h pthread.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h syscall.h sys/syscall.h)
 
 AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H, [], [define this if you have the resolv.h header file.]),,
 [#ifdef HAVE_SYS_TYPES_H
@@ -762,27 +796,38 @@ else
        AC_DEFINE(F_XPID_T, "%x",  [whats the matching format string for xpid_t?])
 fi
 
-dnl AC_CHECK_FUNCS(res_query)
-AC_CACHE_CHECK([for the resolver calls], 
-              ac_cv_resquery_ok, 
-[AC_TRY_COMPILE([#include <netinet/in.h>
-#include <sys/types.h>
-#include <arpa/nameser.h>
-#include <resolv.h>], 
-               [
-                       char *domain="www.google.com";
-                       u_char *answer;
-                       int len;
-                       len = res_query( domain, C_IN, T_A, answer, PACKETSZ );
-               ],
-                ac_cv_resquery_ok=yes,
-               ac_cv_resquery_ok=no)
-])
-echo "resquery: $ac_cv_resquery_ok"
 
-dnl if test "$ac_cv_resquery_ok" = "no" ; then
-dnl    AC_DEFINE(RES_QUERY_GONE, "#error resquery not here. can't continue.")
-dnl fi
+dnl Our own happy little check for the resolver library.
+
+case "`uname -a`" in 
+ OpenBSD*)
+       echo "we don't need to check for resolv on openbsd"  
+       ;;
+ FreeBSD*)
+       echo "we don't need to check for resolv on freeBSD"  
+       ;;
+ *)
+       test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
+       AC_CHECK_LIB(resolv, res_query,
+               RESOLV="$RESOLV -lresolv",
+               [dnl Have to include resolv.h as res_query is sometimes defined as a macro
+                       AC_MSG_CHECKING([for res_query in -lresolv (with resolv.h if present)])
+                       saved_libs="$LIBS"
+                       LIBS="-lresolv $LIBS"
+                       AC_TRY_LINK([
+                               #ifdef HAVE_RESOLV_H
+                               #include <resolv.h>
+                               #endif],
+                               [res_query(0,0,0,0,0)],
+                               [AC_MSG_RESULT(yes)
+                                               have_res_query=yes],
+                               [AC_MSG_RESULT(no)
+                                       AC_MSG_ERROR(libresolv was not found.  Citadel requires the resolver library.)
+                               ])
+         ]
+       )
+       ;;
+esac
 
 
 
@@ -835,14 +880,9 @@ AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create,
 #endif],
 ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)])
 if test "$ac_cv_func_pthread_create" = yes; then
-       test "$DATABASE" && TARGETS="client server utils"
-       if test "x$enable_threaded_client" != xno; then
-               AC_DEFINE(THREADED_CLIENT, [], [define this if you want to enable the multithreaded client])
-       fi
+       test "$DATABASE" && TARGETS="server utils"
 fi
 
-AC_REPLACE_FUNCS(snprintf getutline)
-
 AC_CACHE_CHECK([the weather], ac_cv_weather, [
        sleep 1
        echo $ECHO_N "opening your window... $ECHO_C" >&6
@@ -882,8 +922,10 @@ AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [
        esac
        ])
 
+
+STRUCT_UCRED
+
 dnl Done! Now write the Makefile and sysdep.h
-AC_SUBST(AUTH)
 AC_SUBST(RESOLV)
 AC_SUBST(chkpwd_LIBS)
 AC_SUBST(TARGETS)
@@ -891,21 +933,45 @@ AC_SUBST(DATABASE)
 AC_SUBST(SERVER_LDFLAGS)
 AC_SUBST(SERVER_LIBS)
 AC_SUBST(SETUP_LIBS)
-AC_CONFIG_HEADER(sysdep.h)
+AC_SUBST(DIFF)
+AC_SUBST(PATCH)
 AC_CONFIG_FILES([Makefile])
-AC_OUTPUT(database_cleanup.sh)
+AC_OUTPUT(database_cleanup.sh po/citadel-setup/Makefile)
 
 if test -z "$DATABASE"; then
        AC_MSG_WARN([No database driver was found. Please install Berkeley DB.])
 fi
 
+abs_srcdir="`cd $srcdir && pwd`"
+abs_builddir="`pwd`"
+if test "$abs_srcdir" != "$abs_builddir"; then
+   ln -sf $abs_srcdir/include $abs_builddir
+   ln -sf $abs_srcdir/Make_sources $abs_builddir
+   ln -sf $abs_srcdir/Make_modules $abs_builddir
+   for i in $abs_srcdir/*.h ; do
+      if test "$abs_srcdir/sysdep.h" != "$i"; then
+         ln -sf $i $abs_builddir
+      fi
+   done
+   for d in `/bin/ls $abs_srcdir/modules/`; do 
+       (mkdir -p $abs_builddir/modules/$d) 
+   done
+   if test -d "$abs_srcdir/user_modules/"; then
+      for d in `/bin/ls $abs_srcdir/user_modules/`; do 
+       (mkdir -p $abs_builddir/user_modules/$d) 
+       done
+   fi
+   mkdir -p $abs_builddir/utils
+   mkdir -p $abs_builddir/utillib
+fi
+
+if test -n "$srcdir"; then 
+   export srcdir=.
+fi
+
+
 echo ------------------------------------------------------------------------
-echo 'zlib compression:                ' $ok_zlib
-echo 'Calendar support:                ' $ok_libical
-echo 'LDAP support:                    ' $ok_ldap
-echo 'Sieve mailbox filtering support: ' $ok_libsieve
-echo 'DSpam Scanning support:          ' $ok_libdspam
-echo 'Expat XML parser present:        ' $ok_expat
+echo 'Character set conversion support:' $ok_iconv
 echo 
 echo 'Note: if you are not using Linux, make sure you are using GNU make'
 echo '(gmake) to compile Citadel.'