]> sjero.net Git - wget/blob - aclocal.m4
[svn] Added Nicolas Schodet.
[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([WGET_STRUCT_SOCKADDR_STORAGE],[
267   AC_CHECK_TYPES([struct sockaddr_storage],[], [], [
268 #include <sys/types.h>
269 #include <sys/socket.h>
270   ])
271 ])
272
273 dnl ************************************************************
274 dnl END OF IPv6 AUTOCONFIGURATION SUPPORT MACROS
275 dnl ************************************************************
276 \f
277 # This code originates from Ulrich Drepper's AM_WITH_NLS.
278
279 AC_DEFUN([WGET_WITH_NLS],
280   [AC_MSG_CHECKING([whether NLS is requested])
281     dnl Default is enabled NLS
282     AC_ARG_ENABLE(nls,
283       [  --disable-nls           do not use Native Language Support],
284       HAVE_NLS=$enableval, HAVE_NLS=yes)
285     AC_MSG_RESULT($HAVE_NLS)
286
287     dnl If something goes wrong, we may still decide not to use NLS.
288     dnl For this reason, defer AC_SUBST'ing HAVE_NLS until the very
289     dnl last moment.
290
291     if test x"$HAVE_NLS" = xyes; then
292       dnl If LINGUAS is specified, use only those languages.  In fact,
293       dnl compute an intersection of languages in LINGUAS and
294       dnl ALL_LINGUAS, and use that.
295       if test x"$LINGUAS" != x; then
296         new_linguas=
297         for lang1 in $ALL_LINGUAS; do
298           for lang2 in $LINGUAS; do
299             if test "$lang1" = "$lang2"; then
300               new_linguas="$new_linguas $lang1"
301             fi
302           done
303         done
304         ALL_LINGUAS=$new_linguas
305       fi
306       AC_MSG_NOTICE([language catalogs: $ALL_LINGUAS])
307       AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
308         [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
309       AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
310           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
311       AC_SUBST(MSGFMT)
312       AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
313       CATOBJEXT=.gmo
314       INSTOBJEXT=.mo
315       DATADIRNAME=share
316
317       dnl Test whether we really found GNU xgettext.
318       if test "$XGETTEXT" != ":"; then
319         dnl If it is no GNU xgettext we define it as : so that the
320         dnl Makefiles still can work.
321         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
322           : ;
323         else
324           AC_MSG_RESULT(
325             [found xgettext programs is not GNU xgettext; ignore it])
326           XGETTEXT=":"
327         fi
328       fi
329
330       AC_CHECK_HEADERS(locale.h libintl.h)
331
332       dnl Prefer gettext found in -lintl to the one in libc.
333       dnl Otherwise it can happen that we include libintl.h from
334       dnl /usr/local/lib, but fail to specify -lintl, which results in
335       dnl link or run-time failures.  (Symptom: libintl_bindtextdomain
336       dnl not found at link-time.)
337
338       AC_CHECK_LIB(intl, gettext, [
339         dnl gettext is in libintl; announce the fact manually.
340         LIBS="-lintl $LIBS"
341         AC_DEFINE([HAVE_GETTEXT], 1,
342                   [Define if you have the gettext function.])
343       ], [
344         AC_CHECK_FUNCS(gettext, [], [
345           AC_MSG_RESULT([gettext not found; disabling NLS])
346           HAVE_NLS=no
347         ])
348       ])
349
350       for lang in $ALL_LINGUAS; do
351         GMOFILES="$GMOFILES $lang.gmo"
352         POFILES="$POFILES $lang.po"
353       done
354       dnl Construct list of names of catalog files to be constructed.
355       for lang in $ALL_LINGUAS; do
356         CATALOGS="$CATALOGS ${lang}${CATOBJEXT}"
357       done
358
359       dnl Make all variables we use known to autoconf.
360       AC_SUBST(CATALOGS)
361       AC_SUBST(CATOBJEXT)
362       AC_SUBST(DATADIRNAME)
363       AC_SUBST(GMOFILES)
364       AC_SUBST(INSTOBJEXT)
365       AC_SUBST(INTLLIBS)
366       AC_SUBST(POFILES)
367     fi
368     AC_SUBST(HAVE_NLS)
369     dnl Some independently maintained files, such as po/Makefile.in,
370     dnl use `USE_NLS', so support it.
371     USE_NLS=$HAVE_NLS
372     AC_SUBST(USE_NLS)
373     if test "x$HAVE_NLS" = xyes; then
374       AC_DEFINE([HAVE_NLS], 1, [Define this if you want the NLS support.])
375     fi
376   ])
377
378 dnl Generate list of files to be processed by xgettext which will
379 dnl be included in po/Makefile.
380 dnl
381 dnl This is not strictly an Autoconf macro, because it is run from
382 dnl within `config.status' rather than from within configure.  This
383 dnl is why special rules must be applied for it.
384 AC_DEFUN(WGET_PROCESS_PO,
385   [
386    dnl I wonder what the following several lines do...
387    if test "x$srcdir" != "x."; then
388      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
389        posrcprefix="$srcdir/"
390      else
391        posrcprefix="../$srcdir/"
392      fi
393    else
394      posrcprefix="../"
395    fi
396    rm -f po/POTFILES
397    dnl Use `echo' rather than AC_MSG_RESULT, because this is run from
398    dnl `config.status'.
399    echo "generating po/POTFILES from $srcdir/po/POTFILES.in"
400    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\,"  \
401        -e "\$s/\(.*\) \\\\/\1/" \
402         < $srcdir/po/POTFILES.in > po/POTFILES
403    echo "creating po/Makefile"
404    sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
405   ])
406
407 # Search path for a program which passes the given test.
408 # Ulrich Drepper <drepper@cygnus.com>, 1996.
409 #
410 # This file may be copied and used freely without restrictions.  It
411 # can be used in projects which are not available under the GNU Public
412 # License but which still want to provide support for the GNU gettext
413 # functionality.  Please note that the actual code is *not* freely
414 # available.
415
416 # serial 1
417
418 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
419 dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
420 AC_DEFUN(AM_PATH_PROG_WITH_TEST,
421 [# Extract the first word of "$2", so it can be a program name with args.
422 set dummy $2; ac_word=[$]2
423 AC_MSG_CHECKING([for $ac_word])
424 AC_CACHE_VAL(ac_cv_path_$1,
425 [case "[$]$1" in
426   /*)
427   ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
428   ;;
429   *)
430   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
431   for ac_dir in ifelse([$5], , $PATH, [$5]); do
432     test -z "$ac_dir" && ac_dir=.
433     if test -f $ac_dir/$ac_word; then
434       if [$3]; then
435         ac_cv_path_$1="$ac_dir/$ac_word"
436         break
437       fi
438     fi
439   done
440   IFS="$ac_save_ifs"
441 dnl If no 4th arg is given, leave the cache variable unset,
442 dnl so AC_PATH_PROGS will keep looking.
443 ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
444 ])dnl
445   ;;
446 esac])dnl
447 $1="$ac_cv_path_$1"
448 if test -n "[$]$1"; then
449   AC_MSG_RESULT([$]$1)
450 else
451   AC_MSG_RESULT(no)
452 fi
453 AC_SUBST($1)dnl
454 ])
455
456 # Include libtool code.
457
458 builtin(include, libtool.m4)dnl