X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/959dbc18d02cb81512ee2d0904b76e9287c95ee4..81661ad29fa62d2bbf7bdb4b499d65efb07954dc:/configure.ac?ds=inline diff --git a/configure.ac b/configure.ac index f206b809..6d140bc2 100644 --- a/configure.ac +++ b/configure.ac @@ -92,105 +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 - -dnl Use SunStudio cc, with -v, on Solaris if user didn't set CC. -if test -z "$CC" -a -d /opt/solarisstudio12.3/bin; then - CC=/opt/solarisstudio12.3/bin/cc; export CC - ${CC} -V - CFLAGS="${CFLAGS:+$CFLAGS }-v" -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 -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"]) +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 + + 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 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, 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"]) +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 +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"]) - - if test "$nmh_cv_has_q_unused_arguments" = "yes"; then - test -z "$LDFLAGS" && LDFLAGS=-Qunused-arguments \ - || LDFLAGS="$LDFLAGS -Qunused-arguments" - fi -else - nmh_cv_has_dash_ansi=no + [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 -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" +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 - 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 - 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 - AC_DEFINE([NDEBUG], [1], - [Define to disable run-time debugging and asserts.]) + 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 ------------------ @@ -325,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 ------------------ @@ -359,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 \ @@ -581,14 +593,16 @@ dnl ---------------- dnl CHECK FLEX FIXUP dnl ---------------- dnl Use LFLAGS make variable setting to work around bugs in flex -dnl 2.5.35-37 that cause signed/unsigned mismatch, +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 $@']], - [flex\ 2.5.3@<:@67@:>@], [[LFLAGS=\ -'; printf "%s\n" '\''1,$$s/\( \)int i;/\1yy_size_t i;/'\'' w q | ed -s $@']]) + [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 --------------