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 color-tests foreign serial-tests subdir-objects 1.12])
+AM_INIT_AUTOMAKE([-Wall foreign serial-tests subdir-objects 1.12])
AC_CANONICAL_HOST
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 What method of locking to use?
-AS_CASE(["$host_os"],
- [aix*|cygwin*|linux*],
- [default_locktype="fcntl"; default_locking=FCNTL_LOCKING],
- [freebsd*|openbsd*|darwin*], [default_locktype="flock"; default_locking=FLOCK_LOCKING],
- [default_locktype="dot"; default_locking=DOT_LOCKING])
-
-AC_ARG_WITH([locking],
- AS_HELP_STRING([--with-locking=@<:@dot|fcntl|flock|lockf@:>@],
- [specify the file locking method]))
-
-AS_IF([test x"$with_locking" = x"dot"],
- [LOCKTYPE="dot"
- AC_DEFINE([DOT_LOCKING], [1], [Define to use dot based file locking.])],
- [test x"$with_locking" = x"flock"],
- [LOCKTYPE="flock"
- AC_DEFINE([FLOCK_LOCKING], [1], [Define to use flock() based locking.])],
- [test x"$with_locking" = x"lockf"],
- [LOCKTYPE="lockf"
- AC_DEFINE([LOCKF_LOCKING], [1], [Define to use lockf() based locking.])],
- [test x"$with_locking" = x"fcntl"],
- [LOCKTYPE="fcntl"
- AC_DEFINE([FCNTL_LOCKING], [1], [Define to use fnctl() based locking.])],
- [LOCKTYPE="$default_locktype"
- AC_DEFINE_UNQUOTED([$default_locking], [1])])
-
-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/smtp|sendmail/pipe@:>@],
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_debug" = x"yes"; then
- test -z "$LDFLAGS" && LDFLAGS=-g
-fi
+test -z "$CFLAGS" && auto_cflags=1
-AC_PROG_CC
+AC_PROG_CC([cc gcc])
AM_PROG_CC_C_O
-AC_CACHE_CHECK([whether compiler supports -Wno-sign-compare],
- [nmh_cv_has_nosigncompare],
- [nmh_saved_cppflags="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -Wno-sign-compare"
- AC_TRY_COMPILE([],[],nmh_cv_has_nosigncompare=yes,
- nmh_cv_has_nosigncompare=no)
- CPPFLAGS="$nmh_saved_cppflags"])
+dnl ----------------
+dnl CUSTOMIZE CFLAGS
+dnl ----------------
+if test -n "$auto_cflags"; then
+ dnl The user didn't specify CFLAGS, so customize them.
+ if test "$GCC" = yes; then
+ dnl Can't use -ansi with gcc 4.5.3 on Cygwin, at least through setup
+ dnl version 2.763, because it disables some features in the system
+ dnl header files and warns about them with -Wall. Try to test for
+ dnl that generally, with gcc.
+ 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"])
+ test "$nmh_cv_has_dash_ansi" = "yes" && \
+ CFLAGS="${CFLAGS:+$CFLAGS }-ansi -pedantic"
+ else
+ dnl Use -v and some other options with SunStudio cc. lex produces
+ dnl code that causes unreachable-statement warnings. It might be
+ dnl better to use an autoconf test, except -v will probably succeed
+ dnl with many other compilers but have different meaning.
+ AS_CASE([`${CC} -V 2>&1`],
+ [cc:\ Sun\ C*], [CFLAGS=\
+"${CFLAGS:+$CFLAGS }-v -errtags=yes -erroff=E_STATEMENT_NOT_REACHED"])
+ fi
-if test "$nmh_cv_has_nosigncompare" = 'yes'; then
- DISABLE_SIGN_COMPARE_WARNING=-Wno-sign-compare
-fi
-AC_SUBST([DISABLE_SIGN_COMPARE_WARNING])dnl
-
-AC_CACHE_CHECK([whether compiler supports -Wextra], [nmh_cv_has_wextra],
-[nmh_saved_cflags="$CFLAGS"
- 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-clobbered], [nmh_cv_has_noclobbered],
-[nmh_saved_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -Wno-clobbered -Werror"
- AC_TRY_COMPILE([],[],nmh_cv_has_noclobbered=yes,nmh_cv_has_noclobbered=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 -Werror"
- 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
+ AC_CACHE_CHECK([whether compiler supports -Wall], [nmh_cv_has_wall],
+ [nmh_saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wall -Werror"
+ AC_TRY_COMPILE([],[],nmh_cv_has_wall=yes,nmh_cv_has_wall=no)
+ CFLAGS="$nmh_saved_cflags"])
+ test "$nmh_cv_has_wall" = "yes" && CFLAGS="${CFLAGS:+$CFLAGS }-Wall"
+
+ AC_CACHE_CHECK([whether compiler supports -Wextra], [nmh_cv_has_wextra],
+ [nmh_saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wextra -Werror"
+ AC_TRY_COMPILE([],[],nmh_cv_has_wextra=yes,
+ nmh_cv_has_wextra=no)
+ CFLAGS="$nmh_saved_cflags"])
+ test "$nmh_cv_has_wextra" = "yes" && CFLAGS="${CFLAGS:+$CFLAGS }-Wextra"
fi
-dnl if the user hasn't specified CFLAGS, then
-dnl if compiler is gcc, then
-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_dash_ansi" = "yes"; then
- nmh_gcc_warnflags="-ansi -pedantic -Wall"
-else
- nmh_gcc_warnflags="-Wall"
-fi
-if test "$nmh_cv_has_wextra" = "yes"; then
- nmh_gcc_warnflags="${nmh_gcc_warnflags} -Wextra"
-fi
-if test "$nmh_cv_has_noptrsign" = "yes"; then
- nmh_gcc_warnflags="${nmh_gcc_warnflags} -Wno-pointer-sign"
+dnl --------------
+dnl CUSTOMIZE LINK
+dnl --------------
+if test `uname` = OpenBSD; then
+ dnl Filter out "often/almost always misused" warnings from OpenBSD linker.
+ [POSTLINK="2>&1 | egrep -v ': [w]arning: s[a-z]+\(\) is \
+(almost always|often) misused, please use'; true"]
fi
-if test "$nmh_cv_has_noclobbered" = "yes"; then
- nmh_gcc_warnflags="${nmh_gcc_warnflags} -Wno-clobbered"
+AC_SUBST([POSTLINK])
+
+dnl -----------------
+dnl CUSTOMIZE LDFLAGS
+dnl -----------------
+if test "$GCC" = yes; then
+ dnl Disable clang complaint about unused -ansi when linking.
+ AC_CACHE_CHECK([whether linker supports -Qunused-arguments],
+ [nmh_cv_has_q_unused_arguments],
+ [nmh_saved_ldflags="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Qunused-arguments"
+ AC_TRY_LINK([],[],nmh_cv_has_q_unused_arguments=yes,
+ nmh_cv_has_q_unused_arguments=no)
+ LDFLAGS="$nmh_saved_ldflags"])
+ test "$nmh_cv_has_q_unused_arguments" = "yes" && \
+ LDFLAGS="${LDFLAGS:+$LDFLAGS }-Qunused-arguments"
fi
-if test -n "$auto_cflags"; then
- if test x"$enable_debug" = x"yes"; then
- if test -n "$GCC"; then
- test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -g" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -g"
- else
- test -z "$CFLAGS" && CFLAGS=-g || CFLAGS="$CFLAGS -g"
- fi
- else
- if test -z "$LDFLAGS"; then
- case "$build_os" in
- darwin*)
- LDFLAGS=
- ;;
- *)
- LDFLAGS=-s
- ;;
- esac
- fi
- if test -n "$GCC"; then
- test -z "$CFLAGS" && CFLAGS="$nmh_gcc_warnflags -O2" || CFLAGS="$CFLAGS $nmh_gcc_warnflags -O2"
- else
- test -z "$CFLAGS" && CFLAGS=-O || CFLAGS="$CFLAGS -O"
- fi
+dnl This really shouldn't be necessary. And we really shouldn't add -s.
+if test x"$enable_debug" = x"yes"; then
+ test -z "$LDFLAGS" && LDFLAGS=-g
+else
+ if test -z "$LDFLAGS"; then
+ case "$build_os" in
+ darwin*) LDFLAGS= ;;
+ *) LDFLAGS=-s ;;
+ esac
fi
fi
+dnl This hack turns off assertions by default, assuming
+dnl that configure still uses this shell variable. Without
+dnl it, AC_HEADER_ASSERT enables assertions by default.
+test -z "$enable_assert" && enable_assert=no
+
+AC_HEADER_ASSERT
+
dnl ------------------
dnl CHECK FOR PROGRAMS
dnl ------------------
AM_PROG_AR
dnl Look for `cut'
-pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+pathtmp=/usr/xpg4/bin:/usr/bin:/bin:/usr/local/bin:/usr/ucb
AC_PATH_PROG([cutpath], [cut], [no], [$pathtmp])
dnl
AC_SUBST([LINTFLAGS])dnl
dnl Look for `ls'
-pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+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
nmh_cv_ls_grpopt="-lg"])])])
dnl Look for `sendmail'
-pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
+pathtmp=/usr/sbin:/usr/lib:/usr/etc:/usr/ucblib:/usr/bin:/bin
AC_PATH_PROG([sendmailpath], [sendmail], [/usr/sbin/sendmail], [$pathtmp])
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],
+ [cygwin*], [LN=cp],
[LN=ln])
AC_SUBST([LN])
MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
AC_SUBST(MAIL_SPOOL_GRP)dnl
+dnl ---------------------------------------------
+dnl CHECK FOR PROGRAM TO PROVIDE MIME TYPE STRING
+dnl ---------------------------------------------
+AS_IF([file --mime "${srcdir}"/configure >/dev/null 2>&1],
+ [AS_IF([file --brief --mime "${srcdir}"/configure >/dev/null 2>&1],
+ [nmh_mimetypeproc='"file --brief --mime"'],
+ [nmh_mimetypeproc='"file --mime"'])])
+AS_CASE([$nmh_mimetypeproc], [?*],
+ [AC_DEFINE_UNQUOTED([MIMETYPEPROC], [$nmh_mimetypeproc],
+ [Program, with arguments, that provides MIME type string.])])
+AS_ECHO_N(["AS_ESCAPE([checking program to provide MIME type string ... ])"])
+AS_ECHO(["AS_ESCAPE([$nmh_mimetypeproc], [""])"])
+
dnl ------------------
dnl CHECK HEADER FILES
dnl ------------------
dnl ---------------
dnl CHECK FUNCTIONS
dnl ---------------
-AC_CHECK_FUNCS([wcwidth mbtowc writev lstat nl_langinfo getutxent])
+AC_CHECK_FUNCS([wcwidth mbtowc writev lstat nl_langinfo getutxent arc4random])
dnl Check for multibyte character set support
AS_IF([test "x$ac_cv_header_wchar_h" = "xyes" -a \
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
dnl starting checking the termcap library.
LIBS="$nmh_save_LIBS"
+dnl ----------------
+dnl CHECK FLEX FIXUP
+dnl ----------------
+dnl Use LFLAGS make variable setting to work around bugs in flex
+dnl 2.5.36 that cause signed/unsigned mismatch,
+dnl http://sourceforge.net/p/flex/bugs/140/
+AS_IF([test "$LEX" = flex],
+ [AS_CASE([`$LEX -V`],
+ [flex\ 2.5.35], [LFLAGS=\
+'; printf "%s\n" '\''1,$$s/(size_t) \(num_to_read\)/\1/'\'' w q | ed -s $@; \
+true'],
+ [flex\ 2.5.36], [LFLAGS=\
+'; printf "%s\n" '\''1,$$s/\( \)int i;/\1yy_size_t i;/'\'' w q | ed -s $@; \
+true'])
+ AC_SUBST([LFLAGS])])
+
dnl --------------
dnl CHECK TYPEDEFS
dnl --------------
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}
SASL support : ${sasl_support}
TLS support : ${tls_support}
])])dnl