Hello,
This patch for configure.ac replaces logic of searching ssl backend: if not
specified with --with-ssl=openssl, --with-ssl=gnutls or --with-ssl=no, then,
first, tries to find gnutls library and, if failes, then tries to find openssl.
In addition, it adds LT_INIT call to call libtool for specifying rpath option.
Motivation: not defining --with-ssl=openssl and LDFLAGS="-I/opt/openssl/path
-Wl,rpath,/opt/openssl/path" in case, when openssl or gnutls is correctly
installed in non-standard locations, but with providing correct pkg-config files
steps:
tar xf wget-1.18.tar.xz
cd wget-1.18
patch < ../wget-1.18-configure.ac.patch
libtoolize
autoreconf
./configure ...
--- configure.ac
+++ ../configure.ac
@@ -172,6 +172,9 @@
AM_PROG_CC_C_O
AC_AIX
+AM_PROG_AR
+LT_INIT
+
gl_EARLY
dnl
@@ -340,83 +343,8 @@
])
])
-AS_IF([test x"$with_ssl" = xopenssl], [
- if [test x"$with_libssl_prefix" = x]; then
- PKG_CHECK_MODULES([OPENSSL], [openssl], [
- AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
- AC_LIBOBJ([openssl])
- LIBS="$OPENSSL_LIBS $LIBS"
- CFLAGS="$OPENSSL_CFLAGS -DHAVE_LIBSSL $CFLAGS"
- LIBSSL=" " # ntlm check below wants this
- AC_CHECK_FUNCS([RAND_egd])
- AC_DEFINE([HAVE_LIBSSL], [1], [Define if using openssl.])
- ssl_found=yes
- ])
- fi
- if [test x"$ssl_found" != xyes]; then
- dnl As of this writing (OpenSSL 0.9.6), the libcrypto shared library
- dnl doesn't record its dependency on libdl, so we need to make sure
- dnl -ldl ends up in LIBS on systems that have it. Most OSes use
- dnl dlopen(), but HP-UX uses shl_load().
- AC_CHECK_LIB(dl, dlopen, [], [
- AC_CHECK_LIB(dl, shl_load)
- ])
-
- ssl_found=no
- case $host_os in
- *mingw32* )
- dnl prefer link to openssl dlls if possible. if not then fallback on static libs. if not then error
-
- AC_CHECK_LIB(eay32, EVP_MD_CTX_init)
- if test x"$ac_cv_lib_eay32_EVP_MD_CTX_init" != xno
- then
- AC_CHECK_LIB(ssl32, SSL_connect, [
- ssl_found=yes
- AC_MSG_NOTICE([Enabling support for SSL via OpenSSL (shared)])
- AC_LIBOBJ([openssl])
- LIBS="${LIBS} -lssl32"
- AC_DEFINE([HAVE_LIBSSL32], [1], [Define to 1 if you have the `ssl32' library (-lssl32).])
- ],
- AC_MSG_ERROR([openssl not found: shared lib eay32 found but ssl32 not found]))
-
- else
- LIBS+=' -lgdi32'
- dnl fallback and test static libs
- fi
- dnl add zdll lib as dep for above tests?
- ;;
- esac
-
- AS_IF([test x$ssl_found != xyes], [
- dnl Now actually check for -lssl if it wasn't already found
- AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [
-#include <openssl/ssl.h>
-#include <openssl/x509.h>
-#include <openssl/err.h>
-#include <openssl/rand.h>
-#include <openssl/des.h>
-#include <openssl/md4.h>
-#include <openssl/md5.h>
- ], [SSL_library_init ()])
- if test x"$LIBSSL" != x
- then
- ssl_found=yes
- AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
- AC_LIBOBJ([openssl])
- LIBS="$LIBSSL $LIBS"
- AC_CHECK_FUNCS([RAND_egd])
- elif test x"$with_ssl" != x
- then
- AC_MSG_ERROR([--with-ssl=openssl was given, but SSL is not available.])
- fi
- ])
- fi
-], [
- # --with-ssl is not openssl: check if it's no
- AS_IF([test x"$with_ssl" != xno], [
- dnl default is -lgnutls
- with_ssl=gnutls
-
+AS_IF([test x"with_ssl" != xno], [
+ AS_IF([ test x"$with_ssl" = x || test x"$with_ssl" = xgnutls], [
dnl Now actually check for -lgnutls
if [test x"$with_libgnutls_prefix" = x]; then
PKG_CHECK_MODULES([GNUTLS], [gnutls], [
@@ -426,6 +354,11 @@
CFLAGS="$GNUTLS_CFLAGS -DHAVE_LIBGNUTLS $CFLAGS"
AC_DEFINE([HAVE_LIBGNUTLS], [1], [Define if using gnutls.])
ssl_found=yes
+ with_ssl=gnutls
+ ], [
+ AS_IF([test x"$with_ssl" = xgnutls],[
+ AC_MSG_ERROR([GnuTLS requested but not found])
+ ])
])
fi
if [test x"$ssl_found" != xyes]; then
@@ -435,17 +368,99 @@
if test x"$LIBGNUTLS" != x
then
ssl_found=yes
- AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
- AC_LIBOBJ([gnutls])
+ AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
+ AC_LIBOBJ([gnutls])
LIBS="$LIBGNUTLS $LIBS"
- else
- AC_MSG_ERROR([GnuTLS has not been found. Use --with-ssl=openssl if you explicitly want OpenSSL.])
- fi
- fi
-
+ with_ssl=gnutls
+ else
+ if [ x"$with_ssl" == xgnutls ]; then
+ AC_MSG_ERROR([GnuTLS has not been found. Use --with-ssl=openssl if you explicitly want OpenSSL.])
+ fi
+ fi
+ fi
+
AC_CHECK_FUNCS(gnutls_priority_set_direct)
- ]) # endif: --with-ssl != no?
-]) # endif: --with-ssl == openssl?
+ ]) # --with-ssl != no || --with-ssl == gnutls
+ if [test x"$ssl_found" != xyes]; then
+ AC_MSG_NOTICE([GnuTLS not found, trying OpenSSL ])
+ if [test x"$with_libssl_prefix" = x]; then
+ PKG_CHECK_MODULES([OPENSSL], [openssl], [
+ AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
+ AC_LIBOBJ([openssl])
+ LIBS="$OPENSSL_LIBS $LIBS"
+ CFLAGS="$OPENSSL_CFLAGS -DHAVE_LIBSSL $CFLAGS"
+ LIBSSL=" " # ntlm check below wants this
+ AC_CHECK_FUNCS([RAND_egd])
+ AC_DEFINE([HAVE_LIBSSL], [1], [Define if using openssl.])
+ ssl_found=yes
+ with_ssl=openssl
+ ], [
+ AS_IF([test x"$with_ssl" = xopenssl], [
+ AC_MSG_ERROR([OpenSSL requested but not found])
+ ])
+ ])
+ fi
+ if [test x"$ssl_found" != xyes]; then
+ dnl As of this writing (OpenSSL 0.9.6), the libcrypto shared library
+ dnl doesn't record its dependency on libdl, so we need to make sure
+ dnl -ldl ends up in LIBS on systems that have it. Most OSes use
+ dnl dlopen(), but HP-UX uses shl_load().
+ AC_CHECK_LIB(dl, dlopen, [], [
+ AC_CHECK_LIB(dl, shl_load)
+ ])
+
+ ssl_found=no
+ case $host_os in
+ *mingw32* )
+ dnl prefer link to openssl dlls if possible. if not then fallback on static libs. if not then error
+
+ AC_CHECK_LIB(eay32, EVP_MD_CTX_init)
+ if test x"$ac_cv_lib_eay32_EVP_MD_CTX_init" != xno
+ then
+ AC_CHECK_LIB(ssl32, SSL_connect, [
+ ssl_found=yes
+ AC_MSG_NOTICE([Enabling support for SSL via OpenSSL (shared)])
+ AC_LIBOBJ([openssl])
+ LIBS="${LIBS} -lssl32"
+ AC_DEFINE([HAVE_LIBSSL32], [1], [Define to 1 if you have the `ssl32' library (-lssl32).])
+ ],
+ AC_MSG_ERROR([openssl not found: shared lib eay32 found but ssl32 not found]))
+
+ else
+ LIBS+=' -lgdi32'
+ dnl fallback and test static libs
+ fi
+ dnl add zdll lib as dep for above tests?
+ ;;
+ esac
+
+ AS_IF([test x$ssl_found != xyes], [
+ dnl Now actually check for -lssl if it wasn't already found
+ AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <openssl/err.h>
+#include <openssl/rand.h>
+#include <openssl/des.h>
+#include <openssl/md4.h>
+#include <openssl/md5.h>
+ ], [SSL_library_init ()])
+ if test x"$LIBSSL" != x
+ then
+ ssl_found=yes
+ with_ssl=openssl
+ AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
+ AC_LIBOBJ([openssl])
+ LIBS="$LIBSSL $LIBS"
+ AC_CHECK_FUNCS([RAND_egd])
+ elif test x"$with_ssl" = xopenssl
+ then
+ AC_MSG_ERROR([--with-ssl=openssl was given, but SSL is not available.])
+ fi
+ ])
+ fi
+ fi
+]) # --with-ssl != no
dnl Enable NTLM if requested and if SSL is available.
if test x"$LIBSSL" != x || test "$ac_cv_lib_ssl32_SSL_connect" = yes