X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/aaf014c77a4fb19bdc33370f5b6af5b8497decf8..939dea68806ab22c29755091b16236b48876442f:/configure.ac diff --git a/configure.ac b/configure.ac index d3fa76ec..86d95f42 100644 --- a/configure.ac +++ b/configure.ac @@ -23,32 +23,22 @@ dnl -------------------------- dnl CHECK COMMAND LINE OPTIONS dnl -------------------------- -dnl Do you want to debug nmh? -AC_ARG_ENABLE([debug], - AS_HELP_STRING([--enable-debug],[enable nmh code debugging])) - 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], [Enable SASL support via the Cyrus SASL library])) -AS_IF([test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != x"no"],[ - AC_DEFINE([CYRUS_SASL], [1], - [Define to use the Cyrus SASL library for authentication of POP and SMTP.])dnl - AS_IF([test x"$with_cyrus_sasl" != xyes],[ - AC_MSG_WARN([Arguments to --with-cyrus-sasl now ignored]) - AC_MSG_WARN([Please pass the appropriate arguments to CPPFLAGS/LDFLAGS])]) - sasl_support=yes], [sasl_support=no]) +AS_IF([test x"$with_cyrus_sasl" != x -a x"$with_cyrus_sasl" != xyes -a \ + x"$with_cyrus_sasl" != xno],[ + AC_MSG_WARN([Arguments to --with-cyrus-sasl now ignored]) + AC_MSG_WARN([Please pass the appropriate arguments to CPPFLAGS/LDFLAGS])]) + +dnl Do you want client-side support for encryption with TLS? +AC_ARG_WITH([tls], AS_HELP_STRING([--with-tls], [Enable TLS support])) dnl Do you want client-side support for using OAuth2 for SMTP authentication? AC_ARG_WITH([oauth], AS_HELP_STRING([--with-oauth], [Enable OAuth2 support in SMTP auth])) -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"no"],[ - AC_DEFINE([TLS_SUPPORT], [1], [Support TLS for session encryption.])dnl - tls_support=yes],[tls_support=no]) - dnl Set the backup prefix AC_ARG_WITH([hash-backup], AS_HELP_STRING([--with-hash-backup],[use # as the backup prefix (default: ,)])) @@ -96,7 +86,8 @@ dnl CHECK HEADER FILES dnl ------------------ AC_HEADER_TIOCGWINSZ -AC_CHECK_HEADERS([fcntl.h wchar.h wctype.h sys/param.h sys/time.h sys/stream.h]) +AC_CHECK_HEADERS([fcntl.h stdbool.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 .]),, @@ -110,6 +101,10 @@ dnl CHECK FUNCTIONS dnl --------------- AC_CHECK_FUNCS([wcwidth mbtowc getutxent arc4random mkstemps]) +dnl Use custom getline for platforms that don't have it. +AC_CONFIG_LIBOBJ_DIR([sbr]) +AC_REPLACE_FUNCS([getline]) + dnl ----------------------- dnl CHECK MULTIBYTE SUPPORT dnl ----------------------- @@ -134,8 +129,8 @@ if test "$GCC" != yes; then 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*], [AM_CFLAGS=\ -"${AM_CFLAGS:+$AM_CFLAGS }-v -errtags=yes -erroff=E_STATEMENT_NOT_REACHED"]) + [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], @@ -143,7 +138,7 @@ AC_CACHE_CHECK([whether compiler supports -Wall], [nmh_cv_has_wall], CFLAGS="$AM_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" && AM_CFLAGS="${AM_CFLAGS:+$AM_CFLAGS }-Wall" +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" @@ -151,7 +146,7 @@ AC_CACHE_CHECK([whether compiler supports -Wextra], [nmh_cv_has_wextra], AC_TRY_COMPILE([],[],nmh_cv_has_wextra=yes, nmh_cv_has_wextra=no) CFLAGS="$nmh_saved_cflags"]) -test "$nmh_cv_has_wextra" = "yes" && AM_CFLAGS="${AM_CFLAGS:+$AM_CFLAGS }-Wextra" +test "$nmh_cv_has_wextra" = "yes" && CFLAGS="${CFLAGS:+$CFLAGS }-Wextra" AC_SUBST([AM_CFLAGS]) @@ -167,8 +162,10 @@ if test "$GCC" = yes; then 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 AM_CPPFLAGS because it requires optimization. + dnl Use "\ " instead of ' ' or " " for compatiblity with posh. AS_CASE([$CFLAGS], - [-O*|*' -O'*],[AM_CPPFLAGS="${AM_CPPFLAGS:+$AM_CPPFLAGS }-D_FORTIFY_SOURCE=2"]) + [-O|*\ -O|-O[[!0]]*|*\ -O[[!0]]*], + [AM_CPPFLAGS="${AM_CPPFLAGS:+$AM_CPPFLAGS }-D_FORTIFY_SOURCE=2"]) fi dnl FreeBSD needs a bit of magic to bring getline() into scope. @@ -457,28 +454,63 @@ dnl -------------------- dnl CHECK FOR CYRUS-SASL dnl -------------------- -AS_IF([test x"$sasl_support" = x"yes"],[ - AC_CHECK_HEADER([sasl/sasl.h], , [AC_MSG_ERROR([sasl.h not found])]) - AC_CHECK_LIB([sasl2], [sasl_client_new], [SASLLIB="-lsasl2"], - [AC_MSG_ERROR([Cyrus SASL library not found])])],[SASLLIB=""]) +AS_IF([test x"$with_cyrus_sasl" != x"no"],[ + AC_CHECK_HEADER([sasl/sasl.h], HAVE_SASL_H=1) + AC_CHECK_LIB([sasl2], [sasl_client_new], [SASLLIB="-lsasl2"])]) AC_SUBST([SASLLIB]) +dnl ----------------- +dnl Enable SASL? +dnl ----------------- +dnl By default (with_cyrus_sasl=''), enable SASL if header and lib are found. +dnl If SASL requested (--with-sasl with_cyrus_sasl=yes), error if header or lib not found. +dnl If SASL disabled (--without-sasl with_cyrus_sasl=no), don't enable it. +sasl_support=no +CYRUS_SASL=0 +AC_SUBST([CYRUS_SASL]) +AS_IF([test "x$with_cyrus_sasl" = xyes && test "x$HAVE_SASL_H" = x], + [AC_MSG_ERROR([SASL requested but sasl.h not found])], + [test "x$with_cyrus_sasl" = xyes && test "x$SASLLIB" = x], + [AC_MSG_ERROR([SASL requested but Cyrus SASL library not found])], + [test "x$with_cyrus_sasl" != xno && test "x$HAVE_SASL_H" = x1 && + test "x$SASLLIB" != x], + [AC_DEFINE([CYRUS_SASL], [1], + [Define to use the Cyrus SASL library for authentication of POP and SMTP.]) + CYRUS_SASL=1 + sasl_support=yes]) + dnl ----------------- dnl CHECK FOR OPENSSL dnl ----------------- -AS_IF([test x"$tls_support" = x"yes"],[ - dnl OpenBSD 5 needs the other-libraries (fourth argument) to the +AS_IF([test x"$with_tls" != x"no"],[ + dnl OpenBSD 5 needs the other-libraries (fifth argument) to the dnl AC_CHECK_LIB for SSL_new, because it doesn't dnl automatically append -lcrypto when linking with -lssl. - AC_CHECK_HEADER([openssl/ssl.h], , [AC_MSG_ERROR([openssl/ssl.h not found])]) - AC_CHECK_LIB([crypto], [BIO_write], [TLSLIB="-lcrypto"], - [AC_MSG_ERROR([OpenSSL crypto library not found])]) - AC_CHECK_LIB([ssl], [SSL_new], [TLSLIB="-lssl $TLSLIB"], - [AC_MSG_ERROR([OpenSSL library not found])],[$TLSLIB])], - [TLSLIB=]) + AC_CHECK_HEADER([openssl/ssl.h], HAVE_SSL_H=1) + AC_CHECK_LIB([crypto], [BIO_write], [TLSLIB="-lcrypto"]) + AC_CHECK_LIB([ssl], [SSL_new], [TLSLIB="-lssl $TLSLIB"], [TLSLIB=], + [$TLSLIB])]) AC_SUBST([TLSLIB]) +dnl ----------------- +dnl Enable TLS? +dnl ----------------- +dnl By default (with_tls=''), enable TLS if header and libs were found. +dnl If TLS requested (--with-tls with_tls=yes), error if header/lib not found. +dnl If TLS disabled (--without-tls with_tls=no), don't enable it. +tls_support=no +TLS_SUPPORT=0 +AC_SUBST([TLS_SUPPORT]) +AS_IF([test "x$with_tls" = xyes && test "x$HAVE_SSL_H" = x], + [AC_MSG_ERROR([TLS requested but openssl/ssl.h not found])], + [test "x$with_tls" = xyes && test "x$TLSLIB" = x], + [AC_MSG_ERROR([TLS requested but crypto or ssl library not found])], + [test "x$with_tls" != xno && test "x$HAVE_SSL_H" = x1 && test "x$TLSLIB" != x], + [AC_DEFINE([TLS_SUPPORT], [1], [Support TLS for session encryption.]) + TLS_SUPPORT=1 + tls_support=yes]) + dnl ----------------- dnl CHECK FOR CURL dnl ----------------- @@ -523,15 +555,19 @@ AS_IF([test "x$with_oauth" = xyes && test "x$HAVE_CURL_H" = x], dnl ---------------- dnl CHECK FLEX FIXUP dnl ---------------- +dnl BUG: This stops $(LFLAGS) working as it comes after $(AM_FLAGS). dnl Use AM_LFLAGS make variable setting to work around bugs in flex dnl 2.5.36-37 that cause signed/unsigned mismatch, dnl http://sourceforge.net/p/flex/bugs/140/ +dnl 2.6.1 bug: https://github.com/westes/flex/issues/97 AS_IF([test "$LEX" = flex], [AS_CASE([`$LEX -V`], [flex\ 2.5.35], [AM_LFLAGS=\ '; sed "s/ int n;/ size_t n;/" $@ >$@.tmp && mv -f $@.tmp $@'], [flex\ 2.5.3[[67]]], [AM_LFLAGS=\ -'; sed "s/\( \)int i;/\1yy_size_t i;/" $@ >$@.tmp && mv -f $@.tmp $@']) +'; sed "s/\( \)int i;/\1yy_size_t i;/" $@ >$@.tmp && mv -f $@.tmp $@'], + [flex\ 2.6.1], [AM_LFLAGS=\ +'; sed '\''/\/s/int/size_t/; s/\/int i/'\'' $@ >$@.tmp && mv -f $@.tmp $@']) AC_SUBST([AM_LFLAGS])]) dnl ------------------