* removed last occurance of static paths in favour of citadel_dirs
[citadel.git] / citadel / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 dnl $Id$
3 AC_PREREQ(2.52)
4 AC_INIT([Citadel], [6.15], [http://uncensored.citadel.org/])
5 AC_REVISION([$Revision$])
6 AC_CONFIG_SRCDIR([citserver.c])
7 AC_PREFIX_DEFAULT(/usr/local/citadel)
8 if test "$prefix" = NONE; then
9         AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix")
10 else
11         AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix")
12 fi
13
14
15 dnl Make sure we see all GNU and Solaris extensions.
16 AC_GNU_SOURCE
17
18
19 dnl Checks for the Datadir
20 AC_ARG_WITH(datadir, 
21                     [  --with-datadir          directory to store the databases under],
22                         [ if test "x$withval" != "xno" ; then
23                                               AC_DEFINE(HAVE_DATA_DIR)
24                                                   AC_DEFINE_UNQUOTED(DATA_DIR, "$withval")
25                                                   MAKE_DATA_DIR=$withval
26                                                   AC_SUBST(MAKE_DATA_DIR)
27                           fi
28                         ]
29 )
30
31 dnl Checks for the spooldir
32 AC_ARG_WITH(spooldir, 
33                         [  --with-spooldir         directory to keep queues under],
34                         [ if test "x$withval" != "xno" ; then
35                                             AC_DEFINE(HAVE_SPOOL_DIR)
36                                                 AC_DEFINE_UNQUOTED(SPOOL_DIR,"$withval")
37                                                 MAKE_SPOOL_DIR=$withval
38                                                 AC_SUBST(MAKE_SPOOL_DIR)
39                            fi
40                         ]
41 )
42
43
44 dnl Checks for the Configdir
45 AC_ARG_WITH(sysconfdir, 
46                         [  --with-sysconfdir       directory to store the configs under],
47                         [ if test "x$withval" != "xno" ; then
48                                             AC_DEFINE(HAVE_ETC_DIR)
49                                                 AC_DEFINE_UNQUOTED(ETC_DIR, "$withval")
50                                                 MAKE_ETC_DIR=$withval
51                                                 AC_SUBST(MAKE_ETC_DIR)
52                           fi
53                         ]
54 )
55
56
57 dnl Checks for the run-dir for the sockets
58 AC_ARG_WITH(rundir, 
59                         [  --with-rundir           directory to store the configs under],
60                         [ if test "x$withval" != "xno" ; then
61                                             AC_DEFINE(HAVE_RUN_DIR)
62                                                 AC_DEFINE_UNQUOTED(RUN_DIR, "$withval")
63                                                 MAKE_RUN_DIR=$withval
64                                                 AC_SUBST(MAKE_RUN_DIR)
65                           fi
66                         ]
67 )
68
69
70 dnl Checks for the Pseudo Random Generator sockets TODO: this keeps being default.
71 AC_DEFINE_UNQUOTED(EGD_POOL, "/var/run/egd-pool")
72 AC_ARG_WITH(egdpool, 
73                         [  --with-egdpool          the socket from Pseudo Random Generator, defaults to /var/run/egd-pool],
74                         [ if test "x$withval" != "xno" ; then
75                                                 AC_DEFINE_UNQUOTED(EGD_POOL, "$withval")
76                           fi
77                         ]
78 )
79
80
81 AC_ARG_WITH(docdir,
82                         [  --with-docdir           where to install the documentation. default: /usr/local/citadel/],
83                         [ if test "x$withval" != "xno" ; then
84                                         MAKE_DOC_DIR=$withval
85                                         AC_SUBST(MAKE_DOC_DIR)
86                           fi
87                         ]
88 )
89
90
91
92 AC_ARG_ENABLE(autologin, [  --enable-autologin      enable autologin (default is disabled)])
93 AC_ARG_ENABLE(chkpwd, [  --disable-chkpwd        don't build 'chkpwd'])
94
95 AC_ARG_ENABLE(threaded-client, [  --disable-threaded-client
96                           disable multithreaded client])
97
98 AC_ARG_ENABLE(pie, [  --enable-pie            build position-independent executables])
99
100 AC_ARG_WITH(pam, [  --with-pam              use PAM if present (see PAM.txt before you try this)])
101 AC_ARG_WITH(kthread, [  --with-kthread          use kernel threads (on FreeBSD) (not recommended yet)])
102 AC_ARG_WITH(db, [  --with-db@<:@=DIR@:>@         use Sleepycat DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
103 AC_ARG_WITH(ssl,
104         [  --with-ssl=PATH         Specify path to OpenSSL installation ],
105         [
106                 if test "x$withval" != "xno" ; then
107                         tryssldir=$withval
108                 fi
109         ]
110 )
111 AC_ARG_WITH(ncurses, [  --without-ncurses       don't use ncurses])
112
113 AC_ARG_WITH(with_zlib, [  --with-zlib             use zlib compression if present])
114 AC_ARG_WITH(with_ldap, [  --with-ldap             use OpenLDAP client library])
115 AC_ARG_WITH(with_libical, [  --with-libical          use libical calendaring library])
116 AC_ARG_WITH(with_newt, [  --with-newt             use newt window library])
117
118 if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
119         db_dir="$with_db"
120         with_db=yes
121 else
122         test -f /usr/local/lib/libdb.a -o -f /usr/local/lib/libdb.so \
123           -o -f /usr/local/lib/libdb4.a -o -f /usr/local/lib/libdb4.so \
124           && db_dir=/usr/local
125
126         test -d /usr/local/BerkeleyDB.4.1 && db_dir=/usr/local/BerkeleyDB.4.1
127         test -d /usr/local/BerkeleyDB.4.2 && db_dir=/usr/local/BerkeleyDB.4.2
128         test -d /usr/local/BerkeleyDB.4.3 && db_dir=/usr/local/BerkeleyDB.4.3
129 fi
130
131 dnl By default, we only build the client (citadel and whobbs) unless we can
132 dnl figure out how to build with POSIX threads.
133 TARGETS=client
134
135 AC_CANONICAL_HOST
136 PTHREAD_DEFS=-D_REENTRANT
137 AC_MSG_CHECKING([how to compile with POSIX threads])
138 case "$host" in
139         dnl BSDI 3.0 wants relocatable object modules instead of shared libs
140         dnl for dlopen(), and has a wrapper script to link with shared libs.
141         dnl Also has stupid non-reentrant gethostbyaddr() and friends.
142         *-*-bsdi[123]*)
143                 test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2
144                 AC_DEFINE(HAVE_NONREENTRANT_NETDB)
145                 AC_MSG_RESULT([Old BSDI])
146         ;;
147         *-*-bsdi*)
148                 AC_DEFINE(HAVE_NONREENTRANT_NETDB)
149                 AC_MSG_RESULT([BSD/OS])
150         ;;
151         dnl Curses support on Mac OS X is kind of screwed at the moment.
152         *-*-darwin*)
153                 AC_DEFINE(DISABLE_CURSES)
154                 AC_MSG_RESULT([Mac OS X])
155         ;;
156         dnl Digital Unix has an odd way to build for pthreads, and we can't
157         dnl build pthreads programs with gcc due to header problems.
158         alpha*-dec-osf*)
159                 test -z "$CC" && CC=cc
160                 LIBS="-lpthread -lexc $LIBS"
161                 check_pthread=no
162                 AC_MSG_RESULT([Tru64 or Digital UNIX])
163         ;;
164         dnl FreeBSD is similar to Digital UNIX with DEC C, which has a -pthread flag:
165         *-*-freebsd*)
166                 if test "$with_kthread" = yes; then
167                         LIBS="-kthread $LIBS"
168                 else
169                         LIBS="-pthread $LIBS"
170                 fi
171                 check_pthread=no
172                 PTHREAD_DEFS=-D_THREAD_SAFE
173                 AC_MSG_RESULT([FreeBSD])
174         ;;
175         *-*-openbsd*)
176                 LIBS="-pthread $LIBS"
177                 check_pthread=no
178                 PTHREAD_DEFS=-pthread
179                 AC_MSG_RESULT([OpenBSD])
180         ;;
181         *-*-linux*)
182                 PTHREAD_DEFS="-D_REENTRANT -pthread"
183                 AC_MSG_RESULT([Linux])
184         ;;
185         *-*-solaris*)
186                 PTHREAD_DEFS="-D_REENTRANT -D_PTHREADS"
187                 AC_MSG_RESULT([Solaris])
188         ;;
189         *-*-cygwin*)
190                 SERVER_LDFLAGS="-Wl,-subsystem,windows"
191                 AC_MSG_RESULT([Cygwin])
192         ;;
193         *)
194                 AC_MSG_RESULT([default])
195         ;;
196 esac
197 dnl DEFS="$DEFS $PTHREAD_DEFS"
198
199
200 dnl Checks for programs.
201 AC_PROG_CC
202
203 dnl Set up system-dependent compiler flags.
204 if test "$GCC" = yes; then
205         if test "$CC" = icc; then
206                 CFLAGS="$CFLAGS -w1"
207         else
208                 case "$host" in
209                         *-*-solaris*|alpha*-dec-osf*)
210                                 CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS"
211                         ;;
212                         *)
213                         CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
214                         ;;
215                 esac
216         fi
217 fi
218
219 if test "x$enable_pie" = xyes; then
220         save_CFLAGS="$CFLAGS"
221         save_LDFLAGS="$LDFLAGS"
222         CFLAGS="$CFLAGS -fpie"
223         LDFLAGS="$LDFLAGS -pie -fpie"
224         AC_CACHE_CHECK([whether compiler accepts -pie -fpie], ac_cv_pie_fpie,
225         [AC_TRY_LINK([], [],
226         ac_cv_pie_fpie=yes, ac_cv_pie_fpie=no)])
227         if test $ac_cv_pie_fpie = no; then
228                 CFLAGS="$save_CFLAGS"
229                 LDFLAGS="$save_LDFLAGS"
230         fi
231 fi
232
233 AC_PROG_INSTALL
234 AC_PROG_YACC
235 missing_dir=`cd $ac_aux_dir && pwd`
236 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
237 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
238
239 dnl Checks for system services.
240
241 dnl Check the size of various builtin types; see typesize.h (error)
242 AC_CHECK_SIZEOF(char, 0)
243 AC_CHECK_SIZEOF(short, 0)
244 AC_CHECK_SIZEOF(int, 0)
245 AC_CHECK_SIZEOF(long, 0)
246 dnl AC_CHECK_SIZEOF(long long, 0)
247
248 dnl Checks for libraries.
249
250 dnl We want to test for the following in libc before checking for their
251 dnl respective libraries, because some systems (like Irix) have both, and the
252 dnl non-libc versions may be broken.
253 AC_CHECK_FUNCS(crypt gethostbyname connect)
254
255 if test "$ac_cv_func_gethostbyname" = no; then
256         AC_CHECK_LIB(nsl, gethostbyname)
257 fi
258
259 if test "$ac_cv_func_connect" = no; then
260         AC_CHECK_LIB(socket, connect)
261 fi
262
263 dnl Check for Solaris realtime support
264 AC_CHECK_LIB(rt, sched_yield)
265
266 dnl Determine the system's authentication capabilities, if autologin is
267 dnl requested. We currently support PAM, standard getpwnam(), and getspnam()
268 dnl (Linux shadow passwords)
269 if test "$enable_autologin" = yes; then
270         if test "$with_pam" = yes; then
271                 save_LIBS=$LIBS
272                 AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
273                         LIBS="-lpam $LIBS"])
274                 AC_CHECK_FUNCS(pam_start)
275                 test "$enable_chkpwd" != no && LIBS=$save_LIBS
276         fi
277         if test "$ac_cv_func_pam_start" = no -o "$with_pam" != yes; then
278                 save_LIBS=$LIBS
279                 AC_SEARCH_LIBS(getspnam, shadow, [
280                         if test "$ac_cv_search_getspnam" = -lshadow; then
281                                 chkpwd_LIBS="-lshadow $chkpwd_LIBS"
282                         fi])
283                 test "$enable_chkpwd" != no && LIBS=$save_LIBS
284                 if test "$ac_cv_func_crypt" = no; then
285                         AC_CHECK_LIB(crypt, crypt, [
286                                 chkpwd_LIBS="-lcrypt $chkpwd_LIBS"
287                                 test "$enable_chkpwd" = no && \
288                                         LIBS="-lcrypt $LIBS"])
289                 fi
290         fi
291         if test "$ac_cv_func_crypt" = yes -o "$ac_cv_lib_crypt_crypt" = yes -o "$ac_cv_func_pam_start" = yes; then
292                 AC_DEFINE(ENABLE_AUTOLOGIN)
293                 if test "$enable_chkpwd" != no; then
294                         AC_DEFINE(ENABLE_CHKPWD)
295                         CHKPWD=chkpwd
296                 else
297                         AUTH=auth.lo
298                 fi
299         fi
300 fi
301
302 test -f /usr/local/lib/libresolv.a && LDFLAGS="$LDFLAGS -L/usr/local/lib"
303 AC_CHECK_LIB(resolv, res_query, RESOLV="$RESOLV -lresolv")
304
305 if test "x$with_ncurses" != "xno"; then
306         AC_SEARCH_LIBS(tgetent, [ncurses curses termcap])
307         AC_SEARCH_LIBS(scrollok, [ncurses curses])
308         AC_SEARCH_LIBS(initscr, [ncurses curses])
309 else
310         AC_SEARCH_LIBS(tgetent, [curses termcap])
311         AC_SEARCH_LIBS(initscr, [curses])
312 fi
313 AC_CHECK_FUNCS(vw_printw wcolor_set resizeterm wresize)
314
315 dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On
316 dnl which the -pthread flag takes care of this.)
317 if test "$check_pthread" != no; then
318         AC_CHECK_LIB(pthread, pthread_create)
319         AC_CHECK_LIB(pthreads, pthread_create)
320 fi
321
322 test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
323
324 # The big search for OpenSSL
325 if test "$with_ssl" != "no"; then
326         saved_LIBS="$LIBS"
327         saved_LDFLAGS="$LDFLAGS"
328         saved_CFLAGS="$CFLAGS"
329         if test "x$prefix" != "xNONE"; then
330                 tryssldir="$tryssldir $prefix"
331         fi
332         AC_CACHE_CHECK([for OpenSSL], ac_cv_openssldir, [
333                 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
334                         CFLAGS="$saved_CFLAGS"
335                         LDFLAGS="$saved_LDFLAGS"
336                         LIBS="$saved_LIBS -lssl -lcrypto"
337         
338                         # Skip directories if they don't exist
339                         if test ! -z "$ssldir" -a ! -d "$ssldir" ; then
340                                 continue;
341                         fi
342                         if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
343                                 # Try to use $ssldir/lib if it exists, otherwise
344                                 # $ssldir
345                                 if test -d "$ssldir/lib" ; then
346                                         LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
347                                         if test ! -z "$need_dash_r" ; then
348                                                 LDFLAGS="-R$ssldir/lib $LDFLAGS"
349                                         fi
350                                 else
351                                         LDFLAGS="-L$ssldir $saved_LDFLAGS"
352                                         if test ! -z "$need_dash_r" ; then
353                                                 LDFLAGS="-R$ssldir $LDFLAGS"
354                                         fi
355                                 fi
356                                 # Try to use $ssldir/include if it exists, otherwise
357                                 # $ssldir
358                                 if test -d "$ssldir/include" ; then
359                                         CFLAGS="-I$ssldir/include $saved_CFLAGS"
360                                 else
361                                         CFLAGS="-I$ssldir $saved_CFLAGS"
362                                 fi
363                         fi
364         
365                         # Basic test to check for compatible version and correct linking
366                         # *does not* test for RSA - that comes later.
367                         AC_TRY_RUN(
368                                 [
369         #include <string.h>
370         #include <openssl/rand.h>
371         int main(void)
372         {
373                 char a[2048];
374                 memset(a, 0, sizeof(a));
375                 RAND_add(a, sizeof(a), sizeof(a));
376                 return(RAND_status() <= 0);
377         }
378                                 ],
379                                 [
380                                         found_crypto=1
381                                         break;
382                                 ], []
383                         )
384         
385                         if test ! -z "$found_crypto" ; then
386                                 break;
387                         fi
388                 done
389         
390                 if test -z "$ssldir" ; then
391                         ssldir="(system)"
392                 fi
393         
394                 if test ! -z "$found_crypto" ; then
395                         ac_cv_openssldir=$ssldir
396                 else
397                         ac_cv_openssldir="no"
398                 fi
399         ])
400         LIBS="$saved_LIBS"
401         LDFLAGS="$saved_LDFLAGS"
402         CFLAGS="$saved_CFLAGS"
403         
404         if test "x$ac_cv_openssldir" != "xno" ; then
405                 AC_DEFINE(HAVE_OPENSSL)
406                 LIBS="-lssl -lcrypto $LIBS"
407                 dnl Need to recover ssldir - test above runs in subshell
408                 ssldir=$ac_cv_openssldir
409                 if test ! -z "$ssldir" -a "x$ssldir" != "x/usr" -a "x$ssldir" != "x(system)"; then
410                         # Try to use $ssldir/lib if it exists, otherwise
411                         # $ssldir
412                         if test -d "$ssldir/lib" ; then
413                                 LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
414                                 if test ! -z "$need_dash_r" ; then
415                                         LDFLAGS="-R$ssldir/lib $LDFLAGS"
416                                 fi
417                         else
418                                 LDFLAGS="-L$ssldir $saved_LDFLAGS"
419                                 if test ! -z "$need_dash_r" ; then
420                                         LDFLAGS="-R$ssldir $LDFLAGS"
421                                 fi
422                         fi
423                         # Try to use $ssldir/include if it exists, otherwise
424                         # $ssldir
425                         if test -d "$ssldir/include" ; then
426                                 CFLAGS="-I$ssldir/include $saved_CFLAGS"
427                         else
428                                 CFLAGS="-I$ssldir $saved_CFLAGS"
429                         fi
430                 fi
431         fi
432 fi
433
434 if test "x$with_db" != xno; then
435         test "$db_dir" && LDFLAGS="$LDFLAGS -L$db_dir/lib"
436
437         dblib=""
438
439         if test -d "$db_dir/include/db4"; then
440                 CPPFLAGS="$CPPFLAGS -I$db_dir/include/db4"
441                 dblib="db4"
442         elif test "$db_dir"; then
443                 CPPFLAGS="$CPPFLAGS -I$db_dir/include"
444         elif test -d /usr/include/db4; then
445                 CPPFLAGS="$CPPFLAGS -I/usr/include/db4"
446                 dblib="db4"
447         fi
448
449
450         AC_CHECK_DB([db db-4.1 db-4 db4],
451                     [
452                      DATABASE=database_sleepycat.c
453                     ],
454                     AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
455                                   library.  Use --with-db=PATH to specify
456                                   the path]]))
457
458 fi
459
460 dnl Checks for the zlib compression library.
461 if test "x$with_zlib" != xno ; then
462         AC_CHECK_HEADERS(zlib.h,
463                 [AC_CHECK_LIB(z, zlibVersion,
464                         [ok_zlib=yes],,
465         )])
466 fi
467
468 if test "x$ok_zlib" = xyes ; then
469         SERVER_LIBS="-lz $SERVER_LIBS"
470         AC_DEFINE(HAVE_ZLIB)
471 fi
472
473
474
475
476 dnl Checks for the OpenLDAP client library.
477 if test "x$with_ldap" != xno ; then
478         AC_CHECK_HEADERS(ldap.h,
479                 [AC_CHECK_LIB(ldap, ldap_init,
480                         [ok_ldap=yes],,
481         )])
482 fi
483
484 if test "x$ok_ldap" = xyes ; then
485         SERVER_LIBS="-lldap $SERVER_LIBS"
486         AC_DEFINE(HAVE_LDAP)
487 fi
488
489
490
491
492 dnl Checks for the newt window library.
493 if test "x$with_newt" != xno ; then
494         AC_CHECK_HEADERS(newt.h,
495                 [AC_CHECK_LIB(newt, newtInit,
496                         [ok_newt=yes],,
497         )])
498 fi
499
500 if test "x$ok_newt" = xyes ; then
501         SETUP_LIBS="-lnewt $SETUP_LIBS"
502         AC_DEFINE(HAVE_NEWT)
503 fi
504
505
506
507
508
509
510 dnl Checks for the libical calendaring library.
511 if test "x$with_libical" != xno ; then
512         AC_CHECK_HEADERS(ical.h,
513                 [AC_CHECK_LIB(ical, icalcomponent_new,
514                         [ok_libical=yes],,
515         )])
516 fi
517
518 if test "x$ok_libical" = xyes ; then
519
520         AC_TRY_RUN(
521                 [
522 #include <ical.h>
523 main() {
524         int major, minor, v;
525         sscanf(ICAL_VERSION, "%d.%d", &major, &minor);
526         v = 100*major + minor;
527         printf("libical version: %i\n", v);
528         if (v >= 24) {
529                 printf("This version is ok.\n");
530                 return(0);
531         }
532         printf("libical 0.24 or newer required.\n");
533         printf("Citadel will be built without calendar support.\n");
534         return(1);
535 }
536                 ], 
537                 [
538                         SERVER_LIBS="-lical $SERVER_LIBS"
539                         AC_DEFINE(HAVE_LIBICAL)
540                 ]
541         )
542 fi
543
544
545
546
547 dnl Checks for header files.
548 AC_HEADER_DIRENT
549 AC_HEADER_STDC
550 AC_HEADER_SYS_WAIT
551
552 dnl
553 dnl TODO: for the DB header checks, we should check whether the headers
554 dnl define db_env_create, somehow
555 dnl
556 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)
557
558 dnl
559 dnl need to check if this is actually compilable, sometimes there are
560 dnl conflicts with the system's headers (eg solaris xpg4 style headers)
561 dnl
562 if test "x$with_ncurses" != xno; then
563         AC_CHECK_HEADERS(ncurses.h,,,[ ])
564 fi
565
566 AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H),,
567 [#ifdef HAVE_SYS_TYPES_H
568 #include <sys/types.h>
569 #endif
570 #ifdef HAVE_NETINET_IN_H
571 #include <netinet/in.h>
572 #endif
573 #ifdef HAVE_ARPA_NAMESER_H
574 #include <arpa/nameser.h>
575 #endif])
576
577
578 dnl Checks for typedefs, structures, and compiler characteristics.
579 AC_C_CONST
580 AC_TYPE_PID_T
581 AC_TYPE_SIZE_T
582 AC_HEADER_TIME
583
584 dnl defined in acinclude.m4:
585 CIT_STRUCT_TM
586
587 AC_CACHE_CHECK([for ut_type in struct utmp], ac_cv_struct_ut_type,
588 [AC_TRY_COMPILE([#include <sys/types.h>
589 #include <utmp.h>], [struct utmp ut; ut.ut_type;],
590 ac_cv_struct_ut_type=yes, ac_cv_struct_ut_type=no)])
591 if test $ac_cv_struct_ut_type = yes; then
592         AC_DEFINE(HAVE_UT_TYPE)
593 fi
594
595 AC_CACHE_CHECK([for ut_host in struct utmp], ac_cv_struct_ut_host,
596 [AC_TRY_COMPILE([#include <sys/types.h>
597 #include <utmp.h>], [struct utmp ut; ut.ut_host;],
598 ac_cv_struct_ut_host=yes, ac_cv_struct_ut_host=no)])
599 if test $ac_cv_struct_ut_host = yes; then
600         AC_DEFINE(HAVE_UT_HOST)
601 fi
602
603 dnl Checks for library functions.
604 AC_FUNC_GETPGRP
605 AC_PROG_GCC_TRADITIONAL
606 AC_TYPE_SIGNAL
607 AC_FUNC_VPRINTF
608 AC_CHECK_FUNCS(getspnam getutxline mkdir mkfifo mktime rmdir select socket strerror strcasecmp strncasecmp)
609
610 dnl Now check for pthreads
611
612 dnl On some platforms, AC_CHECK_FUNC[S] doesn't work for pthreads programs;
613 dnl we need to include pthread.h
614
615 AC_CACHE_CHECK([for pthread_cancel], ac_cv_func_pthread_cancel,
616 [AC_TRY_LINK([#include <pthread.h>],
617 [       pthread_t thread;
618
619         /* The GNU C library defines this for functions which it implements
620            to always fail with ENOSYS.  Some functions are actually named
621            something starting with __ and the normal name is an alias.  */
622 #if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel)
623         choke me
624 #else
625         pthread_cancel(thread);
626 #endif],
627 ac_cv_func_pthread_cancel=yes, ac_cv_func_pthread_cancel=no)])
628 if test "$ac_cv_func_pthread_cancel" = yes; then
629         AC_DEFINE(HAVE_PTHREAD_CANCEL)
630 fi
631
632 AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create,
633 [AC_TRY_LINK([#include <pthread.h>],
634 [       /* The GNU C library defines this for functions which it implements
635            to always fail with ENOSYS.  Some functions are actually named
636            something starting with __ and the normal name is an alias.  */
637 #if defined (__stub_pthread_cancel) || defined (__stub___pthread_cancel)
638         choke me
639 #else
640         pthread_create(NULL, NULL, NULL, NULL);
641 #endif],
642 ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)])
643 if test "$ac_cv_func_pthread_create" = yes; then
644         test "$DATABASE" && TARGETS="client server utils"
645         if test "x$enable_threaded_client" != xno; then
646                 AC_DEFINE(THREADED_CLIENT)
647         fi
648 fi
649
650 AC_REPLACE_FUNCS(snprintf getutline)
651
652 # AC_CACHE_CHECK([the weather], ac_cv_weather, [
653 #       sleep 1
654 #       echo $ECHO_N "opening your window... $ECHO_C" >&6
655 #       sleep 2
656 #       month=`date | cut -f 2 -d ' '`
657 #       case $month in
658 #       Dec | Jan | Feb)
659 #               ac_cv_weather="it's cold!"
660 #               ;;
661 #       Mar | Apr)
662 #               ac_cv_weather="it's wet!"
663 #               ;;
664 #       Jul | Aug)
665 #               ac_cv_weather="it's hot!"
666 #               ;;
667 #       Oct | Nov)
668 #               ac_cv_weather="it's cool"
669 #               ;;
670 #       May | Jun | Sep | *)
671 #               ac_cv_weather="it's fine"
672 #               ;;
673 #       esac
674 #       ])
675
676
677
678 AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [
679         number=`date | cut -c 19`
680         case $number in
681         7)
682                 ac_cv_under_the_bed="lunatics and monsters found"
683                 ;;
684         *)
685                 ac_cv_under_the_bed="dust bunnies found"
686                 ;;
687         esac
688         ])
689
690 dnl Done! Now write the Makefile and sysdep.h
691 AC_SUBST(AUTH)
692 AC_SUBST(CHKPWD)
693 AC_SUBST(RESOLV)
694 AC_SUBST(chkpwd_LIBS)
695 AC_SUBST(TARGETS)
696 AC_SUBST(DATABASE)
697 AC_SUBST(SERVER_LDFLAGS)
698 AC_SUBST(SERVER_LIBS)
699 AC_SUBST(SETUP_LIBS)
700 AC_CONFIG_HEADER(sysdep.h)
701 AC_CONFIG_FILES([Makefile])
702 AC_OUTPUT(database_cleanup.sh)
703
704 if test -z "$DATABASE"; then
705         AC_MSG_WARN([No database driver was found. Please install Berkeley DB.])
706 fi
707
708 echo ------------------------------------------------------------------------
709 echo 'zlib compression:                ' $ok_zlib
710 echo 'Calendar support:                ' $ok_libical
711 echo 'LDAP support:                    ' $ok_ldap
712 echo 
713 echo 'Note: if you are not using Linux, make sure you are using GNU make'
714 echo '(gmake) to compile Citadel.'
715 echo