dnl Process this file with autoconf to produce a configure script.
-dnl $Id$
AC_PREREQ(2.52)
-AC_INIT([Citadel], [7.35], [http://www.citadel.org/])
+AC_INIT([Citadel], [8.15], [http://www.citadel.org/])
AC_REVISION([$Revision: 5108 $])
AC_CONFIG_SRCDIR([citserver.c])
+AC_CONFIG_HEADER(sysdep.h)
+AC_CONFIG_MACRO_DIR([m4])
AC_PREFIX_DEFAULT(/usr/local/citadel)
if test "$prefix" = NONE; then
AC_DEFINE_UNQUOTED(CTDLDIR, "$ac_default_prefix", [define this to the Citadel home directory])
ssl_dir="$ac_default_prefix/keys"
+ localedir=$ac_default_prefix
else
AC_DEFINE_UNQUOTED(CTDLDIR, "$prefix", [define this to the Citadel home directory])
ssl_dir="$prefix/keys"
+ localedir=$prefix
fi
dnl Make sure we see all GNU and Solaris extensions.
]
)
-dnl Checks for the Datadir
+
+dnl Checks for the helpDatadir
+AC_ARG_WITH(helpdir,
+ [ --with-helpdir directory to store the helpfiles under],
+ [ if test "x$withval" != "xno" ; then
+ AC_DEFINE(HAVE_HELP_DIR,[],[use alternate database location?])
+ AC_DEFINE_UNQUOTED(HELP_DIR, "$withval",[define, if the user suplied a helpfile-directory to use.])
+ MAKE_HELP_DIR=$withval
+ AC_SUBST(MAKE_HELP_DIR)
+ fi
+ ]
+)
+
+dnl Checks for the Static Datadir
AC_ARG_WITH(staticdatadir,
[ --with-staticdatadir directory to store citadels system messages under],
[ if test "x$withval" != "xno" ; then
dnl this is a bit different than the rest,
dnl because of the citadel used to have a keys/ subdir.
AC_ARG_WITH(ssldir,
- [ --with-ssldir directory to store the ssl certificates under],
+ [ --with-ssldir directory to store the ssl certificates under],
[ if test "x$withval" != "xno" ; then
ssl_dir="$withval"
]
)
+dnl Checks for the Configdir
+AC_ARG_WITH(autosysconfdir,
+ [ --with-autosysconfdir directory to store the automaticaly maintained configs under],
+ [ if test "x$withval" != "xno" ; then
+ AC_DEFINE(HAVE_AUTO_ETC_DIR, [], [should we search our automatic config in an alternate place?])
+ AC_DEFINE_UNQUOTED(AUTO_ETC_DIR, "$withval", [where to search our automatic config files])
+ MAKE_AUTO_ETC_DIR=$withval
+ AC_SUBST(MAKE_AUTO_ETC_DIR)
+ fi
+ ]
+)
+
dnl Checks for where to put our utilities
AC_ARG_WITH(utility-bindir,
- [ --with-utility-bindir directory where to find helper binaries],
+ [ --with-utility-bindir directory where to find helper binaries],
[ if test "x$withval" != "xno" ; then
AC_DEFINE(HAVE_UTILBIN_DIR,[],[should we put our helper binaries to another location?])
AC_DEFINE_UNQUOTED(UTILBIN_DIR, "$withval", [were to put our helper programs])
]
)
+dnl where to put the locale files
+AC_ARG_WITH(localedir,
+ [ --with-localedir directory to put the locale files to],
+ [ if test "x$withval" != "xno" ; then
+ localedir=$withval
+ fi
+ ]
+)
+AC_DEFINE_UNQUOTED(LOCALEDIR, "$localedir",[where to find our pot files])
+LOCALEDIR=$localedir
+AC_SUBST(LOCALEDIR)
+
+
+
+dnl Checks for the zlib compression library.
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $SERVER_LIBS"
+AC_CHECK_HEADER(zlib.h,
+ [AC_CHECK_LIB(z, zlibVersion,
+ [
+ LIBS="-lz $LIBS $SERVER_LIBS"
+ ],
+ [
+ AC_MSG_ERROR(zlib was not found or is not usable. Please install zlib.)
+ ]
+ ,
+ )],
+ [
+ AC_MSG_ERROR(zlib.h was not found or is not usable. Please install zlib.)
+ ]
+)
+CFLAGS="$saved_CFLAGS"
+
+dnl Here is the check for a libc integrated iconv
+AC_ARG_ENABLE(iconv,
+ [ --disable-iconv do not use iconv charset conversion],
+ ok_iconv=no, ok_iconv=yes)
+
+AC_MSG_CHECKING(Checking to see if your system supports iconv)
+AC_TRY_RUN([
+ #include <iconv.h>
+ main() {
+ iconv_t ic = (iconv_t)(-1) ;
+ ic = iconv_open("UTF-8", "us-ascii");
+ iconv_close(ic);
+ exit(0);
+ }
+ ],
+ [
+ ok_iconv=yes
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ ok_iconv=no
+ AC_MSG_RESULT([no])
+ ]
+)
+
+dnl Check for iconv in external libiconv
+if test "$ok_iconv" = no; then
+ AC_MSG_CHECKING(Checking for an external libiconv)
+ OLD_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -liconv"
+ AC_TRY_RUN([
+ #include <iconv.h>
+ main() {
+ iconv_t ic = (iconv_t)(-1) ;
+ ic = iconv_open("UTF-8", "us-ascii");
+ iconv_close(ic);
+ }
+ ],
+ [
+ ok_iconv=yes
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ ok_iconv=no
+ LDFLAGS="$OLD_LDFLAGS"
+ AC_MSG_RESULT([no])
+ ]
+ )
+fi
+if test "$ok_iconv" != "no"; then
+ AC_MSG_RESULT(Citadel will be built with character set conversion.)
+ AC_DEFINE(HAVE_ICONV,[],[whether we have iconv for charset conversion])
+else
+ AC_MSG_RESULT(Citadel will be built without character set conversion.)
+fi
+
+AC_CHECK_LIB(intl, libintl_bindtextdomain, [LDFLAGS="$LDFLAGS -lintl"])
+
AC_ARG_ENABLE(threaded-client, [ --disable-threaded-client
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(db, [ --with-db@<:@=DIR@:>@ use Berkeley DB 3.x @<:@DIR=/usr/local/BerkeleyDB.3.@<:@123@:>@@:>@])
AC_ARG_WITH(ssl,
[ --with-ssl=PATH Specify path to OpenSSL installation ],
[
fi
]
)
-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_libdspam, [ --with-libdspam use libdspam mail spam scanning library])
+dnl AC_ARG_WITH(with_libdspam, [ --with-libdspam use libdspam mail spam scanning library])
+AC_ARG_WITH(with_gc, [ --with-gc use the Boehm-Demers-Weiser garbage collection library])
if test "x$with_db" != xno -a "x$with_db" != xyes -a "$with_db"; then
db_dir="$with_db"
dnl TCP buffering isn't ideal under OS X. This define should also be
dnl checked in other cases of OS X-Linux differences.
*-*-darwin*)
- AC_DEFINE(DISABLE_CURSES,[],[define this to disable use of curses])
AC_DEFINE(HAVE_DARWIN, [], [define if using OS X/Darwin])
AC_MSG_RESULT([Mac OS X])
;;
CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wno-char-subscripts $PTHREAD_DEFS"
;;
*)
- CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes $PTHREAD_DEFS"
+ CFLAGS="$CFLAGS -Wall -Wcast-qual -Wcast-align -Wstrict-prototypes -Wno-strict-aliasing $PTHREAD_DEFS"
;;
esac
fi
AC_PROG_INSTALL
AC_PROG_YACC
+AC_PATH_PROG(DIFF,diff)
+AC_PATH_PROG(PATCH,patch)
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
dnl We want to test for the following in libc before checking for their
dnl respective libraries, because some systems (like Irix) have both, and the
dnl non-libc versions may be broken.
-AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r)
+AC_CHECK_FUNCS(crypt gethostbyname connect flock getpwnam_r getpwuid_r getloadavg)
+AC_CHECK_FUNCS(strftime_l uselocale gettext)
+
+if test "$ok_nls" != "no"; then
+ AC_CHECK_PROG(ok_xgettext, xgettext, yes, no)
+ ok_nls=$ok_xgettext
+fi
+
+if test "$ok_nls" != "no"; then
+ AC_CHECK_PROG(ok_msgmerge, msgmerge, yes, no)
+ ok_nls=$ok_msgmerge
+fi
+
+if test "$ok_nls" != "no"; then
+ AC_CHECK_PROG(ok_msgfmt, msgfmt, yes, no)
+ ok_nls=$ok_msgfmt
+fi
+
+if test "$ok_nls" != "no"; then
+ AC_MSG_RESULT(citadel will be built with national language support.)
+ AC_DEFINE(ENABLE_NLS, [], [whether we have NLS support])
+ PROG_SUBDIRS="$PROG_SUBDIRS po/citadel-setup"
+else
+ AC_MSG_RESULT(citadel will be built without national language support.)
+fi
dnl disable backtrace if we don't want it.
AC_ARG_WITH(backtrace,
- [ --with-backtrace enable backtrace dumps in the syslog],
+ [ --with-backtrace enable backtrace dumps in the syslog],
[ if test "x$withval" != "xno" ; then
CFLAGS="$CFLAGS -rdynamic "
LDFLAGS="$LDFLAGS -rdynamic "
dnl disable backtrace if we don't want it.
AC_ARG_WITH(gprof,
- [ --with-gprof enable profiling],
+ [ --with-gprof enable profiling],
[ if test "x$withval" != "xno" ; then
CFLAGS="$CFLAGS -pg "
LDFLAGS="$LDFLAGS -pg "
]
)
-dnl disable thread table reporting
-AC_ARG_WITH(threadlog,
- [ --with-threadlog enable logging of thread table],
- [ if test "x$withval" != "xno" ; then
- AC_DEFINE(WITH_THREADLOG, [], [Define if you want logging of the thread tables.])
- fi
- ]
-)
-
-
if test "$ac_cv_func_gethostbyname" = no; then
AC_CHECK_LIB(nsl, gethostbyname)
fi
dnl We currently support PAM, standard getpwnam(), and getspnam()
dnl (Linux shadow passwords)
- if test "$with_pam" = yes; then
- save_LIBS=$LIBS
- AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
- LIBS="-lpam $LIBS"])
- AC_CHECK_FUNCS(pam_start)
- test "$enable_chkpwd" != no && LIBS=$save_LIBS
- fi
+save_LIBS=$LIBS
+AC_CHECK_LIB(pam, pam_start, [chkpwd_LIBS="-lpam $chkpwd_LIBS"
+ LIBS="-lpam $LIBS"])
+AC_CHECK_FUNCS(pam_start)
+test "$enable_chkpwd" != no && LIBS=$save_LIBS
if test "$ac_cv_func_pam_start" = no -o "$with_pam" != yes; then
save_LIBS=$LIBS
AC_SEARCH_LIBS(getspnam, shadow, [
fi
fi
-if test "x$with_ncurses" != "xno"; then
- AC_SEARCH_LIBS(tgetent, [ncurses curses termcap])
- AC_SEARCH_LIBS(scrollok, [ncurses curses])
- AC_SEARCH_LIBS(initscr, [ncurses curses])
-else
- AC_SEARCH_LIBS(tgetent, [curses termcap])
- AC_SEARCH_LIBS(initscr, [curses])
-fi
AC_CHECK_FUNCS(vw_printw wcolor_set resizeterm wresize)
dnl Check for libpthread(s) if we're not using Digital UNIX or FreeBSD. (On
test -d /usr/kerberos/include && CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
+dnl Checks for the libical iCalendar library.
+AC_CHECK_HEADER(libical/ical.h,
+ [AC_CHECK_LIB(ical, icaltimezone_set_tzid_prefix,
+ [
+ SERVER_LIBS="-lical $SERVER_LIBS"
+ ],
+ [
+ AC_MSG_ERROR(libical was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ ]
+ ,
+ )],
+ [
+ AC_MSG_ERROR(libical/ical.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ ]
+)
+
+
+dnl Checks for the libsieve mailbox sorting library.
+AC_CHECK_HEADER(sieve2.h,
+ [AC_CHECK_LIB(sieve, sieve2_license,
+ [
+ SERVER_LIBS="-lsieve $SERVER_LIBS"
+ ],
+ [
+ AC_MSG_ERROR(libsieve was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ ]
+ ,
+ )],
+ [
+ AC_MSG_ERROR(sieve2.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ ]
+)
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $SERVER_LIBS"
dnl Check for libcitadel
AC_CHECK_HEADER(libcitadel.h,
[AC_CHECK_LIB(citadel, libcitadel_version_string,
[
- LIBS="-lcitadel $LIBS"
+ LIBS="-lcitadel $LIBS $SERVER_LIBS"
+ chkpwd_LIBS="-lcitadel $chkpwd_LIBS"
],
[
AC_MSG_ERROR(libcitadel was not found or is not usable. Please install libcitadel.)
]
)
+CFLAGS="$saved_CFLAGS"
+
+
+AC_CHECK_LIB(cares, ares_parse_mx_reply,
+ [
+ C_ARES_LIBS=-lcares
+ AC_DEFINE(HAVE_C_ARES, 1, [Define to use c-ares library])
+ have_good_c_ares=yes
+ ],, $SOCKET_LIBS $NSL_LIBS
+)
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $SERVER_LIBS"
+dnl Check for c-ares
+AC_CHECK_HEADER(ares.h,
+ [AC_CHECK_LIB(cares, ares_parse_mx_reply,
+ [
+ LIBS="-lcares $LIBS $SERVER_LIBS"
+ ],
+ [
+ AC_MSG_ERROR(libc-ares was not found or is not usable. Please install libc-ares.)
+ ]
+ )],
+ [
+ AC_MSG_ERROR(ares.h was not found or is not usable. Please install libc-ares.)
+ ]
+)
+CFLAGS="$saved_CFLAGS"
+
+saved_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $SERVER_LIBS"
+dnl Check for libev
+AC_CHECK_HEADER(ev.h,
+ [AC_TRY_COMPILE([#include <math.h>
+#include <ev.h>],
+ [
+ ev_cleanup abort_by_shutdown;
+ struct ev_loop *event_base;
+ ev_cleanup_start(event_base, &abort_by_shutdown);
+ ],
+ [
+ LIBS="-lev -lm $LIBS $SERVER_LIBS"
+ ],
+ [
+ AC_MSG_ERROR(libev was not found or is not usable. Please install libev.)
+ ])
+ ],
+ [
+ AC_MSG_ERROR(ev.h was not found or is not usable. Please install libev.)
+ ]
+)
+CFLAGS="$saved_CFLAGS"
+
+
# The big search for OpenSSL
if test "$with_ssl" != "no"; then
saved_LIBS="$LIBS"
AC_CHECK_DB([db db-4.1 db-4 db4],
[
- DATABASE=database_sleepycat.c
+ DATABASE=database.c
],
AC_MSG_ERROR([[Can not locate a suitable Berkeley DB
library. Use --with-db=PATH to specify
fi
-dnl Checks for the zlib compression library.
-if test "x$with_zlib" != xno ; then
- AC_CHECK_HEADERS(zlib.h,
- [AC_CHECK_LIB(z, zlibVersion,
- [ok_zlib=yes],,
- )])
-fi
-
-if test "x$ok_zlib" = xyes ; then
- SERVER_LIBS="-lz $SERVER_LIBS"
- AC_DEFINE(HAVE_ZLIB, [], [define this if you have zlib compression available])
-fi
-
-dnl Checks for the libdspam mail spam scanning library.
-if test "x$with_libdspam" != xno ; then
- AC_CHECK_HEADERS(dspam/libdspam.h,
- [AC_CHECK_LIB(dspam, dspam_init,
- [ok_libdspam=yes],,
- )])
-fi
-if test "x$ok_libdspam" = xyes ; then
- SERVER_LIBS="-ldspam $SERVER_LIBS"
- AC_DEFINE(HAVE_LIBDSPAM, [], [define this if you have the libdspam mail spam scanning library available])
-fi
+dnl Checks for the libdspam mail spam scanning library.
+dnl if test "x$with_libdspam" != xno ; then
+dnl AC_CHECK_HEADERS(dspam/libdspam.h,
+dnl [AC_CHECK_LIB(dspam, dspam_init,
+dnl [ok_libdspam=yes],,
+dnl )])
+dnl fi
+dnl
+dnl if test "x$ok_libdspam" = xyes ; then
+dnl SERVER_LIBS="-ldspam $SERVER_LIBS"
+dnl AC_DEFINE(HAVE_LIBDSPAM, [], [(unfinished) define this if you have the libdspam mail spam scanning library available])
+dnl fi
)
-dnl Checks for the libical iCalendar library.
-AC_CHECK_HEADER(ical.h,
- [AC_CHECK_LIB(ical, icalcomponent_new,
- [
- SERVER_LIBS="-lical $SERVER_LIBS"
- ],
- [
- AC_MSG_ERROR(libical was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
- ]
- ,
- )],
- [
- AC_MSG_ERROR(ical.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
- ]
-)
-dnl Checks for the libsieve mailbox sorting library.
-AC_CHECK_HEADER(sieve2.h,
- [AC_CHECK_LIB(sieve, sieve2_license,
+
+
+
+dnl Checks for libcurl.
+AC_CHECK_HEADER(curl/curl.h,
+ [AC_CHECK_LIB(curl, curl_version,
[
- SERVER_LIBS="-lsieve $SERVER_LIBS"
+ SERVER_LIBS="-lcurl $SERVER_LIBS"
],
[
- AC_MSG_ERROR(libsieve was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ AC_MSG_ERROR(libcurl was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
]
,
)],
[
- AC_MSG_ERROR(sieve2.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
+ AC_MSG_ERROR(curl/curl.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start)
]
)
+
+
+
+
+
+
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/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)
-
-dnl
-dnl need to check if this is actually compilable, sometimes there are
-dnl conflicts with the system's headers (eg solaris xpg4 style headers)
-dnl
-if test "x$with_ncurses" != xno; then
- AC_CHECK_HEADERS(ncurses.h,,,[ ])
-fi
+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)
AC_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H, [], [define this if you have the resolv.h header file.]),,
[#ifdef HAVE_SYS_TYPES_H
esac
])
+
+STRUCT_UCRED
+
dnl Done! Now write the Makefile and sysdep.h
-AC_SUBST(AUTH)
AC_SUBST(RESOLV)
AC_SUBST(chkpwd_LIBS)
AC_SUBST(TARGETS)
AC_SUBST(SERVER_LDFLAGS)
AC_SUBST(SERVER_LIBS)
AC_SUBST(SETUP_LIBS)
-AC_CONFIG_HEADER(sysdep.h)
-./mk_module_init.sh
+AC_SUBST(DIFF)
+AC_SUBST(PATCH)
AC_CONFIG_FILES([Makefile])
-AC_OUTPUT(database_cleanup.sh)
-
+AC_OUTPUT(database_cleanup.sh po/citadel-setup/Makefile)
if test -z "$DATABASE"; then
AC_MSG_WARN([No database driver was found. Please install Berkeley DB.])
fi
+abs_srcdir="`cd $srcdir && pwd`"
+abs_builddir="`pwd`"
+if test "$abs_srcdir" != "$abs_builddir"; then
+ ln -sf $abs_srcdir/include $abs_builddir
+ ln -sf $abs_srcdir/Make_sources $abs_builddir
+ ln -sf $abs_srcdir/Make_modules $abs_builddir
+ for i in $abs_srcdir/*.h ; do
+ if test "$abs_srcdir/sysdep.h" != "$i"; then
+ ln -sf $i $abs_builddir
+ fi
+ done
+ for d in `/bin/ls $abs_srcdir/modules/`; do
+ (mkdir -p $abs_builddir/modules/$d)
+ done
+ if test -d "$abs_srcdir/user_modules/"; then
+ for d in `/bin/ls $abs_srcdir/user_modules/`; do
+ (mkdir -p $abs_builddir/user_modules/$d)
+ done
+ fi
+ mkdir -p $abs_builddir/utils
+ mkdir -p $abs_builddir/utillib
+ mkdir -p $abs_builddir/textclient
+fi
+
+if test -n "$srcdir"; then
+ export srcdir=.
+fi
+
+
echo ------------------------------------------------------------------------
-echo 'zlib compression: ' $ok_zlib
echo 'LDAP support: ' $ok_ldap
-echo 'DSpam Scanning support: ' $ok_libdspam
+echo 'Character set conversion support:' $ok_iconv
+echo 'Boehm-Demers-Weiser support: ' $ok_gc
+dnl echo 'DSpam Scanning support: ' $ok_libdspam
echo
echo 'Note: if you are not using Linux, make sure you are using GNU make'
echo '(gmake) to compile Citadel.'