1 dnl Process this file with autoconf to produce a configure script.
4 AC_INIT([Citadel], [7.83], [http://www.citadel.org/])
5 AC_REVISION([$Revision: 5108 $])
6 AC_CONFIG_SRCDIR([citserver.c])
7 AC_CONFIG_HEADER(sysdep.h)
8 AC_CONFIG_MACRO_DIR([m4])
9 AC_PREFIX_DEFAULT(/usr/local/citadel)
10 if test "$prefix" = NONE; then
11 AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix", [define this to the Citadel home directory])
12 ssl_dir="$ac_default_prefix/keys"
14 AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory])
15 ssl_dir="$prefix/keys"
18 dnl Make sure we see all GNU and Solaris extensions.
22 dnl Checks for the Datadir
24 [ --with-datadir directory to store the databases under],
25 [ if test "x$withval" != "xno" ; then
26 AC_DEFINE(HAVE_DATA_DIR,[],[use alternate database location?])
27 AC_DEFINE_UNQUOTED(DATA_DIR, "$withval",[define, if the user suplied a data-directory to use.])
28 MAKE_DATA_DIR=$withval
29 AC_SUBST(MAKE_DATA_DIR)
35 dnl Checks for the helpDatadir
37 [ --with-helpdir directory to store the helpfiles under],
38 [ if test "x$withval" != "xno" ; then
39 AC_DEFINE(HAVE_HELP_DIR,[],[use alternate database location?])
40 AC_DEFINE_UNQUOTED(HELP_DIR, "$withval",[define, if the user suplied a helpfile-directory to use.])
41 MAKE_HELP_DIR=$withval
42 AC_SUBST(MAKE_HELP_DIR)
47 dnl Checks for the Static Datadir
48 AC_ARG_WITH(staticdatadir,
49 [ --with-staticdatadir directory to store citadels system messages under],
50 [ if test "x$withval" != "xno" ; then
51 AC_DEFINE(HAVE_STATICDATA_DIR, [], [should we activate an alternate static text location?])
52 AC_DEFINE_UNQUOTED(STATICDATA_DIR, "$withval", [where do we put our static text data?])
53 MAKE_STATICDATA_DIR=$withval
54 AC_SUBST(MAKE_STATICDATA_DIR)
60 dnl Checks for the SSLdir
61 dnl this is a bit different than the rest,
62 dnl because of the citadel used to have a keys/ subdir.
64 [ --with-ssldir directory to store the ssl certificates under],
65 [ if test "x$withval" != "xno" ; then
69 AC_SUBST(MAKE_SSL_DIR)
72 AC_DEFINE_UNQUOTED(SSL_DIR, "$ssl_dir", [were should we put our keys?])
75 dnl Checks for the spooldir
77 [ --with-spooldir directory to keep queues under],
78 [ if test "x$withval" != "xno" ; then
79 AC_DEFINE(HAVE_SPOOL_DIR, [], [enable alternate spool dir?])
80 AC_DEFINE_UNQUOTED(SPOOL_DIR,"$withval", [where do we place our spool dirs?])
81 MAKE_SPOOL_DIR=$withval
82 AC_SUBST(MAKE_SPOOL_DIR)
88 dnl Checks for the Configdir
89 AC_ARG_WITH(sysconfdir,
90 [ --with-sysconfdir directory to store the configs under],
91 [ if test "x$withval" != "xno" ; then
92 AC_DEFINE(HAVE_ETC_DIR, [], [should we search our system config in an alternate place?])
93 AC_DEFINE_UNQUOTED(ETC_DIR, "$withval", [where to search our config files])
95 AC_SUBST(MAKE_ETC_DIR)
100 dnl Checks for the Configdir
101 AC_ARG_WITH(autosysconfdir,
102 [ --with-autosysconfdir directory to store the automaticaly maintained configs under],
103 [ if test "x$withval" != "xno" ; then
104 AC_DEFINE(HAVE_AUTO_ETC_DIR, [], [should we search our automatic config in an alternate place?])
105 AC_DEFINE_UNQUOTED(AUTO_ETC_DIR, "$withval", [where to search our automatic config files])
106 MAKE_AUTO_ETC_DIR=$withval
107 AC_SUBST(MAKE_AUTO_ETC_DIR)
112 dnl Checks for where to put our utilities
113 AC_ARG_WITH(utility-bindir,
114 [ --with-utility-bindir directory where to find helper binaries],
115 [ if test "x$withval" != "xno" ; then
116 AC_DEFINE(HAVE_UTILBIN_DIR,[],[should we put our helper binaries to another location?])
117 AC_DEFINE_UNQUOTED(UTILBIN_DIR, "$withval", [were to put our helper programs])
118 MAKE_UTILBIN_DIR=$withval
119 AC_SUBST(MAKE_UTILBIN_DIR)
125 dnl Checks for the run-dir for the sockets
127 [ --with-rundir directory to place runtime files (UDS) to?],
128 [ if test "x$withval" != "xno" ; then
129 AC_DEFINE(HAVE_RUN_DIR, [], [should we put our non volatile files elsewhere?])
130 AC_DEFINE_UNQUOTED(RUN_DIR, "$withval", [define, where the config should go in unix style])
131 MAKE_RUN_DIR=$withval
132 AC_SUBST(MAKE_RUN_DIR)
138 dnl Checks for the Pseudo Random Generator sockets TODO: this keeps being default.
139 AC_DEFINE_UNQUOTED(EGD_POOL, "/var/run/egd-pool", [place to keep our pseudo random generator file])
141 [ --with-egdpool the socket from Pseudo Random Generator, defaults to /var/run/egd-pool],
142 [ if test "x$withval" != "xno" ; then
143 AC_DEFINE_UNQUOTED(EGD_POOL, "$withval", [the socket from Pseudo Random Generator])
150 [ --with-docdir where to install the documentation. default: /usr/local/citadel/],
151 [ if test "x$withval" != "xno" ; then
152 MAKE_DOC_DIR=$withval
153 AC_SUBST(MAKE_DOC_DIR)
159 dnl Checks for the zlib compression library.
160 if test "x$with_zlib" != xno ; then
161 AC_CHECK_HEADERS(zlib.h,
162 [AC_CHECK_LIB(z, zlibVersion,
167 if test "x$ok_zlib" = xyes ; then
168 LDFLAGS="-lz $LDFLAGS"
169 AC_DEFINE(HAVE_ZLIB, [], [define this if you have zlib compression available])
175 dnl Here is the check for a libc integrated iconv
177 [ --disable-iconv do not use iconv charset conversion],
178 ok_iconv=no, ok_iconv=yes)
180 AC_MSG_CHECKING(Checking to see if your system supports iconv)
184 iconv_t ic = (iconv_t)(-1) ;
185 ic = iconv_open("UTF-8", "us-ascii");
200 dnl Check for iconv in external libiconv
201 if test "$ok_iconv" = no; then
202 AC_MSG_CHECKING(Checking for an external libiconv)
203 OLD_LDFLAGS="$LDFLAGS"
204 LDFLAGS="$LDFLAGS -liconv"
208 iconv_t ic = (iconv_t)(-1) ;
209 ic = iconv_open("UTF-8", "us-ascii");
219 LDFLAGS="$OLD_LDFLAGS"
224 if test "$ok_iconv" != "no"; then
225 AC_MSG_RESULT(Citadel will be built with character set conversion.)
226 AC_DEFINE(HAVE_ICONV,[],[whether we have iconv for charset conversion])
228 AC_MSG_RESULT(Citadel will be built without character set conversion.)
231 AC_CHECK_LIB(intl, libintl_bindtextdomain, [LDFLAGS="$LDFLAGS -lintl"])
235 AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client
236 disable multithreaded client])
238 AC_ARG_ENABLE(pie, [ --enable-pie build position-independent executables])
240 AC_ARG_WITH(pam, [ --with-pam use PAM if present (see PAM.txt before you try this)])
241 AC_ARG_WITH(kthread, [ --with-kthread use kernel threads (on FreeBSD) (not recommended yet)])
242 AC_ARG_WITH(db, [ --with-db@<:@=DIR@:>@ use Berkeley DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
244 [ --with-ssl=PATH Specify path to OpenSSL installation ],
246 if test "x$withval" != "xno" ; then
251 AC_ARG_WITH(ncurses, [ --without-ncurses don't use ncurses])
253 AC_ARG_WITH(with_ldap, [ --with-ldap use OpenLDAP client library])
254 dnl AC_ARG_WITH(with_libdspam, [ --with-libdspam use libdspam mail spam scanning library])
255 AC_ARG_WITH(with_gc, [ --with-gc use the Boehm-Demers-Weiser garbage collection library])
257 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
261 test -f /usr/local/lib/libdb.a -o -f /usr/local/lib/libdb.so \
262 -o -f /usr/local/lib/libdb4.a -o -f /usr/local/lib/libdb4.so \
265 test -d /usr/local/BerkeleyDB.4.1 && db_dir=/usr/local/BerkeleyDB.4.1
266 test -d /usr/local/BerkeleyDB.4.2 && db_dir=/usr/local/BerkeleyDB.4.2
267 test -d /usr/local/BerkeleyDB.4.3 && db_dir=/usr/local/BerkeleyDB.4.3
268 test -d /usr/local/BerkeleyDB.4.4 && db_dir=/usr/local/BerkeleyDB.4.4
269 test -d /usr/local/BerkeleyDB.4.5 && db_dir=/usr/local/BerkeleyDB.4.5
272 dnl By default, we only build the client (citadel and whobbs) unless we can
273 dnl figure out how to build with POSIX threads.
277 PTHREAD_DEFS=-D_REENTRANT
278 AC_MSG_CHECKING([how to compile with POSIX threads])
280 dnl BSDI 3.0 wants relocatable object modules instead of shared libs
281 dnl for dlopen(), and has a wrapper script to link with shared libs.
282 dnl Also has stupid non-reentrant gethostbyaddr() and friends.
284 test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2
285 AC_DEFINE(HAVE_NONREENTRANT_NETDB,[], [define this if the OS has broken non-reentrant gethostby{name,addr}() ])
286 AC_MSG_RESULT([Old BSDI])
289 AC_DEFINE(HAVE_NONREENTRANT_NETDB, [], [define this if the OS has broken non-reentrant gethostby{name,addr}() ])
290 AC_MSG_RESULT([BSD/OS])
292 dnl Curses support on Mac OS X is kind of screwed at the moment.
293 dnl TCP buffering isn't ideal under OS X. This define should also be
294 dnl checked in other cases of OS X-Linux differences.
296 AC_DEFINE(DISABLE_CURSES,[],[define this to disable use of curses])
297 AC_DEFINE(HAVE_DARWIN, [], [define if using OS X/Darwin])
298 AC_MSG_RESULT([Mac OS X])
300 dnl Digital Unix has an odd way to build for pthreads, and we can't
301 dnl build pthreads programs with gcc due to header problems.
303 test -z "$CC" && CC=cc
304 LIBS="-lpthread -lexc $LIBS"
306 AC_MSG_RESULT([Tru64 or Digital UNIX])
308 dnl FreeBSD is similar to Digital UNIX with DEC C, which has a -pthread flag:
310 if test "$with_kthread" = yes; then
311 LIBS="-kthread $LIBS"
313 LIBS="-pthread $LIBS"
316 PTHREAD_DEFS=-D_THREAD_SAFE
317 AC_MSG_RESULT([FreeBSD])
320 LIBS="-pthread $LIBS"
322 PTHREAD_DEFS=-pthread
323 AC_MSG_RESULT([OpenBSD])
326 PTHREAD_DEFS="-D_REENTRANT -pthread"
327 AC_MSG_RESULT([Linux])
330 PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS"
331 AC_MSG_RESULT([Solaris])
334 SERVER_LDFLAGS="-Wl,-subsystem,windows"
335 AC_MSG_RESULT([Cygwin])
338 AC_MSG_RESULT([default])
341 dnl DEFS="$DEFS $PTHREAD_DEFS"
344 dnl Checks for programs.
349 dnl Set up system-dependent compiler flags.
350 if test "$GCC" = yes; then
351 if test "$CC" = icc; then
355 *-*-solaris*|alpha*-dec-osf*)
356 CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS"
359 CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
365 if test "x$enable_pie" = xyes; then
366 save_CFLAGS="$CFLAGS"
367 save_LDFLAGS="$LDFLAGS"
368 CFLAGS="$CFLAGS -fpie"
369 LDFLAGS="$LDFLAGS -pie -fpie"
370 AC_CACHE_CHECK([whether compiler accepts -pie -fpie], ac_cv_pie_fpie,
372 ac_cv_pie_fpie=yes, ac_cv_pie_fpie=no)])
373 if test $ac_cv_pie_fpie = no; then
374 CFLAGS="$save_CFLAGS"
375 LDFLAGS="$save_LDFLAGS"
379 AC_MSG_CHECKING([how to create dependancy checks])
380 if test -n "`$CC -V 2>&1 |grep Sun`"; then
385 AC_SUBST(DEPEND_FLAG)
390 missing_dir=`cd $ac_aux_dir && pwd`
391 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
392 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
394 dnl Checks for system services.
396 dnl Check the size of various builtin types; see typesize.h (error)
397 AC_CHECK_SIZEOF(char, 0)
398 AC_CHECK_SIZEOF(short, 0)
399 AC_CHECK_SIZEOF(int, 0)
400 AC_CHECK_SIZEOF(long, 0)
401 AC_CHECK_SIZEOF(size_t, 0)
402 dnl AC_CHECK_SIZEOF(long long, 0)
404 dnl Checks for libraries.
406 dnl We want to test for the following in libc before checking for their
407 dnl respective libraries, because some systems (like Irix) have both, and the
408 dnl non-libc versions may be broken.
409 AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r getloadavg)
411 AC_CHECK_FUNCS(strftime_l uselocale gettext)
413 if test "$ok_nls" != "no"; then
414 AC_CHECK_PROG(ok_xgettext, xgettext, yes, no)
418 if test "$ok_nls" != "no"; then
419 AC_CHECK_PROG(ok_msgmerge, msgmerge, yes, no)
423 if test "$ok_nls" != "no"; then
424 AC_CHECK_PROG(ok_msgfmt, msgfmt, yes, no)
428 if test "$ok_nls" != "no"; then
429 AC_MSG_RESULT(WebCit will be built with national language support.)
430 AC_DEFINE(ENABLE_NLS, [], [whether we have NLS support])
431 PROG_SUBDIRS="$PROG_SUBDIRS po"
433 AC_MSG_RESULT(WebCit will be built without national language support.)
436 dnl disable backtrace if we don't want it.
437 AC_ARG_WITH(backtrace,
438 [ --with-backtrace enable backtrace dumps in the syslog],
439 [ if test "x$withval" != "xno" ; then
440 CFLAGS="$CFLAGS -rdynamic "
441 LDFLAGS="$LDFLAGS -rdynamic "
442 SERVER_LDFLAGS="$SERVER_LDFLAGS -rdynamic "
443 AC_CHECK_FUNCS(backtrace)
448 dnl disable backtrace if we don't want it.
450 [ --with-gprof enable profiling],
451 [ if test "x$withval" != "xno" ; then
452 CFLAGS="$CFLAGS -pg "
453 LDFLAGS="$LDFLAGS -pg "
454 SERVER_LDFLAGS="$SERVER_LDFLAGS -pg "
459 dnl disable thread table reporting
460 AC_ARG_WITH(threadlog,
461 [ --with-threadlog enable logging of thread table],
462 [ if test "x$withval" != "xno" ; then
463 AC_DEFINE(WITH_THREADLOG, [], [Define if you want logging of the thread tables.])
469 if test "$ac_cv_func_gethostbyname" = no; then
470 AC_CHECK_LIB(nsl, gethostbyname)
473 if test "$ac_cv_func_connect" = no; then
474 AC_CHECK_LIB(socket, connect)
477 dnl Check for Solaris realtime support
478 AC_CHECK_LIB(rt, sched_yield)
480 dnl Determine the system's authentication capabilities.
481 dnl We currently support PAM, standard getpwnam(), and getspnam()
482 dnl (Linux shadow passwords)
485 AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
487 AC_CHECK_FUNCS(pam_start)
488 test "$enable_chkpwd" != no && LIBS=$save_LIBS
489 if test "$ac_cv_func_pam_start" = no -o "$with_pam" != yes; then
491 AC_SEARCH_LIBS(getspnam, shadow, [
492 if test "$ac_cv_search_getspnam" = -lshadow; then
493 chkpwd_LIBS="-lshadow $chkpwd_LIBS"
495 test "$enable_chkpwd" != no && LIBS=$save_LIBS
496 if test "$ac_cv_func_crypt" = no; then
497 AC_CHECK_LIB(crypt, crypt, [
498 chkpwd_LIBS="-lcrypt $chkpwd_LIBS"
499 test "$enable_chkpwd" = no && \
500 LIBS="-lcrypt $LIBS"])
504 if test "x$with_ncurses" != "xno"; then
505 AC_SEARCH_LIBS(tgetent, [ncurses curses termcap])
506 AC_SEARCH_LIBS(scrollok, [ncurses curses])
507 AC_SEARCH_LIBS(initscr, [ncurses curses])
509 AC_SEARCH_LIBS(tgetent, [curses termcap])
510 AC_SEARCH_LIBS(initscr, [curses])
512 AC_CHECK_FUNCS(vw_printw wcolor_set resizeterm wresize)
514 dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On
515 dnl which the -pthread flag takes care of this.)
516 if test "$check_pthread" != no; then
517 AC_CHECK_LIB(pthread, pthread_create)
518 AC_CHECK_LIB(pthreads, pthread_create)
521 test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
523 dnl Checks for the libical iCalendar library.
524 AC_CHECK_HEADER(libical/ical.h,
525 [AC_CHECK_LIB(ical, icaltimezone_set_tzid_prefix,
527 SERVER_LIBS="-lical $SERVER_LIBS"
530 AC_MSG_ERROR(libical was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
535 AC_MSG_ERROR(libical/ical.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
540 dnl Checks for the libsieve mailbox sorting library.
541 AC_CHECK_HEADER(sieve2.h,
542 [AC_CHECK_LIB(sieve, sieve2_license,
544 SERVER_LIBS="-lsieve $SERVER_LIBS"
547 AC_MSG_ERROR(libsieve was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
552 AC_MSG_ERROR(sieve2.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
556 saved_CFLAGS="$CFLAGS"
557 CFLAGS="$CFLAGS $SERVER_LIBS"
558 dnl Check for libcitadel
559 AC_CHECK_HEADER(libcitadel.h,
560 [AC_CHECK_LIB(citadel, libcitadel_version_string,
562 LIBS="-lcitadel $LIBS $SERVER_LIBS"
563 chkpwd_LIBS="-lcitadel $chkpwd_LIBS"
566 AC_MSG_ERROR(libcitadel was not found or is not usable. Please install libcitadel.)
571 AC_MSG_ERROR(libcitadel.h was not found or is not usable. Please install libcitadel.)
575 CFLAGS="$saved_CFLAGS"
579 # The big search for OpenSSL
580 if test "$with_ssl" != "no"; then
582 saved_LDFLAGS="$LDFLAGS"
583 saved_CFLAGS="$CFLAGS"
584 if test "x$prefix" != "xNONE"; then
585 tryssldir="$tryssldir $prefix"
587 AC_CACHE_CHECK([for OpenSSL], ac_cv_openssldir, [
588 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
589 CFLAGS="$saved_CFLAGS"
590 LDFLAGS="$saved_LDFLAGS"
591 LIBS="$saved_LIBS -lssl -lcrypto"
593 # Skip directories if they don't exist
594 if test ! -z "$ssldir" -a ! -d "$ssldir" ; then
597 if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
598 # Try to use $ssldir/lib if it exists, otherwise
600 if test -d "$ssldir/lib" ; then
601 LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
602 if test ! -z "$need_dash_r" ; then
603 LDFLAGS="-R$ssldir/lib $LDFLAGS"
606 LDFLAGS="-L$ssldir $saved_LDFLAGS"
607 if test ! -z "$need_dash_r" ; then
608 LDFLAGS="-R$ssldir $LDFLAGS"
611 # Try to use $ssldir/include if it exists, otherwise
613 if test -d "$ssldir/include" ; then
614 CFLAGS="-I$ssldir/include $saved_CFLAGS"
616 CFLAGS="-I$ssldir $saved_CFLAGS"
620 # Basic test to check for compatible version and correct linking
621 # *does not* test for RSA - that comes later.
625 #include <openssl/rand.h>
629 memset(a, 0, sizeof(a));
630 RAND_add(a, sizeof(a), sizeof(a));
631 return(RAND_status() <= 0);
640 if test ! -z "$found_crypto" ; then
645 if test -z "$ssldir" ; then
649 if test ! -z "$found_crypto" ; then
650 ac_cv_openssldir=$ssldir
652 ac_cv_openssldir="no"
656 LDFLAGS="$saved_LDFLAGS"
657 CFLAGS="$saved_CFLAGS"
659 if test "x$ac_cv_openssldir" != "xno" ; then
660 AC_DEFINE(HAVE_OPENSSL, [], [Define if you have OpenSSL.])
661 LIBS="-lssl -lcrypto $LIBS"
662 dnl Need to recover ssldir - test above runs in subshell
663 ssldir=$ac_cv_openssldir
664 if test ! -z "$ssldir" -a "x$ssldir" != "x/usr" -a "x$ssldir" != "x(system)"; then
665 # Try to use $ssldir/lib if it exists, otherwise
667 if test -d "$ssldir/lib" ; then
668 LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
669 if test ! -z "$need_dash_r" ; then
670 LDFLAGS="-R$ssldir/lib $LDFLAGS"
673 LDFLAGS="-L$ssldir $saved_LDFLAGS"
674 if test ! -z "$need_dash_r" ; then
675 LDFLAGS="-R$ssldir $LDFLAGS"
678 # Try to use $ssldir/include if it exists, otherwise
680 if test -d "$ssldir/include" ; then
681 CFLAGS="-I$ssldir/include $saved_CFLAGS"
683 CFLAGS="-I$ssldir $saved_CFLAGS"
689 if test "x$with_db" != xno; then
690 test "$db_dir" && LDFLAGS="$LDFLAGS -L$db_dir/lib"
694 if test -d "$db_dir/include/db4"; then
695 CPPFLAGS="$CPPFLAGS -I$db_dir/include/db4"
697 elif test "$db_dir"; then
698 CPPFLAGS="$CPPFLAGS -I$db_dir/include"
699 elif test -d /usr/include/db4; then
700 CPPFLAGS="$CPPFLAGS -I/usr/include/db4"
705 AC_CHECK_DB([db db-4.1 db-4 db4],
709 AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
710 library. Use --with-db=PATH to specify
718 dnl Checks for the OpenLDAP client library.
719 if test "x$with_ldap" != xno ; then
720 AC_CHECK_HEADERS(ldap.h,
721 [AC_CHECK_LIB(ldap, ldap_init,
726 if test "x$ok_ldap" = xyes ; then
727 SERVER_LIBS="-lldap $SERVER_LIBS"
728 AC_DEFINE(HAVE_LDAP, [], [define this if you have OpenLDAP client available])
735 dnl Checks for the Boehm-Demers-Weiser garbage collection library.
736 if test "x$with_gc" != xno ; then
737 AC_CHECK_HEADERS(gc/gc_local_alloc.h,
738 [AC_CHECK_LIB(gc, GC_init,
743 if test "x$ok_gc" = xyes ; then
744 SERVER_LIBS="-lgc $SERVER_LIBS"
745 AC_DEFINE(HAVE_GC, [], [define this if you have Boehm-Demers-Weiser available])
752 dnl Checks for the libdspam mail spam scanning library.
753 dnl if test "x$with_libdspam" != xno ; then
754 dnl AC_CHECK_HEADERS(dspam/libdspam.h,
755 dnl [AC_CHECK_LIB(dspam, dspam_init,
756 dnl [ok_libdspam=yes],,
760 dnl if test "x$ok_libdspam" = xyes ; then
761 dnl SERVER_LIBS="-ldspam $SERVER_LIBS"
762 dnl AC_DEFINE(HAVE_LIBDSPAM, [], [(unfinished) define this if you have the libdspam mail spam scanning library available])
767 dnl Checks for the Expat XML parser.
768 AC_CHECK_HEADER(expat.h,
769 [AC_CHECK_LIB(expat, XML_ParserCreateNS,
771 SERVER_LIBS="-lexpat $SERVER_LIBS"
774 AC_MSG_ERROR(The Expat XML parser was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
779 AC_MSG_ERROR(expat.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
789 dnl Checks for libcurl.
790 AC_CHECK_HEADER(curl/curl.h,
791 [AC_CHECK_LIB(curl, curl_version,
793 SERVER_LIBS="-lcurl $SERVER_LIBS"
796 AC_MSG_ERROR(libcurl was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
801 AC_MSG_ERROR(curl/curl.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
814 dnl Checks for header files.
820 dnl TODO: for the DB header checks, we should check whether the headers
821 dnl define db_env_create, somehow
823 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 syscall.h sys/syscall.h)
826 dnl need to check if this is actually compilable, sometimes there are
827 dnl conflicts with the system's headers (eg solaris xpg4 style headers)
829 if test "x$with_ncurses" != xno; then
830 AC_CHECK_HEADERS(ncurses.h,,,[ ])
833 AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H, [], [define this if you have the resolv.h header file.]),,
834 [#ifdef HAVE_SYS_TYPES_H
835 #include <sys/types.h>
837 #ifdef HAVE_NETINET_IN_H
838 #include <netinet/in.h>
840 #ifdef HAVE_ARPA_NAMESER_H
841 #include <arpa/nameser.h>
845 dnl Checks for typedefs, structures, and compiler characteristics.
851 dnl defined in acinclude.m4:
854 AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type,
855 [AC_TRY_COMPILE([#include <sys/types.h>
856 #include <utmp.h>], [struct utmp ut; ut.ut_type;],
857 ac_cv_struct_ut_type=yes, ac_cv_struct_ut_type=no)])
858 if test $ac_cv_struct_ut_type = yes; then
859 AC_DEFINE(HAVE_UT_TYPE, [], [define this if struct utmp has an ut_type member])
863 [for call semantics from getpwuid_r],
864 ac_cv_call_getpwuid_r,
865 [AC_TRY_COMPILE([#include <sys/types.h>
868 struct passwd pw, *pwp;
872 getpwuid_r(uid, &pw, pwbuf, sizeof(pwbuf), &pwp);
874 ac_cv_call_getpwuid_r=yes,
875 ac_cv_call_getpwuid_r=no)
878 if test $ac_cv_call_getpwuid_r = no; then
879 AC_DEFINE(SOLARIS_GETPWUID,[],[do we need to use solaris call syntax?])
880 AC_DEFINE(F_UID_T, "%ld", [whats the matching format string for uid_t?])
881 AC_DEFINE(F_PID_T, "%ld", [whats the matching format string for pid_t?])
882 AC_DEFINE(F_XPID_T, "%lx", [whats the matching format string for xpid_t?])
884 AC_DEFINE(F_UID_T, "%d", [whats the matching format string for uid_t?])
885 AC_DEFINE(F_PID_T, "%d", [whats the matching format string for pid_t?])
886 AC_DEFINE(F_XPID_T, "%x", [whats the matching format string for xpid_t?])
890 dnl Our own happy little check for the resolver library.
894 echo "we don't need to check for resolv on openbsd"
897 echo "we don't need to check for resolv on freeBSD"
900 test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
901 AC_CHECK_LIB(resolv, res_query,
902 RESOLV="$RESOLV -lresolv",
903 [dnl Have to include resolv.h as res_query is sometimes defined as a macro
904 AC_MSG_CHECKING([for res_query in -lresolv (with resolv.h if present)])
906 LIBS="-lresolv $LIBS"
911 [res_query(0,0,0,0,0)],
915 AC_MSG_ERROR(libresolv was not found. Citadel requires the resolver library.)
924 AC_CACHE_CHECK([for ut_host in struct utmp], ac_cv_struct_ut_host,
925 [AC_TRY_COMPILE([#include <sys/types.h>
926 #include <utmp.h>], [struct utmp ut; ut.ut_host;],
927 ac_cv_struct_ut_host=yes, ac_cv_struct_ut_host=no)])
928 if test $ac_cv_struct_ut_host = yes; then
929 AC_DEFINE(HAVE_UT_HOST, [], [define this if struct utmp has an ut_host member])
932 dnl Checks for library functions.
934 AC_PROG_GCC_TRADITIONAL
937 AC_CHECK_FUNCS(getspnam getutxline mkdir mkfifo mktime rmdir select socket strerror strcasecmp strncasecmp)
939 dnl Now check for pthreads
941 dnl On some platforms, AC_CHECK_FUNC[S] doesn't work for pthreads programs;
942 dnl we need to include pthread.h
944 AC_CACHE_CHECK([for pthread_cancel], ac_cv_func_pthread_cancel,
945 [AC_TRY_LINK([#include <pthread.h>],
948 /* The GNU C library defines this for functions which it implements
949 to always fail with ENOSYS. Some functions are actually named
950 something starting with __ and the normal name is an alias. */
951 #if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel)
954 pthread_cancel(thread);
956 ac_cv_func_pthread_cancel=yes, ac_cv_func_pthread_cancel=no)])
957 if test "$ac_cv_func_pthread_cancel" = yes; then
958 AC_DEFINE(HAVE_PTHREAD_CANCEL, [], [define this if you have the pthread_cancel() function])
961 AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create,
962 [AC_TRY_LINK([#include <pthread.h>],
963 [ /* The GNU C library defines this for functions which it implements
964 to always fail with ENOSYS. Some functions are actually named
965 something starting with __ and the normal name is an alias. */
966 #if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel)
969 pthread_create(NULL, NULL, NULL, NULL);
971 ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)])
972 if test "$ac_cv_func_pthread_create" = yes; then
973 test "$DATABASE" && TARGETS="client server utils"
974 if test "x$enable_threaded_client" != xno; then
975 AC_DEFINE(THREADED_CLIENT, [], [define this if you want to enable the multithreaded client])
979 AC_REPLACE_FUNCS(snprintf getutline)
981 AC_CACHE_CHECK([the weather], ac_cv_weather, [
983 echo $ECHO_N "opening your window... $ECHO_C" >&6
985 month=`date | cut -f 2 -d ' '`
988 ac_cv_weather="it's cold!"
991 ac_cv_weather="it's wet!"
994 ac_cv_weather="it's hot!"
997 ac_cv_weather="it's cool"
1000 ac_cv_weather="it's fine"
1008 AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [
1009 number=`date | cut -c 19`
1012 ac_cv_under_the_bed="lunatics and monsters found"
1015 ac_cv_under_the_bed="dust bunnies found"
1025 dnl Done! Now write the Makefile and sysdep.h
1028 AC_SUBST(chkpwd_LIBS)
1031 AC_SUBST(SERVER_LDFLAGS)
1032 AC_SUBST(SERVER_LIBS)
1033 AC_SUBST(SETUP_LIBS)
1034 AC_CONFIG_FILES([Makefile])
1035 AC_OUTPUT(database_cleanup.sh)
1037 if test -z "$DATABASE"; then
1038 AC_MSG_WARN([No database driver was found. Please install Berkeley DB.])
1041 abs_srcdir="`cd $srcdir && pwd`"
1042 abs_builddir="`pwd`"
1043 if test "$abs_srcdir" != "$abs_builddir"; then
1044 ln -sf $abs_srcdir/include $abs_builddir
1045 ln -sf $abs_srcdir/Make_sources $abs_builddir
1046 ln -sf $abs_srcdir/Make_modules $abs_builddir
1047 for i in $abs_srcdir/*.h ; do
1048 if test "$abs_srcdir/sysdep.h" != "$i"; then
1049 ln -sf $i $abs_builddir
1052 for d in `/bin/ls $abs_srcdir/modules/`; do
1053 (mkdir -p $abs_builddir/modules/$d)
1055 if test -d "$abs_srcdir/user_modules/"; then
1056 for d in `/bin/ls $abs_srcdir/user_modules/`; do
1057 (mkdir -p $abs_builddir/user_modules/$d)
1060 mkdir -p $abs_builddir/utils
1061 mkdir -p $abs_builddir/utillib
1062 mkdir -p $abs_builddir/textclient
1065 if test -n "$srcdir"; then
1070 echo ------------------------------------------------------------------------
1071 echo 'LDAP support: ' $ok_ldap
1072 echo 'Character set conversion support:' $ok_iconv
1073 echo 'Boehm-Demers-Weiser support: ' $ok_gc
1074 dnl echo 'DSpam Scanning support: ' $ok_libdspam
1076 echo 'Note: if you are not using Linux, make sure you are using GNU make'
1077 echo '(gmake) to compile Citadel.'