]> sjero.net Git - wget/blobdiff - configure.in
[svn] Rewrite parsing and handling of URLs.
[wget] / configure.in
index e2bf7b45deb529a86eb5f1e78f18f44361001b2b..be7d112177541775b244c7ac7013497b34eadf0b 100644 (file)
@@ -63,14 +63,15 @@ AC_ARG_ENABLE(debug,
 DEBUG=$enableval, DEBUG=yes)
 test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG)
 
+wget_need_md5=no
+
 case "${USE_OPIE}${USE_DIGEST}" in
 *yes*)
-       MD5_OBJ='md5$o'
+       wget_need_md5=yes
 esac
 if test x"$USE_OPIE" = xyes; then
   OPIE_OBJ='ftp-opie$o'
 fi
-AC_SUBST(MD5_OBJ)
 AC_SUBST(OPIE_OBJ)
 
 dnl
@@ -83,12 +84,6 @@ dnl Find a good install
 dnl
 AC_PROG_INSTALL
 
-dnl
-dnl Configure our included libtool and make sure it's regenerated when needed
-dnl
-AM_PROG_LIBTOOL
-AC_SUBST(LIBTOOL_DEPS)
-
 dnl
 dnl Find the compiler
 dnl
@@ -121,6 +116,12 @@ dnl Handle AIX
 dnl
 AC_AIX
 
+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.
@@ -171,19 +172,57 @@ dnl Checks for library functions.
 dnl
 AC_FUNC_ALLOCA
 AC_FUNC_MMAP
-AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp)
+AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk)
 AC_CHECK_FUNCS(gettimeofday mktime strptime)
 AC_CHECK_FUNCS(strerror snprintf vsnprintf select signal symlink access isatty)
 AC_CHECK_FUNCS(uname gethostname)
 
-AC_CHECK_FUNCS(gethostbyname, [], [
-  AC_CHECK_LIB(nsl, gethostbyname)
+dnl
+dnl Check if we need to compile in getopt.c.
+dnl
+AC_CHECK_FUNC(getopt_long, [], [
+  GETOPT_OBJ='getopt$o'
 ])
+AC_SUBST(GETOPT_OBJ)
 
 dnl
 dnl Checks for libraries.
 dnl
 
+dnl
+dnl Use the md5 lib if available (Solaris).
+dnl
+
+if test x$wget_need_md5 = xyes
+then
+  AC_DEFINE(HAVE_MD5)
+  AC_CHECK_LIB(md5, MD5Update, [
+    AC_DEFINE(HAVE_SOLARIS_MD5)
+    LIBS="-lmd5 $LIBS"
+    ], [
+    MD5_OBJ='gnu-md5$o'
+    AC_DEFINE(HAVE_BUILTIN_MD5)
+  ])
+fi
+AC_SUBST(MD5_OBJ)
+
+dnl On Solaris, -lnsl is needed to use gethostbyname.  On "NCR MP-RAS
+dnl 3.0", however, gethostbyname is in libc, but -lnsl is still needed
+dnl to use -lsocket, as well as for functions such as inet_ntoa.  We
+dnl look for such known offenders and if one of them is not found, we
+dnl check if -lnsl is needed.
+
+wget_check_in_nsl=NONE
+AC_CHECK_FUNCS(gethostbyname, [], [
+  wget_check_in_nsl=gethostbyname
+])
+AC_CHECK_FUNCS(inet_ntoa, [], [
+  wget_check_in_nsl=inet_ntoa
+])
+if test $wget_check_in_nsl != NONE; then
+  AC_CHECK_LIB(nsl, $wget_check_in_nsl)
+fi
+
 AC_CHECK_LIB(socket, socket)
 
 dnl #### This appears to be deficient with later versions of SOCKS.
@@ -193,34 +232,6 @@ then
   AC_CHECK_LIB(socks, Rconnect)
 fi
 
-dnl OpenSSL is a third-party library, which makes checking for it a
-dnl pain.  Before proceeding, we need to figure out whether to use the
-dnl `-R' flag.
-
-dnl Try to autodetect runtime library flag (usually -R), and whether
-dnl it works (or at least does no harm).  Note that this is used
-dnl merely for the configure test below.  The actual linking is
-dnl performed by libtool.  Wouldn't it be nice if libtool also
-dnl provided "querying" that we need in configure?
-AC_MSG_CHECKING("for runtime libraries flag")
-case "$host_os" in
-  sol2 ) dash_r="-R" ;;
-  decosf* | linux* | irix*) dash_r="-rpath " ;;
-  *)
-    dash_r=""
-    for try_dash_r in "-R" "-R " "-rpath "; do
-      OLD_LDFLAGS=$LDFLAGS
-      LDFLAGS="${try_dash_r}/no/such/file-or-directory $LDFLAGS"
-      AC_TRY_LINK(, , dash_r="$try_dash_r")
-      LDFLAGS=$ODL_LDFLAGS
-      test -n "$dash_r" && break
-    done ;;
-esac
-if test -n "$dash_r";
-  then AC_MSG_RESULT("\"${dash_r}\"")
-  else AC_MSG_RESULT(NONE)
-fi
-
 dnl If --with-ssl was specified, make sure we can link with the
 dnl OpenSSL libs.  We should probably auto-detect this by default.
 
@@ -235,8 +246,12 @@ if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
     ssl_all_roots=$with_ssl
   fi
 
-  OLD_LIBS=$LIBS
-  OLD_LDFLAGS=$LDFLAGS
+  wget_save_LIBS=$LIBS
+  wget_save_LDFLAGS=$LDFLAGS
+  wget_save_CC=$CC
+
+  dnl Use libtool for OpenSSL tests to handle the "-R<rpath>" option.
+  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
@@ -251,22 +266,15 @@ if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
   dnl Now try to find SSL libraries in each of the likely SSL roots.
   for ssl_root in $ssl_all_roots
   do
-    LIBS=$OLD_LIBS
-
     if test x"$ssl_root" = xdefault; then
       dnl Try the default library locations.
       SSL_INCLUDES=
-      LDFLAGS=$OLD_LDFLAGS
     else
       dnl Try this specific root.
       SSL_INCLUDES=-I$ssl_root/include
-      SSL_DASH_L="-L$ssl_root/lib"
-      SSL_DASH_R=
-      dnl Only use -R<foo> on systems which support a -R variant.
-      if test x"$dash_r" != x; then
-        SSL_DASH_R="${dash_r}$ssl_root/lib"
-      fi
-      LDFLAGS="$SSL_DASH_L $SSL_DASH_R $OLD_LDFLAGS"
+      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
 
     ssl_link_failure=no
@@ -284,8 +292,8 @@ if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
     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)
+    AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
+    AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
 
     dnl If ssl_link_failure is still no, the libraries link.  But we
     dnl still need to check if the program linked with those libraries
@@ -324,15 +332,25 @@ main(){return 0;}
   done
 
   if test x"$ssl_linked" = xno; then
-    LD_FLAGS=$OLD_LDFLAGS
-    LIBS=$OLD_LIBS
-    dnl Perhaps we should abort here.  Remember that the user
-    dnl explicitly requested linking with SSL.
+    LD_FLAGS=$wget_save_LDFLAGS
+    LIBS=$wget_save_LIBS
+
+    dnl Perhaps we should abort here.  Dan argues that configure
+    dnl scripts shouldn't abort out of principle, but on the other
+    dnl hand remember that the user explicitly requested linking with
+    dnl SSL.
+
+    dnl IMHO there should be a way to specify whether SSL should be
+    dnl avoided, auto-detected, or required, defaulting to
+    dnl `autodetect'.  Only in the `require' mode the script would
+    dnl abort if SSL is not found.
     echo
     echo "WARNING: Failed to link with OpenSSL libraries in $ssl_root/lib."
     echo "         Wget will be built without support for https://... URLs."
     echo
   fi
+
+  CC=$wget_save_CC
 fi
 
 dnl