* Move to GPL v3
[citadel.git] / citadel / configure.ac
index ff0248f4ebf5949070949e4282d3a34a72189666..aff40386de8a1d9a66d750d93089c5baff5a104a 100644 (file)
 dnl Process this file with autoconf to produce a configure script.
 dnl $Id$
 AC_PREREQ(2.52)
-AC_INIT([Citadel/UX], [6.02], [http://uncensored.citadel.org/])
-AC_REVISION([$Revision$])
+AC_INIT([Citadel], [7.11], [http://www.citadel.org/])
+AC_REVISION([$Revision: 5108 $])
 AC_CONFIG_SRCDIR([citserver.c])
 AC_PREFIX_DEFAULT(/usr/local/citadel)
 if test "$prefix" = NONE; then
-       AC_DEFINE_UNQUOTED(BBSDIR, "$ac_default_prefix")
+       AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix", [define this to the Citadel home directory])
+       ssl_dir="$ac_default_prefix/keys"
 else
-       AC_DEFINE_UNQUOTED(BBSDIR, "$prefix")
+       AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory])
+       ssl_dir="$prefix/keys"
 fi
 
-AC_ARG_ENABLE(autologin, [  --disable-autologin     disable autologin (default is enabled if possible)])
-AC_ARG_ENABLE(chkpwd, [  --disable-chkpwd        don't build 'chkpwd'])
+
+dnl Make sure we see all GNU and Solaris extensions.
+AC_GNU_SOURCE
+
+
+dnl Checks for the Datadir
+AC_ARG_WITH(datadir, 
+                   [  --with-datadir          directory to store the databases under],
+                       [ if test "x$withval" != "xno" ; then
+                                             AC_DEFINE(HAVE_DATA_DIR,[],[use alternate database location?])
+                                             AC_DEFINE_UNQUOTED(DATA_DIR, "$withval",[define, if the user suplied a data-directory to use.])
+                                             MAKE_DATA_DIR=$withval
+                                             AC_SUBST(MAKE_DATA_DIR)
+                         fi
+                       ]
+)
+
+dnl Checks for the Datadir
+AC_ARG_WITH(staticdatadir, 
+                   [  --with-staticdatadir    directory to store citadels system messages under],
+                       [ if test "x$withval" != "xno" ; then
+                                                 AC_DEFINE(HAVE_STATICDATA_DIR, [], [should we activate an alternate static text location?])
+                                                 AC_DEFINE_UNQUOTED(STATICDATA_DIR, "$withval", [where do we put our static text data?])
+                                                 MAKE_STATICDATA_DIR=$withval
+                                                 AC_SUBST(MAKE_STATICDATA_DIR)
+                         fi
+                       ]
+)
+
+
+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],
+                       [ if test "x$withval" != "xno" ; then
+                                             
+                                                 ssl_dir="$withval"
+                         fi
+                       AC_SUBST(MAKE_SSL_DIR)
+                       ]
+)
+AC_DEFINE_UNQUOTED(SSL_DIR, "$ssl_dir", [were should we put our keys?])
+
+
+dnl Checks for the spooldir
+AC_ARG_WITH(spooldir, 
+                       [  --with-spooldir         directory to keep queues under],
+                       [ if test "x$withval" != "xno" ; then
+                                               AC_DEFINE(HAVE_SPOOL_DIR, [], [enable alternate spool dir?])
+                                               AC_DEFINE_UNQUOTED(SPOOL_DIR,"$withval", [where do we place our spool dirs?])
+                                               MAKE_SPOOL_DIR=$withval
+                                               AC_SUBST(MAKE_SPOOL_DIR)
+                          fi
+                       ]
+)
+
+
+dnl Checks for the Configdir
+AC_ARG_WITH(sysconfdir, 
+                       [  --with-sysconfdir       directory to store the configs under],
+                       [ if test "x$withval" != "xno" ; then
+                                           AC_DEFINE(HAVE_ETC_DIR, [], [should we search our system config in an alternate place?])
+                                               AC_DEFINE_UNQUOTED(ETC_DIR, "$withval", [where to search our config files])
+                                               MAKE_ETC_DIR=$withval
+                                               AC_SUBST(MAKE_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],
+                       [ 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])
+                                               MAKE_UTILBIN_DIR=$withval
+                                               AC_SUBST(MAKE_UTILBIN_DIR)
+                         fi
+                       ]
+)
+
+
+dnl Checks for the run-dir for the sockets
+AC_ARG_WITH(rundir, 
+                       [  --with-rundir           directory to place runtime files (UDS) to?],
+                       [ if test "x$withval" != "xno" ; then
+                                           AC_DEFINE(HAVE_RUN_DIR, [], [should we put our non volatile files elsewhere?])
+                                               AC_DEFINE_UNQUOTED(RUN_DIR, "$withval", [define, where the config should go in unix style])
+                                               MAKE_RUN_DIR=$withval
+                                               AC_SUBST(MAKE_RUN_DIR)
+                         fi
+                       ]
+)
+
+
+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],
+                       [ if test "x$withval" != "xno" ; then
+                                               AC_DEFINE_UNQUOTED(EGD_POOL, "$withval", [the socket from Pseudo Random Generator])
+                         fi
+                       ]
+)
+
+
+AC_ARG_WITH(docdir,
+                       [  --with-docdir           where to install the documentation. default: /usr/local/citadel/],
+                       [ if test "x$withval" != "xno" ; then
+                                       MAKE_DOC_DIR=$withval
+                                       AC_SUBST(MAKE_DOC_DIR)
+                         fi
+                       ]
+)
+
+
 
 AC_ARG_ENABLE(threaded-client, [  --disable-threaded-client
                          disable multithreaded client])
 
+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(gdbm, [  --with-gdbm@<:@=DIR@:>@       use GDBM @<:@DIR=/usr/local@:>@])
 AC_ARG_WITH(db, [  --with-db@<:@=DIR@:>@         use Sleepycat DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
 AC_ARG_WITH(ssl,
-       [  --with-ssl=PATH     Specify path to OpenSSL installation ],
+       [  --with-ssl=PATH         Specify path to OpenSSL installation ],
        [
                if test "x$withval" != "xno" ; then
                        tryssldir=$withval
@@ -32,12 +150,9 @@ AC_ARG_WITH(ssl,
 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])
-
-if test "x$with_gdbm" != xno -a "x$with_gdbm" != xyes -a "$with_gdbm"; then
-       db_dir="$with_gdbm"
-       with_gdbm=yes
-fi
+AC_ARG_WITH(with_libsieve, [  --with-libsieve         use libsieve mail sorting library])
 
 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
        db_dir="$with_db"
@@ -45,16 +160,11 @@ if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
 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 \
-         -o -f /usr/local/lib/libdb3.a -o -f /usr/local/lib/libdb3.so && db_dir=/usr/local
-
-       test -d /usr/local/BerkeleyDB.3.1 && db_dir=/usr/local/BerkeleyDB.3.1
-       test -d /usr/local/BerkeleyDB.3.2 && db_dir=/usr/local/BerkeleyDB.3.2
-       test -d /usr/local/BerkeleyDB.3.3 && db_dir=/usr/local/BerkeleyDB.3.3
-       test -d /usr/local/BerkeleyDB.4.0 && db_dir=/usr/local/BerkeleyDB.4.0
-fi
+         && db_dir=/usr/local
 
-if test "x$with_gdbm" = xyes -a "x$with_db" = xyes; then
-       AC_MSG_ERROR(can't enable both gdbm and db)
+       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
 fi
 
 dnl By default, we only build the client (citadel and whobbs) unless we can
@@ -63,20 +173,27 @@ TARGETS=client
 
 AC_CANONICAL_HOST
 PTHREAD_DEFS=-D_REENTRANT
+AC_MSG_CHECKING([how to compile with POSIX threads])
 case "$host" in
        dnl BSDI 3.0 wants relocatable object modules instead of shared libs
        dnl for dlopen(), and has a wrapper script to link with shared libs.
        dnl Also has stupid non-reentrant gethostbyaddr() and friends.
        *-*-bsdi[123]*)
                test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2
-               AC_DEFINE(HAVE_NONREENTRANT_NETDB)
+               AC_DEFINE(HAVE_NONREENTRANT_NETDB,[], [define this if the OS has broken non-reentrant gethostby{name,addr}() ])
+               AC_MSG_RESULT([Old BSDI])
        ;;
        *-*-bsdi*)
-               AC_DEFINE(HAVE_NONREENTRANT_NETDB)
+               AC_DEFINE(HAVE_NONREENTRANT_NETDB, [], [define this if the OS has broken non-reentrant gethostby{name,addr}() ])
+               AC_MSG_RESULT([BSD/OS])
        ;;
        dnl Curses support on Mac OS X is kind of screwed at the moment.
+       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)
+               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])
        ;;
        dnl Digital Unix has an odd way to build for pthreads, and we can't
        dnl build pthreads programs with gcc due to header problems.
@@ -84,6 +201,7 @@ case "$host" in
                test -z "$CC" && CC=cc
                LIBS="-lpthread -lexc $LIBS"
                check_pthread=no
+               AC_MSG_RESULT([Tru64 or Digital UNIX])
        ;;
        dnl FreeBSD is similar to Digital UNIX with DEC C, which has a -pthread flag:
        *-*-freebsd*)
@@ -94,33 +212,66 @@ case "$host" in
                fi
                check_pthread=no
                PTHREAD_DEFS=-D_THREAD_SAFE
+               AC_MSG_RESULT([FreeBSD])
        ;;
        *-*-openbsd*)
                LIBS="-pthread $LIBS"
                check_pthread=no
                PTHREAD_DEFS=-pthread
+               AC_MSG_RESULT([OpenBSD])
+       ;;
+       *-*-linux*)
+               PTHREAD_DEFS="-D_REENTRANT -pthread"
+               AC_MSG_RESULT([Linux])
        ;;
        *-*-solaris*)
                PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS"
+               AC_MSG_RESULT([Solaris])
+       ;;
+       *-*-cygwin*)
+               SERVER_LDFLAGS="-Wl,-subsystem,windows"
+               AC_MSG_RESULT([Cygwin])
+       ;;
+       *)
+               AC_MSG_RESULT([default])
        ;;
 esac
-DEFS="$DEFS $PTHREAD_DEFS"
+dnl DEFS="$DEFS $PTHREAD_DEFS"
+
 
 dnl Checks for programs.
 AC_PROG_CC
 
 dnl Set up system-dependent compiler flags.
 if test "$GCC" = yes; then
-       case "$host" in
-               *-*-solaris*|alpha*-dec-osf*)
-                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts"
-               ;;
-               *)
-                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes"
-               ;;
-       esac
+       if test "$CC" = icc; then
+               CFLAGS="$CFLAGS -w1"
+       else
+               case "$host" in
+                       *-*-solaris*|alpha*-dec-osf*)
+                               CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS"
+                       ;;
+                       *)
+                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
+                       ;;
+               esac
+       fi
+fi
+
+if test "x$enable_pie" = xyes; then
+       save_CFLAGS="$CFLAGS"
+       save_LDFLAGS="$LDFLAGS"
+       CFLAGS="$CFLAGS -fpie"
+       LDFLAGS="$LDFLAGS -pie -fpie"
+       AC_CACHE_CHECK([whether compiler accepts -pie -fpie], ac_cv_pie_fpie,
+       [AC_TRY_LINK([], [],
+       ac_cv_pie_fpie=yes, ac_cv_pie_fpie=no)])
+       if test $ac_cv_pie_fpie = no; then
+               CFLAGS="$save_CFLAGS"
+               LDFLAGS="$save_LDFLAGS"
+       fi
 fi
-AC_DISABLE_STATIC
+
 AC_PROG_INSTALL
 AC_PROG_YACC
 missing_dir=`cd $ac_aux_dir && pwd`
@@ -154,10 +305,10 @@ fi
 dnl Check for Solaris realtime support
 AC_CHECK_LIB(rt, sched_yield)
 
-dnl Determine the system's authentication capabilities, if autologin is
-dnl requested. We currently support PAM, standard getpwnam(), and getspnam()
+dnl Determine the system's authentication capabilities.
+dnl We currently support PAM, standard getpwnam(), and getspnam()
 dnl (Linux shadow passwords)
-if test "$enable_autologin" != no; then
+
        if test "$with_pam" = yes; then
                save_LIBS=$LIBS
                AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
@@ -179,16 +330,6 @@ if test "$enable_autologin" != no; then
                                        LIBS="-lcrypt $LIBS"])
                fi
        fi
-       if test "$ac_cv_func_crypt" = yes -o "$ac_cv_lib_crypt_crypt" = yes -o "$ac_cv_func_pam_start" = yes; then
-               AC_DEFINE(ENABLE_AUTOLOGIN)
-               if test "$enable_chkpwd" != no; then
-                       AC_DEFINE(ENABLE_CHKPWD)
-                       CHKPWD=chkpwd
-               else
-                       AUTH=auth.lo
-               fi
-       fi
-fi
 
 test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
 AC_CHECK_LIB(resolv, res_query, RESOLV="$RESOLV -lresolv")
@@ -210,6 +351,8 @@ if test "$check_pthread" != no; then
        AC_CHECK_LIB(pthreads, pthread_create)
 fi
 
+test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
+
 # The big search for OpenSSL
 if test "$with_ssl" != "no"; then
        saved_LIBS="$LIBS"
@@ -291,7 +434,7 @@ if test "$with_ssl" != "no"; then
        CFLAGS="$saved_CFLAGS"
        
        if test "x$ac_cv_openssldir" != "xno" ; then
-               AC_DEFINE(HAVE_OPENSSL)
+               AC_DEFINE(HAVE_OPENSSL, [], [Define if you have OpenSSL.])
                LIBS="-lssl -lcrypto $LIBS"
                dnl Need to recover ssldir - test above runs in subshell
                ssldir=$ac_cv_openssldir
@@ -320,7 +463,7 @@ if test "$with_ssl" != "no"; then
        fi
 fi
 
-if test "x$with_db" != xno -a "x$with_gdbm" != xyes; then
+if test "x$with_db" != xno; then
        test "$db_dir" && LDFLAGS="$LDFLAGS -L$db_dir/lib"
 
        dblib=""
@@ -328,40 +471,24 @@ if test "x$with_db" != xno -a "x$with_gdbm" != xyes; then
        if test -d "$db_dir/include/db4"; then
                CPPFLAGS="$CPPFLAGS -I$db_dir/include/db4"
                dblib="db4"
-       elif test -d "$db_dir/include/db3"; then
-               CPPFLAGS="$CPPFLAGS -I$db_dir/include/db3"
-               dblib="db3"
        elif 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"
-       elif test -d /usr/include/db3; then
-               CPPFLAGS="$CPPFLAGS -I/usr/include/db3"
-               dblib="db3"
        fi
 
-       AC_SEARCH_LIBS(db_env_create, [$dblib db db4 db3], [
-               DATABASE=database_sleepycat.c
-               with_gdbm=no
-       ])
-
-fi
-
-if test "x$with_gdbm" != xno -a "x$with_db" != xyes; then
-       test -f /usr/local/lib/libgdbm.a -o -f /usr/local/lib/libgdbm.so && db_dir=/usr/local
-       test "$db_dir" && LDFLAGS="$LDFLAGS -L$db_dir/lib"
 
-       test "$db_dir" && CPPFLAGS="$CPPFLAGS -I$db_dir/include"
+       AC_CHECK_DB([db db-4.1 db-4 db4],
+                   [
+                    DATABASE=database_sleepycat.c
+                   ],
+                   AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
+                                 library.  Use --with-db=PATH to specify
+                                 the path]]))
 
-        AC_CHECK_LIB(gdbm, gdbm_open,
-                [LIBS="-lgdbm $LIBS"
-                DATABASE=database.c
-                with_db=no])
 fi
 
-
-
 dnl Checks for the zlib compression library.
 if test "x$with_zlib" != xno ; then
        AC_CHECK_HEADERS(zlib.h,
@@ -371,10 +498,44 @@ if test "x$with_zlib" != xno ; then
 fi
 
 if test "x$ok_zlib" = xyes ; then
-       LIBS="-lz $LIBS"
-       AC_DEFINE(HAVE_ZLIB)
+       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 libical calendaring library.
@@ -391,14 +552,12 @@ if test "x$ok_libical" = xyes ; then
                [
 #include <ical.h>
 main() {
-       float v;
-       int i;
-       sscanf(ICAL_VERSION, "%f", &v);
-       printf("libical version: %0.2f\n", v);
-       v = v * 100.0;
-       i = (int) v;
-       if (i >= 24) {
-               printf("This version is ok.\n");
+        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");
@@ -407,14 +566,15 @@ main() {
 }
                ], 
                [
-                       LIBS="-lical $LIBS"
-                       AC_DEFINE(HAVE_LIBICAL)
+                       SERVER_LIBS="-lical $SERVER_LIBS"
+                       AC_DEFINE(HAVE_LIBICAL, [], [define this if you have the libical calendaring library available])
                ]
        )
 fi
 
 
 
+
 dnl Checks for header files.
 AC_HEADER_DIRENT
 AC_HEADER_STDC
@@ -424,7 +584,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/time.h syslog.h unistd.h utmp.h utmpx.h paths.h db.h db3/db.h db4/db.h pthread.h netinet/in.h arpa/nameser.h)
+AC_CHECK_HEADERS(curses.h dl.h fcntl.h limits.h malloc.h termios.h sys/ioctl.h sys/select.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
@@ -434,7 +594,7 @@ if test "x$with_ncurses" != xno; then
        AC_CHECK_HEADERS(ncurses.h,,,[ ])
 fi
 
-AC_CHECK_HEADER(resolv.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
 #include <sys/types.h>
 #endif
@@ -445,8 +605,6 @@ AC_CHECK_HEADER(resolv.h,,,
 #include <arpa/nameser.h>
 #endif])
 
-AC_SUBST(SMTP)
-AC_SUBST(DOMAIN)
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -462,15 +620,65 @@ AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type,
 #include <utmp.h>], [struct utmp ut; ut.ut_type;],
 ac_cv_struct_ut_type=yes, ac_cv_struct_ut_type=no)])
 if test $ac_cv_struct_ut_type = yes; then
-       AC_DEFINE(HAVE_UT_TYPE)
+       AC_DEFINE(HAVE_UT_TYPE, [], [define this if struct utmp has an ut_type member])
+fi
+
+AC_CACHE_CHECK(
+       [for call semantics from getpwuid_r], 
+       ac_cv_call_getpwuid_r,
+       [AC_TRY_COMPILE([#include <sys/types.h>
+#include <pwd.h>], 
+                         [
+                               struct passwd pw, *pwp;
+                               char pwbuf[64];
+                               uid_t uid;
+
+                               getpwuid_r(uid, &pw, pwbuf, sizeof(pwbuf), &pwp);
+                       ],
+                       ac_cv_call_getpwuid_r=yes, 
+                       ac_cv_call_getpwuid_r=no)
+       ])
+
+if test $ac_cv_call_getpwuid_r = no; then
+       AC_DEFINE(SOLARIS_GETPWUID,[],[do we need to use solaris call syntax?])
+       AC_DEFINE(F_UID_T, "%ld", [whats the matching format string for uid_t?])
+       AC_DEFINE(F_PID_T, "%ld",  [whats the matching format string for pid_t?])
+       AC_DEFINE(F_XPID_T, "%lx",  [whats the matching format string for xpid_t?])
+else
+       AC_DEFINE(F_UID_T, "%d",  [whats the matching format string for uid_t?])
+       AC_DEFINE(F_PID_T, "%d",  [whats the matching format string for pid_t?])
+       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 <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
+
+
+
 AC_CACHE_CHECK([for ut_host in struct utmp], ac_cv_struct_ut_host,
 [AC_TRY_COMPILE([#include <sys/types.h>
 #include <utmp.h>], [struct utmp ut; ut.ut_host;],
 ac_cv_struct_ut_host=yes, ac_cv_struct_ut_host=no)])
 if test $ac_cv_struct_ut_host = yes; then
-       AC_DEFINE(HAVE_UT_HOST)
+       AC_DEFINE(HAVE_UT_HOST, [], [define this if struct utmp has an ut_host member])
 fi
 
 dnl Checks for library functions.
@@ -499,7 +707,7 @@ AC_CACHE_CHECK([for pthread_cancel], ac_cv_func_pthread_cancel,
 #endif],
 ac_cv_func_pthread_cancel=yes, ac_cv_func_pthread_cancel=no)])
 if test "$ac_cv_func_pthread_cancel" = yes; then
-       AC_DEFINE(HAVE_PTHREAD_CANCEL)
+       AC_DEFINE(HAVE_PTHREAD_CANCEL, [], [define this if you have the pthread_cancel() function])
 fi
 
 AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create,
@@ -516,35 +724,37 @@ 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)
+               AC_DEFINE(THREADED_CLIENT, [], [define this if you want to enable the multithreaded client])
        fi
 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
-#      sleep 2
-#      month=`date | cut -f 2 -d ' '`
-#      case $month in
-#      Dec | Jan | Feb)
-#              ac_cv_weather="it's cold!"
-#              ;;
-#      Mar | Apr)
-#              ac_cv_weather="it's wet!"
-#              ;;
-#      Jul | Aug)
-#              ac_cv_weather="it's hot!"
-#              ;;
-#      Oct | Nov)
-#              ac_cv_weather="it's cool"
-#              ;;
-#      May | Jun | Sep | *)
-#              ac_cv_weather="it's fine"
-#              ;;
-#      esac
-#      ])
+AC_CACHE_CHECK([the weather], ac_cv_weather, [
+       sleep 1
+       echo $ECHO_N "opening your window... $ECHO_C" >&6
+       sleep 2
+       month=`date | cut -f 2 -d ' '`
+       case $month in
+       Dec | Jan | Feb)
+               ac_cv_weather="it's cold!"
+               ;;
+       Mar | Apr)
+               ac_cv_weather="it's wet!"
+               ;;
+       Jul | Aug)
+               ac_cv_weather="it's hot!"
+               ;;
+       Oct | Nov)
+               ac_cv_weather="it's cool"
+               ;;
+       May | Jun | Sep | *)
+               ac_cv_weather="it's fine"
+               ;;
+       esac
+       ])
+
+
 
 AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [
        number=`date | cut -c 19`
@@ -560,22 +770,27 @@ AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [
 
 dnl Done! Now write the Makefile and sysdep.h
 AC_SUBST(AUTH)
-AC_SUBST(CHKPWD)
 AC_SUBST(RESOLV)
 AC_SUBST(chkpwd_LIBS)
 AC_SUBST(TARGETS)
 AC_SUBST(DATABASE)
+AC_SUBST(SERVER_LDFLAGS)
+AC_SUBST(SERVER_LIBS)
+AC_SUBST(SETUP_LIBS)
 AC_CONFIG_HEADER(sysdep.h)
-AC_CONFIG_FILES([Makefile weekly])
-AC_OUTPUT
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT(database_cleanup.sh)
 
 if test -z "$DATABASE"; then
        AC_MSG_WARN([No database driver was found. Please install Berkeley DB.])
 fi
 
-echo ...
-echo ...
-echo "... On many operating systems, you must use GNU make (gmake) to compile"
-echo ... Citadel.
-echo ...
-echo ...
+echo ------------------------------------------------------------------------
+echo 'zlib compression:                ' $ok_zlib
+echo 'Calendar support:                ' $ok_libical
+echo 'LDAP support:                    ' $ok_ldap
+echo 'Sieve mailbox filtering support: ' $ok_libsieve
+echo 
+echo 'Note: if you are not using Linux, make sure you are using GNU make'
+echo '(gmake) to compile Citadel.'
+echo