]> sjero.net Git - wget/blobdiff - configure.in
[svn] Don't cast return type of malloc/realloc. Assume ANSI C signal handlers.
[wget] / configure.in
index be7d112177541775b244c7ac7013497b34eadf0b..09e9bd5f761992c912d1b18ab4a2bf5d2b2a953c 100644 (file)
@@ -15,19 +15,28 @@ dnl You should have received a copy of the GNU General Public License
 dnl along with this program; if not, write to the Free Software
 dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 dnl along with this program; if not, write to the Free Software
 dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
+dnl In addition, as a special exception, the Free Software Foundation
+dnl gives permission to link the code of its release of Wget with the
+dnl OpenSSL project's "OpenSSL" library (or with modified versions of it
+dnl that use the same license as the "OpenSSL" library), and distribute
+dnl the linked executables.  You must obey the GNU General Public License
+dnl in all respects for all of the code used other than "OpenSSL".  If you
+dnl modify this file, you may extend this exception to your version of the
+dnl file, but you are not obligated to do so.  If you do not wish to do
+dnl so, delete this exception statement from your version.
+
 dnl
 dnl Process this file with autoconf to produce a configure script.
 dnl
 
 dnl
 dnl Process this file with autoconf to produce a configure script.
 dnl
 
-AC_INIT(src/version.c)
-AC_PREREQ(2.12)
-AC_CONFIG_HEADER(src/config.h)
+AC_INIT([src/version.c])
+AC_PREREQ(2.57)
 
 dnl
 dnl What version of Wget are we building?
 dnl
 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
 
 dnl
 dnl What version of Wget are we building?
 dnl
 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
-echo "configuring for GNU Wget $VERSION"
+AC_MSG_NOTICE([configuring for GNU Wget $VERSION])
 AC_SUBST(VERSION)
 PACKAGE=wget
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
 PACKAGE=wget
 AC_SUBST(PACKAGE)
@@ -36,41 +45,47 @@ dnl
 dnl Get cannonical host
 dnl
 AC_CANONICAL_HOST
 dnl Get cannonical host
 dnl
 AC_CANONICAL_HOST
-AC_DEFINE_UNQUOTED(OS_TYPE, "$host_os")
+AC_DEFINE_UNQUOTED([OS_TYPE], "$host_os",
+                   [Define to be the name of the operating system.])
 
 dnl
 dnl Process features.
 dnl
 
 dnl
 dnl Process features.
 dnl
-AC_ARG_WITH(socks,
-[  --with-socks            use the socks library],
-[AC_DEFINE(HAVE_SOCKS)])
 
 AC_ARG_WITH(ssl,
 
 AC_ARG_WITH(ssl,
-[  --with-ssl[=SSL_ROOT]   link with libssl [in SSL_ROOT/lib] for https: support])
+[[  --with-ssl[=SSL-ROOT]   link with SSL support [default=auto]
+  --without-ssl           disable SSL autodetection]])
 
 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],
-USE_OPIE=$enableval, USE_OPIE=yes)
-test x"${USE_OPIE}" = xyes && AC_DEFINE(USE_OPIE)
+ENABLE_OPIE=$enableval, ENABLE_OPIE=yes)
+test x"${ENABLE_OPIE}" = xyes && AC_DEFINE([ENABLE_OPIE], 1,
+   [Define if you want the Opie support for FTP compiled in.])
 
 AC_ARG_ENABLE(digest,
 [  --disable-digest        disable support for HTTP digest authorization],
 
 AC_ARG_ENABLE(digest,
 [  --disable-digest        disable support for HTTP digest authorization],
-USE_DIGEST=$enableval, USE_DIGEST=yes)
-test x"${USE_DIGEST}" = xyes && AC_DEFINE(USE_DIGEST)
+ENABLE_DIGEST=$enableval, ENABLE_DIGEST=yes)
+test x"${ENABLE_DIGEST}" = xyes && AC_DEFINE([ENABLE_DIGEST], 1,
+   [Define if you want the HTTP Digest Authorization compiled in.])
+
+AC_ARG_ENABLE(ntlm,
+[  --disable-ntlm          disable support for NTLM authorization],
+[ENABLE_NTLM=$enableval], [ENABLE_NTLM=auto])
 
 AC_ARG_ENABLE(debug,
 [  --disable-debug         disable support for debugging output],
 
 AC_ARG_ENABLE(debug,
 [  --disable-debug         disable support for debugging output],
-DEBUG=$enableval, DEBUG=yes)
-test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG)
+ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes)
+test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1,
+   [Define if you want the debug output support compiled in.])
 
 wget_need_md5=no
 
 
 wget_need_md5=no
 
-case "${USE_OPIE}${USE_DIGEST}" in
+case "${ENABLE_OPIE}${ENABLE_DIGEST}" in
 *yes*)
        wget_need_md5=yes
 esac
 *yes*)
        wget_need_md5=yes
 esac
-if test x"$USE_OPIE" = xyes; then
-  OPIE_OBJ='ftp-opie$o'
+if test x"$ENABLE_OPIE" = xyes; then
+  OPIE_OBJ='ftp-opie.o'
 fi
 AC_SUBST(OPIE_OBJ)
 
 fi
 AC_SUBST(OPIE_OBJ)
 
@@ -93,12 +108,15 @@ test -z "$CFLAGS"  && CFLAGS= auto_cflags=1
 test -z "$CC" && cc_specified=yes
 
 AC_PROG_CC
 test -z "$CC" && cc_specified=yes
 
 AC_PROG_CC
+AC_AIX
 
 
+dnl Turn on optimization by default.  Specifically:
 dnl
 dnl if the user hasn't specified CFLAGS, then
 dnl
 dnl if the user hasn't specified CFLAGS, then
-dnl   if compiler is gcc, then use -O2 and some warning flags
-dnl   else use os-specific flags or -O
-dnl
+dnl   if compiler is gcc, then
+dnl     use -O2 and some warning flags
+dnl   else
+dnl     use os-specific flags or -O
 if test -n "$auto_cflags"; then
   if test -n "$GCC"; then
     CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
 if test -n "$auto_cflags"; then
   if test -n "$GCC"; then
     CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
@@ -111,11 +129,6 @@ if test -n "$auto_cflags"; then
   fi
 fi
 
   fi
 fi
 
-dnl
-dnl Handle AIX
-dnl
-AC_AIX
-
 dnl
 dnl Configure our included libtool and make sure it's regenerated when needed
 dnl
 dnl
 dnl Configure our included libtool and make sure it's regenerated when needed
 dnl
@@ -133,55 +146,88 @@ esac
 AC_SUBST(exeext)
 
 dnl
 AC_SUBST(exeext)
 
 dnl
-dnl Check if we can handle prototypes.
-dnl
-AM_C_PROTOTYPES
-
-dnl
-dnl Checks for typedefs, structures, and compiler characteristics.
+dnl Checks for basic compiler characteristics.
 dnl
 AC_C_CONST
 AC_C_INLINE
 dnl
 AC_C_CONST
 AC_C_INLINE
-AC_TYPE_SIZE_T
-AC_TYPE_PID_T
-dnl #### This generates a warning.  What do I do to shut it up?
+AC_C_VOLATILE
 AC_C_BIGENDIAN
 AC_C_BIGENDIAN
-
-# Check size of long.
-AC_CHECK_SIZEOF(long)
-AC_CHECK_SIZEOF(long long)
+AC_C_PROTOTYPES
 
 dnl
 
 dnl
-dnl Checks for headers
+dnl Checks for header files that might be missing.
 dnl
 dnl
-AC_CHECK_HEADERS(string.h stdarg.h unistd.h sys/time.h utime.h sys/utime.h)
-AC_CHECK_HEADERS(sys/select.h sys/utsname.h pwd.h signal.h)
+
+dnl Check for basic headers, even those we assume the presence of.
+dnl This is because Autoconf default includes check for STDC_HEADERS,
+dnl HAVE_SYS_TYPES_H, etc. before including them.
+AC_HEADER_STDC
+AC_CHECK_HEADERS(sys/types.h sys/stat.h)
+dnl Now check for the others.
+AC_CHECK_HEADERS(string.h strings.h limits.h unistd.h sys/time.h)
+AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h)
+AC_CHECK_HEADERS(stdint.h inttypes.h signal.h setjmp.h pwd.h)
 AC_HEADER_TIME
 
 dnl
 AC_HEADER_TIME
 
 dnl
-dnl Return type of signal-handlers
+dnl Check integral type sizes.
 dnl
 dnl
-AC_TYPE_SIGNAL
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
 
 dnl
 
 dnl
-dnl Check for struct utimbuf
-WGET_STRUCT_UTIMBUF
+dnl Check for large file support.  This check needs to come fairly
+dnl early because it could (in principle) affect whether functions and
+dnl headers are available, whether they work, etc.
+dnl
+AC_SYS_LARGEFILE
+AC_CHECK_SIZEOF(off_t)
+
+dnl
+dnl Checks for non-universal or system-specific types.
+dnl
+AC_TYPE_SIZE_T
+AC_TYPE_PID_T
+AC_CHECK_TYPES(uint32_t)
+AC_CHECK_TYPES(sig_atomic_t, [], [], [
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_SIGNAL_H
+# include <signal.h>
+#endif
+])
 
 dnl
 dnl Checks for library functions.
 dnl
 AC_FUNC_ALLOCA
 AC_FUNC_MMAP
 
 dnl
 dnl Checks for library functions.
 dnl
 AC_FUNC_ALLOCA
 AC_FUNC_MMAP
-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_FUNC_FSEEKO
+AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk memmove)
+AC_CHECK_FUNCS(gettimeofday mktime strptime strerror snprintf vsnprintf)
+AC_CHECK_FUNCS(usleep select ftello sigblock sigsetjmp signal)
+AC_CHECK_FUNCS(symlink access isatty)
+
+dnl
+dnl Call Wget's local macros defined in aclocal.
+dnl
+WGET_STRUCT_UTIMBUF
+WGET_SOCKLEN_T
+WGET_FNMATCH
+WGET_NANOSLEEP
+WGET_POSIX_CLOCK
+WGET_NSL_SOCKET
 
 dnl
 dnl Check if we need to compile in getopt.c.
 dnl
 AC_CHECK_FUNC(getopt_long, [], [
 
 dnl
 dnl Check if we need to compile in getopt.c.
 dnl
 AC_CHECK_FUNC(getopt_long, [], [
-  GETOPT_OBJ='getopt$o'
+  GETOPT_OBJ='getopt.o'
 ])
 AC_SUBST(GETOPT_OBJ)
 
 ])
 AC_SUBST(GETOPT_OBJ)
 
@@ -189,68 +235,53 @@ dnl
 dnl Checks for libraries.
 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.
+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.
 
 
-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)
+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
 
 fi
 
-AC_CHECK_LIB(socket, socket)
-
-dnl #### This appears to be deficient with later versions of SOCKS.
-if test "x${with_socks}" = xyes
-then
-  AC_CHECK_LIB(resolv, main)
-  AC_CHECK_LIB(socks, Rconnect)
-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.
 
 
-dnl If --with-ssl was specified, make sure we can link with the
-dnl OpenSSL libs.  We should probably auto-detect this by default.
+if test x"$with_ssl" != x"no"; then
 
 
-if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
+  wget_force_ssl=no
   if test x"$with_ssl" = x"yes"; then
   if test x"$with_ssl" = x"yes"; then
-    dnl OpenSSL's default install location is "/usr/local/ssl".  We also
-    dnl allow /usr/local for regular-style install, and /usr for Linux
-    dnl stuff.
-    ssl_all_roots="default /usr/local/ssl /usr/local /opt"
+    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
   else
-    dnl Root has been kindly provided by the user.
+    dnl Root has been specified by the user.
     ssl_all_roots=$with_ssl
     ssl_all_roots=$with_ssl
+    wget_force_ssl=yes
   fi
 
   fi
 
+  wget_save_CC=$CC
   wget_save_LIBS=$LIBS
   wget_save_LDFLAGS=$LDFLAGS
   wget_save_LIBS=$LIBS
   wget_save_LDFLAGS=$LDFLAGS
-  wget_save_CC=$CC
+  wget_save_CPPFLAGS=$CPPFLAGS
 
 
-  dnl Use libtool for OpenSSL tests to handle the "-R<rpath>" option.
+  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
   CC="$SHELL ./libtool $CC"
 
   dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto
@@ -261,13 +292,13 @@ if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
   AC_CHECK_LIB(dl,dlopen)
   AC_CHECK_LIB(dl,shl_load)
 
   AC_CHECK_LIB(dl,dlopen)
   AC_CHECK_LIB(dl,shl_load)
 
-  ssl_linked=no
+  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
 
   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" = xdefault; then
-      dnl Try the default library locations.
+    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=
     else
       dnl Try this specific root.
@@ -277,9 +308,39 @@ if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
       LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
     fi
 
       LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
     fi
 
-    ssl_link_failure=no
+    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([
+#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>
+    ], [
+      AC_MSG_RESULT(found)
+      ssl_found_includes=yes
+    ], [
+      AC_MSG_RESULT([not found])
+    ])
 
 
-    AC_MSG_RESULT(["Looking for SSL libraries in $ssl_root"])
+    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 Make sure that the checks don't run afoul of the cache.  It
     dnl would be nicer to temporarily turn off the cache, but
@@ -295,68 +356,214 @@ if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
     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
-    dnl under these settings with run.  On some systems (Solaris), Gcc
-    dnl adds -L/usr/local/lib to the linking line, but fails to add
-    dnl -R/usr/local/lib, thus creating executables that link, but
-    dnl fail to run.
+    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.
 
 
     dnl If we are cross-compiling, just assume that working linkage
     dnl implies working executable.
 
-    if test x"$ssl_link_failure" = xno; then
-      dnl Now try to run the thing.
-      AC_MSG_CHECKING("whether SSL libs are resolved at runtime")
-      AC_TRY_RUN([
+    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;}
 ],
 int RSA_new();
 int SSL_new();
 main(){return 0;}
 ],
-       AC_MSG_RESULT("yes"),
-       AC_MSG_RESULT("no"); ssl_link_failure=yes,
-       AC_MSG_RESULT("cross"))
-    fi
+      AC_MSG_RESULT(yes),
+      AC_MSG_RESULT(no); ssl_run_failure=yes,
+      AC_MSG_RESULT(cross)
+    )
 
 
-    if test x"$ssl_link_failure" = xno; then
-      dnl This echo doesn't look right, but I'm not sure what to use
-      dnl instead.
-      AC_MSG_RESULT("Compiling in support for SSL in $ssl_root")
-      AC_DEFINE(HAVE_SSL)
-      AC_SUBST(SSL_INCLUDES)
-      SSL_OBJ='gen_sslfunc$o'
-      AC_SUBST(SSL_OBJ)
-      ssl_linked=yes
+    if test x"$ssl_run_failure" = xno; then
+      ssl_success=yes
       break
     fi
   done
 
       break
     fi
   done
 
-  if test x"$ssl_linked" = xno; then
-    LD_FLAGS=$wget_save_LDFLAGS
+  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
 
     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
+    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
 
   fi
 
+  dnl Restore the compiler setting.
   CC=$wget_save_CC
   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
 fi
 
 fi
 
+dnl Enable NTLM if requested and if SSL is available.
+NTLM_OBJ=''
+if test x"$ssl_success" = xyes
+then
+  if test x"$ENABLE_NTLM" != xno
+  then
+    AC_DEFINE([ENABLE_NTLM], 1,
+     [Define if you want the NTLM authorization support compiled in.])
+    NTLM_OBJ='http-ntlm.o'
+  fi
+else
+  dnl If SSL is unavailable and the user explicitly requested NTLM,
+  dnl abort.
+  if test x"$ENABLE_NTLM" = xyes
+  then
+    AC_MSG_ERROR([NTLM authorization requested and OpenSSL not found; aborting])
+  fi
+fi
+AC_SUBST(NTLM_OBJ)
+
+dnl
+dnl Find an md5 implementation.
+dnl
+
+if test x"$wget_need_md5" = xyes
+then
+  dnl This should be moved to an AC_DEFUN, but I'm not sure how to
+  dnl manipulate MD5_OBJ from the defun.
+
+  MD5_OBJ='gen-md5.o'
+  found_md5=no
+
+  dnl Check for the system MD5 library on Solaris.  We don't check for
+  dnl something simple like "MD5Update" because there are a number of
+  dnl MD5 implementations that use that name.  md5_calc is, hopefully,
+  dnl specific to the Solaris MD5 library.
+  if test x"$found_md5" = xno; then
+    AC_CHECK_LIB(md5, md5_calc, [
+      dnl Some installations have bogus <md5.h> in the compiler's
+      dnl include path, making the system md5 library useless.
+      AC_MSG_CHECKING([for working md5.h])
+      AC_COMPILE_IFELSE([#include <md5.h>
+                        ], [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_SOLARIS_MD5], 1, [Define to use Solaris MD5.])
+        LIBS="-lmd5 $LIBS"
+        found_md5=yes
+        AC_MSG_NOTICE([using the Solaris MD5 implementation])
+      ], [AC_MSG_RESULT(no)])
+    ])
+  fi
+
+  dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
+  dnl implementation.
+  if test x"$found_md5" = xno; then
+    if test x"$ssl_success" = xyes; then
+      AC_DEFINE([HAVE_OPENSSL_MD5], 1, [Define to use OpenSSL MD5.])
+      found_md5=yes
+      AC_MSG_NOTICE([using the OpenSSL MD5 implementation])
+    fi
+  fi
+
+  dnl If none of the above worked, use the one we ship with Wget.
+  if test x"$found_md5" = xno; then
+    AC_DEFINE([HAVE_BUILTIN_MD5], 1, [Define to use built-in MD5.])
+    MD5_OBJ="$MD5_OBJ gnu-md5.o"
+    found_md5=yes
+    AC_MSG_NOTICE([using the GNU MD5 implementation])
+  fi
+fi
+AC_DEFINE([HAVE_MD5], 1, [Define if we're compiling support for MD5.])
+AC_SUBST(MD5_OBJ)
+
+dnl **********************************************************************
+dnl Checks for IPv6
+dnl **********************************************************************
+
+dnl
+dnl If --enable-ipv6 is specified, we try to use IPv6 (as long as
+dnl getaddrinfo is also present).  If --disable-ipv6 is specified, we
+dnl don't use IPv6 or getaddrinfo.  Otherwise we detect IPv6 and use
+dnl it where available.
+dnl
+
+AC_ARG_ENABLE(ipv6,
+  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
+  [case "${enable_ipv6}" in
+    no)
+      AC_MSG_NOTICE([disabling IPv6 at user request])
+      dnl Disable IPv6 checking
+      ipv6=no
+      ;;
+    yes)
+      dnl IPv6 explicitly enabled: force its use (abort if unavailable).
+      ipv6=yes
+      force_ipv6=yes
+      ;;
+    auto)
+      dnl Auto-detect IPv6, i.e. check for IPv6, but don't force it.
+      ipv6=yes
+      ;;
+    *)
+      AC_MSG_ERROR([Invalid --enable-ipv6 argument \`$enable_ipv6'])
+      ;;
+    esac
+  ], [
+    dnl If nothing is specified, assume auto-detection.
+    ipv6=yes
+  ]
+)
+
+if test "X$ipv6" = "Xyes"; then
+  AC_CHECK_FUNCS(getaddrinfo, [], [
+    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support getaddrinfo(3)])
+    ipv6=no
+  ])
+fi
+
+if test "X$ipv6" = "Xyes"; then
+  PROTO_INET6([], [
+    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support the PF_INET6 protocol family])
+    ipv6=no
+  ])
+fi
+
+if test "X$ipv6" = "Xyes"; then
+  TYPE_STRUCT_SOCKADDR_IN6([],[
+    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support \`struct sockaddr_in6'])
+    ipv6=no
+  ])
+  if test "X$ipv6" = "Xyes"; then
+    WGET_STRUCT_SOCKADDR_STORAGE
+    MEMBER_SIN6_SCOPE_ID
+  fi
+fi
+
+if test "X$ipv6" = "Xyes"; then
+  AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.])
+  AC_MSG_NOTICE([Enabling support for IPv6.])
+elif test "x$force_ipv6" = "xyes"; then
+  AC_MSG_ERROR([IPv6 support requested but not found; aborting])
+fi
+
+
 dnl
 dnl Set of available languages.
 dnl
 dnl
 dnl Set of available languages.
 dnl
-ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//')`
+ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//' | tr '\012' ' ')`
 
 dnl Originally this used to be static, looking like this:
 dnl     ALL_LINGUAS="cs de hr it ..."
 
 dnl Originally this used to be static, looking like this:
 dnl     ALL_LINGUAS="cs de hr it ..."
@@ -367,23 +574,20 @@ dnl internationalization macros
 WGET_WITH_NLS
 
 dnl
 WGET_WITH_NLS
 
 dnl
-dnl Find makeinfo.  If makeinfo is not found, look for Emacs.  If
-dnl Emacs cannot be found, look for XEmacs.
+dnl Find makeinfo.  We used to provide support for Emacs processing
+dnl Texinfo using `emacs -batch -eval ...' where makeinfo is
+dnl unavailable, but that broke with the addition of makeinfo-specific
+dnl command-line options, such as `-I'.  Now we depend on makeinfo to
+dnl build the Info documentation.
 dnl
 
 dnl
 
-AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
-
-case "${MAKEINFO}" in
-   *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi"  ;;
-   *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer"  ;;
-   *) MAKEINFO="makeinfo \$(srcdir)/wget.texi"            ;;
-esac
+AC_CHECK_PROGS(MAKEINFO, [makeinfo], [true])
 
 dnl
 dnl Find perl and pod2man
 dnl
 
 
 dnl
 dnl Find perl and pod2man
 dnl
 
-AC_PATH_PROGS(PERL, perl5 perl, no)
+AC_PATH_PROGS(PERL, [perl5 perl], no)
 AC_PATH_PROG(POD2MAN, pod2man, no)
 
 if test "x${POD2MAN}" = xno; then
 AC_PATH_PROG(POD2MAN, pod2man, no)
 
 if test "x${POD2MAN}" = xno; then
@@ -396,7 +600,12 @@ AC_SUBST(COMMENT_IF_NO_POD2MAN)
 dnl
 dnl Create output
 dnl
 dnl
 dnl Create output
 dnl
-AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in
-           windows/Makefile],
-[WGET_PROCESS_PO
-test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])
+AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile util/Makefile
+                 po/Makefile.in windows/Makefile])
+AC_CONFIG_HEADERS([src/config.h])
+AH_BOTTOM([
+#include "config-post.h"
+])
+AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
+AC_CONFIG_COMMANDS([default], [WGET_PROCESS_PO])
+AC_OUTPUT