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], [912], [http://www.citadel.org/])
+AC_REVISION([$Revision: 5108 $])
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(BBSDIR, "$ac_default_prefix")
+ 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(BBSDIR, "$prefix")
+ AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory])
+ ssl_dir="$prefix/keys"
+ localedir=$prefix
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 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
+ 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 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],
+ [ 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
+ ]
+)
-AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client
- disable multithreaded client])
+
+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
+ ]
+)
+
+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
+ localedir=$withval
+ fi
+ ]
+)
+AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir",[where to find our pot files])
+LOCALEDIR=$localedir
+AC_SUBST(LOCALEDIR)
+
+
+
+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(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(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 ],
+ [ --with-ssl=PATH Specify path to OpenSSL installation ],
[
if test "x$withval" != "xno" ; then
tryssldir=$withval
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_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_ldap, [ --with-ldap use OpenLDAP client library])
+AC_ARG_WITH(with_gc, [ --with-gc use the Boehm-Demers-Weiser garbage collection library])
if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
db_dir="$with_db"
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
+ 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])
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(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.
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*)
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 -Wno-strict-aliasing $PTHREAD_DEFS"
+ ;;
+ esac
+ fi
fi
-AC_LIBTOOL_DLOPEN
-AC_LIBTOOL_WIN32_DLL
-AC_DISABLE_STATIC
-AC_PROG_LIBTOOL
-AC_SUBST(LIBTOOL_DEPS)
+
+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_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
+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)
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.
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 dlopen gethostbyname connect)
+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
+ ]
+)
+
+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
+ ]
+)
if test "$ac_cv_func_gethostbyname" = no; then
AC_CHECK_LIB(nsl, gethostbyname)
AC_CHECK_LIB(socket, connect)
fi
-if test "$ac_cv_func_dlopen" = no; then
- AC_CHECK_LIB(dl, dlopen, [LIBS="-ldl $LIBS"
- test "$with_pam" = yes && chkpwd_LIBS="-ldl $chkpwd_LIBS"])
-fi
-
-dnl Check for HP/UX dynamic loader. This should only be in -ldld.
-AC_CHECK_LIB(dld, shl_load, LIBS="-ldld $LIBS")
-
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"
- 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, [
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")
-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
AC_CHECK_LIB(pthreads, pthread_create)
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,
+ [
+ LIBS="-lcitadel $LIBS $SERVER_LIBS"
+ chkpwd_LIBS="-lcitadel $chkpwd_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.)
+ ]
+)
+
+CFLAGS="$saved_CFLAGS"
+
+
# The big search for OpenSSL
if test "$with_ssl" != "no"; then
saved_LIBS="$LIBS"
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
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=""
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
+ AC_CHECK_DB([db db-4.1 db-4 db4],
+ [
+ DATABASE=database.c
+ ],
+ AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
+ library. Use --with-db=PATH to specify
+ the path]]))
-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_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,
- [AC_CHECK_LIB(z, zlibVersion,
- [ok_zlib=yes],,
+
+dnl Checks for the OpenLDAP client library.
+if test "x$with_ldap" != xno ; then
+ AC_CHECK_HEADERS(ldap.h,
+ [AC_CHECK_LIB(ldap, ldap_initialize,
+ [ok_ldap=yes],,
)])
fi
-if test "x$ok_zlib" = xyes ; then
- LIBS="-lz $LIBS"
- AC_DEFINE(HAVE_ZLIB)
+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 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
- LIBS="-lical $LIBS"
- AC_DEFINE(HAVE_LIBICAL)
-fi
+
+
+dnl Checks for the Expat XML parser.
+AC_CHECK_HEADER(expat.h,
+ [AC_CHECK_LIB(expat, XML_ParserCreateNS,
+ [
+ SERVER_LIBS="-lexpat $SERVER_LIBS"
+ ],
+ [
+ AC_MSG_ERROR(The Expat XML parser was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ ]
+ ,
+ )],
+ [
+ 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 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)
-
-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 db4/db.h pthread.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h syscall.h sys/syscall.h)
-AC_CHECK_HEADER(resolv.h, [SMTP=modules/libsmtp.la; DOMAIN=domain.c],,
+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
#include <arpa/nameser.h>
#endif])
-AC_SUBST(SMTP)
-AC_SUBST(DOMAIN)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
#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 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
+
+
+
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.
#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,
#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 serv_modules"
- if test "x$enable_threaded_client" != xno; then
- AC_DEFINE(THREADED_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
-# 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`
esac
])
+
+STRUCT_UCRED
+
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_CONFIG_HEADER(sysdep.h)
-AC_CONFIG_FILES([Makefile weekly])
-AC_OUTPUT
+AC_SUBST(SERVER_LDFLAGS)
+AC_SUBST(SERVER_LIBS)
+AC_SUBST(SETUP_LIBS)
+AC_SUBST(DIFF)
+AC_SUBST(PATCH)
+AC_CONFIG_FILES([Makefile])
+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
-echo ...
-echo ...
-echo "... On many operating systems, you must use GNU make (gmake) to compile"
-echo ... Citadel.
-echo ...
-echo ...
+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 'LDAP support: ' $ok_ldap
+echo 'Character set conversion support:' $ok_iconv
+echo 'Boehm-Demers-Weiser support: ' $ok_gc
+echo
+echo 'Note: if you are not using Linux, make sure you are using GNU make'
+echo '(gmake) to compile Citadel.'
+echo