]> code.citadel.org Git - citadel.git/blobdiff - citadel/configure.ac
* Replaced all "Citadel/UX" references with "Citadel"
[citadel.git] / citadel / configure.ac
index c990f4b235dad05386f61d4d80aaec92399f7f26..72ce3086c3ff95013d2ef6e13cee778109ef5357 100644 (file)
@@ -1,7 +1,7 @@
 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_INIT([Citadel], [6.15], [http://uncensored.citadel.org/])
 AC_REVISION([$Revision$])
 AC_CONFIG_SRCDIR([citserver.c])
 AC_PREFIX_DEFAULT(/usr/local/citadel)
@@ -17,6 +17,8 @@ AC_ARG_ENABLE(chkpwd, [  --disable-chkpwd        don't build 'chkpwd'])
 AC_ARG_ENABLE(threaded-client, [  --disable-threaded-client
                          disable multithreaded client])
 
+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(db, [  --with-db@<:@=DIR@:>@         use Sleepycat DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
@@ -31,6 +33,7 @@ AC_ARG_WITH(ssl,
 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_ldap, [  --with-ldap             use OpenLDAP client library])
 AC_ARG_WITH(with_libical, [  --with-libical          use libical calendaring library])
 AC_ARG_WITH(with_newt, [  --with-newt          use newt window library])
 
@@ -43,6 +46,7 @@ else
          && db_dir=/usr/local
 
        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
 fi
 
 dnl By default, we only build the client (citadel and whobbs) unless we can
@@ -51,6 +55,7 @@ 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.
@@ -58,13 +63,16 @@ case "$host" in
        *-*-bsdi[123]*)
                test -z "$CC" -a -x /usr/bin/shlicc2 && CC=shlicc2
                AC_DEFINE(HAVE_NONREENTRANT_NETDB)
+               AC_MSG_RESULT([Old BSDI])
        ;;
        *-*-bsdi*)
                AC_DEFINE(HAVE_NONREENTRANT_NETDB)
+               AC_MSG_RESULT([BSD/OS])
        ;;
        dnl Curses support on Mac OS X is kind of screwed at the moment.
        *-*-darwin*)
                AC_DEFINE(DISABLE_CURSES)
+               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.
@@ -72,6 +80,7 @@ case "$host" in
                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*)
@@ -82,20 +91,31 @@ case "$host" in
                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
@@ -104,13 +124,28 @@ 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 -Wno-char-subscripts $PTHREAD_DEFS"
                ;;
                *)
-                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes"
+                       CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
                ;;
        esac
 fi
+
+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_PROG_INSTALL
 AC_PROG_YACC
 missing_dir=`cd $ac_aux_dir && pwd`
@@ -355,6 +390,22 @@ fi
 
 
 
+dnl Checks for the OpenLDAP client library.
+if test "x$with_ldap" != xno ; then
+       AC_CHECK_HEADERS(ldap.h,
+               [AC_CHECK_LIB(ldap, ldap_init,
+                       [ok_ldap=yes],,
+       )])
+fi
+
+if test "x$ok_ldap" = xyes ; then
+       SERVER_LIBS="-lldap $SERVER_LIBS"
+       AC_DEFINE(HAVE_LDAP)
+fi
+
+
+
+
 dnl Checks for the newt window library.
 if test "x$with_newt" != xno ; then
        AC_CHECK_HEADERS(newt.h,
@@ -421,7 +472,7 @@ dnl
 dnl TODO: for the DB header checks, we should check whether the headers
 dnl define db_env_create, somehow
 dnl
-AC_CHECK_HEADERS(curses.h dl.h fcntl.h limits.h malloc.h termios.h sys/ioctl.h sys/select.h sys/time.h syslog.h unistd.h utmp.h utmpx.h paths.h db.h db4/db.h pthread.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h)
+AC_CHECK_HEADERS(curses.h dl.h fcntl.h limits.h malloc.h termios.h sys/ioctl.h sys/select.h sys/time.h sys/prctl.h syslog.h unistd.h utmp.h utmpx.h paths.h db.h db4/db.h pthread.h netinet/in.h arpa/nameser.h arpa/nameser_compat.h)
 
 dnl
 dnl need to check if this is actually compilable, sometimes there are