X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fconfigure.ac;h=8778a272d702080c11edaf77af39059c0cc46818;hb=63c3efcbb26d12c3a2c829d81dfe90c25de8ad98;hp=2b5089e39d92d9bdf39a05029ffcacc9eff9cf07;hpb=3d5b29690b93ac15061204f593c0e285f6bd42cf;p=citadel.git diff --git a/citadel/configure.ac b/citadel/configure.ac index 2b5089e39..8778a272d 100644 --- a/citadel/configure.ac +++ b/citadel/configure.ac @@ -1,15 +1,15 @@ dnl Process this file with autoconf to produce a configure script. dnl $Id$ AC_PREREQ(2.52) -AC_INIT([Citadel], [7.05], [http://www.citadel.org/]) -AC_REVISION([$Revision$]) +AC_INIT([Citadel], [7.33], [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(CTDLDIR, "$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(CTDLDIR, "$prefix") + AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory]) ssl_dir="$prefix/keys" fi @@ -22,10 +22,22 @@ 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) - AC_DEFINE_UNQUOTED(DATA_DIR, "$withval") - MAKE_DATA_DIR=$withval - AC_SUBST(MAKE_DATA_DIR) + 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 ] ) @@ -50,8 +62,8 @@ 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) - AC_DEFINE_UNQUOTED(SPOOL_DIR,"$withval") + 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 @@ -63,21 +75,33 @@ 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) - AC_DEFINE_UNQUOTED(ETC_DIR, "$withval") + 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 store the configs under], + [ --with-rundir directory to place runtime files (UDS) to?], [ if test "x$withval" != "xno" ; then - AC_DEFINE(HAVE_RUN_DIR) - AC_DEFINE_UNQUOTED(RUN_DIR, "$withval") + 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 @@ -86,11 +110,11 @@ 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") +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") + AC_DEFINE_UNQUOTED(EGD_POOL, "$withval", [the socket from Pseudo Random Generator]) fi ] ) @@ -107,8 +131,6 @@ AC_ARG_WITH(docdir, -AC_ARG_ENABLE(chkpwd, [ --disable-chkpwd don't build 'chkpwd']) - AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client disable multithreaded client]) @@ -131,6 +153,8 @@ AC_ARG_WITH(with_zlib, [ --with-zlib use zlib compression if presen 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" @@ -143,6 +167,8 @@ else 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 @@ -158,19 +184,19 @@ case "$host" in 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(HAVE_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]) ;; dnl Digital Unix has an odd way to build for pthreads, and we can't @@ -220,6 +246,8 @@ dnl DEFS="$DEFS $PTHREAD_DEFS" dnl Checks for programs. AC_PROG_CC + + dnl Set up system-dependent compiler flags. if test "$GCC" = yes; then if test "$CC" = icc; then @@ -250,11 +278,20 @@ if test "x$enable_pie" = xyes; then fi 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 +AC_SUBST(DEPEND_FLAG) + + AC_PROG_INSTALL AC_PROG_YACC -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +dnl missing_dir=`cd $ac_aux_dir && pwd` +dnl AC_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +dnl AC_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) dnl Checks for system services. @@ -263,6 +300,7 @@ AC_CHECK_SIZEOF(char, 0) AC_CHECK_SIZEOF(short, 0) AC_CHECK_SIZEOF(int, 0) AC_CHECK_SIZEOF(long, 0) +AC_CHECK_SIZEOF(size_t, 0) dnl AC_CHECK_SIZEOF(long long, 0) dnl Checks for libraries. @@ -270,7 +308,41 @@ 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) +AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r) + + +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 + ] +) + +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 + ] +) + if test "$ac_cv_func_gethostbyname" = no; then AC_CHECK_LIB(nsl, gethostbyname) @@ -308,17 +380,6 @@ dnl (Linux shadow passwords) 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 - if test "$enable_chkpwd" != no; then - AC_DEFINE(ENABLE_CHKPWD) - CHKPWD=chkpwd - else - AUTH=auth.lo - fi - fi - -test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib" -AC_CHECK_LIB(resolv, res_query, RESOLV="$RESOLV -lresolv") if test "x$with_ncurses" != "xno"; then AC_SEARCH_LIBS(tgetent, [ncurses curses termcap]) @@ -339,6 +400,26 @@ fi test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include" + +dnl Check for libcitadel +AC_CHECK_HEADER(libcitadel.h, + [AC_CHECK_LIB(citadel, libcitadel_version_string, + [ + LIBS="-lcitadel $LIBS" + ], + [ + AC_MSG_ERROR(libcitadel was not found or is not usable. Please install libcitadel.) + ] + , + )], + [ + AC_MSG_ERROR(libcitadel.h was not found or is not usable. Please install libcitadel.) + ] +) + + + + # The big search for OpenSSL if test "$with_ssl" != "no"; then saved_LIBS="$LIBS" @@ -420,7 +501,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 @@ -485,7 +566,7 @@ fi if test "x$ok_zlib" = xyes ; then SERVER_LIBS="-lz $SERVER_LIBS" - AC_DEFINE(HAVE_ZLIB) + AC_DEFINE(HAVE_ZLIB, [], [define this if you have zlib compression available]) fi @@ -501,7 +582,7 @@ fi if test "x$ok_ldap" = xyes ; then SERVER_LIBS="-lldap $SERVER_LIBS" - AC_DEFINE(HAVE_LDAP) + AC_DEFINE(HAVE_LDAP, [], [define this if you have OpenLDAP client available]) fi @@ -518,7 +599,37 @@ fi if test "x$ok_libsieve" = xyes ; then SERVER_LIBS="-lsieve $SERVER_LIBS" - AC_DEFINE(HAVE_LIBSIEVE) + 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 + + + + +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 @@ -553,7 +664,7 @@ main() { ], [ SERVER_LIBS="-lical $SERVER_LIBS" - AC_DEFINE(HAVE_LIBICAL) + AC_DEFINE(HAVE_LIBICAL, [], [define this if you have the libical calendaring library available]) ] ) fi @@ -570,7 +681,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 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) +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 @@ -580,7 +691,7 @@ if test "x$with_ncurses" != xno; then AC_CHECK_HEADERS(ncurses.h,,,[ ]) fi -AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_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 #endif @@ -606,32 +717,77 @@ AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type, #include ], [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 -#include ], [ - struct passwd pw, *pwp; - char pwbuf[64]; - uid_t uid; - - getpwuid_r(uid, &pw, pwbuf, sizeof(pwbuf), &pwp); +AC_CACHE_CHECK( + [for call semantics from getpwuid_r], + ac_cv_call_getpwuid_r, + [AC_TRY_COMPILE([#include +#include ], + [ + 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) + ]) -], -ac_cv_call_getpwuid_r=yes, ac_cv_call_getpwuid_r=no)]) if test $ac_cv_call_getpwuid_r = no; then - AC_DEFINE(BSD_GETPWUID) + 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 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 + #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 + + AC_CACHE_CHECK([for ut_host in struct utmp], ac_cv_struct_ut_host, [AC_TRY_COMPILE([#include #include ], [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. @@ -660,7 +816,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, @@ -677,7 +833,7 @@ 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 @@ -709,6 +865,7 @@ AC_CACHE_CHECK([the weather], ac_cv_weather, [ + AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [ number=`date | cut -c 19` case $number in @@ -723,7 +880,6 @@ 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) @@ -732,9 +888,11 @@ AC_SUBST(SERVER_LDFLAGS) AC_SUBST(SERVER_LIBS) AC_SUBST(SETUP_LIBS) AC_CONFIG_HEADER(sysdep.h) +./mk_module_init.sh 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 @@ -744,6 +902,8 @@ 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 echo 'Note: if you are not using Linux, make sure you are using GNU make' echo '(gmake) to compile Citadel.'