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

Reply via email to