X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/88019cf6462cea565a09c62f400cc9ff74087a63..81661ad29fa62d2bbf7bdb4b499d65efb07954dc:/configure.ac?ds=sidebyside diff --git a/configure.ac b/configure.ac index 06f80dda..6d140bc2 100644 --- a/configure.ac +++ b/configure.ac @@ -8,7 +8,7 @@ AC_PREREQ([2.68]) 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 @@ -62,43 +62,6 @@ AS_IF([test x"$with_hash_backup" != x -a x"$with_hash_backup" != x"no"], 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@:>@], @@ -129,113 +92,104 @@ dnl CHECK THE COMPILER 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 ],[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 ],[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 ------------------ @@ -249,7 +203,7 @@ 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 +pathtmp=/usr/xpg4/bin:/usr/bin:/bin:/usr/local/bin:/usr/ucb AC_PATH_PROG([cutpath], [cut], [no], [$pathtmp]) dnl @@ -279,7 +233,7 @@ AC_SUBST([LINT])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 @@ -295,13 +249,13 @@ AS_IF([test "$lspath" != "no"], 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]) @@ -370,6 +324,19 @@ AC_CACHE_CHECK(what group owns the mail spool, nmh_cv_ls_mail_grp, 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 ------------------ @@ -404,7 +371,7 @@ AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1, 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 \ @@ -429,6 +396,9 @@ 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 @@ -619,6 +589,22 @@ dnl Now put the libraries back to what it was before we 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 -------------- @@ -700,9 +686,8 @@ 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} SASL support : ${sasl_support} TLS support : ${tls_support} ])])dnl