]> 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 2335ab88cfc1df47ed3ee18f4b9948fc16f00565..09e9bd5f761992c912d1b18ab4a2bf5d2b2a953c 100644 (file)
@@ -58,16 +58,20 @@ AC_ARG_WITH(ssl,
 
 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], 1,
+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],
-USE_DIGEST=$enableval, USE_DIGEST=yes)
-test x"${USE_DIGEST}" = xyes && AC_DEFINE([USE_DIGEST], 1,
+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],
 ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes)
@@ -76,12 +80,12 @@ test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1,
 
 wget_need_md5=no
 
-case "${USE_OPIE}${USE_DIGEST}" in
+case "${ENABLE_OPIE}${ENABLE_DIGEST}" in
 *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)
 
@@ -105,7 +109,6 @@ test -z "$CC" && cc_specified=yes
 
 AC_PROG_CC
 AC_AIX
-AM_PROG_CC_STDC
 
 dnl Turn on optimization by default.  Specifically:
 dnl
@@ -151,15 +154,6 @@ AC_C_VOLATILE
 AC_C_BIGENDIAN
 AC_C_PROTOTYPES
 
-if test x"$am_cv_prog_cc_stdc" != xno; then
-  true
-  AC_SUBST(U, [])
-  AC_SUBST(ANSI2KNR, [])
-else
-  AC_SUBST(U, [_])
-  AC_SUBST(ANSI2KNR, [./ansi2knr])
-fi
-
 dnl
 dnl Checks for header files that might be missing.
 dnl
@@ -170,7 +164,7 @@ 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 stdarg.h limits.h unistd.h sys/time.h)
+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
@@ -183,13 +177,20 @@ AC_CHECK_SIZEOF(int)
 AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(long long)
 
+dnl
+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_TYPE_SIGNAL
 AC_CHECK_TYPES(sig_atomic_t, [], [], [
 #include <stdio.h>
 #include <sys/types.h>
@@ -206,9 +207,11 @@ dnl Checks for library functions.
 dnl
 AC_FUNC_ALLOCA
 AC_FUNC_MMAP
+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 sigblock sigsetjmp signal symlink access isatty)
+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.
@@ -217,13 +220,14 @@ 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, [], [
-  GETOPT_OBJ='getopt$o'
+  GETOPT_OBJ='getopt.o'
 ])
 AC_SUBST(GETOPT_OBJ)
 
@@ -313,10 +317,18 @@ if test x"$with_ssl" != x"no"; then
     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/rsa.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
@@ -382,7 +394,7 @@ main(){return 0;}
     AC_DEFINE([HAVE_SSL], 1,
               [Define if SSL support should be compiled in.])
     AC_SUBST(SSL_INCLUDES)
-    SSL_OBJ='gen_sslfunc$o'
+    SSL_OBJ='openssl.o'
     AC_SUBST(SSL_OBJ)
   else
     LDFLAGS=$wget_save_LDFLAGS
@@ -404,6 +416,26 @@ main(){return 0;}
   CPPFLAGS=$wget_save_CPPFLAGS
 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
@@ -413,7 +445,7 @@ 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'
+  MD5_OBJ='gen-md5.o'
   found_md5=no
 
   dnl Check for the system MD5 library on Solaris.  We don't check for
@@ -424,7 +456,7 @@ 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([whether md5.h can be included])
+      AC_MSG_CHECKING([for working md5.h])
       AC_COMPILE_IFELSE([#include <md5.h>
                         ], [
         AC_MSG_RESULT(yes)
@@ -449,7 +481,7 @@ then
   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"
+    MD5_OBJ="$MD5_OBJ gnu-md5.o"
     found_md5=yes
     AC_MSG_NOTICE([using the GNU MD5 implementation])
   fi
@@ -464,73 +496,67 @@ 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.
+dnl don't use IPv6 or getaddrinfo.  Otherwise we detect IPv6 and use
+dnl it where available.
 dnl
 
-ipv6=
-check_for_ipv6=no
 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])
-    ipv6=no
-    ;;
-  *)
+    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
-    ;;
-  esac],
-  dnl If unspecified, check for IPv6 and use it where available.
-  [check_for_ipv6=yes]
+  ]
 )
 
-if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
-  AC_CHECK_FUNCS(getaddrinfo,[
-    GETADDRINFO_AI_ADDRCONFIG(
-      AC_DEFINE(
-        [HAVE_GETADDRINFO_AI_ADDRCONFIG], 1, 
-        [Define if the system headers support the AI_ADDRCONFIG flag.]
-      )
-    )
-    GETADDRINFO_AI_V4MAPPED(
-      AC_DEFINE(
-        [HAVE_GETADDRINFO_AI_V4MAPPED], 1, 
-        [Define if the system headers support the AI_V4MAPPED flag.]
-      )
-    )
-    GETADDRINFO_AI_ALL(
-      AC_DEFINE(
-        [HAVE_GETADDRINFO_AI_ALL], 1, 
-        [Define if the system headers support the AI_ALL flag.]
-      )
-    )
-  ],[
+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" || test "X$check_for_ipv6" = "Xyes"; then
-  PROTO_INET6(,[
+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" || test "X$check_for_ipv6" = "Xyes"; then
-  TYPE_STRUCT_SOCKADDR_IN6([
-    ipv6=yes
-  ],[
-    AC_MSG_NOTICE([Disabling IPv6 support: your system does not support 'struct sockaddr_in6'])
+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
 
 
@@ -555,13 +581,13 @@ dnl command-line options, such as `-I'.  Now we depend on makeinfo to
 dnl build the Info documentation.
 dnl
 
-AC_CHECK_PROGS(MAKEINFO, makeinfo)
+AC_CHECK_PROGS(MAKEINFO, [makeinfo], [true])
 
 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