]> diplodocus.org Git - nmh/blobdiff - configure.ac
Removed export of most of the variables in test/common.sh.in. The
[nmh] / configure.ac
index ed4b6b15af88b132d67aca39a4b28eee87205513..02f0a04474f3a8d476a4270a8819de53477a4e38 100644 (file)
@@ -28,14 +28,6 @@ dnl Do you want to debug nmh?
 AC_ARG_ENABLE([debug],
   AS_HELP_STRING([--enable-debug],[enable nmh code debugging]))
 
-dnl Do you want to disable use of locale functions
-AH_TEMPLATE([LOCALE],
-[Undefine if you don't want locale features.  By default this is defined.])
-AC_ARG_ENABLE([locale],
-  [AS_HELP_STRING([--disable-locale], [turn off locale features])],
-  [AS_IF([test x$enableval = xyes], [AC_DEFINE(LOCALE)])],
-  [AC_DEFINE(LOCALE)])
-
 dnl Do you want client-side support for using SASL for authentication?
 dnl Note that this code will be enabled for both POP and SMTP
 AC_ARG_WITH([cyrus-sasl], AS_HELP_STRING([--with-cyrus-sasl],
@@ -50,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])
 
@@ -82,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
@@ -136,16 +130,6 @@ if test -n "$auto_cflags"; then
                  CFLAGS="$nmh_saved_cflags"])
   test "$nmh_cv_has_wall" = "yes"  &&  CFLAGS="${CFLAGS:+$CFLAGS }-Wall"
 
-  dnl for Ubuntu
-  AC_CACHE_CHECK([whether compiler supports -Wno-unused-result],
-                 [nmh_cv_has_wnur],
-                 [nmh_saved_cflags="$CFLAGS"
-                 CFLAGS="$CFLAGS -Wno-unused-result -Werror"
-                 AC_TRY_COMPILE([],[],nmh_cv_has_wnur=yes,nmh_cv_has_wnur=no)
-                 CFLAGS="$nmh_saved_cflags"])
-  test "$nmh_cv_has_wnur" = "yes"  && \
-    CFLAGS="${CFLAGS:+$CFLAGS }-Wno-unused-result"
-
   AC_CACHE_CHECK([whether compiler supports -Wextra], [nmh_cv_has_wextra],
                  [nmh_saved_cflags="$CFLAGS"
                  CFLAGS="$CFLAGS -Wextra -Werror"
@@ -155,14 +139,44 @@ 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 <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 --------------
-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
+AS_IF([test `uname` = OpenBSD],
+      dnl Munge "often/almost always misused" warnings from OpenBSD linker
+      dnl so that they don't color the waterfall.
+      [POSTLINK="2>&1 | sed -e \
+'s/: w\(arning: s.*() is .* misused, please use\)/: W\1/'"])
 AC_SUBST([POSTLINK])
 
 dnl -----------------
@@ -308,6 +322,7 @@ MAIL_SPOOL_GRP=$nmh_cv_ls_mail_grp
 AC_SUBST([MAIL_SPOOL_GRP])dnl
 
 NMH_MIMETYPEPROC
+NMH_MIMEENCODINGPROC
 
 dnl ------------------
 dnl CHECK HEADER FILES
@@ -326,12 +341,10 @@ 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 langinfo.h wchar.h wctype.h sys/param.h \
-                 sys/time.h sys/stream.h])
+AC_CHECK_HEADERS([fcntl.h wchar.h wctype.h sys/param.h sys/time.h sys/stream.h])
 
 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
   [Define to 1 if `struct winsize' requires <sys/ptem.h>.]),,
@@ -343,7 +356,7 @@ AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM,1,
 dnl ---------------
 dnl CHECK FUNCTIONS
 dnl ---------------
-AC_CHECK_FUNCS([wcwidth mbtowc nl_langinfo getutxent arc4random])
+AC_CHECK_FUNCS([wcwidth mbtowc getutxent arc4random mkstemps])
 
 dnl Check for multibyte character set support
 AS_IF([test "x$ac_cv_header_wchar_h" = "xyes" -a \
@@ -362,9 +375,6 @@ dnl -------------------
 dnl Checks for network libraries (nsl, socket)
 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
 
@@ -380,8 +390,11 @@ for lib in $termcap_curses_order; do
 done
 AC_SUBST([TERMLIB])dnl
 AS_IF([test "x$TERMLIB" = "x"],
-      [AC_MSG_FAILURE([Could not find setupterm in any library.  Is there a curses
-or ncurses library or package that you can install?])])
+      [AC_MSG_FAILURE([Could not find setupterm in any library.  Is there a
+curses or ncurses library or package that you can install?])])
+
+dnl Check for readline support
+NMH_READLINE
 
 dnl --------------
 dnl CHECK FOR NDBM
@@ -406,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,,
@@ -420,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,
@@ -489,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 ----------------
@@ -549,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}";
 
@@ -564,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}