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)
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@:>@@:>@])
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])
if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
db_dir="$with_db"
&& 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
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.
*-*-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.
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
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
-AC_DISABLE_STATIC
+
+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`
AC_CHECK_LIB(pthreads, pthread_create)
fi
+test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
+
# The big search for OpenSSL
if test "$with_ssl" != "no"; then
saved_LIBS="$LIBS"
fi
if test "x$ok_zlib" = xyes ; then
- LIBS="-lz $LIBS"
+ SERVER_LIBS="-lz $SERVER_LIBS"
AC_DEFINE(HAVE_ZLIB)
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,
+ [AC_CHECK_LIB(newt, newtInit,
+ [ok_newt=yes],,
+ )])
+fi
+
+if test "x$ok_newt" = xyes ; then
+ SETUP_LIBS="-lnewt $SETUP_LIBS"
+ AC_DEFINE(HAVE_NEWT)
+fi
+
+
+
+
+
+
dnl Checks for the libical calendaring library.
if test "x$with_libical" != xno ; then
AC_CHECK_HEADERS(ical.h,
}
],
[
- LIBS="-lical $LIBS"
+ SERVER_LIBS="-lical $SERVER_LIBS"
AC_DEFINE(HAVE_LIBICAL)
]
)
+
dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
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)
+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
AC_SUBST(chkpwd_LIBS)
AC_SUBST(TARGETS)
AC_SUBST(DATABASE)
+AC_SUBST(SERVER_LDFLAGS)
+AC_SUBST(SERVER_LIBS)
+AC_SUBST(SETUP_LIBS)
AC_CONFIG_HEADER(sysdep.h)
-AC_CONFIG_FILES([Makefile weekly])
+AC_CONFIG_FILES([Makefile])
AC_OUTPUT
if test -z "$DATABASE"; then