dnl Move this up a bit
AC_PREREQ(2.61)
+dnl (I was able to configure with autoconf-2.59 --meillo 2012-03-22)
AC_INIT(mmh, m4_normalize(m4_include([VERSION])))
-AC_CONFIG_SRCDIR(h/nmh.h)
+AC_CONFIG_SRCDIR(h/mh.h)
AC_CONFIG_HEADER(config.h)
AC_CANONICAL_TARGET
dnl define a macro or two
dnl ---------------------
-AC_DEFUN(NMH_PROG_GNU_LIBTOOL, [
+AC_DEFUN([NMH_PROG_GNU_LIBTOOL], [
if test -n "$LIBTOOL" ; then
tmptest=`$LIBTOOL --version 2>&1 | grep GNU`
if test x"$tmptest" != x ; 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 username_extension'],
- [enable up to 3 types of address masquerading]),
- [if test x"$enable_masquerade" = x"yes"; then
- masquerade="draft_from username_extension"
- else
- masquerade="$enable_masquerade"
- fi], [masquerade="draft_from username_extension"])
-AC_SUBST(masquerade)dnl
-
-dnl Do you want mhe support?
-AC_ARG_ENABLE(mhe,
- AS_HELP_STRING([--disable-mhe],[disable mhe support]))
-
-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, 1,
- [Define to compile in support for the Emacs front-end mh-e.])dnl
-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)
-)
-
dnl What method of locking to use?
AC_ARG_WITH(locking,
AS_HELP_STRING([--with-locking=@<:@dot|fcntl|flock|lockf@:>@],
AC_DEFINE(DOT_LOCKING)dnl
fi
+dnl Should we use a locking directory?
+AC_ARG_WITH(lockdir,
+ AS_HELP_STRING([--with-lockdir=dir], [Store dot-lock files in "dir"]), [
+ AS_IF([test "x$with_lockdir" = xyes],[
+ AC_MSG_ERROR([--with-lockdir requires an argument])])
+])
+
+if test x"$with_lockdir" != x; then
+ LOCKDIR="$with_lockdir"
+ AC_DEFINE_UNQUOTED(LOCKDIR, ["$with_lockdir"],
+ [Directory to store dot-locking lock files.])dnl
+fi
+
dnl ----------------------------------------------------
dnl Default location is /usr/local/mmh/{bin,etc,lib,share/man}
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
+ [if test "`$lspath -dl $mailspool/ | $cutpath -c9`" = "-"; then
nmh_cv_mailspool_world_writable=no
else
nmh_cv_mailspool_world_writable=yes
esac
AC_SUBST(OURDEFS)
-AC_HEADER_DIRENT
AC_HEADER_STDC
-AC_HEADER_TIME
-AC_HEADER_SYS_WAIT
-AC_HEADER_STAT
AC_HEADER_TIOCGWINSZ
-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 \
- langinfo.h wchar.h wctype.h iconv.h netdb.h \
- sys/param.h sys/time.h sys/utsname.h sys/stream.h \
- arpa/inet.h arpa/ftp.h)
+AC_CHECK_HEADERS(fcntl.h crypt.h termcap.h \
+ langinfo.h wchar.h wctype.h iconv.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 ---------------
dnl CHECK FUNCTIONS
dnl ---------------
-AC_FUNC_VFORK
-AC_CHECK_LIB(mkstemp,mkstemp)
-AC_CHECK_FUNCS(waitpid wait3 sigaction sigprocmask sigblock sigsetmask \
- sighold sigrelse lstat uname tzset killpg mkstemp \
- getutent nl_langinfo mbtowc wcwidth)
-
-dnl sigsetjmp may be a macro
-AC_MSG_CHECKING(for sigsetjmp)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <setjmp.h>]],
- [[sigsetjmp((void *)0, 0);]])],[AC_DEFINE(HAVE_SIGSETJMP, 1,
- [Define to 1 if you have the `sigsetjmp'.]) AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)])
-
-AC_REPLACE_FUNCS(snprintf strdup)
+AC_CHECK_FUNCS(nl_langinfo mbtowc wcwidth)
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
AC_EGREP_HEADER(initgroups, unistd.h,
AC_DEFINE(INITGROUPS_HEADER, <unistd.h>)))
-dnl On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
-dnl <stdio.h> 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,1,
- [Define to 1 if <stdio.h> has a prototype for snprintf().]))
-
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
dnl Check location of modf
AC_CHECK_FUNC(modf, , AC_CHECK_LIB(m, modf))
-dnl Checks for network libraries (nsl, socket)
-AC_CHECK_NETLIBS
-
-termcap_curses_order="termcap curses ncurses"
+termcap_curses_order="termcap curses ncurses tinfo"
for lib in $termcap_curses_order; do
AC_CHECK_LIB(${lib}, tgetent, [TERMLIB="-l$lib"; break])
done
AC_SUBST(TERMLIB)dnl
+if test "x$TERMLIB" = "x"; then
+ echo 'Could not find tgetent() in any library.'
+ echo 'Is there a ncurses-devel package that you can install?'
+ exit 1
+fi
+
dnl ---------------
dnl CHECK FOR ICONV
[Define as const if the declaration of iconv() needs const.])
fi
-dnl --------------
-dnl CHECK FOR NDBM
-dnl --------------
-
-AC_ARG_WITH([ndbm],AS_HELP_STRING([--with-ndbm=ARG],[use -lARG to link with ndbm]),
- [nmh_ndbm=$withval],[nmh_ndbm=autodetect])
-AC_ARG_WITH([ndbmheader],AS_HELP_STRING([--with-ndbmheader=ARG],[#include <ARG> to use ndbm]),
- [nmh_ndbmheader=$withval],[nmh_ndbmheader=autodetect])
-
-if test "$nmh_ndbm" = "autodetect"; then
- if test "$nmh_ndbmheader" != "autodetect"; then
- AC_MSG_ERROR([must specify both --with-ndbm and --with-ndbmheader or neither])
- else
-
- dnl There are at least four implementations of ndbm, and
- dnl several of those can be in different places at the whim
- dnl of the system integrator. A good summary of this mess
- dnl can be found at http://www.unixpapa.com/incnote/dbm.html
-
- dnl Classic ndbm with no library required (eg NetBSD): try this
- dnl first so we don't accidentally link in a pointless but harmless
- dnl library in one of the later ndbm.h+libfoo tests:
- NMH_CHECK_NDBM(ndbm.h,,,
- dnl Berkeley DBv2 emulating ndbm: header in db.h:
- NMH_CHECK_NDBM(db.h,db,,
- dnl Berkeley DBv1 emulating ndbm:
- NMH_CHECK_NDBM(ndbm.h,db,,
- NMH_CHECK_NDBM(ndbm.h,db1,,
- dnl Classic ndbm:
- NMH_CHECK_NDBM(ndbm.h,ndbm,,
- dnl glibc2.1 systems put db1 in a subdir:
- NMH_CHECK_NDBM(db1/ndbm.h,db1,,
- dnl GNU gdbm emulating ndbm, with header possibly in gdbm/
- dnl and possibly needing gbdm_compat library:
- NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm,,
- NMH_CHECK_NDBM(gdbm/ndbm.h,gdbm_compat -lgdbm,,
- NMH_CHECK_NDBM(ndbm.h,gdbm,,
- NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm))))))))))
-
- fi
-else
- dnl We don't really need to check that the user-specified values work,
- dnl but it is a convenience to the user to bomb out early rather than
- dnl after configure and half the compile process.
- NMH_CHECK_NDBM([$nmh_ndbmheader],[$nmh_ndbm])
-fi
-
-if test "$nmh_ndbm_found" = "no"; then
- AC_MSG_ERROR([could not find a working ndbm library/header combination])
-else
- dnl Now export the lib/header to our makefile/config.h:
- if test x"$nmh_ndbmheader" != x; then
- AC_DEFINE_UNQUOTED(NDBM_HEADER, <$nmh_ndbmheader>,
- [Define to the header containing the ndbm API prototypes.])
- fi
- if test x"$nmh_ndbm" != x; then
- NDBM_LIBS="-l$nmh_ndbm"
- else
- NDBM_LIBS=
- fi
- AC_SUBST(NDBM_LIBS)
-fi
-
dnl ---------------------
dnl CHECK TERMCAP LIBRARY
nmh_save_LIBS="$LIBS"
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_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#if HAVE_TERMIOS_H
-# include <termios.h>
-#endif
-#if HAVE_TERMCAP_H
-# include <termcap.h>
-#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_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
-
-AH_TEMPLATE(HAVE_OSPEED, [Define to 1 if your termcap library has the ospeed variable.])
-if test $nmh_cv_decl_ospeed_include_defines = yes; then
- AC_DEFINE(HAVE_OSPEED)dnl
-elif test $nmh_cv_decl_ospeed_must_define = yes; then
- AC_DEFINE(HAVE_OSPEED)
- AC_DEFINE(MUST_DEFINE_OSPEED, 1,
- [Define to 1 if you have ospeed, but it is not defined in termcap.h.])
-fi
-
dnl Check if tgetent accepts NULL (and will allocate its own termcap buffer)
dnl Some termcaps reportedly accept a zero buffer, but then dump core
dnl in tgetstr().
dnl --------------
dnl CHECK TYPEDEFS
dnl --------------
-AC_TYPE_SIGNAL
AC_TYPE_PID_T
AC_TYPE_OFF_T
AC_TYPE_UID_T
AC_TYPE_MODE_T
AC_TYPE_SIZE_T
-dnl Check for sigset_t. Currently I'm looking in
-dnl <sys/types.h> and <signal.h>. Others might need
-dnl to be added.
-AC_CACHE_CHECK(for sigset_t, nmh_cv_type_sigset_t,
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <signal.h>]], [[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,
- [Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't define.])
-fi
-
dnl ----------------
dnl CHECK STRUCTURES
dnl ----------------
-AC_CHECK_MEMBERS(struct stat.st_blksize)
-
-AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,,
- [#ifdef TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef TM_IN_SYS_TIME
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif])
-
-AC_CHECK_MEMBERS(struct utmp.ut_type,,,[#include <utmp.h>])
-
-AC_MSG_CHECKING(for union wait)
-AC_CACHE_VAL(nmh_cv_union_wait, [dnl
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <sys/wait.h>]],
- [[union wait status; int pid; pid = wait (&status);
-#ifdef WEXITSTATUS
-/* Some POSIXoid systems have both the new-style macros and the old
- union wait type, and they do not work together. If union wait
- conflicts with WEXITSTATUS et al, we don't want to use it at all. */
- if (WEXITSTATUS (status) != 0) pid = -1;
-#ifdef WTERMSIG
- /* If we have WEXITSTATUS and WTERMSIG, just use them on ints. */
- -- blow chunks here --
-#endif
-#endif
-#ifdef HAVE_WAITPID
- /* Make sure union wait works with waitpid. */
- pid = waitpid (-1, &status, 0);
-#endif
- ]])],
- [nmh_cv_union_wait=yes],
- [nmh_cv_union_wait=no])])
-if test "$nmh_cv_union_wait" = yes; then
- AC_DEFINE(HAVE_UNION_WAIT, 1,
- [Define to 1 if you have the \`union wait' type in <sys/wait.h>.])
-fi
-AC_MSG_RESULT($nmh_cv_union_wait)
-
-CHECK_TYPE_STRUCT_DIRENT_D_TYPE()
-
-dnl -------------
-dnl CHECK SIGNALS
-dnl -------------
-dnl What style of signal do you have (POSIX, BSD, or SYSV)?
-AH_TEMPLATE(RELIABLE_SIGNALS, [Define to 1 if you have reliable signals.])
-AC_MSG_CHECKING(what style of signals to use)
-if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
- signals_style=POSIX_SIGNALS
- AC_DEFINE(POSIX_SIGNALS, 1,
- [Define to 1 if you use POSIX style signal handling.])
- AC_DEFINE(RELIABLE_SIGNALS)
-elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
- signals_style=BSD_SIGNALS
- AC_DEFINE(BSD_SIGNALS,1,
- [Define to 1 if you use BSD style signal handling (and can block signals).])
- AC_DEFINE(RELIABLE_SIGNALS)
-elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
- signals_style=SYSV_SIGNALS
- AC_DEFINE(SYSV_SIGNALS,1,
- [Define to 1 if you use SYSV style signal handling (and can block signals).])
-else
- signals_style=NO_SIGNAL_BLOCKING
- AC_DEFINE(NO_SIGNAL_BLOCKING,1,
- [Define to 1 if you have no signal blocking at all (bummer).])
-fi
-AC_MSG_RESULT($signals_style)
+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
AC_CACHE_CHECK(where signal.h is located, nmh_cv_path_signal_h,
SIGNAL_H=$nmh_cv_path_signal_h
AC_SUBST(SIGNAL_H)dnl
-dnl ----------------
-dnl OS SPECIFIC DEFINES
-dnl ----------------
-AH_TEMPLATE(BSD42, [Defined for SunOS 4, FreeBSD, NetBSD, OpenBSD, BSD/OS, Mac OS X/Rhapsody -- does PicoBSD have uname?])
-AH_TEMPLATE(SCO_5_STDIO, [Defined for SCO5.])
-
-case "$target_os" in
-
- sunos4*)
- AC_DEFINE(BSD42)
- ;;
- freebsd*)
- AC_DEFINE(BSD42)
- ;;
- netbsd*)
- AC_DEFINE(BSD42)
- ;;
- openbsd*)
- AC_DEFINE(BSD42)
- ;;
- bsd/os*)
- AC_DEFINE(BSD42)
- ;;
- sco5*)
- AC_DEFINE(SCO_5_STDIO)
- ;;
-esac
-
dnl ----------------
dnl OUTPUT MAKEFILES
dnl ----------------
AC_CONFIG_FILES(Makefile config/Makefile h/Makefile sbr/Makefile uip/Makefile \
- etc/Makefile docs/Makefile man/Makefile)
+ etc/Makefile man/Makefile)
AC_CONFIG_COMMANDS([stamp],[test -z "$CONFIG_HEADERS" || echo > stamp-h])
AC_OUTPUT
eval "nmhlib=${libdir}"; eval "nmhlib=${nmhlib}"
eval "nmhman=${mandir}"; eval "nmhman=${nmhman}"
-echo "
+cat <<!
mmh configuration
-----------------
mmh version : AC_PACKAGE_VERSION
mail spool : ${mailspool}
file locking type : ${LOCKTYPE}
-address masquerading : ${masquerade}
-"
+!
+if test x"$LOCKTYPE" = x"dot" && test x"$LOCKDIR" != x; then
+ echo "lockfile directory : ${LOCKDIR}"
+fi