X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/283cbeb60a775eb5fe34e7e11950b0cddd86a6cb..7711f3fc00259e55f630cfe6104eff3083dc9d77:/configure.ac diff --git a/configure.ac b/configure.ac index 932809a1..02f0a044 100644 --- a/configure.ac +++ b/configure.ac @@ -42,7 +42,7 @@ AS_IF([test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"],[ dnl Do you want client-side support for encryption with TLS? AC_ARG_WITH([tls], AS_HELP_STRING([--with-tls], [Enable TLS support])) -AS_IF([test x"$with_tls" != x -a x"$with_tls" != x"no"],[ +AS_IF([test x"$with_tls" != x"no"],[ AC_DEFINE([TLS_SUPPORT], [1], [Support TLS for session encryption.])dnl tls_support=yes],[tls_support=no]) @@ -74,10 +74,12 @@ 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 @@ -111,22 +113,6 @@ if test -n "$auto_cflags"; then 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 @@ -153,6 +139,36 @@ if test -n "$auto_cflags"; then test "$nmh_cv_has_wextra" = "yes" && CFLAGS="${CFLAGS:+$CFLAGS }-Wextra" fi +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:+$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 dnl -------------- @@ -325,8 +341,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]) @@ -404,7 +419,7 @@ if test "$nmh_ndbm" = "autodetect"; then 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: + dnl Berkeley DBv2 emulating ndbm: header in db.h, e.g., 32-bit Cygwin: NMH_CHECK_NDBM(db.h,db,, dnl Berkeley DBv1 emulating ndbm: NMH_CHECK_NDBM(ndbm.h,db,, @@ -418,8 +433,11 @@ if test "$nmh_ndbm" = "autodetect"; then 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)))))))))) - + dnl 64-bit Cygwin: + NMH_CHECK_NDBM(ndbm.h,gdbm_compat -lgdbm,, + dnl On Linux, libgdbm_compat.so loads libgdbm.so as well, so it doesn't + dnl need to be explicit: + NMH_CHECK_NDBM(gdbm-ndbm.h,gdbm_compat))))))))))) fi else dnl We don't really need to check that the user-specified values work, @@ -487,16 +505,23 @@ 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 2.5.36-37 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=\ -'; sed -e "s/ int n;/ size_t n;/" $@ >$@.tmp && mv -f $@.tmp $@; true'], - [flex\ 2.5.36], [LFLAGS=\ -'; sed -s "s/\( \)int i;/\1yy_size_t i;/" $@ >$@.tmp && mv -f $@.tmp $@; true']) +'; sed "s/ int n;/ size_t n;/" $@ >$@.tmp && mv -f $@.tmp $@'], + [flex\ 2.5.3[[67]]], [LFLAGS=\ +'; 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 ---------------- @@ -547,7 +572,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}"; @@ -562,8 +587,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}