]> diplodocus.org Git - nmh/blobdiff - configure.ac
Switch to the (correct) casting of char to unsigned char for is*() macros.
[nmh] / configure.ac
index 4f3d260f9b34c2512998a4c46614133f78a287ef..fac9b91bd590fc61cbc40834c7aad47ebd619e59 100644 (file)
@@ -3,208 +3,89 @@ dnl configure.ac -- autoconf template for nmh
 dnl
 
 dnl Move this up a bit
-AC_PREREQ(2.61)
+AC_PREREQ([2.68])
 
-AC_INIT(nmh, m4_normalize(m4_include([VERSION])))
-AC_CONFIG_SRCDIR(h/nmh.h)
-AC_CONFIG_HEADER(config.h)
+AC_INIT([nmh], m4_normalize(m4_include([VERSION])), [nmh-workers@nongnu.org])
+AC_CONFIG_SRCDIR([h/nmh.h])
+AC_CONFIG_HEADER([config.h])
+AM_INIT_AUTOMAKE([-Wall foreign serial-tests subdir-objects 1.12])
 
-AC_CANONICAL_TARGET
+AC_CANONICAL_HOST
 
-dnl ---------------------
-dnl define a macro or two
-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_MSG_NOTICE([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
+AC_MSG_NOTICE([configuring for nmh dated $DATE])
+AC_SUBST([DATE])dnl
 
 dnl --------------------------
 dnl CHECK COMMAND LINE OPTIONS
 dnl --------------------------
 
 dnl Do you want to debug nmh?
-AC_ARG_ENABLE(debug,
+AC_ARG_ENABLE([debug],
   AS_HELP_STRING([--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,
-  AS_HELP_STRING([--enable-masquerade='draft_from mmailid username_extension'],
-    [enable up to 3 types of address masquerading]),
-  [if test x"$enable_masquerade" = x"yes"; then
-    masquerade="draft_from mmailid username_extension"
-  else
-    masquerade="$enable_masquerade"
-  fi], [masquerade="draft_from mmailid username_extension"])
-AC_SUBST(masquerade)dnl
-
-dnl Do you want client-side support for pop?
-AC_ARG_ENABLE(pop,
-  AS_HELP_STRING([--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
 
 dnl Do you want to disable use of locale functions
 AH_TEMPLATE([LOCALE],
 [Undefine if you don't want locale features.  By default this is defined.])
 AC_ARG_ENABLE([locale],
-AC_HELP_STRING([--disable-locale], [turn off locale features]),
-[if test x$enableval = xyes; then
-  AC_DEFINE(LOCALE)
-fi],
-AC_DEFINE(LOCALE)
-)
+  [AS_HELP_STRING([--disable-locale], [turn off locale features])],
+  [AS_IF([test x$enableval = xyes], [AC_DEFINE(LOCALE)])],
+  [AC_DEFINE(LOCALE)])
 
 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, AS_HELP_STRING([--with-cyrus-sasl],
+AC_ARG_WITH([cyrus-sasl], AS_HELP_STRING([--with-cyrus-sasl],
   [Enable SASL support via the Cyrus SASL library]))
-if test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"; then
-  AC_DEFINE(CYRUS_SASL, 1,
-    [Define to use the Cyrus SASL library for authentication of POP and SMTP.])dnl
-  if test x"$with_cyrus_sasl" != xyes; then
-    AC_MSG_WARN([Arguments to --with-cyrus-sasl now ignored])
-    AC_MSG_WARN([Please pass the appropriate arguments to CPPFLAGS/LDFLAGS])
-  fi
-  sasl_support=yes
-else
-  sasl_support=no
-fi
+AS_IF([test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"],[
+      AC_DEFINE([CYRUS_SASL], [1],
+               [Define to use the Cyrus SASL library for authentication of POP and SMTP.])dnl
+      AS_IF([test x"$with_cyrus_sasl" != xyes],[
+           AC_MSG_WARN([Arguments to --with-cyrus-sasl now ignored])
+           AC_MSG_WARN([Please pass the appropriate arguments to CPPFLAGS/LDFLAGS])])
+      sasl_support=yes], [sasl_support=no])
 
 dnl Do you want client-side support for encryption with TLS?
-AC_ARG_WITH(tls, AS_HELP_STRING([--with-tls], [Enable TLS support]))
-if test x"$with_tls" != x -a x"$with_tls" != x"no"; then
-  AC_DEFINE(TLS_SUPPORT, 1, [Support TLS for session encryption.])dnl
-  tls_support=yes
-else
-  tls_support=no
-fi
-
-dnl What should be the default editor?
-AC_ARG_WITH(editor,
-  AS_HELP_STRING([--with-editor=EDITOR],[specify the default editor]))
-
-if test -n "$with_editor"; then
-  editorpath="$with_editor"
-fi
+AC_ARG_WITH([tls], AS_HELP_STRING([--with-tls], [Enable TLS support]))
+AS_IF([test x"$with_tls" != x -a x"$with_tls" != x"no"],[
+      AC_DEFINE([TLS_SUPPORT], [1], [Support TLS for session encryption.])dnl
+      tls_support=yes],[tls_support=no])
 
 dnl Set the backup prefix
 AC_ARG_WITH([hash-backup],
   AS_HELP_STRING([--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",
+AS_IF([test x"$with_hash_backup" != x -a x"$with_hash_backup" != x"no"],
+      [backup_prefix="#"], [backup_prefix=","])
+AC_DEFINE_UNQUOTED([BACKUP_PREFIX], "$backup_prefix",
     [The prefix that is prepended to the name of message files when they are "removed" by rmm. This should typically be `,' or `#'.])dnl
 
-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, 1,
-    [Define this to compile client-side support for pop into inc and msgchk.])dnl
-  POPLIB=popsbr.o
-  POPSED='/^%nmhbeginpop%/d;/^%nmhendpop%/d'
-else
-  POPSED='/^%nmhbeginpop%/,/^%nmhendpop%/d'
-fi
-AC_SUBST(POPLIB)dnl
-AC_SUBST(POPSED)dnl
-
-dnl What method of locking to use?
-AC_ARG_WITH(locking,
-  AS_HELP_STRING([--with-locking=@<:@dot|fcntl|flock|lockf@:>@],
-  [specify the file locking method]))
-
-if test x"$with_locking" = x"dot"; then
-  LOCKTYPE="dot"
-  AC_DEFINE(DOT_LOCKING, 1, [Define to use dot based file locking.])dnl
-elif test x"$with_locking" = x"flock"; then
-  LOCKTYPE="flock"
-  AC_DEFINE(FLOCK_LOCKING, 1, [Define to use flock() based locking.])dnl
-elif test x"$with_locking" = x"lockf"; then
-  LOCKTYPE="lockf"
-  AC_DEFINE(LOCKF_LOCKING, 1, [Define to use lockf() based locking.])dnl
-elif test x"$with_locking" = x"fcntl"; then
-  LOCKTYPE="fcntl"
-  AC_DEFINE(FCNTL_LOCKING, 1, [Define to use fnctl() based locking.])dnl
-else
-  LOCKTYPE="dot"
-  AC_DEFINE(DOT_LOCKING)dnl
-fi
-
-dnl Should we use a locking directory?
-AC_ARG_ENABLE([lockdir], [
-  AS_HELP_STRING([--enable-lockdir=dir], [Store dot-lock files in "dir"])], [
-  AS_IF([test "x$enableval" = xyes],[
-    AC_MSG_ERROR([--enable-lockdir requires an argument])])
-  AS_IF([test "x$LOCKTYPE" != xdot],[
-    AC_MSG_ERROR([Can only use --enable-lockdir with dot locking])])
-  AC_DEFINE_UNQUOTED([LOCKDIR], ["$enableval"],
-                    [Directory to store dot-locking lock files])
-])
-
 dnl What method of posting should post use?
-AC_ARG_WITH(mts,
-  AS_HELP_STRING([--with-mts=@<:@smtp|sendmail@:>@],
+AC_ARG_WITH([mts],
+  AS_HELP_STRING([--with-mts=@<:@smtp|sendmail/smtp|sendmail/pipe@:>@],
   [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 Both the smtp and sendmail mail transport services use the smtp code
-AC_DEFINE(SMTPMTS, 1,
-  [Define if you want SMTP (simple mail transport protocol) support.])dnl
-
-dnl What should be the default pager?
-AC_ARG_WITH(pager,
-  AS_HELP_STRING([--with-pager=PAGER],[specify the default pager]))
-
-if test -n "$with_pager"; then
-  pagerpath="$with_pager"
-fi
+AS_IF([test x"$with_mts" = x"smtp"], [MTS="smtp"],
+      [test x"$with_mts" = x"sendmail"], [MTS="sendmail/smtp"],
+      [test x"$with_mts" = x"sendmail/smtp"], [MTS="sendmail/smtp"],
+      [test x"$with_mts" = x"sendmail/pipe"], [MTS="sendmail/pipe"],
+      [MTS="smtp"])
+AC_SUBST([MTS])dnl
 
 dnl What should be the default mail server(s)?
-AC_ARG_WITH(smtpservers,
-  AS_HELP_STRING([--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
+AC_ARG_WITH([smtpservers],
+  [AS_HELP_STRING([--with-smtpservers='SMTPSERVER1@<:@ SMTPSERVER2...@:>@'],
+  [specify the default SMTP server(s) @<:@localhost@:>@])])
+AS_IF([test -n "$with_smtpservers"], [smtpservers="$with_smtpservers"],
+      [smtpservers="localhost"])
+AC_SUBST([smtpservers])dnl
 
 dnl ----------------------------------------------------
 dnl Default location is /usr/local/nmh/{bin,etc,lib,man}
 dnl ----------------------------------------------------
-AC_PREFIX_DEFAULT(/usr/local/nmh)
+AC_PREFIX_DEFAULT([/usr/local/nmh])
 
 dnl ------------------
 dnl CHECK THE COMPILER
@@ -217,47 +98,48 @@ if test x"$enable_debug" = x"yes"; then
 fi
 
 AC_PROG_CC
+AM_PROG_CC_C_O
 
-AC_SUBST(EXEEXT)dnl
-
-AC_CACHE_CHECK(whether preprocessor supports -Wunused-macros,
-  nmh_cv_has_unusedmacros,
-  [nmh_saved_cppflags="$CPPFLAGS"
-   CPPFLAGS="$CPPFLAGS -Wunused-macros -Wno-unused-macros"
-   AC_TRY_COMPILE([],[],nmh_cv_has_unusedmacros=yes,nmh_cv_has_unusedmacros=no)
-   CPPFLAGS="$nmh_saved_cppflags"])
-
-if test "$nmh_cv_has_unusedmacros" = 'yes'; then
-  test -z "$CPPLAGS"  &&  CPPFLAGS=-Wunused-macros \
-                      ||  CPPFLAGS="$CPPFLAGS -Wunused-macros"
-  DISABLE_UNUSED_MACROS_WARNING=-Wno-unused-macros
-fi
-AC_SUBST(DISABLE_UNUSED_MACROS_WARNING)dnl
-
-AC_CACHE_CHECK(whether compiler supports -Wextra, nmh_cv_wextra,
+AC_CACHE_CHECK([whether compiler supports -Wextra], [nmh_cv_has_wextra],
 [nmh_saved_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -Wextra"
- AC_TRY_COMPILE([],[],nmh_cv_wextra=' -Wextra',echo -n no)
+ CFLAGS="$CFLAGS -Wextra -Werror"
+ AC_TRY_COMPILE([],[],nmh_cv_has_wextra=yes,nmh_cv_has_wextra=no)
  CFLAGS="$nmh_saved_cflags"])
 
-AC_CACHE_CHECK(whether compiler supports -Wno-pointer-sign, nmh_cv_has_noptrsign,
-[nmh_saved_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -Wno-pointer-sign"
- AC_TRY_COMPILE([],[],nmh_cv_has_noptrsign=yes,nmh_cv_has_noptrsign=no)
- CFLAGS="$nmh_saved_cflags"])
+dnl Can't use -ansi with gcc 4.5.3 on Cygwin, at least through setup
+dnl setup version 2.763, because it disables some features in the
+dnl system system header files and warns about them with -Wall.  Try
+dnl to test for that generally, though still with gcc.
+if test "$GCC" = yes; then
+  AC_CACHE_CHECK([whether we can use -ansi with gcc], [nmh_cv_has_dash_ansi],
+    [nmh_saved_cppflags="$CPPFLAGS"
+     nmh_saved_cflags="$CFLAGS"
+     CPPFLAGS="-D_GNU_SOURCE"
+     CFLAGS="-ansi -Wall -Werror"
+     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <time.h>],[tzset();])],
+       [nmh_cv_has_dash_ansi=yes],
+       [nmh_cv_has_dash_ansi=no])
+     CPPFLAGS="$nmh_saved_cppflags"
+     CFLAGS="$nmh_saved_cflags"])
+else
+  nmh_cv_has_dash_ansi=no
+fi
 
 dnl if the user hasn't specified CFLAGS, then
 dnl   if compiler is gcc, then
-dnl     use -O2 and some warning flags
+dnl    use -O2 and some warning flags
 dnl   else use -O
 dnl We use -Wall and -Wextra if supported.  If the compiler supports it we
 dnl also use -Wno-pointer-sign, because gcc 4 now produces a lot of new
 dnl warnings which are probably mostly spurious and which in any case we
 dnl don't want to deal with now.
-if test "$nmh_cv_has_noptrsign" = "yes"; then
-        nmh_gcc_warnflags="-Wall$nmh_cv_wextra -Wno-pointer-sign"
+if test "$nmh_cv_has_dash_ansi" = "yes"; then
+    nmh_gcc_warnflags="-ansi -pedantic -Wall"
 else
-        nmh_gcc_warnflags="-Wall$nmh_cv_wextra"
+    nmh_gcc_warnflags="-Wall"
+fi
+if test "$nmh_cv_has_wextra" = "yes"; then
+    nmh_gcc_warnflags="${nmh_gcc_warnflags} -Wextra"
 fi
 
 if test -n "$auto_cflags"; then
@@ -283,11 +165,11 @@ if test -n "$auto_cflags"; then
     else
       test -z "$CFLAGS" && CFLAGS=-O  || CFLAGS="$CFLAGS -O"
     fi
+    AC_DEFINE([NDEBUG], [1],
+              [Define to disable run-time debugging and asserts.])
   fi
 fi
 
-AC_C_CONST              dnl Does compiler support `const'.
-
 dnl ------------------
 dnl CHECK FOR PROGRAMS
 dnl ------------------
@@ -295,112 +177,67 @@ AC_PROG_MAKE_SET dnl Does make define $MAKE
 AC_PROG_INSTALL                dnl Check for BSD compatible `install'
 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
+AC_PROG_SED            dnl Check for Posix-compliant sed
+AM_PROG_LEX             dnl Check for lex/flex
+
+AM_PROG_AR
 
 dnl Look for `cut'
-pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
-AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
+pathtmp=/usr/xpg4/bin:/usr/bin:/bin:/usr/local/bin:/usr/ucb
+AC_PATH_PROG([cutpath], [cut], [no], [$pathtmp])
+
+dnl
+dnl Check for MD5 program and formatting command
+dnl
+AC_CHECK_PROGS([MD5SUM], [md5sum md5], [missing])
+AS_CASE(["${MD5SUM}"],
+       [md5sum], [MD5FMT="cat"],
+       [md5], [[MD5FMT="${SED} -e 's/MD5 *(.*) *= \([0-9a-f]*\)/\1/'"]],
+       [MD5FMT="missing"])
+AC_SUBST([MD5FMT])
 
 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
-
-dnl If either doesn't exist, replace them with echo and cat
-if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
-  LORDER=echo
-  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 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
+AC_CHECK_PROG([linttmp1], [lclint], [lclint], [no])dnl
+AS_IF([test x$ac_cv_prog_linttmp1 != xno],
+  [LINT=$ac_cv_prog_linttmp1
+  LINTFLAGS="-weak +posixlib -macrovarprefixexclude"],
+  [AC_CHECK_PROG([linttmp2], [lint], [lint], [no])dnl
+  AS_IF([test x$ac_cv_prog_linttmp2 != xno],
+    [LINT=$ac_cv_prog_linttmp2
+    LINTFLAGS=""],
+    [LINT="echo 'No lint program found'"
+    LINTFLAGS=""])])
+AC_SUBST([LINT])dnl
+AC_SUBST([LINTFLAGS])dnl
 
 dnl Look for `ls'
-pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
-AC_PATH_PROG(lspath, ls, no, [$pathtmp])
+pathtmp=/usr/xpg4/bin:/usr/bin:/bin:/usr/local/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
+AS_IF([test "$lspath" != "no"],
+  [AC_CACHE_CHECK([how to get ls to show us the group ownership of a file],
+                [nmh_cv_ls_grpopt],
+  [AS_IF([test x"`$lspath -dl / | $AWK '{print $9}'`" = x"/"],[
     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
+    nmh_cv_ls_grpopt="-l"],[
     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
-AC_PATH_PROG(morepath, more, no, [$pathtmp])
-
-dnl If pager is not specified yet,
-dnl then use `more' as the default.
-if test -z "$pagerpath"; then
-  pagerpath="$morepath"
-fi
-AC_SUBST(pagerpath)dnl
+    nmh_cv_ls_grpopt="-lg"])])])
 
 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, /bin/vi, [$pathtmp])
+pathtmp=/usr/sbin:/usr/lib:/usr/etc:/usr/ucblib:/usr/bin:/bin
+AC_PATH_PROG([sendmailpath], [sendmail], [/usr/sbin/sendmail], [$pathtmp])
 
-dnl If editor is not specified yet,
-dnl then use `vi' as the default.
-if test -z "$editorpath"; then
-  editorpath="$vipath"
-fi
-AC_SUBST(editorpath)dnl
+dnl Cygwin FAT filesystems do not support hard links.  So default to
+dnl cp instead, even if running on an NTFS or other filesystem.
+AS_CASE(["$host_os"],
+  [cygwin*],[LN=cp],
+  [LN=ln])
+AC_SUBST([LN])
 
 dnl ----------------------------------------------------------
 dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
@@ -416,7 +253,7 @@ done
 nmh_cv_mailspool=$mailspool
 ])
 mailspool=$nmh_cv_mailspool
-AC_SUBST(mailspool)dnl
+AC_SUBST([mailspool])dnl
 
 dnl See whether the mail spool directory is world-writable.
 if test "$lspath" != "no" -a "$cutpath" != "no"; then
@@ -430,7 +267,7 @@ if test "$lspath" != "no" -a "$cutpath" != "no"; then
 fi
 
 dnl Also, check for liblockfile (as found on Debian systems)
-AC_CHECK_HEADER(lockfile.h, AC_CHECK_LIB(lockfile, lockfile_create) )
+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)
@@ -445,6 +282,11 @@ if test "$ac_cv_lib_lockfile_lockfile_create" != "no" ; then
   fi
 fi
 
+dnl Provide a way for distcheck to disable setgid_mail via
+dnl DISTCHECK_CONFIGURE_FLAGS.
+AS_IF([test x"$DISABLE_SETGID_MAIL" != x -a x"$DISABLE_SETGID_MAIL" != x0],
+  [nmh_cv_dotlockfile_setgid=yes])
+
 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"$LOCKTYPE" = x"dot" -a x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then
@@ -453,7 +295,7 @@ if test x"$LOCKTYPE" = x"dot" -a x"$nmh_cv_mailspool_world_writable" = x"no" -a
     [Define to 1 if you need to make `inc' set-group-id because your mail spool is not world writable. There are no guarantees as to the safety of doing this, but this #define will add some extra security checks.])dnl
   SETGID_MAIL=1
 fi
-AC_SUBST(SETGID_MAIL)dnl
+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,
@@ -476,29 +318,15 @@ dnl because it must be set before any system header is included and there's no
 dnl portable way to make sure that files generated by lex include config.h
 dnl before system header files.
 
-case "$target_os" in
-  linux*)
-    # Like DEFS, but doesn't get stomped on by configure when using config.h:
-    test -z "$OURDEFS"  &&  OURDEFS="-D_GNU_SOURCE"  \
-                        ||  OURDEFS="$OURDEFS -D_GNU_SOURCE"
-    ;;
-esac
-AC_SUBST(OURDEFS)
+AS_CASE(["$host_os"],
+       [linux*],
+       [# Like DEFS, but doesn't get stomped on by configure when using config.h:
+         AS_IF([test -z "$CPPFLAGS"],[CPPFLAGS="-D_GNU_SOURCE"],
+                [CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"])])
 
-AC_HEADER_STDC
 AC_HEADER_TIOCGWINSZ
-AC_CHECK_HEADERS(errno.h fcntl.h crypt.h ncurses/termcap.h termcap.h \
-                 langinfo.h wchar.h wctype.h iconv.h netdb.h \
-                 sys/param.h sys/time.h sys/stream.h)
-
-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,1,[Use the Linux _IO_*_ptr defines from <libio.h>.]) ]) ])
+AC_CHECK_HEADERS([fcntl.h ncurses/termcap.h termcap.h langinfo.h \
+                  wchar.h wctype.h sys/param.h sys/time.h sys/stream.h])
 
 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
   [Define to 1 if `struct winsize' requires <sys/ptem.h>.]),,
@@ -510,74 +338,45 @@ AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
 dnl ---------------
 dnl CHECK FUNCTIONS
 dnl ---------------
-AC_CHECK_FUNCS(writev lstat nl_langinfo)
+AC_CHECK_FUNCS([wcwidth mbtowc writev lstat nl_langinfo getutxent])
 
 dnl Check for multibyte character set support
-if test "x$ac_cv_header_wchar_h" = "xyes" -a "x$ac_cv_header_wctype_h" = "xyes" \
-    -a "x$ac_cv_func_wcwidth" = "xyes" -a "x$ac_cv_func_mbtowc" = "xyes"; then
-  AC_DEFINE(MULTIBYTE_SUPPORT, 1,
-    [Define to enable support for multibyte character sets.])
-fi
+AS_IF([test "x$ac_cv_header_wchar_h" = "xyes" -a \
+           "x$ac_cv_header_wctype_h" = "xyes" -a \
+           "x$ac_cv_func_wcwidth" = "xyes" -a \
+           "x$ac_cv_func_mbtowc" = "xyes"],
+      [AC_DEFINE([MULTIBYTE_SUPPORT], [1],
+                [Define to enable support for multibyte character sets.])
+       MULTIBYTE_ENABLED=1],
+      [MULTIBYTE_ENABLED=0])
+AC_SUBST([MULTIBYTE_ENABLED])
 
 dnl -------------------
 dnl CHECK FOR LIBRARIES
 dnl -------------------
 dnl Check location of modf
-AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
+AC_CHECK_FUNC([modf], , AC_CHECK_LIB([m], [modf]))
 
 dnl Checks for network libraries (nsl, socket)
 NMH_CHECK_NETLIBS
 
+dnl Check for readline support
+NMH_READLINE
+
+dnl Check the locking functions supported and what we should use by default
+NMH_LOCKING
+
+dnl Check for iconv
+NMH_CHECK_ICONV
+
 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 <iconv.h> ])
-  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 <stdlib.h>
-        #include <iconv.h>]],
-        [[#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
+AC_SUBST([TERMLIB])dnl
+AS_IF([test "x$TERMLIB" = "x"],
+      [AC_MSG_FAILURE([Could not find tgetent in any library.  Is there a curses
+or ncurses library or package that you can install?])])
 
 dnl --------------
 dnl CHECK FOR NDBM
@@ -639,7 +438,7 @@ else
   else
     NDBM_LIBS=
   fi
-  AC_SUBST(NDBM_LIBS)
+  AC_SUBST([NDBM_LIBS])
 fi
 
 dnl ------------------
@@ -648,11 +447,11 @@ dnl ------------------
 dnl nmhrpm is used in the final summary, see below.  The default value is
 dnl reported there as ./RPM, consistent with the reporting of the default
 dnl source code location as ., but its absolute path is used in the Makefile.
-AC_ARG_WITH(rpmdir,
-  AS_HELP_STRING([--with-rpmdir=RPMDIR], [RPM build directory @<:@RPM@:>@]))
+AC_ARG_WITH([rpmdir],
+  [AS_HELP_STRING([--with-rpmdir=RPMDIR], [RPM build directory @<:@RPM@:>@])])
   AS_IF([test x"$with_rpmdir" = x], [rpmdir='$(abs_srcdir)/RPM'; nmhrpm=./RPM],
           [rpmdir="$with_rpmdir"; eval "nmhrpm=${rpmdir}"])
-AC_SUBST(rpmdir)
+AC_SUBST([rpmdir])
 
 
 dnl --------------------
@@ -661,8 +460,9 @@ dnl --------------------
 
 AS_IF([test x"$sasl_support" = x"yes"],[
   AC_CHECK_HEADER([sasl/sasl.h], , [AC_MSG_ERROR([sasl.h not found])])
-  AC_CHECK_LIB([sasl2], [sasl_client_new], ,
-    [AC_MSG_ERROR([Cyrus SASL library not found])])])
+  AC_CHECK_LIB([sasl2], [sasl_client_new], [SASLLIB="-lsasl2"],
+    [AC_MSG_ERROR([Cyrus SASL library not found])])],[SASLLIB=""])
+AC_SUBST([SASLLIB])
 
 dnl -----------------
 dnl CHECK FOR OPENSSL
@@ -670,10 +470,12 @@ dnl -----------------
 
 AS_IF([test x"$tls_support" = x"yes"],[
   AC_CHECK_HEADER([openssl/ssl.h], , [AC_MSG_ERROR([openssl/ssl.h not found])])
-  AC_CHECK_LIB([crypto], [BIO_write], ,
+  AC_CHECK_LIB([crypto], [BIO_write], [TLSLIB="-lcrypto"],
     [AC_MSG_ERROR([OpenSSL crypto library not found])])
-  AC_CHECK_LIB([ssl], [SSL_library_init], ,
-    [AC_MSG_ERROR([OpenSSL library not found])])])
+  AC_CHECK_LIB([ssl], [SSL_library_init], [TLSLIB="-lssl $TLSLIB"],
+    [AC_MSG_ERROR([OpenSSL library not found])])],
+  [TLSLIB=])
+AC_SUBST([TLSLIB])
 
 dnl ---------------------
 dnl CHECK TERMCAP LIBRARY
@@ -767,6 +569,11 @@ dnl ----------------
 dnl CHECK STRUCTURES
 dnl ----------------
 
+dnl For platforms such as FreeBSD that have tm_gmtoff in struct tm.
+dnl (FreeBSD has a timezone() function but not a timezone global
+dnl variable that is visible).
+AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include <time.h>])
+
 AC_STRUCT_DIRENT_D_TYPE
 
 dnl Where is <signal.h> located?  Needed as input for signames.awk
@@ -787,17 +594,21 @@ nmh_cv_path_signal_h=$SIGNAL_H
 SIGNAL_H=$nmh_cv_path_signal_h
 AC_SUBST(SIGNAL_H)dnl
 
-dnl ----------------
-dnl OUTPUT MAKEFILES
-dnl ----------------
-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
+dnl Sigh, this is required because under the new world order autoconf has
+dnl nothing to create in a few of the build directories when doing an object
+dnl tree build.  So make sure we created certain directories if they don't
+dnl exist.
+dnl
+
+AC_CONFIG_COMMANDS([build-directories],
+[test -d etc || AS_MKDIR_P([etc])
+test -d man || AS_MKDIR_P([man])])
+
+AC_CONFIG_COMMANDS_POST([
 
 dnl These odd looking assignments are done to expand out unexpanded
-dnl variables in bindir et al (for instance mandir is '${datarootdir}/man',
+dnl variables in bindir et al (for instance mandir is '${datarootdir}/man'),
 dnl but expanding that gives '${prefix}/share/man', so we need to expand
 dnl again to get the final answer.
 dnl We only use the expanded versions to print the install paths in
@@ -809,26 +620,15 @@ eval "nmhlib=${libdir}";         eval "nmhlib=${nmhlib}"
 eval "nmhman=${mandir}";         eval "nmhman=${nmhman}"
 eval "nmhrpm=${nmhrpm}";
 
-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
-
-  pop_kinds="${pop_kinds}POP3)"
-fi
-
-echo "
+AC_MSG_NOTICE([
 nmh configuration
 -----------------
 nmh version                : AC_PACKAGE_VERSION
-target os                  : ${target}
+host os                    : ${host}
 compiler                   : ${CC}
 compiler flags             : ${CFLAGS}
 linker flags               : ${LDFLAGS}
-definitions                : ${OURDEFS}
+preprocessor flags         : ${CPPFLAGS}
 source code location       : ${srcdir}
 binary install path        : ${nmhbin}
 library install path       : ${nmhlib}
@@ -837,12 +637,15 @@ man page install path      : ${nmhman}
 RPM build root             : ${nmhrpm}
 backup prefix              : ${backup_prefix}
 transport system           : ${MTS}
-file locking type          : ${LOCKTYPE}
+spool default locking type : ${with_locking}
 default smtp servers       : ${smtpservers}
-default editor             : ${editorpath}
-default pager              : ${pagerpath}
-email address masquerading : ${masquerade}
-pop is enabled             : ${pop_kinds}
 SASL support               : ${sasl_support}
-TLS support                : ${tls_support}"
-echo ""
+TLS support                : ${tls_support}
+])])dnl
+
+dnl ---------------
+dnl OUTPUT MAKEFILE
+dnl ---------------
+AC_CONFIG_FILES([Makefile test/common.sh])
+AC_CONFIG_FILES([uip/spost], [chmod +x uip/spost])
+AC_OUTPUT