X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/cce1fc3879071125169f43ce5e82465d2fda3da0..f1920d78123667716f2321d37ce37628603b2700:/configure.ac diff --git a/configure.ac b/configure.ac index 30afee83..4bdf12d6 100644 --- a/configure.ac +++ b/configure.ac @@ -74,17 +74,16 @@ 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 ---------------------------------------------------- +dnl ------------------------------------------------------------------- +dnl Default location is /usr/local/nmh/{bin,etc,libexec,man}, unless we +dnl find an existing installation, in which case we use its location. +dnl ------------------------------------------------------------------- AC_PREFIX_DEFAULT([/usr/local/nmh]) +AC_PREFIX_PROGRAM([mhparam]) dnl ------------------ dnl CHECK THE COMPILER dnl ------------------ -dnl We want these before the checks, -dnl so the checks can modify their values. -test -z "$CFLAGS" && auto_cflags=1 AC_PROG_CC([cc gcc]) AM_PROG_CC_C_O @@ -92,72 +91,61 @@ AM_PROG_CC_C_O 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" - - dnl For Ubuntu gcc 4.8.1, with -O2. It would be better to fix all these, - dnl but until then, suppress the warning. - AC_CACHE_CHECK([whether compiler needs -Wno-unused-result], - [nmh_cv_needs_wnur], - [nmh_saved_cflags="$CFLAGS" - CFLAGS="$CFLAGS -Werror -O2" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [extern const char *path; - chdir (path); - return 0;])], - [nmh_cv_needs_wnur=no], - [nmh_cv_needs_wnur=yes]) - CFLAGS="$nmh_saved_cflags"]) - AS_IF([test "$nmh_cv_needs_wnur" = yes], - [CFLAGS="${CFLAGS:+$CFLAGS }-Wno-unused-result"]) - 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=\ +dnl The user didn't specify CFLAGS, so customize them. +if test "$GCC" != yes; then + 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 +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" +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" + +if test "$GCC" = yes; then + dnl Do this regardless of auto_cflags value. + dnl Enable _FORTIFY_SOURCE checking, which is supported by + dnl gcc 4.1 and later, but only when optimization is enabled. + dnl It shouldn't hurt with earlier versions because it's a cpp macro. + dnl If the user configures with a CFLAGS that contains a -O flag + dnl but then removes it a make time, they'll also have to remove + dnl -D_FORTIFY_SOURCE from CPPFLAGS because it requires optimization. + AS_CASE([$CFLAGS], + [-O*|*' -O'*],[CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-D_FORTIFY_SOURCE=2"]) fi dnl FreeBSD needs a bit of magic to bring getline() into scope. dnl We do this here rather than in (say) h/mh.h because this macro must dnl be defined before is pulled in. +dnl +dnl And while we're here, add the packages tree to the cpp and ld search +dnl paths. Note that FreeBSD's pkg(8) seems to be hardwired to use /usr/local. +dnl If /usr/ports is installed, we use its idea of where things are installed, +dnl otherwise we assume /usr/local. + AS_IF([test `uname` = FreeBSD], - [CPPFLAGS="$CPPFLAGS -D_WITH_GETLINE"]) + [CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-D_WITH_GETLINE" + nmh_cv_freebsd_localbase=`echo '.include ' \ + | make -k -f /dev/stdin -V LOCALBASE 2>/dev/null | sed 1q` + test -z "$nmh_cv_freebsd_localbase" && nmh_cv_freebsd_localbase=/usr/local + CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-I$nmh_cv_freebsd_localbase/include" + LDFLAGS="${LDFLAGS:+$LDFLAGS }-L$nmh_cv_freebsd_localbase/lib" +]) dnl -------------- dnl CUSTOMIZE LINK @@ -196,11 +184,12 @@ AC_HEADER_ASSERT dnl ------------------ dnl CHECK FOR PROGRAMS dnl ------------------ -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_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_SED dnl Check for Posix-compliant sed +AC_PROG_SED dnl Check for Posix-compliant sed +AC_PROG_YACC dnl Check for yacc/bison AM_PROG_LEX dnl Check for lex/flex AM_PROG_AR @@ -296,7 +285,7 @@ AS_IF([test x"$DISABLE_SETGID_MAIL" != x -a x"$DISABLE_SETGID_MAIL" != x0], 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 +if test x"$with_locking" = x"dot" -a x"$nmh_cv_mailspool_world_writable" = x"no" -a x"$nmh_cv_dotlockfile_setgid" != x"yes" ; then dnl do we really need both of these? AC_DEFINE([MAILGROUP],[1], [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 @@ -331,8 +320,7 @@ dnl before system header files. 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"])]) + CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-D_GNU_SOURCE"]) AC_HEADER_TIOCGWINSZ AC_CHECK_HEADERS([fcntl.h wchar.h wctype.h sys/param.h sys/time.h sys/stream.h]) @@ -501,11 +489,18 @@ dnl http://sourceforge.net/p/flex/bugs/140/ AS_IF([test "$LEX" = flex], [AS_CASE([`$LEX -V`], [flex\ 2.5.35], [LFLAGS=\ -'; sed -e "s/ int n;/ size_t n;/" $@ >$@.tmp && mv -f $@.tmp $@'], +'; sed "s/ int n;/ size_t n;/" $@ >$@.tmp && mv -f $@.tmp $@'], [flex\ 2.5.3[[67]]], [LFLAGS=\ -'; sed -s "s/\( \)int i;/\1yy_size_t i;/" $@ >$@.tmp && mv -f $@.tmp $@']) +'; sed "s/\( \)int i;/\1yy_size_t i;/" $@ >$@.tmp && mv -f $@.tmp $@']) AC_SUBST([LFLAGS])]) +dnl ------------------ +dnl FOR INTERNAL USE by the NMH test suite +dnl ------------------ +AC_ARG_VAR([NMHETCDIRINST], [for internal use by nmh test suite]) +AS_IF([test -n "$NMHETCDIRINST"], [nmhetcdirinst=$NMHETCDIRINST] + AC_SUBST([nmhetcdirinst])) + dnl ---------------- dnl CHECK STRUCTURES dnl ---------------- @@ -556,7 +551,7 @@ dnl the final summary and should use them nowhere else (see the autoconf dnl docs for the rationale for bindir etc being unexpanded). eval "nmhbin=${bindir}"; eval "nmhbin=${nmhbin}" eval "nmhsysconf=${sysconfdir}"; eval "nmhsysconf=${nmhsysconf}" -eval "nmhlib=${libdir}"; eval "nmhlib=${nmhlib}" +eval "nmhlibexec=${libexecdir}"; eval "nmhlibexec=${nmhlibexec}" eval "nmhman=${mandir}"; eval "nmhman=${nmhman}" eval "nmhrpm=${nmhrpm}"; @@ -571,8 +566,8 @@ linker flags : ${LDFLAGS} preprocessor flags : ${CPPFLAGS} source code location : ${srcdir} binary install path : ${nmhbin} -library install path : ${nmhlib} -config files install path : ${nmhsysconf} +libexec install path : ${nmhlibexec}/nmh +config files install path : ${nmhsysconf}/nmh man page install path : ${nmhman} RPM build root : ${nmhrpm} backup prefix : ${backup_prefix}