]> sjero.net Git - wget/blobdiff - configure.ac
Fix build under mingw when OpenSSL is used.
[wget] / configure.ac
index e16f2cb310419eefff1fabdbf1020990d7b93fad..eb1b8b7d6d10ca1ea18a3a67232d787c95273f4b 100644 (file)
@@ -62,7 +62,11 @@ dnl Process features.
 dnl
 
 AC_ARG_WITH(ssl,
 dnl
 
 AC_ARG_WITH(ssl,
-[[  --without-ssl           disable SSL autodetection]])
+[[  --without-ssl           disable SSL autodetection
+  --with-ssl={gnutls,openssl} specify the SSL backend.  GNU TLS is the default.]])
+
+AC_ARG_WITH(zlib,
+[[  --without-zlib          disable zlib ]])
 
 AC_ARG_ENABLE(opie,
 [  --disable-opie          disable support for opie or s/key FTP login],
 
 AC_ARG_ENABLE(opie,
 [  --disable-opie          disable support for opie or s/key FTP login],
@@ -196,7 +200,7 @@ AC_FUNC_MMAP
 AC_FUNC_FSEEKO
 AC_CHECK_FUNCS(strptime timegm vsnprintf vasprintf drand48)
 AC_CHECK_FUNCS(strtoll usleep ftello sigblock sigsetjmp memrchr wcwidth mbtowc)
 AC_FUNC_FSEEKO
 AC_CHECK_FUNCS(strptime timegm vsnprintf vasprintf drand48)
 AC_CHECK_FUNCS(strtoll usleep ftello sigblock sigsetjmp memrchr wcwidth mbtowc)
-AC_CHECK_FUNCS(sleep symlink)
+AC_CHECK_FUNCS(sleep symlink utime)
 
 if test x"$ENABLE_OPIE" = xyes; then
   AC_LIBOBJ([ftp-opie])
 
 if test x"$ENABLE_OPIE" = xyes; then
   AC_LIBOBJ([ftp-opie])
@@ -223,7 +227,7 @@ WGET_NSL_SOCKET
 dnl Deal with specific hosts
 case $host_os in
   *mingw32* )
 dnl Deal with specific hosts
 case $host_os in
   *mingw32* )
-    LIBS+='-lws2_32 -lgdi32'
+    LIBS+=' -lws2_32'
     AC_LIBOBJ([mswindows])
     ;;
 esac
     AC_LIBOBJ([mswindows])
     ;;
 esac
@@ -233,7 +237,14 @@ dnl
 dnl Checks for libraries.
 dnl
 
 dnl Checks for libraries.
 dnl
 
+AS_IF([test x"$with_zlib" != xno], [
+  AC_CHECK_LIB(z, compress)
+])
+
 AS_IF([test x"$with_ssl" = xopenssl], [
 AS_IF([test x"$with_ssl" = xopenssl], [
+    dnl some versions of openssl use zlib compression
+    AC_CHECK_LIB(z, compress)
+
     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 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
@@ -242,11 +253,55 @@ AS_IF([test x"$with_ssl" = xopenssl], [
       AC_CHECK_LIB(dl, shl_load)
     ])
 
       AC_CHECK_LIB(dl, shl_load)
     ])
 
-    AC_CHECK_LIB(z, compress)
-    AC_CHECK_LIB(crypto, EVP_MD_CTX_init)
-    AC_CHECK_LIB(ssl, ERR_func_error_string,,
-                AC_MSG_ERROR([openssl development libraries not found]))
-   AC_LIBOBJ([openssl])
+    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 z], [
+  #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"
+    elif test x"$with_ssl" != x
+    then
+      AC_MSG_ERROR([--with-ssl=openssl was given, but SSL is not available.])
+    fi
+])
+
 ], [
   # --with-ssl is not gnutls: check if it's no
   AS_IF([test x"$with_ssl" != xno], [
 ], [
   # --with-ssl is not gnutls: check if it's no
   AS_IF([test x"$with_ssl" != xno], [
@@ -255,21 +310,27 @@ AS_IF([test x"$with_ssl" = xopenssl], [
     AC_CHECK_LIB(z, compress)
     AC_CHECK_LIB(gpg-error, gpg_err_init)
     AC_CHECK_LIB(gcrypt, gcry_control)
     AC_CHECK_LIB(z, compress)
     AC_CHECK_LIB(gpg-error, gpg_err_init)
     AC_CHECK_LIB(gcrypt, gcry_control)
-    AC_CHECK_LIB(gnutls, main)
 
 
-    if test x"$ac_cv_lib_gnutls_main" != xno
-    then
-      AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
-      AC_LIBOBJ([gnutls])
-    else
-      AC_MSG_ERROR([--with-ssl was given, but GNUTLS is not available.])
-    fi
+  dnl Now actually check for -lssl
+  AC_LIB_HAVE_LINKFLAGS([gnutls], [], [
+#include <gnutls/gnutls.h>
+  ], [gnutls_global_init()])
+  if test x"$LIBGNUTLS" != x
+  then
+    ssl_found=yes
+    AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
+    AC_LIBOBJ([gnutls])
+    LIBS="$LIBGNUTLS $LIBS"
+  else
+    AC_MSG_ERROR([--with-ssl was given, but GNUTLS is not available.])
+  fi
+
+  AC_CHECK_FUNCS(gnutls_priority_set_direct)
   ]) # endif: --with-ssl == no?
 ]) # endif: --with-ssl == openssl?
 
   ]) # endif: --with-ssl == no?
 ]) # endif: --with-ssl == openssl?
 
-
 dnl Enable NTLM if requested and if SSL is available.
 dnl Enable NTLM if requested and if SSL is available.
-if test x"$LIBSSL" != x
+if test x"$LIBSSL" != x || test "$ac_cv_lib_ssl32_SSL_connect" = yes
 then
   if test x"$ENABLE_NTLM" != xno
   then
 then
   if test x"$ENABLE_NTLM" != xno
   then
@@ -459,7 +520,19 @@ if test "X$iri" != "Xno"; then
   fi
 fi
 
   fi
 fi
 
+dnl
+dnl Check for UUID
+dnl
+
+AC_CHECK_HEADER(uuid/uuid.h,
+                AC_CHECK_LIB(uuid, uuid_generate,
+                  [LIBS="${LIBS} -luuid"
+                   AC_DEFINE([HAVE_LIBUUID], 1,
+                             [Define if libuuid is available.])
+                  ])
+)
 
 
 dnl Needed by src/Makefile.am
 AM_CONDITIONAL([IRI_IS_ENABLED], [test "X$iri" != "Xno"])
 
 dnl Needed by src/Makefile.am
 AM_CONDITIONAL([IRI_IS_ENABLED], [test "X$iri" != "Xno"])