X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fconfigure.ac;h=f6b7515f572e4df2ce876d46c169ed6d847d583f;hb=0e679ba8cf047ca0b277421eb7872069cf04b640;hp=3a330ea8e7ad73bbbe4f7c4d6b974bd4c76df5ee;hpb=642bd1f7ce7a2c711f6533251c256c17d5cc8ead;p=citadel.git diff --git a/citadel/configure.ac b/citadel/configure.ac index 3a330ea8e..f6b7515f5 100644 --- a/citadel/configure.ac +++ b/citadel/configure.ac @@ -1,16 +1,19 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id$ AC_PREREQ(2.52) -AC_INIT([Citadel], [7.37], [http://www.citadel.org/]) +AC_INIT([Citadel], [902], [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. @@ -29,7 +32,20 @@ AC_ARG_WITH(datadir, ] ) -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 @@ -82,6 +98,18 @@ AC_ARG_WITH(sysconfdir, ] ) +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], @@ -128,6 +156,38 @@ AC_ARG_WITH(docdir, ] ) +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, @@ -179,24 +239,19 @@ if test "$ok_iconv" = no; then ) fi if test "$ok_iconv" != "no"; then - AC_MSG_RESULT(WebCit will be built with character set conversion.) + 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(WebCit will be built without character set conversion.) + 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 - 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(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 ], [ @@ -205,11 +260,9 @@ AC_ARG_WITH(ssl, 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" @@ -226,10 +279,6 @@ else test -d /usr/local/BerkeleyDB.4.5 && db_dir=/usr/local/BerkeleyDB.4.5 fi -dnl By default, we only build the client (citadel and whobbs) unless we can -dnl figure out how to build with POSIX threads. -TARGETS=client - AC_CANONICAL_HOST PTHREAD_DEFS=-D_REENTRANT AC_MSG_CHECKING([how to compile with POSIX threads]) @@ -250,7 +299,6 @@ case "$host" in 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]) ;; @@ -313,7 +361,7 @@ if test "$GCC" = yes; then 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 @@ -344,6 +392,8 @@ AC_SUBST(DEPEND_FLAG) 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) @@ -356,6 +406,7 @@ AC_CHECK_SIZEOF(short, 0) AC_CHECK_SIZEOF(int, 0) AC_CHECK_SIZEOF(long, 0) AC_CHECK_SIZEOF(size_t, 0) +AC_CHECK_SIZEOF(loff_t, 0) dnl AC_CHECK_SIZEOF(long long, 0) dnl Checks for libraries. @@ -363,8 +414,32 @@ dnl Checks for libraries. 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 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, @@ -389,16 +464,6 @@ AC_ARG_WITH(gprof, ] ) -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 @@ -414,13 +479,11 @@ dnl Determine the system's authentication capabilities. 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, [ @@ -436,14 +499,6 @@ dnl (Linux shadow passwords) 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 @@ -455,12 +510,47 @@ fi 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.) @@ -472,7 +562,60 @@ AC_CHECK_HEADER(libcitadel.h, ] ) +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 +#include ], + [ + 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 @@ -603,7 +746,7 @@ if test "x$with_db" != xno; then 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 @@ -611,26 +754,13 @@ if test "x$with_db" != xno; then 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 OpenLDAP client library. if test "x$with_ldap" != xno ; then AC_CHECK_HEADERS(ldap.h, - [AC_CHECK_LIB(ldap, ldap_init, + [AC_CHECK_LIB(ldap, ldap_initialize, [ok_ldap=yes],, )]) fi @@ -644,18 +774,19 @@ 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 @@ -703,39 +834,6 @@ AC_CHECK_HEADER(curl/curl.h, -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, - [ - 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) - ] -) - @@ -748,15 +846,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/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 @@ -898,14 +988,9 @@ AC_CACHE_CHECK([for pthread_create], ac_cv_func_pthread_create, #endif], ac_cv_func_pthread_create=yes, ac_cv_func_pthread_create=no)]) if test "$ac_cv_func_pthread_create" = yes; then - test "$DATABASE" && TARGETS="client server utils" - if test "x$enable_threaded_client" != xno; then - AC_DEFINE(THREADED_CLIENT, [], [define this if you want to enable the multithreaded client]) - fi + test "$DATABASE" && TARGETS="server utils" fi -AC_REPLACE_FUNCS(snprintf getutline) - AC_CACHE_CHECK([the weather], ac_cv_weather, [ sleep 1 echo $ECHO_N "opening your window... $ECHO_C" >&6 @@ -945,8 +1030,10 @@ AC_CACHE_CHECK([under the bed], ac_cv_under_the_bed, [ 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) @@ -954,21 +1041,48 @@ AC_SUBST(DATABASE) 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 +fi + +if test -n "$srcdir"; then + export srcdir=. +fi + + echo ------------------------------------------------------------------------ -echo 'zlib compression: ' $ok_zlib echo 'LDAP support: ' $ok_ldap echo 'Character set conversion support:' $ok_iconv -echo 'DSpam Scanning support: ' $ok_libdspam +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.'