]> sjero.net Git - wget/blobdiff - aclocal.m4
[svn] Remove K&R support.
[wget] / aclocal.m4
index f5c979c18e33cea3a43fc8e2cc23f7b6c5385b5b..ab8988004176a078ac363579759ceb2837bc2d03 100644 (file)
-AC_DEFUN(AM_C_PROTOTYPES,
-[AC_REQUIRE([AM_PROG_CC_STDC])
-AC_BEFORE([$0], [AC_C_INLINE])
-AC_MSG_CHECKING([for function prototypes])
-if test "$am_cv_prog_cc_stdc" != no; then
-  AC_MSG_RESULT(yes)
-  AC_DEFINE(PROTOTYPES)
-  U= ANSI2KNR=
-else
-  AC_MSG_RESULT(no)
-  U=_ ANSI2KNR=./ansi2knr
-  # Ensure some checks needed by ansi2knr itself.
-  AC_HEADER_STDC
-  AC_CHECK_HEADERS(string.h)
-fi
-AC_SUBST(U)dnl
-AC_SUBST(ANSI2KNR)dnl
+dnl
+dnl Check for `struct utimbuf'.
+dnl
+
+AC_DEFUN([WGET_STRUCT_UTIMBUF], [
+  AC_CHECK_TYPES([struct utimbuf], [], [], [
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_UTIME_H
+# include <utime.h>
+#endif
+  ])
 ])
 
 
-# serial 1
+dnl Check for socklen_t.  The third argument of accept, getsockname,
+dnl etc. is int * on some systems, but size_t * on others.  POSIX
+dnl finally standardized on socklen_t, but older systems don't have
+dnl it.  If socklen_t exists, we use it, else if accept() accepts
+dnl size_t *, we use that, else we use int.
 
-# @defmac AC_PROG_CC_STDC
-# @maindex PROG_CC_STDC
-# @ovindex CC
-# If the C compiler in not in ANSI C mode by default, try to add an option
-# to output variable @code{CC} to make it so.  This macro tries various
-# options that select ANSI C on some system or another.  It considers the
-# compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and
-# handles function prototypes correctly.
-#
-# If you use this macro, you should check after calling it whether the C
-# compiler has been set to accept ANSI C; if not, the shell variable
-# @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
-# code in ANSI C, you can make an un-ANSIfied copy of it by using the
-# program @code{ansi2knr}, which comes with Ghostscript.
-# @end defmac
-
-AC_DEFUN(AM_PROG_CC_STDC,
-[AC_REQUIRE([AC_PROG_CC])
-AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
-AC_CACHE_VAL(am_cv_prog_cc_stdc,
-[am_cv_prog_cc_stdc=no
-ac_save_CC="$CC"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX                  -qlanglvl=ansi
-# Ultrix and OSF/1     -std1
-# HP-UX                        -Aa -D_HPUX_SOURCE
-# SVR4                 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  AC_TRY_COMPILE(
-[#if !defined(__STDC__) || __STDC__ != 1
-choke me
+AC_DEFUN([WGET_SOCKLEN_T], [
+  AC_MSG_CHECKING(for socklen_t)
+  AC_COMPILE_IFELSE([
+#include <sys/types.h>
+#include <sys/socket.h>
+socklen_t x;
+  ], [AC_MSG_RESULT(socklen_t)], [
+    AC_COMPILE_IFELSE([
+#include <sys/types.h>
+#include <sys/socket.h>
+int accept (int, struct sockaddr *, size_t *);
+    ], [
+      AC_MSG_RESULT(size_t)
+      AC_DEFINE([socklen_t], [size_t],
+                [Define to int or size_t on systems without socklen_t.])
+    ], [
+      AC_MSG_RESULT(int)
+      AC_DEFINE([socklen_t], [int],
+                [Define to int or size_t on systems without socklen_t.])
+    ])
+  ])
+])
+
+dnl Check whether fnmatch.h can be included.  This doesn't use
+dnl AC_FUNC_FNMATCH because Wget is already careful to only use
+dnl fnmatch on certain OS'es.  However, fnmatch.h is sometimes broken
+dnl even on those because Apache installs its own fnmatch.h to
+dnl /usr/local/include (!), which GCC uses before /usr/include.
+
+AC_DEFUN([WGET_FNMATCH], [
+  AC_MSG_CHECKING([for working fnmatch.h])
+  AC_COMPILE_IFELSE([#include <fnmatch.h>
+                    ], [
+    AC_MSG_RESULT(yes)
+    AC_DEFINE([HAVE_WORKING_FNMATCH_H], 1,
+              [Define if fnmatch.h can be included.])
+  ], [
+    AC_MSG_RESULT(no)
+  ])
+])
+
+dnl Check for nanosleep.  For nanosleep to work on Solaris, we must
+dnl link with -lrt (recently) or with -lposix4 (older releases).
+
+AC_DEFUN([WGET_NANOSLEEP], [
+  AC_CHECK_FUNCS(nanosleep, [], [
+    AC_CHECK_LIB(rt, nanosleep, [
+      AC_DEFINE([HAVE_NANOSLEEP], 1,
+                [Define if you have the nanosleep function.])
+      LIBS="-lrt $LIBS"
+    ], [
+      AC_CHECK_LIB(posix4, nanosleep, [
+       AC_DEFINE([HAVE_NANOSLEEP], 1,
+                 [Define if you have the nanosleep function.])
+       LIBS="-lposix4 $LIBS"
+      ])
+    ])
+  ])
+])
+
+AC_DEFUN([WGET_POSIX_CLOCK], [
+  AC_CHECK_FUNCS(clock_gettime, [], [
+    AC_CHECK_LIB(rt, clock_gettime)
+  ])
+])
+
+dnl Check whether we need to link with -lnsl and -lsocket, as is the
+dnl case on e.g. Solaris.
+
+AC_DEFUN([WGET_NSL_SOCKET], [
+  dnl On Solaris, -lnsl is needed to use gethostbyname.  But checking
+  dnl for gethostbyname is not enough because on "NCR MP-RAS 3.0"
+  dnl gethostbyname is in libc, but -lnsl is still needed to use
+  dnl -lsocket, as well as for functions such as inet_ntoa.  We look
+  dnl 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 ************************************************************
+dnl START OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
+dnl ************************************************************
+
+AC_DEFUN([TYPE_STRUCT_SOCKADDR_IN6],[
+  wget_have_sockaddr_in6=
+  AC_CHECK_TYPES([struct sockaddr_in6],[
+    wget_have_sockaddr_in6=yes
+  ],[
+    wget_have_sockaddr_in6=no
+  ],[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+  ])
+
+  if test "X$wget_have_sockaddr_in6" = "Xyes"; then :
+    $1
+  else :
+    $2
+  fi
+])
+
+
+AC_DEFUN([MEMBER_SIN6_SCOPE_ID],[
+  AC_REQUIRE([TYPE_STRUCT_SOCKADDR_IN6])
+  
+  wget_member_sin6_scope_id=
+  if test "X$wget_have_sockaddr_in6" = "Xyes"; then
+    AC_CHECK_MEMBER([struct sockaddr_in6.sin6_scope_id],[
+      wget_member_sin6_scope_id=yes
+    ],[
+      wget_member_sin6_scope_id=no
+    ],[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+    ])
+  fi
+
+  if test "X$wget_member_sin6_scope_id" = "Xyes"; then
+    AC_DEFINE([HAVE_SOCKADDR_IN6_SCOPE_ID], 1,
+      [Define if struct sockaddr_in6 has the sin6_scope_id member])
+    $1
+  else :
+    $2
+  fi
+])
+
+
+AC_DEFUN([PROTO_INET6],[
+  AC_CACHE_CHECK([for INET6 protocol support], [wget_cv_proto_inet6],[
+    AC_TRY_CPP([
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#ifndef PF_INET6
+#error Missing PF_INET6
 #endif
-/* DYNIX/ptx V4.1.3 can't compile sys/stat.h with -Xc -D__EXTENSIONS__. */
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/stat.h>
+#ifndef AF_INET6
+#error Mlssing AF_INET6
 #endif
-], [
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};],
-[am_cv_prog_cc_stdc="$ac_arg"; break])
-done
-CC="$ac_save_CC"
-])
-AC_MSG_RESULT($am_cv_prog_cc_stdc)
-case "x$am_cv_prog_cc_stdc" in
-  x|xno) ;;
-  *) CC="$CC $am_cv_prog_cc_stdc" ;;
-esac
+    ],[
+      wget_cv_proto_inet6=yes
+    ],[
+      wget_cv_proto_inet6=no
+    ])
+  ])
+
+  if test "X$wget_cv_proto_inet6" = "Xyes"; then :
+    $1
+  else :
+    $2
+  fi
 ])
 
-AC_DEFUN(WGET_STRUCT_UTIMBUF,
-[AC_MSG_CHECKING(for struct utimbuf)
-if test x"$ac_cv_header_utime_h" = xyes; then
-  AC_EGREP_CPP([struct[        ]+utimbuf],
-    [#include <utime.h>],
-    [AC_DEFINE(HAVE_STRUCT_UTIMBUF)
-      AC_MSG_RESULT(yes)],
-    AC_MSG_RESULT(no))
-else
-  AC_MSG_RESULT(no)
-fi])
 
+AC_DEFUN([WGET_STRUCT_SOCKADDR_STORAGE],[
+  AC_CHECK_TYPES([struct sockaddr_storage],[], [], [
+#include <sys/types.h>
+#include <sys/socket.h>
+  ])
+])
+
+dnl ************************************************************
+dnl END OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
+dnl ************************************************************
 \f
 # This code originates from Ulrich Drepper's AM_WITH_NLS.
 
-AC_DEFUN(WGET_WITH_NLS,
+AC_DEFUN([WGET_WITH_NLS],
   [AC_MSG_CHECKING([whether NLS is requested])
     dnl Default is enabled NLS
     AC_ARG_ENABLE(nls,
@@ -103,7 +214,21 @@ AC_DEFUN(WGET_WITH_NLS,
     dnl last moment.
 
     if test x"$HAVE_NLS" = xyes; then
-      AC_MSG_RESULT("language catalogs: $ALL_LINGUAS")
+      dnl If LINGUAS is specified, use only those languages.  In fact,
+      dnl compute an intersection of languages in LINGUAS and
+      dnl ALL_LINGUAS, and use that.
+      if test x"$LINGUAS" != x; then
+        new_linguas=
+        for lang1 in $ALL_LINGUAS; do
+          for lang2 in $LINGUAS; do
+            if test "$lang1" = "$lang2"; then
+              new_linguas="$new_linguas $lang1"
+            fi
+          done
+        done
+        ALL_LINGUAS=$new_linguas
+      fi
+      AC_MSG_NOTICE([language catalogs: $ALL_LINGUAS])
       AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
        [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
       AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
@@ -129,21 +254,24 @@ AC_DEFUN(WGET_WITH_NLS,
 
       AC_CHECK_HEADERS(locale.h libintl.h)
 
-      AC_CHECK_FUNCS(gettext, [], [
-       AC_CHECK_LIB(intl, gettext, [
-          dnl gettext is in libintl; announce the fact manually.
-          LIBS="-lintl $LIBS"
-         AC_DEFINE(HAVE_GETTEXT)
-        ], [
-         AC_MSG_RESULT(
-           [gettext not found; disabling NLS])
+      dnl Prefer gettext found in -lintl to the one in libc.
+      dnl Otherwise it can happen that we include libintl.h from
+      dnl /usr/local/lib, but fail to specify -lintl, which results in
+      dnl link or run-time failures.  (Symptom: libintl_bindtextdomain
+      dnl not found at link-time.)
+
+      AC_CHECK_LIB(intl, gettext, [
+        dnl gettext is in libintl; announce the fact manually.
+        LIBS="-lintl $LIBS"
+       AC_DEFINE([HAVE_GETTEXT], 1,
+                  [Define if you have the gettext function.])
+      ], [
+        AC_CHECK_FUNCS(gettext, [], [
+          AC_MSG_RESULT([gettext not found; disabling NLS])
           HAVE_NLS=no
         ])
       ])
 
-      dnl These rules are solely for the distribution goal.  While doing this
-      dnl we only have to keep exactly one list of the available catalogs
-      dnl in configure.in.
       for lang in $ALL_LINGUAS; do
        GMOFILES="$GMOFILES $lang.gmo"
        POFILES="$POFILES $lang.po"
@@ -168,7 +296,7 @@ AC_DEFUN(WGET_WITH_NLS,
     USE_NLS=$HAVE_NLS
     AC_SUBST(USE_NLS)
     if test "x$HAVE_NLS" = xyes; then
-      AC_DEFINE(HAVE_NLS)
+      AC_DEFINE([HAVE_NLS], 1, [Define this if you want the NLS support.])
     fi
   ])
 
@@ -179,7 +307,7 @@ dnl This is not strictly an Autoconf macro, because it is run from
 dnl within `config.status' rather than from within configure.  This
 dnl is why special rules must be applied for it.
 AC_DEFUN(WGET_PROCESS_PO,
-  [srcdir=$ac_given_srcdir # Advanced autoconf hackery
+  [
    dnl I wonder what the following several lines do...
    if test "x$srcdir" != "x."; then
      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
@@ -249,3 +377,7 @@ else
 fi
 AC_SUBST($1)dnl
 ])
+
+# Include libtool code.
+
+builtin(include, libtool.m4)dnl