]> sjero.net Git - wget/blob - aclocal.m4
[svn] Check for struct sockaddr_storage.
[wget] / aclocal.m4
1 dnl
2 dnl Check for `struct utimbuf'.
3 dnl
4
5 AC_DEFUN([WGET_STRUCT_UTIMBUF], [
6   AC_CHECK_TYPES([struct utimbuf], [], [], [
7 #include <stdio.h>
8 #if HAVE_SYS_TYPES_H
9 # include <sys/types.h>
10 #endif
11 #if HAVE_UTIME_H
12 # include <utime.h>
13 #endif
14   ])
15 ])
16
17
18 dnl Check for socklen_t.  The third argument of accept, getsockname,
19 dnl etc. is int * on some systems, but size_t * on others.  POSIX
20 dnl finally standardized on socklen_t, but older systems don't have
21 dnl it.  If socklen_t exists, we use it, else if accept() accepts
22 dnl size_t *, we use that, else we use int.
23
24 AC_DEFUN([WGET_SOCKLEN_T], [
25   AC_MSG_CHECKING(for socklen_t)
26   AC_COMPILE_IFELSE([
27 #include <sys/types.h>
28 #include <sys/socket.h>
29 socklen_t x;
30   ], [AC_MSG_RESULT(socklen_t)], [
31     AC_COMPILE_IFELSE([
32 #include <sys/types.h>
33 #include <sys/socket.h>
34 int accept (int, struct sockaddr *, size_t *);
35     ], [
36       AC_MSG_RESULT(size_t)
37       AC_DEFINE([socklen_t], [size_t],
38                 [Define to int or size_t on systems without socklen_t.])
39     ], [
40       AC_MSG_RESULT(int)
41       AC_DEFINE([socklen_t], [int],
42                 [Define to int or size_t on systems without socklen_t.])
43     ])
44   ])
45 ])
46
47 dnl Check whether fnmatch.h can be included.  This doesn't use
48 dnl AC_FUNC_FNMATCH because Wget is already careful to only use
49 dnl fnmatch on certain OS'es.  However, fnmatch.h is sometimes broken
50 dnl even on those because Apache installs its own fnmatch.h to
51 dnl /usr/local/include (!), which GCC uses before /usr/include.
52
53 AC_DEFUN([WGET_FNMATCH], [
54   AC_MSG_CHECKING([for working fnmatch.h])
55   AC_COMPILE_IFELSE([#include <fnmatch.h>
56                     ], [
57     AC_MSG_RESULT(yes)
58     AC_DEFINE([HAVE_WORKING_FNMATCH_H], 1,
59               [Define if fnmatch.h can be included.])
60   ], [
61     AC_MSG_RESULT(no)
62   ])
63 ])
64
65 dnl Check for nanosleep.  For nanosleep to work on Solaris, we must
66 dnl link with -lt (recently) or with -lposix (older releases).
67
68 AC_DEFUN([WGET_NANOSLEEP], [
69   AC_CHECK_FUNCS(nanosleep, [], [
70     AC_CHECK_LIB(rt, nanosleep, [
71       AC_DEFINE([HAVE_NANOSLEEP], 1,
72                 [Define if you have the nanosleep function.])
73       LIBS="-lrt $LIBS"
74     ], [
75       AC_CHECK_LIB(posix4, nanosleep, [
76         AC_DEFINE([HAVE_NANOSLEEP], 1,
77                   [Define if you have the nanosleep function.])
78         LIBS="-lposix4 $LIBS"
79       ])
80     ])
81   ])
82 ])
83
84 dnl Check whether we need to link with -lnsl and -lsocket, as is the
85 dnl case on e.g. Solaris.
86
87 AC_DEFUN([WGET_NSL_SOCKET], [
88   dnl On Solaris, -lnsl is needed to use gethostbyname.  But checking
89   dnl for gethostbyname is not enough because on "NCR MP-RAS 3.0"
90   dnl gethostbyname is in libc, but -lnsl is still needed to use
91   dnl -lsocket, as well as for functions such as inet_ntoa.  We look
92   dnl for such known offenders and if one of them is not found, we
93   dnl check if -lnsl is needed.
94   wget_check_in_nsl=NONE
95   AC_CHECK_FUNCS(gethostbyname, [], [
96     wget_check_in_nsl=gethostbyname
97   ])
98   AC_CHECK_FUNCS(inet_ntoa, [], [
99     wget_check_in_nsl=inet_ntoa
100   ])
101   if test $wget_check_in_nsl != NONE; then
102     AC_CHECK_LIB(nsl, $wget_check_in_nsl)
103   fi
104   AC_CHECK_LIB(socket, socket)
105 ])
106
107
108 # serial 1
109
110 # @defmac AC_PROG_CC_STDC
111 # @maindex PROG_CC_STDC
112 # @ovindex CC
113 # If the C compiler in not in ANSI C mode by default, try to add an option
114 # to output variable @code{CC} to make it so.  This macro tries various
115 # options that select ANSI C on some system or another.  It considers the
116 # compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and
117 # handles function prototypes correctly.
118 #
119 # If you use this macro, you should check after calling it whether the C
120 # compiler has been set to accept ANSI C; if not, the shell variable
121 # @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
122 # code in ANSI C, you can make an un-ANSIfied copy of it by using the
123 # program @code{ansi2knr}, which comes with Ghostscript.
124 # @end defmac
125
126 AC_DEFUN(AM_PROG_CC_STDC,
127 [AC_REQUIRE([AC_PROG_CC])
128 AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C])
129 AC_CACHE_VAL(am_cv_prog_cc_stdc,
130 [am_cv_prog_cc_stdc=no
131 ac_save_CC="$CC"
132 # Don't try gcc -ansi; that turns off useful extensions and
133 # breaks some systems' header files.
134 # AIX                   -qlanglvl=ansi
135 # Ultrix and OSF/1      -std1
136 # HP-UX                 -Aa -D_HPUX_SOURCE
137 for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE"
138 do
139   CC="$ac_save_CC $ac_arg"
140   AC_TRY_COMPILE(
141 [#if !defined(__STDC__)
142 choke me
143 #endif
144 /* DYNIX/ptx V4.1.3 can't compile sys/stat.h with -Xc -D__EXTENSIONS__. */
145 #ifdef _SEQUENT_
146 # include <sys/types.h>
147 # include <sys/stat.h>
148 #endif
149 ], [
150 int test (int i, double x);
151 struct s1 {int (*f) (int a);};
152 struct s2 {int (*f) (double a);};],
153 [am_cv_prog_cc_stdc="$ac_arg"; break])
154 done
155 CC="$ac_save_CC"
156 ])
157 AC_MSG_RESULT($am_cv_prog_cc_stdc)
158 case "x$am_cv_prog_cc_stdc" in
159   x|xno) ;;
160   *) CC="$CC $am_cv_prog_cc_stdc" ;;
161 esac
162 ])
163
164
165 dnl ************************************************************
166 dnl START OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
167 dnl ************************************************************
168
169 AC_DEFUN([TYPE_STRUCT_SOCKADDR_IN6],[
170   wget_have_sockaddr_in6=
171   AC_CHECK_TYPES([struct sockaddr_in6],[
172     wget_have_sockaddr_in6=yes
173   ],[
174     wget_have_sockaddr_in6=no
175   ],[
176 #include <sys/types.h>
177 #include <sys/socket.h>
178 #include <netinet/in.h>
179   ])
180
181   if test "X$wget_have_sockaddr_in6" = "Xyes"; then :
182     $1
183   else :
184     $2
185   fi
186 ])
187
188
189 AC_DEFUN([MEMBER_SIN6_SCOPE_ID],[
190   AC_REQUIRE([TYPE_STRUCT_SOCKADDR_IN6])
191   
192   wget_member_sin6_scope_id=
193   if test "X$wget_have_sockaddr_in6" = "Xyes"; then
194     AC_CHECK_MEMBER([struct sockaddr_in6.sin6_scope_id],[
195       wget_member_sin6_scope_id=yes
196     ],[
197       wget_member_sin6_scope_id=no
198     ],[
199 #include <sys/types.h>
200 #include <sys/socket.h>
201 #include <netinet/in.h>
202     ])
203   fi
204
205   if test "X$wget_member_sin6_scope_id" = "Xyes"; then
206     AC_DEFINE([HAVE_SOCKADDR_IN6_SCOPE_ID], 1,
207       [Define if struct sockaddr_in6 has the sin6_scope_id member])
208     $1
209   else :
210     $2
211   fi
212 ])
213
214
215 AC_DEFUN([PROTO_INET6],[
216   AC_CACHE_CHECK([for INET6 protocol support], [wget_cv_proto_inet6],[
217     AC_TRY_CPP([
218 #include <sys/types.h>
219 #include <sys/socket.h>
220
221 #ifndef PF_INET6
222 #error Missing PF_INET6
223 #endif
224 #ifndef AF_INET6
225 #error Mlssing AF_INET6
226 #endif
227     ],[
228       wget_cv_proto_inet6=yes
229     ],[
230       wget_cv_proto_inet6=no
231     ])
232   ])
233
234   if test "X$wget_cv_proto_inet6" = "Xyes"; then :
235     $1
236   else :
237     $2
238   fi
239 ])
240
241
242 AC_DEFUN([GETADDRINFO_AI_ADDRCONFIG],[
243   AC_CACHE_CHECK([if getaddrinfo supports AI_ADDRCONFIG],
244     [wget_cv_gai_ai_addrconfig],[
245     AC_TRY_CPP([
246 #include <netdb.h>
247
248 #ifndef AI_ADDRCONFIG
249 #error Missing AI_ADDRCONFIG
250 #endif
251     ],[
252       wget_cv_gai_ai_addrconfig=yes
253     ],[
254       wget_cv_gai_ai_addrconfig=no
255     ])
256   ])
257
258   if test "X$wget_cv_gai_ai_addrconfig" = "Xyes"; then :
259     $1
260   else :
261     $2
262   fi
263 ])
264
265
266 AC_DEFUN([GETADDRINFO_AI_ALL],[
267   AC_CACHE_CHECK([if getaddrinfo supports AI_ALL],[wget_cv_gai_ai_all],[
268     AC_TRY_CPP([
269 #include <netdb.h>
270
271 #ifndef AI_ALL
272 #error Missing AI_ALL
273 #endif
274     ],[
275       wget_cv_gai_ai_all=yes
276     ],[
277       wget_cv_gai_ai_all=no
278     ])
279   ])
280
281   if test "X$wget_cv_gai_ai_all" = "Xyes"; then :
282     $1
283   else :
284     $2
285   fi
286 ])
287
288
289 AC_DEFUN([GETADDRINFO_AI_V4MAPPED],[
290   AC_CACHE_CHECK([if getaddrinfo supports AI_V4MAPPED],[wget_cv_gai_ai_v4mapped],[
291     AC_TRY_CPP([
292 #include <netdb.h>
293
294 #ifndef AI_V4MAPPED
295 #error Missing AI_V4MAPPED
296 #endif
297     ],[
298       wget_cv_gai_ai_v4mapped=yes
299     ],[
300       wget_cv_gai_ai_v4mapped=no
301     ])
302   ])
303
304   if test "X$wget_cv_gai_ai_v4mapped" = "Xyes"; then :
305     $1
306   else :
307     $2
308   fi
309 ])
310
311 AC_DEFUN([WGET_STRUCT_SOCKADDR_STORAGE],[
312   AC_CHECK_TYPES([struct sockaddr_storage],[], [], [
313 #include <sys/types.h>
314 #include <sys/socket.h>
315   ])
316 ])
317
318 dnl ************************************************************
319 dnl END OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
320 dnl ************************************************************
321 \f
322 # This code originates from Ulrich Drepper's AM_WITH_NLS.
323
324 AC_DEFUN([WGET_WITH_NLS],
325   [AC_MSG_CHECKING([whether NLS is requested])
326     dnl Default is enabled NLS
327     AC_ARG_ENABLE(nls,
328       [  --disable-nls           do not use Native Language Support],
329       HAVE_NLS=$enableval, HAVE_NLS=yes)
330     AC_MSG_RESULT($HAVE_NLS)
331
332     dnl If something goes wrong, we may still decide not to use NLS.
333     dnl For this reason, defer AC_SUBST'ing HAVE_NLS until the very
334     dnl last moment.
335
336     if test x"$HAVE_NLS" = xyes; then
337       dnl If LINGUAS is specified, use only those languages.  In fact,
338       dnl compute an intersection of languages in LINGUAS and
339       dnl ALL_LINGUAS, and use that.
340       if test x"$LINGUAS" != x; then
341         new_linguas=
342         for lang1 in $ALL_LINGUAS; do
343           for lang2 in $LINGUAS; do
344             if test "$lang1" = "$lang2"; then
345               new_linguas="$new_linguas $lang1"
346             fi
347           done
348         done
349         ALL_LINGUAS=$new_linguas
350       fi
351       AC_MSG_NOTICE([language catalogs: $ALL_LINGUAS])
352       AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
353         [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
354       AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
355           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
356       AC_SUBST(MSGFMT)
357       AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
358       CATOBJEXT=.gmo
359       INSTOBJEXT=.mo
360       DATADIRNAME=share
361
362       dnl Test whether we really found GNU xgettext.
363       if test "$XGETTEXT" != ":"; then
364         dnl If it is no GNU xgettext we define it as : so that the
365         dnl Makefiles still can work.
366         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
367           : ;
368         else
369           AC_MSG_RESULT(
370             [found xgettext programs is not GNU xgettext; ignore it])
371           XGETTEXT=":"
372         fi
373       fi
374
375       AC_CHECK_HEADERS(locale.h libintl.h)
376
377       dnl Prefer gettext found in -lintl to the one in libc.
378       dnl Otherwise it can happen that we include libintl.h from
379       dnl /usr/local/lib, but fail to specify -lintl, which results in
380       dnl link or run-time failures.  (Symptom: libintl_bindtextdomain
381       dnl not found at link-time.)
382
383       AC_CHECK_LIB(intl, gettext, [
384         dnl gettext is in libintl; announce the fact manually.
385         LIBS="-lintl $LIBS"
386         AC_DEFINE([HAVE_GETTEXT], 1,
387                   [Define if you have the gettext function.])
388       ], [
389         AC_CHECK_FUNCS(gettext, [], [
390           AC_MSG_RESULT([gettext not found; disabling NLS])
391           HAVE_NLS=no
392         ])
393       ])
394
395       for lang in $ALL_LINGUAS; do
396         GMOFILES="$GMOFILES $lang.gmo"
397         POFILES="$POFILES $lang.po"
398       done
399       dnl Construct list of names of catalog files to be constructed.
400       for lang in $ALL_LINGUAS; do
401         CATALOGS="$CATALOGS ${lang}${CATOBJEXT}"
402       done
403
404       dnl Make all variables we use known to autoconf.
405       AC_SUBST(CATALOGS)
406       AC_SUBST(CATOBJEXT)
407       AC_SUBST(DATADIRNAME)
408       AC_SUBST(GMOFILES)
409       AC_SUBST(INSTOBJEXT)
410       AC_SUBST(INTLLIBS)
411       AC_SUBST(POFILES)
412     fi
413     AC_SUBST(HAVE_NLS)
414     dnl Some independently maintained files, such as po/Makefile.in,
415     dnl use `USE_NLS', so support it.
416     USE_NLS=$HAVE_NLS
417     AC_SUBST(USE_NLS)
418     if test "x$HAVE_NLS" = xyes; then
419       AC_DEFINE([HAVE_NLS], 1, [Define this if you want the NLS support.])
420     fi
421   ])
422
423 dnl Generate list of files to be processed by xgettext which will
424 dnl be included in po/Makefile.
425 dnl
426 dnl This is not strictly an Autoconf macro, because it is run from
427 dnl within `config.status' rather than from within configure.  This
428 dnl is why special rules must be applied for it.
429 AC_DEFUN(WGET_PROCESS_PO,
430   [
431    dnl I wonder what the following several lines do...
432    if test "x$srcdir" != "x."; then
433      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
434        posrcprefix="$srcdir/"
435      else
436        posrcprefix="../$srcdir/"
437      fi
438    else
439      posrcprefix="../"
440    fi
441    rm -f po/POTFILES
442    dnl Use `echo' rather than AC_MSG_RESULT, because this is run from
443    dnl `config.status'.
444    echo "generating po/POTFILES from $srcdir/po/POTFILES.in"
445    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\,"  \
446        -e "\$s/\(.*\) \\\\/\1/" \
447         < $srcdir/po/POTFILES.in > po/POTFILES
448    echo "creating po/Makefile"
449    sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
450   ])
451
452 # Search path for a program which passes the given test.
453 # Ulrich Drepper <drepper@cygnus.com>, 1996.
454 #
455 # This file may be copied and used freely without restrictions.  It
456 # can be used in projects which are not available under the GNU Public
457 # License but which still want to provide support for the GNU gettext
458 # functionality.  Please note that the actual code is *not* freely
459 # available.
460
461 # serial 1
462
463 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
464 dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
465 AC_DEFUN(AM_PATH_PROG_WITH_TEST,
466 [# Extract the first word of "$2", so it can be a program name with args.
467 set dummy $2; ac_word=[$]2
468 AC_MSG_CHECKING([for $ac_word])
469 AC_CACHE_VAL(ac_cv_path_$1,
470 [case "[$]$1" in
471   /*)
472   ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
473   ;;
474   *)
475   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
476   for ac_dir in ifelse([$5], , $PATH, [$5]); do
477     test -z "$ac_dir" && ac_dir=.
478     if test -f $ac_dir/$ac_word; then
479       if [$3]; then
480         ac_cv_path_$1="$ac_dir/$ac_word"
481         break
482       fi
483     fi
484   done
485   IFS="$ac_save_ifs"
486 dnl If no 4th arg is given, leave the cache variable unset,
487 dnl so AC_PATH_PROGS will keep looking.
488 ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
489 ])dnl
490   ;;
491 esac])dnl
492 $1="$ac_cv_path_$1"
493 if test -n "[$]$1"; then
494   AC_MSG_RESULT([$]$1)
495 else
496   AC_MSG_RESULT(no)
497 fi
498 AC_SUBST($1)dnl
499 ])
500
501 # Include libtool code.
502
503 builtin(include, libtool.m4)dnl