fi
fi
-dnl
-dnl Configure our included libtool and make sure it's regenerated when needed
-dnl
-AC_PROG_LIBTOOL
-AC_SUBST(LIBTOOL_DEPS)
-
dnl
dnl In case of {cyg,gnu}win32. Should be a _target_ test.
dnl Might also be erelevant for DJGPP.
dnl
dnl Checks for libraries.
dnl
+AC_CHECK_LIB(dl,dlopen)
+AC_CHECK_LIB(dl,shl_load)
-dnl $with_ssl can be one of:
-dnl - empty string or "auto", meaning autodetect SSL and use it if found.
-dnl - "yes", meaning link with SSL or bail out.
-dnl - "no", meaning don't link with SSL.
-dnl - anything else, meaning use that as the SSL root, and bail out
-dnl if it fails.
-
-if test x"$with_ssl" = x; then
- dnl Canonicalize unspecified with-ssl setting to "auto". This
- dnl implements the "auto-detect by default" feature. If you want to
- dnl change this to "ignore SSL by default", change "auto" to "no".
- with_ssl=auto
-fi
-
-dnl Detection of OpenSSL is much hairier than the detection of other
-dnl libraries because OpenSSL can be compiled as a third-party
-dnl library, which means it will not be found without additional
-dnl linker magic. It would be really nice to rework this check into
-dnl an AC_DEFUN so that we can reuse it for other third-party
-dnl libraries.
-
-if test x"$with_ssl" != x"no"; then
-
- wget_force_ssl=no
- if test x"$with_ssl" = x"yes"; then
- wget_force_ssl=yes
- fi
-
- if test x"$with_ssl" = x"yes" || test x"$with_ssl" = x"auto"; then
- dnl OpenSSL's root was not specified, so we have to guess. First
- dnl try the system default location, then "/usr/local/ssl" (where
- dnl OpenSSL installs by default), then "/usr/local" (traditional
- dnl choice for installation root), then "/opt".
- ssl_all_roots="system-default /usr/local/ssl /usr/local /opt"
- else
- dnl Root has been specified by the user.
- ssl_all_roots=$with_ssl
- wget_force_ssl=yes
- fi
-
- wget_save_CC=$CC
- wget_save_LIBS=$LIBS
- wget_save_LDFLAGS=$LDFLAGS
- wget_save_CPPFLAGS=$CPPFLAGS
-
- dnl Use libtool for OpenSSL tests so we can specify "-R<rpath>"
- dnl without having to know how the linker handles it.
- CC="$SHELL ./libtool $CC"
-
- dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto
- dnl shared library doesn't record its dependency on libdl, so we
- dnl need to check for it ourselves so we won't fail to link due to a
- dnl lack of -ldl. Most OSes use dlopen(), but HP-UX uses
- dnl shl_load().
- AC_CHECK_LIB(dl,dlopen)
- AC_CHECK_LIB(dl,shl_load)
-
- ssl_success=no
-
- dnl Now try to find SSL libraries in each of the likely SSL roots.
- for ssl_root in $ssl_all_roots
- do
- if test x"$ssl_root" = x"system-default"; then
- dnl Try the default include and library locations.
- SSL_INCLUDES=
- else
- dnl Try this specific root.
- SSL_INCLUDES=-I$ssl_root/include
- dnl It's OK to use -R directly because libtool will
- dnl interpret it for us.
- LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
- fi
-
- AC_MSG_NOTICE([looking for SSL libraries in $ssl_root])
-
- dnl Check whether the compiler can find the include files. On
- dnl some systems Gcc finds libraries in /usr/local/lib, but fails
- dnl to find the includes in /usr/local/include.
-
- ssl_found_includes=no
- CPPFLAGS="$SSL_INCLUDES $wget_save_CPPFLAGS"
-
- dnl Check for all the OpenSSL includes that Wget actually uses.
- dnl This will prune both invalid installations and ancient
- dnl versions of OpenSSL that we can't use.
- AC_MSG_CHECKING([for includes])
- AC_COMPILE_IFELSE([
+dnl Check for OpenSSL
+AC_LIB_LINKFLAGS([crypto])
+AC_LIB_LINKFLAGS([ssl],[crypto],[
#include <openssl/ssl.h>
#include <openssl/x509.h>
#include <openssl/err.h>
#include <openssl/des.h>
#include <openssl/md4.h>
#include <openssl/md5.h>
- ], [
- AC_MSG_RESULT(found)
- ssl_found_includes=yes
- ], [
- AC_MSG_RESULT([not found])
- ])
-
- if test x"$ssl_found_includes" = xno; then
- continue
- fi
-
- ssl_link_failure=no
-
- dnl Make sure that the checks don't run afoul of the cache. It
- dnl would be nicer to temporarily turn off the cache, but
- dnl apparently Autoconf doesn't allow that.
-
- unset ac_cv_lib_crypto_RSA_new
- unset ac_cv_lib_ssl_SSL_new
-
- dnl These checks need to be in this order, or you'll get a link
- dnl failure if you use a static libcrypto.a and libssl.a rather
- dnl than shared libraries.
-
- AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
- AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
-
- if test x"$ssl_link_failure" = xyes; then
- dnl One or both libs failed to link.
- continue
- fi
-
- dnl The libraries link. But we still need to check if the program
- dnl linked with those libraries under these settings with run. On
- dnl some systems (Solaris), Gcc adds -L/usr/local/lib to the
- dnl linking line, but fails to add -R/usr/local/lib, thus creating
- dnl executables that link, but fail to run.
-
- dnl If we are cross-compiling, just assume that working linkage
- dnl implies working executable.
-
- ssl_run_failure=no
-
- AC_MSG_CHECKING([whether SSL libs are resolved at runtime])
- AC_TRY_RUN([
-int RSA_new();
-int SSL_new();
-main(){return 0;}
-],
- AC_MSG_RESULT(yes),
- AC_MSG_RESULT(no); ssl_run_failure=yes,
- AC_MSG_RESULT(cross)
- )
-
- if test x"$ssl_run_failure" = xno; then
- ssl_success=yes
- break
- fi
- done
-
- if test x"$ssl_success" = xyes; then
- AC_MSG_NOTICE([compiling in support for SSL in $ssl_root])
- AC_DEFINE([HAVE_SSL], 1,
- [Define if SSL support should be compiled in.])
- AC_SUBST(SSL_INCLUDES)
- SSL_OBJ='openssl.o'
- AC_SUBST(SSL_OBJ)
- else
- LDFLAGS=$wget_save_LDFLAGS
- LIBS=$wget_save_LIBS
-
- dnl If linking with SSL was forced rather than auto-detected, then
- dnl bail out if SSL failed.
- if test x"$wget_force_ssl" = x"yes"; then
- AC_MSG_ERROR([failed to find OpenSSL libraries], 2)
- fi
- fi
-
- dnl Restore the compiler setting.
- CC=$wget_save_CC
-
- dnl Restore the CPPFLAGS. Do this regardless of whether linking
- dnl with SSL succeeded -- SSL includes will be handled using
- dnl @SSL_INCLUDES@.
- CPPFLAGS=$wget_save_CPPFLAGS
+])
+if test x"$LIBSSL" != x
+then
+ AC_MSG_NOTICE([compiling in support for SSL])
+ AC_DEFINE([HAVE_SSL], 1,
+ [Define if SSL support should be compiled in.])
+ SSL_OBJ='openssl.o'
fi
+AC_SUBST(SSL_OBJ)
dnl Enable NTLM if requested and if SSL is available.
NTLM_OBJ=''