1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT([Citadel], [7.89], [http://www.citadel.org/])
4 AC_REVISION([$Revision: 5108 $])
5 AC_CONFIG_SRCDIR([citserver.c])
6 AC_CONFIG_HEADER(sysdep.h)
7 AC_CONFIG_MACRO_DIR([m4])
8 AC_PREFIX_DEFAULT(/usr/local/citadel)
9 if test "$prefix" = NONE; then
10 AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix", [define this to the Citadel home directory])
11 ssl_dir="$ac_default_prefix/keys"
13 AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory])
14 ssl_dir="$prefix/keys"
17 dnl Make sure we see all GNU and Solaris extensions.
21 dnl Checks for the Datadir
23 [ --with-datadir directory to store the databases under],
24 [ if test "x$withval" != "xno" ; then
25 AC_DEFINE(HAVE_DATA_DIR,[],[use alternate database location?])
26 AC_DEFINE_UNQUOTED(DATA_DIR, "$withval",[define, if the user suplied a data-directory to use.])
27 MAKE_DATA_DIR=$withval
28 AC_SUBST(MAKE_DATA_DIR)
34 dnl Checks for the helpDatadir
36 [ --with-helpdir directory to store the helpfiles under],
37 [ if test "x$withval" != "xno" ; then
38 AC_DEFINE(HAVE_HELP_DIR,[],[use alternate database location?])
39 AC_DEFINE_UNQUOTED(HELP_DIR, "$withval",[define, if the user suplied a helpfile-directory to use.])
40 MAKE_HELP_DIR=$withval
41 AC_SUBST(MAKE_HELP_DIR)
46 dnl Checks for the Static Datadir
47 AC_ARG_WITH(staticdatadir,
48 [ --with-staticdatadir directory to store citadels system messages under],
49 [ if test "x$withval" != "xno" ; then
50 AC_DEFINE(HAVE_STATICDATA_DIR, [], [should we activate an alternate static text location?])
51 AC_DEFINE_UNQUOTED(STATICDATA_DIR, "$withval", [where do we put our static text data?])
52 MAKE_STATICDATA_DIR=$withval
53 AC_SUBST(MAKE_STATICDATA_DIR)
59 dnl Checks for the SSLdir
60 dnl this is a bit different than the rest,
61 dnl because of the citadel used to have a keys/ subdir.
63 [ --with-ssldir directory to store the ssl certificates under],
64 [ if test "x$withval" != "xno" ; then
68 AC_SUBST(MAKE_SSL_DIR)
71 AC_DEFINE_UNQUOTED(SSL_DIR, "$ssl_dir", [were should we put our keys?])
74 dnl Checks for the spooldir
76 [ --with-spooldir directory to keep queues under],
77 [ if test "x$withval" != "xno" ; then
78 AC_DEFINE(HAVE_SPOOL_DIR, [], [enable alternate spool dir?])
79 AC_DEFINE_UNQUOTED(SPOOL_DIR,"$withval", [where do we place our spool dirs?])
80 MAKE_SPOOL_DIR=$withval
81 AC_SUBST(MAKE_SPOOL_DIR)
87 dnl Checks for the Configdir
88 AC_ARG_WITH(sysconfdir,
89 [ --with-sysconfdir directory to store the configs under],
90 [ if test "x$withval" != "xno" ; then
91 AC_DEFINE(HAVE_ETC_DIR, [], [should we search our system config in an alternate place?])
92 AC_DEFINE_UNQUOTED(ETC_DIR, "$withval", [where to search our config files])
94 AC_SUBST(MAKE_ETC_DIR)
99 dnl Checks for the Configdir
100 AC_ARG_WITH(autosysconfdir,
101 [ --with-autosysconfdir directory to store the automaticaly maintained configs under],
102 [ if test "x$withval" != "xno" ; then
103 AC_DEFINE(HAVE_AUTO_ETC_DIR, [], [should we search our automatic config in an alternate place?])
104 AC_DEFINE_UNQUOTED(AUTO_ETC_DIR, "$withval", [where to search our automatic config files])
105 MAKE_AUTO_ETC_DIR=$withval
106 AC_SUBST(MAKE_AUTO_ETC_DIR)
111 dnl Checks for where to put our utilities
112 AC_ARG_WITH(utility-bindir,
113 [ --with-utility-bindir directory where to find helper binaries],
114 [ if test "x$withval" != "xno" ; then
115 AC_DEFINE(HAVE_UTILBIN_DIR,[],[should we put our helper binaries to another location?])
116 AC_DEFINE_UNQUOTED(UTILBIN_DIR, "$withval", [were to put our helper programs])
117 MAKE_UTILBIN_DIR=$withval
118 AC_SUBST(MAKE_UTILBIN_DIR)
124 dnl Checks for the run-dir for the sockets
126 [ --with-rundir directory to place runtime files (UDS) to?],
127 [ if test "x$withval" != "xno" ; then
128 AC_DEFINE(HAVE_RUN_DIR, [], [should we put our non volatile files elsewhere?])
129 AC_DEFINE_UNQUOTED(RUN_DIR, "$withval", [define, where the config should go in unix style])
130 MAKE_RUN_DIR=$withval
131 AC_SUBST(MAKE_RUN_DIR)
137 dnl Checks for the Pseudo Random Generator sockets TODO: this keeps being default.
138 AC_DEFINE_UNQUOTED(EGD_POOL, "/var/run/egd-pool", [place to keep our pseudo random generator file])
140 [ --with-egdpool the socket from Pseudo Random Generator, defaults to /var/run/egd-pool],
141 [ if test "x$withval" != "xno" ; then
142 AC_DEFINE_UNQUOTED(EGD_POOL, "$withval", [the socket from Pseudo Random Generator])
149 [ --with-docdir where to install the documentation. default: /usr/local/citadel/],
150 [ if test "x$withval" != "xno" ; then
151 MAKE_DOC_DIR=$withval
152 AC_SUBST(MAKE_DOC_DIR)
158 dnl Checks for the zlib compression library.
159 if test "x$with_zlib" != xno ; then
160 AC_CHECK_HEADERS(zlib.h,
161 [AC_CHECK_LIB(z, zlibVersion,
166 if test "x$ok_zlib" = xyes ; then
167 LDFLAGS="-lz $LDFLAGS"
168 AC_DEFINE(HAVE_ZLIB, [], [define this if you have zlib compression available])
174 dnl Here is the check for a libc integrated iconv
176 [ --disable-iconv do not use iconv charset conversion],
177 ok_iconv=no, ok_iconv=yes)
179 AC_MSG_CHECKING(Checking to see if your system supports iconv)
183 iconv_t ic = (iconv_t)(-1) ;
184 ic = iconv_open("UTF-8", "us-ascii");
199 dnl Check for iconv in external libiconv
200 if test "$ok_iconv" = no; then
201 AC_MSG_CHECKING(Checking for an external libiconv)
202 OLD_LDFLAGS="$LDFLAGS"
203 LDFLAGS="$LDFLAGS -liconv"
207 iconv_t ic = (iconv_t)(-1) ;
208 ic = iconv_open("UTF-8", "us-ascii");
218 LDFLAGS="$OLD_LDFLAGS"
223 if test "$ok_iconv" != "no"; then
224 AC_MSG_RESULT(Citadel will be built with character set conversion.)
225 AC_DEFINE(HAVE_ICONV,[],[whether we have iconv for charset conversion])
227 AC_MSG_RESULT(Citadel will be built without character set conversion.)
230 AC_CHECK_LIB(intl, libintl_bindtextdomain, [LDFLAGS="$LDFLAGS -lintl"])
234 AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client
235 disable multithreaded client])
237 AC_ARG_ENABLE(pie, [ --enable-pie build position-independent executables])
239 AC_ARG_WITH(pam, [ --with-pam use PAM if present (see PAM.txt before you try this)])
240 AC_ARG_WITH(kthread, [ --with-kthread use kernel threads (on FreeBSD) (not recommended yet)])
241 AC_ARG_WITH(db, [ --with-db@<:@=DIR@:>@ use Berkeley DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
243 [ --with-ssl=PATH Specify path to OpenSSL installation ],
245 if test "x$withval" != "xno" ; then
250 AC_ARG_WITH(with_ldap, [ --with-ldap use OpenLDAP client library])
251 dnl AC_ARG_WITH(with_libdspam, [ --with-libdspam use libdspam mail spam scanning library])
252 AC_ARG_WITH(with_gc, [ --with-gc use the Boehm-Demers-Weiser garbage collection library])
254 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
258 test -f /usr/local/lib/libdb.a -o -f /usr/local/lib/libdb.so \
259 -o -f /usr/local/lib/libdb4.a -o -f /usr/local/lib/libdb4.so \
262 test -d /usr/local/BerkeleyDB.4.1 && db_dir=/usr/local/BerkeleyDB.4.1
263 test -d /usr/local/BerkeleyDB.4.2 && db_dir=/usr/local/BerkeleyDB.4.2
264 test -d /usr/local/BerkeleyDB.4.3 && db_dir=/usr/local/BerkeleyDB.4.3
265 test -d /usr/local/BerkeleyDB.4.4 && db_dir=/usr/local/BerkeleyDB.4.4
266 test -d /usr/local/BerkeleyDB.4.5 && db_dir=/usr/local/BerkeleyDB.4.5
269 dnl By default, we only build the client (citadel and whobbs) unless we can
270 dnl figure out how to build with POSIX threads.
274 PTHREAD_DEFS=-D_REENTRANT
275 AC_MSG_CHECKING([how to compile with POSIX threads])
277 dnl BSDI 3.0 wants relocatable object modules instead of shared libs
278 dnl for dlopen(), and has a wrapper script to link with shared libs.
279 dnl Also has stupid non-reentrant gethostbyaddr() and friends.
281 test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2
282 AC_DEFINE(HAVE_NONREENTRANT_NETDB,[], [define this if the OS has broken non-reentrant gethostby{name,addr}() ])
283 AC_MSG_RESULT([Old BSDI])
286 AC_DEFINE(HAVE_NONREENTRANT_NETDB, [], [define this if the OS has broken non-reentrant gethostby{name,addr}() ])
287 AC_MSG_RESULT([BSD/OS])
289 dnl Curses support on Mac OS X is kind of screwed at the moment.
290 dnl TCP buffering isn't ideal under OS X. This define should also be
291 dnl checked in other cases of OS X-Linux differences.
293 AC_DEFINE(HAVE_DARWIN, [], [define if using OS X/Darwin])
294 AC_MSG_RESULT([Mac OS X])
296 dnl Digital Unix has an odd way to build for pthreads, and we can't
297 dnl build pthreads programs with gcc due to header problems.
299 test -z "$CC" && CC=cc
300 LIBS="-lpthread -lexc $LIBS"
302 AC_MSG_RESULT([Tru64 or Digital UNIX])
304 dnl FreeBSD is similar to Digital UNIX with DEC C, which has a -pthread flag:
306 if test "$with_kthread" = yes; then
307 LIBS="-kthread $LIBS"
309 LIBS="-pthread $LIBS"
312 PTHREAD_DEFS=-D_THREAD_SAFE
313 AC_MSG_RESULT([FreeBSD])
316 LIBS="-pthread $LIBS"
318 PTHREAD_DEFS=-pthread
319 AC_MSG_RESULT([OpenBSD])
322 PTHREAD_DEFS="-D_REENTRANT -pthread"
323 AC_MSG_RESULT([Linux])
326 PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS"
327 AC_MSG_RESULT([Solaris])
330 SERVER_LDFLAGS="-Wl,-subsystem,windows"
331 AC_MSG_RESULT([Cygwin])
334 AC_MSG_RESULT([default])
337 dnl DEFS="$DEFS $PTHREAD_DEFS"
340 dnl Checks for programs.
345 dnl Set up system-dependent compiler flags.
346 if test "$GCC" = yes; then
347 if test "$CC" = icc; then
351 *-*-solaris*|alpha*-dec-osf*)
352 CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS"
355 CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
361 if test "x$enable_pie" = xyes; then
362 save_CFLAGS="$CFLAGS"
363 save_LDFLAGS="$LDFLAGS"
364 CFLAGS="$CFLAGS -fpie"
365 LDFLAGS="$LDFLAGS -pie -fpie"
366 AC_CACHE_CHECK([whether compiler accepts -pie -fpie], ac_cv_pie_fpie,
368 ac_cv_pie_fpie=yes, ac_cv_pie_fpie=no)])
369 if test $ac_cv_pie_fpie = no; then
370 CFLAGS="$save_CFLAGS"
371 LDFLAGS="$save_LDFLAGS"
375 AC_MSG_CHECKING([how to create dependancy checks])
376 if test -n "`$CC -V 2>&1 |grep Sun`"; then
381 AC_SUBST(DEPEND_FLAG)
386 missing_dir=`cd $ac_aux_dir && pwd`
387 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
388 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
390 dnl Checks for system services.
392 dnl Check the size of various builtin types; see typesize.h (error)
393 AC_CHECK_SIZEOF(char, 0)
394 AC_CHECK_SIZEOF(short, 0)
395 AC_CHECK_SIZEOF(int, 0)
396 AC_CHECK_SIZEOF(long, 0)
397 AC_CHECK_SIZEOF(size_t, 0)
398 dnl AC_CHECK_SIZEOF(long long, 0)
400 dnl Checks for libraries.
402 dnl We want to test for the following in libc before checking for their
403 dnl respective libraries, because some systems (like Irix) have both, and the
404 dnl non-libc versions may be broken.
405 AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r getloadavg)
407 AC_CHECK_FUNCS(strftime_l uselocale gettext)
409 if test "$ok_nls" != "no"; then
410 AC_CHECK_PROG(ok_xgettext, xgettext, yes, no)
414 if test "$ok_nls" != "no"; then
415 AC_CHECK_PROG(ok_msgmerge, msgmerge, yes, no)
419 if test "$ok_nls" != "no"; then
420 AC_CHECK_PROG(ok_msgfmt, msgfmt, yes, no)
424 if test "$ok_nls" != "no"; then
425 AC_MSG_RESULT(WebCit will be built with national language support.)
426 AC_DEFINE(ENABLE_NLS, [], [whether we have NLS support])
427 PROG_SUBDIRS="$PROG_SUBDIRS po"
429 AC_MSG_RESULT(WebCit will be built without national language support.)
432 dnl disable backtrace if we don't want it.
433 AC_ARG_WITH(backtrace,
434 [ --with-backtrace enable backtrace dumps in the syslog],
435 [ if test "x$withval" != "xno" ; then
436 CFLAGS="$CFLAGS -rdynamic "
437 LDFLAGS="$LDFLAGS -rdynamic "
438 SERVER_LDFLAGS="$SERVER_LDFLAGS -rdynamic "
439 AC_CHECK_FUNCS(backtrace)
444 dnl disable backtrace if we don't want it.
446 [ --with-gprof enable profiling],
447 [ if test "x$withval" != "xno" ; then
448 CFLAGS="$CFLAGS -pg "
449 LDFLAGS="$LDFLAGS -pg "
450 SERVER_LDFLAGS="$SERVER_LDFLAGS -pg "
455 dnl disable thread table reporting
456 AC_ARG_WITH(threadlog,
457 [ --with-threadlog enable logging of thread table],
458 [ if test "x$withval" != "xno" ; then
459 AC_DEFINE(WITH_THREADLOG, [], [Define if you want logging of the thread tables.])
465 if test "$ac_cv_func_gethostbyname" = no; then
466 AC_CHECK_LIB(nsl, gethostbyname)
469 if test "$ac_cv_func_connect" = no; then
470 AC_CHECK_LIB(socket, connect)
473 dnl Check for Solaris realtime support
474 AC_CHECK_LIB(rt, sched_yield)
476 dnl Determine the system's authentication capabilities.
477 dnl We currently support PAM, standard getpwnam(), and getspnam()
478 dnl (Linux shadow passwords)
481 AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
483 AC_CHECK_FUNCS(pam_start)
484 test "$enable_chkpwd" != no && LIBS=$save_LIBS
485 if test "$ac_cv_func_pam_start" = no -o "$with_pam" != yes; then
487 AC_SEARCH_LIBS(getspnam, shadow, [
488 if test "$ac_cv_search_getspnam" = -lshadow; then
489 chkpwd_LIBS="-lshadow $chkpwd_LIBS"
491 test "$enable_chkpwd" != no && LIBS=$save_LIBS
492 if test "$ac_cv_func_crypt" = no; then
493 AC_CHECK_LIB(crypt, crypt, [
494 chkpwd_LIBS="-lcrypt $chkpwd_LIBS"
495 test "$enable_chkpwd" = no && \
496 LIBS="-lcrypt $LIBS"])
500 AC_CHECK_FUNCS(vw_printw wcolor_set resizeterm wresize)
502 dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On
503 dnl which the -pthread flag takes care of this.)
504 if test "$check_pthread" != no; then
505 AC_CHECK_LIB(pthread, pthread_create)
506 AC_CHECK_LIB(pthreads, pthread_create)
509 test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
511 dnl Checks for the libical iCalendar library.
512 AC_CHECK_HEADER(libical/ical.h,
513 [AC_CHECK_LIB(ical, icaltimezone_set_tzid_prefix,
515 SERVER_LIBS="-lical $SERVER_LIBS"
518 AC_MSG_ERROR(libical was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
523 AC_MSG_ERROR(libical/ical.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
528 dnl Checks for the libsieve mailbox sorting library.
529 AC_CHECK_HEADER(sieve2.h,
530 [AC_CHECK_LIB(sieve, sieve2_license,
532 SERVER_LIBS="-lsieve $SERVER_LIBS"
535 AC_MSG_ERROR(libsieve was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
540 AC_MSG_ERROR(sieve2.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
544 saved_CFLAGS="$CFLAGS"
545 CFLAGS="$CFLAGS $SERVER_LIBS"
546 dnl Check for libcitadel
547 AC_CHECK_HEADER(libcitadel.h,
548 [AC_CHECK_LIB(citadel, libcitadel_version_string,
550 LIBS="-lcitadel $LIBS $SERVER_LIBS"
551 chkpwd_LIBS="-lcitadel $chkpwd_LIBS"
554 AC_MSG_ERROR(libcitadel was not found or is not usable. Please install libcitadel.)
559 AC_MSG_ERROR(libcitadel.h was not found or is not usable. Please install libcitadel.)
563 CFLAGS="$saved_CFLAGS"
567 # The big search for OpenSSL
568 if test "$with_ssl" != "no"; then
570 saved_LDFLAGS="$LDFLAGS"
571 saved_CFLAGS="$CFLAGS"
572 if test "x$prefix" != "xNONE"; then
573 tryssldir="$tryssldir $prefix"
575 AC_CACHE_CHECK([for OpenSSL], ac_cv_openssldir, [
576 for ssldir in $tryssldir "" /usr /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do
577 CFLAGS="$saved_CFLAGS"
578 LDFLAGS="$saved_LDFLAGS"
579 LIBS="$saved_LIBS -lssl -lcrypto"
581 # Skip directories if they don't exist
582 if test ! -z "$ssldir" -a ! -d "$ssldir" ; then
585 if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
586 # Try to use $ssldir/lib if it exists, otherwise
588 if test -d "$ssldir/lib" ; then
589 LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
590 if test ! -z "$need_dash_r" ; then
591 LDFLAGS="-R$ssldir/lib $LDFLAGS"
594 LDFLAGS="-L$ssldir $saved_LDFLAGS"
595 if test ! -z "$need_dash_r" ; then
596 LDFLAGS="-R$ssldir $LDFLAGS"
599 # Try to use $ssldir/include if it exists, otherwise
601 if test -d "$ssldir/include" ; then
602 CFLAGS="-I$ssldir/include $saved_CFLAGS"
604 CFLAGS="-I$ssldir $saved_CFLAGS"
608 # Basic test to check for compatible version and correct linking
609 # *does not* test for RSA - that comes later.
613 #include <openssl/rand.h>
617 memset(a, 0, sizeof(a));
618 RAND_add(a, sizeof(a), sizeof(a));
619 return(RAND_status() <= 0);
628 if test ! -z "$found_crypto" ; then
633 if test -z "$ssldir" ; then
637 if test ! -z "$found_crypto" ; then
638 ac_cv_openssldir=$ssldir
640 ac_cv_openssldir="no"
644 LDFLAGS="$saved_LDFLAGS"
645 CFLAGS="$saved_CFLAGS"
647 if test "x$ac_cv_openssldir" != "xno" ; then
648 AC_DEFINE(HAVE_OPENSSL, [], [Define if you have OpenSSL.])
649 LIBS="-lssl -lcrypto $LIBS"
650 dnl Need to recover ssldir - test above runs in subshell
651 ssldir=$ac_cv_openssldir
652 if test ! -z "$ssldir" -a "x$ssldir" != "x/usr" -a "x$ssldir" != "x(system)"; then
653 # Try to use $ssldir/lib if it exists, otherwise
655 if test -d "$ssldir/lib" ; then
656 LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
657 if test ! -z "$need_dash_r" ; then
658 LDFLAGS="-R$ssldir/lib $LDFLAGS"
661 LDFLAGS="-L$ssldir $saved_LDFLAGS"
662 if test ! -z "$need_dash_r" ; then
663 LDFLAGS="-R$ssldir $LDFLAGS"
666 # Try to use $ssldir/include if it exists, otherwise
668 if test -d "$ssldir/include" ; then
669 CFLAGS="-I$ssldir/include $saved_CFLAGS"
671 CFLAGS="-I$ssldir $saved_CFLAGS"
677 if test "x$with_db" != xno; then
678 test "$db_dir" && LDFLAGS="$LDFLAGS -L$db_dir/lib"
682 if test -d "$db_dir/include/db4"; then
683 CPPFLAGS="$CPPFLAGS -I$db_dir/include/db4"
685 elif test "$db_dir"; then
686 CPPFLAGS="$CPPFLAGS -I$db_dir/include"
687 elif test -d /usr/include/db4; then
688 CPPFLAGS="$CPPFLAGS -I/usr/include/db4"
693 AC_CHECK_DB([db db-4.1 db-4 db4],
697 AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
698 library. Use --with-db=PATH to specify
706 dnl Checks for the OpenLDAP client library.
707 if test "x$with_ldap" != xno ; then
708 AC_CHECK_HEADERS(ldap.h,
709 [AC_CHECK_LIB(ldap, ldap_init,
714 if test "x$ok_ldap" = xyes ; then
715 SERVER_LIBS="-lldap $SERVER_LIBS"
716 AC_DEFINE(HAVE_LDAP, [], [define this if you have OpenLDAP client available])
723 dnl Checks for the Boehm-Demers-Weiser garbage collection library.
724 if test "x$with_gc" != xno ; then
725 AC_CHECK_HEADERS(gc/gc_local_alloc.h,
726 [AC_CHECK_LIB(gc, GC_init,
731 if test "x$ok_gc" = xyes ; then
732 SERVER_LIBS="-lgc $SERVER_LIBS"
733 AC_DEFINE(HAVE_GC, [], [define this if you have Boehm-Demers-Weiser available])
740 dnl Checks for the libdspam mail spam scanning library.
741 dnl if test "x$with_libdspam" != xno ; then
742 dnl AC_CHECK_HEADERS(dspam/libdspam.h,
743 dnl [AC_CHECK_LIB(dspam, dspam_init,
744 dnl [ok_libdspam=yes],,
748 dnl if test "x$ok_libdspam" = xyes ; then
749 dnl SERVER_LIBS="-ldspam $SERVER_LIBS"
750 dnl AC_DEFINE(HAVE_LIBDSPAM, [], [(unfinished) define this if you have the libdspam mail spam scanning library available])
755 dnl Checks for the Expat XML parser.
756 AC_CHECK_HEADER(expat.h,
757 [AC_CHECK_LIB(expat, XML_ParserCreateNS,
759 SERVER_LIBS="-lexpat $SERVER_LIBS"
762 AC_MSG_ERROR(The Expat XML parser was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
767 AC_MSG_ERROR(expat.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
777 dnl Checks for libcurl.
778 AC_CHECK_HEADER(curl/curl.h,
779 [AC_CHECK_LIB(curl, curl_version,
781 SERVER_LIBS="-lcurl $SERVER_LIBS"
784 AC_MSG_ERROR(libcurl was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
789 AC_MSG_ERROR(curl/curl.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
802 dnl Checks for header files.
808 dnl TODO: for the DB header checks, we should check whether the headers
809 dnl define db_env_create, somehow
811 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)
813 AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H, [], [define this if you have the resolv.h header file.]),,
814 [#ifdef HAVE_SYS_TYPES_H
815 #include <sys/types.h>
817 #ifdef HAVE_NETINET_IN_H
818 #include <netinet/in.h>
820 #ifdef HAVE_ARPA_NAMESER_H
821 #include <arpa/nameser.h>
825 dnl Checks for typedefs, structures, and compiler characteristics.
831 dnl defined in acinclude.m4:
834 AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type,
835 [AC_TRY_COMPILE([#include <sys/types.h>
836 #include <utmp.h>], [struct utmp ut; ut.ut_type;],
837 ac_cv_struct_ut_type=yes, ac_cv_struct_ut_type=no)])
838 if test $ac_cv_struct_ut_type = yes; then
839 AC_DEFINE(HAVE_UT_TYPE, [], [define this if struct utmp has an ut_type member])
843 [for call semantics from getpwuid_r],
844 ac_cv_call_getpwuid_r,
845 [AC_TRY_COMPILE([#include <sys/types.h>
848 struct passwd pw, *pwp;
852 getpwuid_r(uid, &pw, pwbuf, sizeof(pwbuf), &pwp);
854 ac_cv_call_getpwuid_r=yes,
855 ac_cv_call_getpwuid_r=no)
858 if test $ac_cv_call_getpwuid_r = no; then
859 AC_DEFINE(SOLARIS_GETPWUID,[],[do we need to use solaris call syntax?])
860 AC_DEFINE(F_UID_T, "%ld", [whats the matching format string for uid_t?])
861 AC_DEFINE(F_PID_T, "%ld", [whats the matching format string for pid_t?])
862 AC_DEFINE(F_XPID_T, "%lx", [whats the matching format string for xpid_t?])
864 AC_DEFINE(F_UID_T, "%d", [whats the matching format string for uid_t?])
865 AC_DEFINE(F_PID_T, "%d", [whats the matching format string for pid_t?])
866 AC_DEFINE(F_XPID_T, "%x", [whats the matching format string for xpid_t?])
870 dnl Our own happy little check for the resolver library.
874 echo "we don't need to check for resolv on openbsd"
877 echo "we don't need to check for resolv on freeBSD"
880 test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
881 AC_CHECK_LIB(resolv, res_query,
882 RESOLV="$RESOLV -lresolv",
883 [dnl Have to include resolv.h as res_query is sometimes defined as a macro
884 AC_MSG_CHECKING([for res_query in -lresolv (with resolv.h if present)])
886 LIBS="-lresolv $LIBS"
891 [res_query(0,0,0,0,0)],
895 AC_MSG_ERROR(libresolv was not found. Citadel requires the resolver library.)
904 AC_CACHE_CHECK([for ut_host in struct utmp], ac_cv_struct_ut_host,
905 [AC_TRY_COMPILE([#include <sys/types.h>
906 #include <utmp.h>], [struct utmp ut; ut.ut_host;],
907 ac_cv_struct_ut_host=yes, ac_cv_struct_ut_host=no)])
908 if test $ac_cv_struct_ut_host = yes; then
909 AC_DEFINE(HAVE_UT_HOST, [], [define this if struct utmp has an ut_host member])
912 dnl Checks for library functions.
914 AC_PROG_GCC_TRADITIONAL
917 AC_CHECK_FUNCS(getspnam getutxline mkdir mkfifo mktime rmdir select socket strerror strcasecmp strncasecmp)
919 dnl Now check for pthreads
921 dnl On some platforms, AC_CHECK_FUNC[S] doesn't work for pthreads programs;
922 dnl we need to include pthread.h
924 AC_CACHE_CHECK([for pthread_cancel], ac_cv_func_pthread_cancel,
925 [AC_TRY_LINK([#include <pthread.h>],
928 /* The GNU C library defines this for functions which it implements
929 to always fail with ENOSYS. Some functions are actually named
930 something starting with __ and the normal name is an alias. */
931 #if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel)
934 pthread_cancel(thread);
936 ac_cv_func_pthread_cancel=yes, ac_cv_func_pthread_cancel=no)])
937 if test "$ac_cv_func_pthread_cancel" = yes; then
938 AC_DEFINE(HAVE_PTHREAD_CANCEL, [], [define this if you have the pthread_cancel() function])
941 AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create,
942 [AC_TRY_LINK([#include <pthread.h>],
943 [ /* The GNU C library defines this for functions which it implements
944 to always fail with ENOSYS. Some functions are actually named
945 something starting with __ and the normal name is an alias. */
946 #if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel)
949 pthread_create(NULL, NULL, NULL, NULL);
951 ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)])
952 if test "$ac_cv_func_pthread_create" = yes; then
953 test "$DATABASE" && TARGETS="client server utils"
954 if test "x$enable_threaded_client" != xno; then
955 AC_DEFINE(THREADED_CLIENT, [], [define this if you want to enable the multithreaded client])
959 AC_REPLACE_FUNCS(snprintf getutline)
961 AC_CACHE_CHECK([the weather], ac_cv_weather, [
963 echo $ECHO_N "opening your window... $ECHO_C" >&6
965 month=`date | cut -f 2 -d ' '`
968 ac_cv_weather="it's cold!"
971 ac_cv_weather="it's wet!"
974 ac_cv_weather="it's hot!"
977 ac_cv_weather="it's cool"
980 ac_cv_weather="it's fine"
988 AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [
989 number=`date | cut -c 19`
992 ac_cv_under_the_bed="lunatics and monsters found"
995 ac_cv_under_the_bed="dust bunnies found"
1005 dnl Done! Now write the Makefile and sysdep.h
1008 AC_SUBST(chkpwd_LIBS)
1011 AC_SUBST(SERVER_LDFLAGS)
1012 AC_SUBST(SERVER_LIBS)
1013 AC_SUBST(SETUP_LIBS)
1014 AC_CONFIG_FILES([Makefile])
1015 AC_OUTPUT(database_cleanup.sh)
1017 if test -z "$DATABASE"; then
1018 AC_MSG_WARN([No database driver was found. Please install Berkeley DB.])
1021 abs_srcdir="`cd $srcdir && pwd`"
1022 abs_builddir="`pwd`"
1023 if test "$abs_srcdir" != "$abs_builddir"; then
1024 ln -sf $abs_srcdir/include $abs_builddir
1025 ln -sf $abs_srcdir/Make_sources $abs_builddir
1026 ln -sf $abs_srcdir/Make_modules $abs_builddir
1027 for i in $abs_srcdir/*.h ; do
1028 if test "$abs_srcdir/sysdep.h" != "$i"; then
1029 ln -sf $i $abs_builddir
1032 for d in `/bin/ls $abs_srcdir/modules/`; do
1033 (mkdir -p $abs_builddir/modules/$d)
1035 if test -d "$abs_srcdir/user_modules/"; then
1036 for d in `/bin/ls $abs_srcdir/user_modules/`; do
1037 (mkdir -p $abs_builddir/user_modules/$d)
1040 mkdir -p $abs_builddir/utils
1041 mkdir -p $abs_builddir/utillib
1042 mkdir -p $abs_builddir/textclient
1045 if test -n "$srcdir"; then
1050 echo ------------------------------------------------------------------------
1051 echo 'LDAP support: ' $ok_ldap
1052 echo 'Character set conversion support:' $ok_iconv
1053 echo 'Boehm-Demers-Weiser support: ' $ok_gc
1054 dnl echo 'DSpam Scanning support: ' $ok_libdspam
1056 echo 'Note: if you are not using Linux, make sure you are using GNU make'
1057 echo '(gmake) to compile Citadel.'