X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=configure.in;h=1ff16b27b1affde49259d5b8e2cb910b38c58611;hb=29d590d74c6e03f5efe9f743c40a61028ccd491d;hp=dd5ebdc6eed5bae622195049b1fbb5a6fedfe555;hpb=3f2164f3652497ab2a07373b4fb1d41e3a57da34;p=mmh
diff --git a/configure.in b/configure.in
index dd5ebdc..1ff16b2 100644
--- a/configure.in
+++ b/configure.in
@@ -4,41 +4,103 @@ dnl
dnl $Id$
dnl
-AC_INIT(h/nmh.h)
+dnl 2.13 definitely chokes; 2.53 is the earliest version I've tested.
+dnl 2.50 is the major breakpoint between the old autoconf and the new,
+dnl so require that. If there are bug reports about 2.50-2.52 not working
+dnl we can always move this up a little.
+AC_PREREQ(2.50)
+
+AC_INIT(nmh, m4_normalize(m4_include([VERSION])))
+AC_CONFIG_SRCDIR(h/nmh.h)
AC_CONFIG_HEADER(config.h)
-dnl What version of nmh are we building?
-VERSION=`sed -e 's/nmh-//' ${srcdir}/VERSION`
-echo "configuring for nmh-$VERSION"
-AC_SUBST(VERSION)dnl
+AC_CANONICAL_TARGET
-dnl -------------------------
-dnl CHECK COMMAND LINE OPTION
-dnl -------------------------
-dnl What method of posting should post use?
-undefine([mts])dnl
-AC_ARG_WITH(mts,
-[ --with-mts=MTS specify the mail transport agent])
+dnl ---------------------
+dnl define a macro or two
+dnl ---------------------
-if test x$with_mts = xsmtp; then
- MTS="smtp"
- MTSLIB="mts/smtp/libsmtp.a"
- AC_DEFINE(SMTPMTS)dnl
-elif test x$with_mts = xsendmail; then
- MTS="sendmail"
- MTSLIB="mts/sendmail/libsend.a"
- AC_DEFINE(SENDMTS)dnl
-else
- MTS="smtp"
- MTSLIB="mts/smtp/libsmtp.a"
- AC_DEFINE(SMTPMTS)dnl
+AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
+if test -n "$LIBTOOL" ; then
+ tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
+ if test x"$tmptest" != x ; then
+ GNU_LIBTOOL=1
+ AC_SUBST(GNU_LIBTOOL)dnl
+ fi
+fi
+] )
+
+echo "configuring for AC_PACKAGE_NAME-AC_PACKAGE_VERSION"
+AC_SUBST(VERSION,AC_PACKAGE_VERSION)dnl
+
+dnl What date of nmh are we building?
+DATE=`cat ${srcdir}/DATE`
+echo "configuring for nmh dated $DATE"
+AC_SUBST(DATE)dnl
+
+dnl --------------------------
+dnl CHECK COMMAND LINE OPTIONS
+dnl --------------------------
+
+dnl Do you want client-side support for apop?
+AC_ARG_ENABLE(apop,
+[ --enable-apop enable client-side support for POP3 and APOP])
+if test x"$enable_apop" = x"yes"; then
+ AC_DEFINE(APOP)dnl
+ APOPLIB=md5.o
+ enable_pop=yes
+fi
+AC_SUBST(APOPLIB)dnl
+
+dnl Do you want to debug nmh?
+AC_ARG_ENABLE(debug,
+[ --enable-debug enable nmh code debugging])
+dnl The old redundant --enable-nmh-debug is deprecated and undocumented.
+if test x"$enable_nmh_debug" = x"yes"; then
+ enable_debug=yes
+fi
+
+dnl Allow users to send email from addresses other than their default?
+AC_ARG_ENABLE(masquerade,
+ [ --enable-masquerade[='draft_from mmailid username_extension']
+ enable up to 3 types of address masquerading [none]],
+ [if test x"$enable_masquerade" = x"yes"; then
+ masquerade="draft_from mmailid username_extension"
+ else
+ masquerade="$enable_masquerade"
+ fi])
+AC_SUBST(masquerade)dnl
+
+dnl Do you want mhe support?
+AC_ARG_ENABLE(mhe,
+[ --enable-mhe enable mhe support (DEFAULT)])
+
+dnl mhe support is on by default, so define it unless --disable-mhe or the
+dnl deprecated, undocumented --disable-nmh-mhe are specified.
+if test x"$enable_mhe" != x"no" -a x"$enable_nmh_mhe" != x"no"; then
+ AC_DEFINE(MHE)dnl
+fi
+
+dnl Do you want client-side support for pop?
+AC_ARG_ENABLE(pop,
+[ --enable-pop enable client-side support for plain POP3])
+dnl The old redundant --enable-nmh-pop is deprecated and undocumented.
+if test x"$enable_nmh_pop" = x"yes"; then
+ enable_pop=yes
fi
-AC_SUBST(MTS)
-AC_SUBST(MTSLIB)
+dnl Do you want client-side support for using SASL for authentication?
+dnl Note that this code will be enabled for both POP and SMTP
+AC_ARG_WITH(cyrus-sasl,
+[ --with-cyrus-sasl=
Specify location of Cyrus SASL library for auth])
+if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"; then
+ AC_DEFINE(CYRUS_SASL)dnl
+ sasl_support=yes
+else
+ sasl_support=no
+fi
dnl What should be the default editor?
-undefine([editor])dnl
AC_ARG_WITH(editor,
[ --with-editor=EDITOR specify the default editor])
@@ -46,31 +108,34 @@ if test -n "$with_editor"; then
editorpath="$with_editor"
fi
-dnl What should be the default pager?
-undefine([pager])dnl
-AC_ARG_WITH(pager,
-[ --with-pager=PAGER specify the default pager])
-
-if test -n "$with_pager"; then
- pagerpath="$with_pager"
+dnl Set the backup prefix
+AC_ARG_WITH([hash-backup],
+ [ --with-hash-backup use # as the backup prefix (default: ,)])
+if test x"$with_hash_backup" != x -a x"$with_hash_backup" != x"no"; then
+ backup_prefix="#"
+else
+ backup_prefix=","
fi
+AC_DEFINE_UNQUOTED(BACKUP_PREFIX, "$backup_prefix")dnl
-dnl Do you want mhe support?
-undefine([nmh-mhe])dnl
-AC_ARG_ENABLE(nmh-mhe,
-[ --enable-nmh-mhe enable mhe support (DEFAULT)])
+dnl Do you want support for hesiod
+AC_ARG_WITH(hesiod,
+[ --with-hesiod=PREFIX specify location of Hesiod])
+if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
+ AC_DEFINE(HESIOD)dnl
+fi
-dnl mhe support is on by default, so define it unless
-dnl explicitly disabled.
-if test x$enable_nmh_mhe != xno; then
- AC_DEFINE(MHE)dnl
+dnl Do you want client-side support for kpop
+AC_ARG_WITH(krb4,
+[ --with-krb4=PREFIX specify location of Kerberos V4 for KPOP support])
+if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
+ enable_pop=yes
+ AC_DEFINE(KPOP)dnl
+ AC_DEFINE(KPOP_PRINCIPAL, "pop")dnl
fi
-dnl Do you want client-side support for pop
-undefine([nmh-pop])dnl
-AC_ARG_ENABLE(nmh-pop,
-[ --enable-nmh-pop enable client-side support for pop])
-if test x$enable_nmh_pop = xyes; then
+dnl After we know if we're including apop and kpop support, do pop stuff
+if test x"$enable_pop" = x"yes"; then
AC_DEFINE(POP)dnl
POPLIB=popsbr.o
POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d'
@@ -80,25 +145,62 @@ fi
AC_SUBST(POPLIB)dnl
AC_SUBST(POPSED)dnl
-dnl Do you want client-side support for kpop
-AC_ARG_WITH(krb4,
-[ --with-krb4=PREFIX specify location of Kerberos V4 for kpop support])
-if test x$with_krb4 != x -a x$with_krb4 != xno; then
- AC_DEFINE(KPOP)dnl
- AC_DEFINE(KPOP_PRINCIPAL, "pop")dnl
+dnl What method of locking to use?
+AC_ARG_WITH(locking,
+[ --with-locking=LOCKTYPE specify the file locking method
+ (one of dot, fcntl, flock, lockf)])
+
+if test x"$with_locking" = x"dot"; then
+ LOCKTYPE="dot"
+ AC_DEFINE(DOT_LOCKING)dnl
+elif test x"$with_locking" = x"flock"; then
+ LOCKTYPE="flock"
+ AC_DEFINE(FLOCK_LOCKING)dnl
+elif test x"$with_locking" = x"lockf"; then
+ LOCKTYPE="lockf"
+ AC_DEFINE(LOCKF_LOCKING)dnl
+elif test x"$with_locking" = x"fcntl"; then
+ LOCKTYPE="fcntl"
+ AC_DEFINE(FCNTL_LOCKING)dnl
+else
+ LOCKTYPE="dot"
+ AC_DEFINE(DOT_LOCKING)dnl
fi
-dnl Do you want support for hesiod
-AC_ARG_WITH(hesiod,
-[ --with-hesiod=PREFIX specify location of Hesiod])
-if test x$with_hesiod != x -a x$with_hesiod != xno; then
- AC_DEFINE(HESIOD)dnl
+dnl What method of posting should post use?
+AC_ARG_WITH(mts,
+[ --with-mts=MTS specify the default mail transport agent/service])
+
+if test x"$with_mts" = x"smtp"; then
+ MTS="smtp"
+elif test x"$with_mts" = x"sendmail"; then
+ MTS="sendmail"
+else
+ MTS="smtp"
fi
+AC_SUBST(MTS)dnl
-dnl Do you want to debug nmh?
-undefine([nmh-debug])dnl
-AC_ARG_ENABLE(nmh-debug,
-[ --enable-nmh-debug enable nmh code debugging])
+dnl Both the smtp and sendmail mail transport services use the smtp code
+AC_DEFINE(SMTPMTS)dnl
+
+dnl What should be the default pager?
+AC_ARG_WITH(pager,
+[ --with-pager=PAGER specify the default pager])
+
+if test -n "$with_pager"; then
+ pagerpath="$with_pager"
+fi
+
+dnl What should be the default mail server(s)?
+AC_ARG_WITH(smtpservers,
+[ --with-smtpservers='SMTPSERVER1[ SMTPSERVER2...]'
+ specify the default SMTP server(s) [localhost]])
+if test -n "$with_smtpservers"; then
+ smtpservers="$with_smtpservers"
+else
+ smtpservers="localhost"
+fi
+AC_SUBST(smtpservers)dnl
dnl ----------------------------------------------------
dnl Default location is /usr/local/nmh/{bin,etc,lib,man}
@@ -111,7 +213,7 @@ dnl ------------------
dnl We want these before the checks,
dnl so the checks can modify their values.
test -z "$CFLAGS" && CFLAGS= auto_cflags=1
-if test x$enable_nmh_debug = xyes; then
+if test x"$enable_debug" = x"yes"; then
test -z "$LDFLAGS" && LDFLAGS=-g
fi
@@ -122,16 +224,25 @@ dnl if compiler is gcc, then
dnl use -O2 and some warning flags
dnl else use -O
if test -n "$auto_cflags"; then
- if test x$enable_nmh_debug = xyes; then
+ if test x"$enable_debug" = x"yes"; then
if test -n "$GCC"; then
test -z "$CFLAGS" && CFLAGS="-Wall -g" || CFLAGS="$CFLAGS -Wall -g"
else
test -z "$CFLAGS" && CFLAGS=-g || CFLAGS="$CFLAGS -g"
fi
else
- test -z "$LDFLAGS" && LDFLAGS=-s
+ if test -z "$LDFLAGS"; then
+ case "$build_os" in
+ darwin*)
+ LDFLAGS=
+ ;;
+ *)
+ LDFLAGS=-s
+ ;;
+ esac
+ fi
if test -n "$GCC"; then
- test -z "$CFLAGS" && CFLAGS=-O2 || CFLAGS="$CFLAGS -O2"
+ test -z "$CFLAGS" && CFLAGS="-Wall -O2" || CFLAGS="$CFLAGS -Wall -O2"
else
test -z "$CFLAGS" && CFLAGS=-O || CFLAGS="$CFLAGS -O"
fi
@@ -149,6 +260,34 @@ AC_PROG_RANLIB dnl Check for `ranlib'
AC_PROG_AWK dnl Check for mawk,gawk,nawk, then awk
AC_PROG_LEX dnl Check for lex/flex
+dnl Look for `cut'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
+
+dnl ----------------------------------------------
+dnl check for lclint, and lint if it doesn't exist
+dnl ----------------------------------------------
+AC_CHECK_PROG(linttmp1, lclint, lclint, no)dnl
+if test x$ac_cv_prog_linttmp1 != xno ; then
+ LINT=$ac_cv_prog_linttmp1
+ LINTFLAGS="-weak +posixlib -macrovarprefixexclude"
+else
+ AC_CHECK_PROG(linttmp2, lint, lint, no)dnl
+ if test x$ac_cv_prog_linttmp2 != xno ; then
+ LINT=$ac_cv_prog_linttmp2
+ LINTFLAGS=""
+ else
+ LINT="echo 'No lint program found'"
+ LINTFLAGS=""
+ fi
+fi
+AC_SUBST(LINT)dnl
+AC_SUBST(LINTFLAGS)dnl
+
+dnl try to figure out which one we've got
+AC_CHECK_PROG(LIBTOOL, libtool, libtool, , [$pathtmp])
+NMH_PROG_GNU_LIBTOOL
+
dnl Check for lorder and tsort commands
AC_CHECK_PROG(LORDER, lorder, lorder, no)dnl
AC_CHECK_PROG(TSORT, tsort, tsort, no)dnl
@@ -159,11 +298,46 @@ if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
TSORT=cat
AC_SUBST(LORDER)dnl
AC_SUBST(TSORT)dnl
+dnl Mac OS X has lorder, but sh is too broken for it to work
+dnl elif test -z "`lorder config/config.c 2>&1 | grep config/config.c`" ; then
+dnl LORDER=echo
+dnl TSORT=cat
+dnl AC_SUBST(LORDER)dnl
+dnl AC_SUBST(TSORT)dnl
fi
-dnl Look for `sendmail'
-pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
-AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+dnl Check whether tsort can deal with loops
+AC_CACHE_CHECK(whether tsort can deal with loops, nmh_cv_tsort_loop,
+ [if test -z "`echo a b b a | tsort 2>/dev/null | grep a`" ; then
+ nmh_cv_tsort_loop=no
+ else
+ nmh_cv_tsort_loop=yes
+ fi])
+if test x$nmh_cv_tsort_loop = xno ; then
+ LORDER=echo
+ TSORT=cat
+ AC_SUBST(LORDER)dnl
+ AC_SUBST(TSORT)dnl
+fi
+
+dnl Look for `ls'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(lspath, ls, no, [$pathtmp])
+
+dnl See how we get ls to display the owner and the group
+if test "$lspath" != "no"; then
+ AC_CACHE_CHECK(how to get ls to show us the group ownership of a file,
+ nmh_cv_ls_grpopt,
+ [if test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"; then
+ dnl There were 9 parameters, so unless this is a really bizarre, nonstandard
+ dnl ls, it would seem -l gave us both the user and group. On this type of
+ dnl ls, -g makes _only_ the group be displayed (and not the user).
+ nmh_cv_ls_grpopt="-l"
+ else
+ dnl Looks like -l only gave us the user, so we need -g to get the group too.
+ nmh_cv_ls_grpopt="-lg"
+ fi])
+fi
dnl Look for `more'
pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
@@ -176,9 +350,13 @@ if test -z "$pagerpath"; then
fi
AC_SUBST(pagerpath)dnl
+dnl Look for `sendmail'
+pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
+AC_PATH_PROG(sendmailpath, sendmail, /usr/sbin/sendmail, [$pathtmp])
+
dnl Look for `vi'
pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
-AC_PATH_PROG(vipath, vi, no, [$pathtmp])
+AC_PATH_PROG(vipath, vi, /bin/vi, [$pathtmp])
dnl If editor is not specified yet,
dnl then use `vi' as the default.
@@ -190,7 +368,7 @@ AC_SUBST(editorpath)dnl
dnl Check for broken vi
AC_CACHE_CHECK(for broken vi, nmh_cv_attvibug,
[if echo 'r /nonexist-file
-q' | ex > /dev/null 2>&1
+q' | ex > /dev/null
then
nmh_cv_attvibug=no
else
@@ -198,12 +376,12 @@ else
fi])
if test "$nmh_cv_attvibug" = yes; then
- AC_DEFINE(ATTVIBUG)
+ AC_DEFINE(ATTVIBUG)dnl
fi
-dnl ---------------
-dnl FIND MAIL SPOOL
-dnl ---------------
+dnl ----------------------------------------------------------
+dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
+dnl ----------------------------------------------------------
AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
[for mailspool in /var/mail dnl
/var/spool/mail dnl
@@ -217,6 +395,49 @@ nmh_cv_mailspool=$mailspool
mailspool=$nmh_cv_mailspool
AC_SUBST(mailspool)dnl
+dnl See whether the mail spool directory is world-writable.
+if test "$lspath" != "no" -a "$cutpath" != "no"; then
+ AC_CACHE_CHECK(whether the mail spool is world-writable,
+ nmh_cv_mailspool_world_writable,
+ [if test "`$lspath -dlL $mailspool | $cutpath -c9`" = "-"; then
+ nmh_cv_mailspool_world_writable=no
+ else
+ nmh_cv_mailspool_world_writable=yes
+ fi])
+fi
+
+dnl Also, check for liblockfile (as found on Debian systems)
+AC_CHECK_HEADER(lockfile.h, AC_CHECK_LIB(lockfile, lockfile_create) )
+
+dnl and whether its companion program dotlockfile is setgid
+AC_PATH_PROG(dotlockfilepath, dotlockfile, no)
+if test "$ac_cv_lib_lockfile_lockfile_create" != "no" ; then
+ if test "$ac_cv_path_dotlockfilepath" != "no" ; then
+ AC_CACHE_CHECK(whether dotlockfile is setgid, nmh_cv_dotlockfile_setgid,
+ [ if test -g "$ac_cv_path_dotlockfilepath" ; then
+ nmh_cv_dotlockfile_setgid=yes
+ else
+ nmh_cv_dotlockfile_setgid=no
+ fi])
+ fi
+fi
+
+dnl If mailspool is not world-writable and dotlockfile is not setgid,
+dnl we need to #define MAILGROUP to 1 and make inc setgid.
+if test x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then
+ dnl do we really need both of these?
+ AC_DEFINE(MAILGROUP)dnl
+ SETGID_MAIL=1
+fi
+AC_SUBST(SETGID_MAIL)dnl
+
+dnl Use ls to see which group owns the mail spool directory.
+AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp,
+[nmh_cv_ls_mail_grp=`$lspath -dL $nmh_cv_ls_grpopt $mailspool|$AWK '{print $4}'`
+])
+MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
+AC_SUBST(MAIL_SPOOL_GRP)dnl
+
dnl ------------------
dnl CHECK HEADER FILES
dnl ------------------
@@ -227,25 +448,25 @@ AC_HEADER_SYS_WAIT
AC_HEADER_STAT
AC_CHECK_HEADERS(string.h memory.h stdlib.h unistd.h errno.h fcntl.h \
limits.h crypt.h termcap.h termio.h termios.h locale.h \
- sys/param.h sys/time.h sys/utsname.h arpa/inet.h \
- arpa/ftp.h)
+ langinfo.h netdb.h sys/param.h sys/time.h sys/utsname.h \
+ iconv.h sys/stream.h arpa/inet.h arpa/ftp.h)
+
AC_CACHE_CHECK(POSIX termios, nmh_cv_sys_posix_termios,
-[AC_TRY_LINK([#include
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include
#include
-#include ],
-[/* SunOS 4.0.3 has termios.h but not the library calls. */
-tcgetattr(0, 0);],
- nmh_cv_sys_posix_termios=yes, nmh_cv_sys_posix_termios=no)])
+#include ]],
+[[/* SunOS 4.0.3 has termios.h but not the library calls. */
+tcgetattr(0, 0);]])],
+nmh_cv_sys_posix_termios=yes, nmh_cv_sys_posix_termios=no)])
if test $nmh_cv_sys_posix_termios = yes; then
AC_CACHE_CHECK(TIOCGWINSZ in termios.h,
nmh_cv_header_termios_h_tiocgwinsz,
- [AC_TRY_LINK([#include
-#include ],
- [int x = TIOCGWINSZ;],
- nmh_cv_header_termios_h_tiocgwinsz=yes,
- nmh_cv_header_termios_h_tiocgwinsz=no)])
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include
+#include ]],
+ [[int x = TIOCGWINSZ;]])],
+ nmh_cv_header_termios_h_tiocgwinsz=yes,nmh_cv_header_termios_h_tiocgwinsz=no)])
else
nmh_cv_header_termios_h_tiocgwinsz=no
fi
@@ -253,28 +474,71 @@ fi
if test $nmh_cv_header_termios_h_tiocgwinsz = no; then
AC_CACHE_CHECK(TIOCGWINSZ in sys/ioctl.h,
nmh_cv_header_sys_ioctl_h_tiocgwinsz,
- [AC_TRY_LINK([#include
-#include ],
- [int x = TIOCGWINSZ;],
- nmh_cv_header_sys_ioctl_h_tiocgwinsz=yes,
- nmh_cv_header_sys_ioctl_h_tiocgwinsz=no)])
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include
+#include ]],
+ [[int x = TIOCGWINSZ;]])],
+ nmh_cv_header_sys_ioctl_h_tiocgwinsz=yes,nmh_cv_header_sys_ioctl_h_tiocgwinsz=no)])
if test $nmh_cv_header_sys_ioctl_h_tiocgwinsz = yes; then
- AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
+ AC_DEFINE(GWINSZ_IN_SYS_IOCTL)dnl
fi
fi
-AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM))
+dnl
+dnl Checks for _IO_write_ptr. A Linuxism used by nmh on linux. We
+dnl really use a whole set of them, but this check should be
+dnl sufficient.
+dnl
+AC_CHECK_HEADER(libio.h, [
+ AC_EGREP_HEADER(_IO_write_ptr, libio.h, [
+ AC_DEFINE(LINUX_STDIO) ]) ])
+
+AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM),,
+[[#if HAVE_SYS_STREAM_H
+# include
+#endif
+]])
dnl ---------------
dnl CHECK FUNCTIONS
dnl ---------------
AC_FUNC_VFORK
+AC_CHECK_LIB(mkstemp,mkstemp)
AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \
- sighold sigrelse writev lstat uname tzset killpg \
- sigsetjmp)
+ sighold sigrelse writev lstat uname tzset killpg mkstemp \
+ sethostent getutent nl_langinfo)
+
+dnl solaris screws this up
+AC_CHECK_FUNC(gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)],
+ AC_CHECK_LIB(nsl, gethostbyname, [AC_DEFINE(HAVE_GETHOSTBYNAME)] ) )
+
+dnl sigsetjmp may be a macro
+AC_MSG_CHECKING(for sigsetjmp)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],
+ [[sigsetjmp((void *)0, 0);]])],[AC_DEFINE(HAVE_SIGSETJMP) AC_MSG_RESULT(yes)],
+ [AC_MSG_RESULT(no)])
AC_REPLACE_FUNCS(snprintf strerror strdup)
+dnl Look for the initgroups() declaration. On AIX 4.[13], Solaris 4.1.3, and
+dnl ULTRIX 4.2A the function is defined in libc but there's no declaration in
+dnl any system header.
+dnl
+dnl On Solaris 2.[456], the declaration is in . On HP-UX 9-11 and
+dnl (reportedly) FreeBSD 3.[23], it's in . Any other locations we
+dnl need to check?
+AC_EGREP_HEADER(initgroups, grp.h, AC_DEFINE(INITGROUPS_HEADER, ),
+ AC_EGREP_HEADER(initgroups, unistd.h,
+ AC_DEFINE(INITGROUPS_HEADER, )))
+
+dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
+dnl or elsewhere. Apparently it's not officially supported (though it
+dnl seems to work perfectly and IBM apparently uses it in internal code).
+dnl Anyhow, if we omit our own snprintf() and vsnprintf() prototypes when we
+dnl HAVE_SNPRINTF, we get a billion warnings at compile time. Use the C
+dnl preprocessor to preprocess stdio.h and make sure that there's actually a
+dnl prototype.
+AC_EGREP_HEADER(snprintf, stdio.h, AC_DEFINE(HAVE_SNPRINTF_PROTOTYPE))
+
dnl -------------------
dnl CHECK FOR LIBRARIES
dnl -------------------
@@ -284,36 +548,106 @@ AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
dnl Checks for network libraries (nsl, socket)
AC_CHECK_NETLIBS
-dnl Check for bug in libraries such that ruserpass
-dnl needs to be linked as _ruserpass.
-AC_CHECK_RUSERPASS
-
termcap_curses_order="termcap curses ncurses"
for lib in $termcap_curses_order; do
AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break])
done
AC_SUBST(TERMLIB)dnl
+dnl ---------------
+dnl CHECK FOR ICONV
+dnl ---------------
+
+dnl Find iconv. It may be in libiconv and may be iconv() or libiconv()
+if test "x$ac_cv_header_iconv_h" = "xyes"; then
+ AC_CHECK_FUNC(iconv, ac_found_iconv=yes, ac_found_iconv=no)
+ if test "x$ac_found_iconv" = "xno"; then
+ AC_CHECK_LIB(iconv, iconv, ac_found_iconv=yes)
+ if test "x$ac_found_iconv" = "xno"; then
+ AC_CHECK_LIB(iconv, libiconv, ac_found_iconv=yes)
+ fi
+ if test "x$ac_found_iconv" != "xno"; then
+ LIBS="-liconv $LIBS"
+ fi
+ else
+ dnl Handle case where there is a native iconv but iconv.h is from libiconv
+ AC_CHECK_DECL(_libiconv_version,
+ [ AC_CHECK_LIB(iconv, libiconv, LIBS="-liconv $LIBS") ],,
+ [ #include ])
+ fi
+fi
+if test "x$ac_found_iconv" = xyes; then
+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+fi
+
+dnl Check if iconv uses const in prototype declaration
+if test "x$ac_found_iconv" = "xyes"; then
+ AC_CACHE_CHECK(for iconv declaration, ac_cv_iconv_const,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
+ #include ]],
+ [[#ifdef __cplusplus
+ "C"
+ #endif
+ #if defined(__STDC__) || defined(__cplusplus)
+ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+ #else
+ size_t iconv();
+ #endif]])],
+ [ac_cv_iconv_const=],
+ [ac_cv_iconv_const=const])])
+ AC_DEFINE_UNQUOTED([ICONV_CONST], $ac_cv_iconv_const,
+ [Define as const if the declaration of iconv() needs const.])
+fi
+
+dnl ----------------
+dnl CHECK FOR NDBM.H
+dnl ----------------
+
+AC_CHECK_HEADERS(db1/ndbm.h gdbm/ndbm.h db.h, break, )
+
dnl --------------
dnl CHECK FOR NDBM
dnl --------------
-dnl Checks for ndbm
-AC_CHECK_FUNC(dbm_open, ,
- AC_CHECK_LIB(ndbm, dbm_open, ,
- AC_CHECK_LIB(dbm, dbm_open)))
+dnl Checks for ndbm; we use our own autoconf macro rather than
+dnl using AC_CHECK_LIB because on later versions of libdb
+dnl the dbm_open() function is provided via a #define and
+dnl we don't want to hardcode searching for the internal
+dnl function that lies behind it.
+dnl This *must* come after the ndbm headers check!
+
+dnl Note the special-casing of the gdbm_compat case:
+dnl if we find gdbm_open in -lgdbm and dbm_open in
+dnl -lgdbm_compat -lgdbm then we want to have both libraries
+dnl in LIBS in that order.
+NMH_CHECK_DBM(,,
+ NMH_CHECK_DBM(ndbm,,
+ NMH_CHECK_DBM(dbm,,
+ NMH_CHECK_DBM(db1,,
+ NMH_CHECK_DBM(db,,
+ NMH_CHECK_DBM(gdbm,,
+ AC_CHECK_LIB(gdbm,gdbm_open,
+ NMH_CHECK_DBM(gdbm_compat,LIBS="-lgdbm_compat -lgdbm $LIBS",
+ AC_MSG_ERROR([cannot find a library providing dbm_open()]),-lgdbm),
+ AC_MSG_ERROR([cannot find a library providing dbm_open()]))))))))
dnl ----------------
dnl CHECK FOR HESIOD
dnl ----------------
-if test x$with_hesiod != x -a x$with_hesiod != xno; then
- if test x$with_hesiod != xyes; then
+if test x"$with_hesiod" != x -a x"$with_hesiod" != x"no"; then
+ if test x"$with_hesiod" != x"yes"; then
HESIOD_INCLUDES="-I$with_hesiod/include"
HESIOD_LIBS="-L$with_hesiod/lib"
fi
- AC_CHECK_FUNC(res_send, ,
- AC_CHECK_LIB(resolv, res_send))
- AC_CHECK_LIB(hesiod, hes_resolve, [HESIOD_LIBS="$HESIOD_LIBS -lhesiod"],
- [AC_MSG_ERROR(Hesiod library not found)], $HESIOD_LIBS)
+ AC_CHECK_FUNC(res_send,
+ [AC_CHECK_LIB(hesiod, hes_resolve,
+ [HESIOD_LIBS="$HESIOD_LIBS -lhesiod"],
+ [AC_MSG_ERROR(Hesiod library not found)],
+ $HESIOD_LIBS)],
+ [AC_CHECK_LIB(hesiod, hes_resolve,
+ [HESIOD_LIBS="$HESIOD_LIBS -lhesiod -lresolv"],
+ [AC_MSG_ERROR(Hesiod library not found)],
+ $HESIOD_LIBS -lresolv)])
+
fi
AC_SUBST(HESIOD_INCLUDES)dnl
AC_SUBST(HESIOD_LIBS)dnl
@@ -321,8 +655,8 @@ AC_SUBST(HESIOD_LIBS)dnl
dnl ----------------------------------
dnl CHECK FOR KRB4 (Kerberos4 support)
dnl ----------------------------------
-if test x$with_krb4 != x -a x$with_krb4 != xno; then
- if test x$with_krb4 != xyes; then
+if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
+ if test x"$with_krb4" != x"yes"; then
KRB4_INCLUDES="-I$with_krb4/include"
if test -d "$with_krb4/include/kerberosIV"; then
KRB4_INCLUDES="$KRB4_INCLUDES -I$with_krb4/include/kerberosIV"
@@ -331,17 +665,54 @@ if test x$with_krb4 != x -a x$with_krb4 != xno; then
elif test -d /usr/include/kerberosIV; then
KRB4_INCLUDES="-I/usr/include/kerberosIV"
fi
- AC_CHECK_LIB(krb4, krb_rd_req,
- [KRB4_LIBS="$KRB4_LIBS -lkrb4 -ldes425 -lkrb5 -lcrypto -lcom_err"],
- [AC_CHECK_LIB(krb, krb_rd_req,
- [KRB4_LIBS="$KRB4_LIBS -lkrb -ldes"],
- [AC_MSG_ERROR(Kerberos 4 libraries not found)],
- $KRB4_LIBS -ldes)],
- $KRB4_LIBS -ldes425 -lkrb5 -lcrypto -lcom_err)
+dnl First, check if we have -lk5crypto, since that means we have a recent krb5
+
+ AC_CHECK_LIB(k5crypto, krb5_encrypt,
+ [AC_CHECK_LIB(krb4, krb_rd_req,
+ [KRB4_LIBS="$KRB4_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"],
+ [AC_MSG_ERROR(Kerberos 4 compatibility libraries not found)],
+ $KRB4_LIBS -ldes425 -lkrb5 -lk5crypto -lcom_err)],
+
+ [AC_CHECK_LIB(krb4, krb_rd_req,
+ [KRB4_LIBS="$KRB4_LIBS -lkrb4 -ldes425 -lkrb5 -lcrypto -lcom_err"],
+ [AC_CHECK_LIB(krb, krb_rd_req,
+ [KRB4_LIBS="$KRB4_LIBS -lkrb -ldes"],
+ [AC_MSG_ERROR(Kerberos 4 libraries not found)],
+ $KRB4_LIBS -ldes)],
+ $KRB4_LIBS -ldes425 -lkrb5 -lcrypto -lcom_err)],
+ $KRB4_LIBS)
+
fi
AC_SUBST(KRB4_INCLUDES)dnl
AC_SUBST(KRB4_LIBS)dnl
+dnl --------------------
+dnl CHECK FOR CYRUS SASL
+dnl --------------------
+if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"; then
+ if test x"$with_cyrus_sasl" != x"yes"; then
+ SASL_INCLUDES="-I$with_cyrus_sasl/include"
+ SASL_LIBS="-L$with_cyrus_sasl/lib"
+
+ dnl Do OS-specific hardcoding of SASL shared library path into executables,
+ dnl so user isn't forced to set environment variables like Solaris'
+ dnl LD_LIBRARY_PATH.
+ case "$target_os" in
+ solaris*)
+ SASL_LIBS="$SASL_LIBS -R$with_cyrus_sasl/lib"
+ ;;
+ esac
+ fi
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $SASL_LIBS"
+ AC_CHECK_LIB(sasl2, sasl_client_new,
+ [SASL_LIBS="$SASL_LIBS -lsasl2"],
+ [AC_MSG_ERROR(Cyrus SASL library not found)])
+ LDFLAGS="$save_LDFLAGS"
+fi
+AC_SUBST(SASL_INCLUDES)dnl
+AC_SUBST(SASL_LIBS)dnl
+
dnl ---------------------
dnl CHECK TERMCAP LIBRARY
dnl ---------------------
@@ -354,27 +725,25 @@ LIBS="$TERMLIB $LIBS"
dnl Checks for external variable ospeed in the termcap library.
AC_CACHE_CHECK(if an include file defines ospeed,
nmh_cv_decl_ospeed_include_defines,
-[AC_TRY_LINK(
-[#include
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include
#if HAVE_TERMIOS_H
#include
#endif
#if HAVE_TERMCAP_H
#include
-#endif], [ospeed = 0;],
-nmh_cv_decl_ospeed_include_defines=yes,
-nmh_cv_decl_ospeed_include_defines=no)])
+#endif]], [[ospeed = 0;]])],
+nmh_cv_decl_ospeed_include_defines=yes,nmh_cv_decl_ospeed_include_defines=no)])
if test $nmh_cv_decl_ospeed_include_defines = no; then
AC_CACHE_CHECK(if you must define ospeed,
nmh_cv_decl_ospeed_must_define,
- [AC_TRY_LINK( ,[extern short ospeed; ospeed = 0;],
- nmh_cv_decl_ospeed_must_define=yes,
- nmh_cv_decl_ospeed_must_define=no)])
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
+ [[extern short ospeed; ospeed = 0;]])],
+ nmh_cv_decl_ospeed_must_define=yes,nmh_cv_decl_ospeed_must_define=no)])
fi
if test $nmh_cv_decl_ospeed_include_defines = yes; then
- AC_DEFINE(HAVE_OSPEED)
+ AC_DEFINE(HAVE_OSPEED)dnl
elif test $nmh_cv_decl_ospeed_must_define = yes; then
AC_DEFINE(HAVE_OSPEED)
AC_DEFINE(MUST_DEFINE_OSPEED)
@@ -410,10 +779,9 @@ dnl Check for sigset_t. Currently I'm looking in
dnl and . Others might need
dnl to be added.
AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
-[AC_TRY_COMPILE(
-[#include
-#include ], [sigset_t tempsigset;],
- nmh_cv_type_sigset_t=yes, nmh_cv_type_sigset_t=no)])
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include
+#include ]], [[sigset_t tempsigset;]])],
+nmh_cv_type_sigset_t=yes,nmh_cv_type_sigset_t=no)])
if test $nmh_cv_type_sigset_t = no; then
AC_DEFINE(sigset_t, unsigned int)
fi
@@ -421,11 +789,10 @@ fi
dnl ----------------
dnl CHECK STRUCTURES
dnl ----------------
-AC_STRUCT_ST_BLKSIZE
+AC_CHECK_MEMBERS(struct stat.st_blksize)
AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff,
-[AC_TRY_COMPILE(
-[#ifdef TIME_WITH_SYS_TIME
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME
# include
# include
#else
@@ -434,13 +801,21 @@ AC_CACHE_CHECK(for tm_gmtoff in struct tm, nmh_cv_struct_tm_gmtoff,
# else
# include
# endif
-#endif],
-[struct tm temptm; temptm.tm_gmtoff = 0;],
- nmh_cv_struct_tm_gmtoff=yes, nmh_cv_struct_tm_gmtoff=no)])
+#endif]], [[struct tm temptm; temptm.tm_gmtoff = 0;]])],
+nmh_cv_struct_tm_gmtoff=yes,nmh_cv_struct_tm_gmtoff=no)])
if test $nmh_cv_struct_tm_gmtoff = yes; then
AC_DEFINE(HAVE_TM_GMTOFF)
fi
+AC_CACHE_CHECK(for ut_type in struct utmp, nmh_cv_struct_utmp_ut_type,
+[AC_TRY_COMPILE(
+[#include ],
+[struct utmp temputmp; temputmp.ut_type = 0;],
+ nmh_cv_struct_utmp_ut_type=yes, nmh_cv_struct_utmp_ut_type=no)])
+if test $nmh_cv_struct_utmp_ut_type = yes; then
+ AC_DEFINE(HAVE_UTMP_UT_TYPE)
+fi
+
dnl -------------
dnl CHECK SIGNALS
dnl -------------
@@ -483,33 +858,102 @@ SIGNAL_H=$nmh_cv_path_signal_h
AC_SUBST(SIGNAL_H)dnl
dnl ----------------
+dnl OS SPECIFIC DEFINES
+dnl ----------------
+case "$target_os" in
+
+ solaris2*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ irix*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ osf*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ aix*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SVR4)
+ ;;
+ sunos4*)
+ AC_DEFINE(BSD42)
+ ;;
+ freebsd*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ netbsd*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ openbsd*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ bsd/os*)
+ AC_DEFINE(BSD42)
+ AC_DEFINE(BSD44)
+ ;;
+ sco5*)
+ AC_DEFINE(SYS5)
+ AC_DEFINE(SCO_5_STDIO)
+ ;;
+esac
+
+
+dnl ----------------
dnl OUTPUT MAKEFILES
dnl ----------------
-AC_OUTPUT(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
- zotnet/Makefile zotnet/mts/Makefile zotnet/tws/Makefile \
- zotnet/mf/Makefile zotnet/bboards/Makefile mts/Makefile \
- mts/smtp/Makefile mts/sendmail/Makefile mts/mmdf/Makefile \
- etc/Makefile man/Makefile, \
- [test -z "$CONFIG_HEADERS" || echo > stamp-h])
+AC_CONFIG_FILES(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
+ mts/Makefile mts/smtp/Makefile \
+ etc/Makefile docs/Makefile man/Makefile)
+AC_CONFIG_COMMANDS([stamp],[test -z "$CONFIG_HEADERS" || echo > stamp-h])
+AC_OUTPUT
+dnl Umm, what's the point of these assignments?? --
eval "nmhbin=${bindir}"; eval "nmhbin2=${nmhbin}"
eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf2=${nmhsysconf}"
eval "nmhlib=${libdir}"; eval "nmhlib2=${nmhlib}"
eval "nmhman=${mandir}"
+pop_kinds=no
+if test x"$enable_pop" = x"yes"; then
+ pop_kinds="yes ("
+
+ if test x"$enable_apop" = x"yes"; then
+ pop_kinds="${pop_kinds}APOP "
+ fi
+
+ if test x"$with_krb4" != x -a x"$with_krb4" != x"no"; then
+ pop_kinds="${pop_kinds}KPOP "
+ fi
+
+ pop_kinds="${pop_kinds}POP3)"
+fi
+
echo "
nmh configuration
-----------------
-nmh version : ${VERSION}
-compiler : ${CC}
-compiler flags : ${CFLAGS}
-linker flags : ${LDFLAGS}
-source code location : ${srcdir}
-binary install path : ${nmhbin2}
-libary install path : ${nmhlib2}
-config files install path : ${nmhsysconf2}
-man page install path : ${nmhman}
-transport system : ${MTS}
-default editor : ${editorpath}
-default pager : ${pagerpath}"
+nmh version : AC_PACKAGE_VERSION
+target os : ${target}
+compiler : ${CC}
+compiler flags : ${CFLAGS}
+linker flags : ${LDFLAGS}
+source code location : ${srcdir}
+binary install path : ${nmhbin2}
+libary install path : ${nmhlib2}
+config files install path : ${nmhsysconf2}
+man page install path : ${nmhman}
+backup prefix : ${backup_prefix}
+transport system : ${MTS}
+file locking type : ${LOCKTYPE}
+default smtp servers : ${smtpservers}
+default editor : ${editorpath}
+default pager : ${pagerpath}
+email address masquerading : ${masquerade}
+pop is enabled : ${pop_kinds}
+SASL support : ${sasl_support}"
echo ""