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])
[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
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 <unistd.h>],
- [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
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 <stdio.h> 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 <bsd.port.mk>' \
+ | 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 --------------
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])
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,,
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,
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 ----------------
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}";
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}