]> The Tcpdump Group git mirrors - tcpdump/blob - aclocal.m4
bugfix: don't forget to increment the tlv header size, misc. display cosmetics
[tcpdump] / aclocal.m4
1 dnl @(#) $Header: /tcpdump/master/tcpdump/aclocal.m4,v 1.106 2005-03-27 03:31:01 guy Exp $ (LBL)
2 dnl
3 dnl Copyright (c) 1995, 1996, 1997, 1998
4 dnl The Regents of the University of California. All rights reserved.
5 dnl
6 dnl Redistribution and use in source and binary forms, with or without
7 dnl modification, are permitted provided that: (1) source code distributions
8 dnl retain the above copyright notice and this paragraph in its entirety, (2)
9 dnl distributions including binary code include the above copyright notice and
10 dnl this paragraph in its entirety in the documentation or other materials
11 dnl provided with the distribution, and (3) all advertising materials mentioning
12 dnl features or use of this software display the following acknowledgement:
13 dnl ``This product includes software developed by the University of California,
14 dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
15 dnl the University nor the names of its contributors may be used to endorse
16 dnl or promote products derived from this software without specific prior
17 dnl written permission.
18 dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
19 dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
20 dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 dnl
22 dnl LBL autoconf macros
23 dnl
24
25 dnl
26 dnl Determine which compiler we're using (cc or gcc)
27 dnl If using gcc, determine the version number
28 dnl If using cc, require that it support ansi prototypes
29 dnl If using gcc, use -O2 (otherwise use -O)
30 dnl If using cc, explicitly specify /usr/local/include
31 dnl
32 dnl usage:
33 dnl
34 dnl AC_LBL_C_INIT(copt, incls)
35 dnl
36 dnl results:
37 dnl
38 dnl $1 (copt set)
39 dnl $2 (incls set)
40 dnl CC
41 dnl LDFLAGS
42 dnl ac_cv_lbl_gcc_vers
43 dnl LBL_CFLAGS
44 dnl
45 AC_DEFUN(AC_LBL_C_INIT,
46 [AC_PREREQ(2.12)
47 AC_BEFORE([$0], [AC_PROG_CC])
48 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
49 AC_BEFORE([$0], [AC_LBL_DEVEL])
50 AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
51 $1="-O"
52 $2=""
53 if test "${srcdir}" != "." ; then
54 $2="-I\$(srcdir)"
55 fi
56 if test "${CFLAGS+set}" = set; then
57 LBL_CFLAGS="$CFLAGS"
58 fi
59 if test -z "$CC" ; then
60 case "$host_os" in
61
62 bsdi*)
63 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
64 if test $SHLICC2 = yes ; then
65 CC=shlicc2
66 export CC
67 fi
68 ;;
69 esac
70 fi
71 if test -z "$CC" -a "$with_gcc" = no ; then
72 CC=cc
73 export CC
74 fi
75 AC_PROG_CC
76 if test "$GCC" = yes ; then
77 if test "$SHLICC2" = yes ; then
78 ac_cv_lbl_gcc_vers=2
79 $1="-O2"
80 else
81 AC_MSG_CHECKING(gcc version)
82 AC_CACHE_VAL(ac_cv_lbl_gcc_vers,
83 ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \
84 sed -e '/^gcc version /!d' \
85 -e 's/^gcc version //' \
86 -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \
87 -e 's/\..*//'`)
88 AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
89 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
90 $1="-O2"
91 fi
92 fi
93 else
94 AC_MSG_CHECKING(that $CC handles ansi prototypes)
95 AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes,
96 AC_TRY_COMPILE(
97 [#include <sys/types.h>],
98 [int frob(int, char *)],
99 ac_cv_lbl_cc_ansi_prototypes=yes,
100 ac_cv_lbl_cc_ansi_prototypes=no))
101 AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes)
102 if test $ac_cv_lbl_cc_ansi_prototypes = no ; then
103 case "$host_os" in
104
105 hpux*)
106 AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE))
107 savedcflags="$CFLAGS"
108 CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS"
109 AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa,
110 AC_TRY_COMPILE(
111 [#include <sys/types.h>],
112 [int frob(int, char *)],
113 ac_cv_lbl_cc_hpux_cc_aa=yes,
114 ac_cv_lbl_cc_hpux_cc_aa=no))
115 AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa)
116 if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then
117 AC_MSG_ERROR(see the INSTALL doc for more info)
118 fi
119 CFLAGS="$savedcflags"
120 V_CCOPT="-Aa $V_CCOPT"
121 AC_DEFINE(_HPUX_SOURCE)
122 ;;
123
124 *)
125 AC_MSG_ERROR(see the INSTALL doc for more info)
126 ;;
127 esac
128 fi
129 $2="$$2 -I/usr/local/include"
130 LDFLAGS="$LDFLAGS -L/usr/local/lib"
131
132 case "$host_os" in
133
134 irix*)
135 V_CCOPT="$V_CCOPT -xansi -signed -O"
136 ;;
137
138 osf*)
139 V_CCOPT="$V_CCOPT -std1 -O"
140 ;;
141
142 ultrix*)
143 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
144 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
145 AC_TRY_COMPILE(
146 [#include <sys/types.h>],
147 [struct a { int b; };
148 void c(const struct a *)],
149 ac_cv_lbl_cc_const_proto=yes,
150 ac_cv_lbl_cc_const_proto=no))
151 AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
152 if test $ac_cv_lbl_cc_const_proto = no ; then
153 AC_DEFINE(const,)
154 fi
155 ;;
156 esac
157 fi
158 ])
159
160 #
161 # Try compiling a sample of the type of code that appears in
162 # gencode.c with "inline", "__inline__", and "__inline".
163 #
164 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
165 # as it just tests whether a function returning "int" can be inlined;
166 # at least some versions of HP's C compiler can inline that, but can't
167 # inline a function that returns a struct pointer.
168 #
169 # Make sure we use the V_CCOPT flags, because some of those might
170 # disable inlining.
171 #
172 AC_DEFUN(AC_LBL_C_INLINE,
173 [AC_MSG_CHECKING(for inline)
174 save_CFLAGS="$CFLAGS"
175 CFLAGS="$V_CCOPT"
176 AC_CACHE_VAL(ac_cv_lbl_inline, [
177 ac_cv_lbl_inline=""
178 ac_lbl_cc_inline=no
179 for ac_lbl_inline in inline __inline__ __inline
180 do
181 AC_TRY_COMPILE(
182 [#define inline $ac_lbl_inline
183 static inline struct iltest *foo(void);
184 struct iltest {
185 int iltest1;
186 int iltest2;
187 };
188
189 static inline struct iltest *
190 foo()
191 {
192 static struct iltest xxx;
193
194 return &xxx;
195 }],,ac_lbl_cc_inline=yes,)
196 if test "$ac_lbl_cc_inline" = yes ; then
197 break;
198 fi
199 done
200 if test "$ac_lbl_cc_inline" = yes ; then
201 ac_cv_lbl_inline=$ac_lbl_inline
202 fi])
203 CFLAGS="$save_CFLAGS"
204 if test ! -z "$ac_cv_lbl_inline" ; then
205 AC_MSG_RESULT($ac_cv_lbl_inline)
206 else
207 AC_MSG_RESULT(no)
208 fi
209 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
210
211 dnl
212 dnl Use pfopen.c if available and pfopen() not in standard libraries
213 dnl Require libpcap
214 dnl Look for libpcap in ..
215 dnl Use the installed libpcap if there is no local version
216 dnl
217 dnl usage:
218 dnl
219 dnl AC_LBL_LIBPCAP(pcapdep, incls)
220 dnl
221 dnl results:
222 dnl
223 dnl $1 (pcapdep set)
224 dnl $2 (incls appended)
225 dnl LIBS
226 dnl LBL_LIBS
227 dnl
228 AC_DEFUN(AC_LBL_LIBPCAP,
229 [AC_REQUIRE([AC_LBL_LIBRARY_NET])
230 dnl
231 dnl save a copy before locating libpcap.a
232 dnl
233 LBL_LIBS="$LIBS"
234 pfopen=/usr/examples/packetfilter/pfopen.c
235 if test -f $pfopen ; then
236 AC_CHECK_FUNCS(pfopen)
237 if test $ac_cv_func_pfopen = "no" ; then
238 AC_MSG_RESULT(Using $pfopen)
239 LIBS="$LIBS $pfopen"
240 fi
241 fi
242 AC_MSG_CHECKING(for local pcap library)
243 libpcap=FAIL
244 lastdir=FAIL
245 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
246 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
247 for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
248 basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'`
249 if test $lastdir = $basedir ; then
250 dnl skip alphas when an actual release is present
251 continue;
252 fi
253 lastdir=$dir
254 if test -r $dir/libpcap.a ; then
255 libpcap=$dir/libpcap.a
256 d=$dir
257 dnl continue and select the last one that exists
258 fi
259 done
260 if test $libpcap = FAIL ; then
261 AC_MSG_RESULT(not found)
262 AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
263 if test $libpcap = FAIL ; then
264 AC_MSG_ERROR(see the INSTALL doc for more info)
265 fi
266 dnl
267 dnl Good old Red Hat Linux puts "pcap.h" in
268 dnl "/usr/include/pcap"; had the LBL folks done so,
269 dnl that would have been a good idea, but for
270 dnl the Red Hat folks to do so just breaks source
271 dnl compatibility with other systems.
272 dnl
273 dnl We work around this by assuming that, as we didn't
274 dnl find a local libpcap, libpcap is in /usr/lib or
275 dnl /usr/local/lib and that the corresponding header
276 dnl file is under one of those directories; if we don't
277 dnl find it in either of those directories, we check to
278 dnl see if it's in a "pcap" subdirectory of them and,
279 dnl if so, add that subdirectory to the "-I" list.
280 dnl
281 AC_MSG_CHECKING(for extraneous pcap header directories)
282 if test \( ! -r /usr/local/include/pcap.h \) -a \
283 \( ! -r /usr/include/pcap.h \); then
284 if test -r /usr/local/include/pcap/pcap.h; then
285 d="/usr/local/include/pcap"
286 elif test -r /usr/include/pcap/pcap.h; then
287 d="/usr/include/pcap"
288 fi
289 fi
290 if test -z "$d" ; then
291 AC_MSG_RESULT(not found)
292 else
293 $2="-I$d $$2"
294 AC_MSG_RESULT(found -- -I$d added)
295 fi
296 else
297 $1=$libpcap
298 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
299 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
300 if test -r $d/pcap.h; then
301 $2="-I$d $$2"
302 elif test -r $places/pcap.h; then
303 $2="-I$places $$2"
304 else
305 AC_MSG_ERROR(cannot find pcap.h, see INSTALL)
306 fi
307 AC_MSG_RESULT($libpcap)
308 fi
309 LIBS="$libpcap $LIBS"
310 case "$host_os" in
311
312 aix*)
313 pseexe="/lib/pse.exp"
314 AC_MSG_CHECKING(for $pseexe)
315 if test -f $pseexe ; then
316 AC_MSG_RESULT(yes)
317 LIBS="$LIBS -I:$pseexe"
318 fi
319 #
320 # We need "-lodm" and "-lcfg", as libpcap requires them on
321 # AIX, and we just build a static libpcap.a and thus can't
322 # arrange that when you link with libpcap you automatically
323 # link with those libraries.
324 #
325 LIBS="$LIBS -lodm -lcfg"
326 ;;
327 esac
328
329 dnl
330 dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()",
331 dnl and "pcap_datalink_name_to_val()", and use substitute versions
332 dnl if they're not present
333 dnl
334 AC_CHECK_FUNC(pcap_list_datalinks,
335 AC_DEFINE(HAVE_PCAP_LIST_DATALINKS),
336 AC_LIBOBJ(datalinks))
337 AC_CHECK_FUNC(pcap_set_datalink,
338 AC_DEFINE(HAVE_PCAP_SET_DATALINK))
339 AC_CHECK_FUNC(pcap_datalink_name_to_val,
340 [
341 AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL)
342 AC_CHECK_FUNC(pcap_datalink_val_to_description,
343 AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION),
344 AC_LIBOBJ(dlnames))
345 ],
346 AC_LIBOBJ(dlnames))
347
348 dnl
349 dnl Check for "pcap_breakloop()"; you can't substitute for it if
350 dnl it's absent (it has hooks into the live capture routines),
351 dnl so just define the HAVE_ value if it's there.
352 dnl
353 AC_CHECK_FUNCS(pcap_breakloop)
354 ])
355
356 dnl
357 dnl Define RETSIGTYPE and RETSIGVAL
358 dnl
359 dnl usage:
360 dnl
361 dnl AC_LBL_TYPE_SIGNAL
362 dnl
363 dnl results:
364 dnl
365 dnl RETSIGTYPE (defined)
366 dnl RETSIGVAL (defined)
367 dnl
368 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
369 [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
370 AC_TYPE_SIGNAL
371 if test "$ac_cv_type_signal" = void ; then
372 AC_DEFINE(RETSIGVAL,)
373 else
374 AC_DEFINE(RETSIGVAL,(0))
375 fi
376 case "$host_os" in
377
378 irix*)
379 AC_DEFINE(_BSD_SIGNALS)
380 ;;
381
382 *)
383 dnl prefer sigaction() to sigset()
384 AC_CHECK_FUNCS(sigaction)
385 if test $ac_cv_func_sigaction = no ; then
386 AC_CHECK_FUNCS(sigset)
387 fi
388 ;;
389 esac])
390
391 dnl
392 dnl If using gcc, make sure we have ANSI ioctl definitions
393 dnl
394 dnl usage:
395 dnl
396 dnl AC_LBL_FIXINCLUDES
397 dnl
398 AC_DEFUN(AC_LBL_FIXINCLUDES,
399 [if test "$GCC" = yes ; then
400 AC_MSG_CHECKING(for ANSI ioctl definitions)
401 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
402 AC_TRY_COMPILE(
403 [/*
404 * This generates a "duplicate case value" when fixincludes
405 * has not be run.
406 */
407 # include <sys/types.h>
408 # include <sys/time.h>
409 # include <sys/ioctl.h>
410 # ifdef HAVE_SYS_IOCCOM_H
411 # include <sys/ioccom.h>
412 # endif],
413 [switch (0) {
414 case _IO('A', 1):;
415 case _IO('B', 1):;
416 }],
417 ac_cv_lbl_gcc_fixincludes=yes,
418 ac_cv_lbl_gcc_fixincludes=no))
419 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
420 if test $ac_cv_lbl_gcc_fixincludes = no ; then
421 # Don't cache failure
422 unset ac_cv_lbl_gcc_fixincludes
423 AC_MSG_ERROR(see the INSTALL for more info)
424 fi
425 fi])
426
427 dnl
428 dnl Check for flex, default to lex
429 dnl Require flex 2.4 or higher
430 dnl Check for bison, default to yacc
431 dnl Default to lex/yacc if both flex and bison are not available
432 dnl Define the yy prefix string if using flex and bison
433 dnl
434 dnl usage:
435 dnl
436 dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix)
437 dnl
438 dnl results:
439 dnl
440 dnl $1 (lex set)
441 dnl $2 (yacc appended)
442 dnl $3 (optional flex and bison -P prefix)
443 dnl
444 AC_DEFUN(AC_LBL_LEX_AND_YACC,
445 [AC_ARG_WITH(flex, [ --without-flex don't use flex])
446 AC_ARG_WITH(bison, [ --without-bison don't use bison])
447 if test "$with_flex" = no ; then
448 $1=lex
449 else
450 AC_CHECK_PROGS($1, flex, lex)
451 fi
452 if test "$$1" = flex ; then
453 # The -V flag was added in 2.4
454 AC_MSG_CHECKING(for flex 2.4 or higher)
455 AC_CACHE_VAL(ac_cv_lbl_flex_v24,
456 if flex -V >/dev/null 2>&1; then
457 ac_cv_lbl_flex_v24=yes
458 else
459 ac_cv_lbl_flex_v24=no
460 fi)
461 AC_MSG_RESULT($ac_cv_lbl_flex_v24)
462 if test $ac_cv_lbl_flex_v24 = no ; then
463 s="2.4 or higher required"
464 AC_MSG_WARN(ignoring obsolete flex executable ($s))
465 $1=lex
466 fi
467 fi
468 if test "$with_bison" = no ; then
469 $2=yacc
470 else
471 AC_CHECK_PROGS($2, bison, yacc)
472 fi
473 if test "$$2" = bison ; then
474 $2="$$2 -y"
475 fi
476 if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then
477 AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc)
478 $1=lex
479 $2=yacc
480 fi
481 if test "$$1" = flex -a -n "$3" ; then
482 $1="$$1 -P$3"
483 $2="$$2 -p $3"
484 fi])
485
486 dnl
487 dnl Checks to see if union wait is used with WEXITSTATUS()
488 dnl
489 dnl usage:
490 dnl
491 dnl AC_LBL_UNION_WAIT
492 dnl
493 dnl results:
494 dnl
495 dnl DECLWAITSTATUS (defined)
496 dnl
497 AC_DEFUN(AC_LBL_UNION_WAIT,
498 [AC_MSG_CHECKING(if union wait is used)
499 AC_CACHE_VAL(ac_cv_lbl_union_wait,
500 AC_TRY_COMPILE([
501 # include <sys/types.h>
502 # include <sys/wait.h>],
503 [int status;
504 u_int i = WEXITSTATUS(status);
505 u_int j = waitpid(0, &status, 0);],
506 ac_cv_lbl_union_wait=no,
507 ac_cv_lbl_union_wait=yes))
508 AC_MSG_RESULT($ac_cv_lbl_union_wait)
509 if test $ac_cv_lbl_union_wait = yes ; then
510 AC_DEFINE(DECLWAITSTATUS,union wait)
511 else
512 AC_DEFINE(DECLWAITSTATUS,int)
513 fi])
514
515 dnl
516 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
517 dnl
518 dnl usage:
519 dnl
520 dnl AC_LBL_SOCKADDR_SA_LEN
521 dnl
522 dnl results:
523 dnl
524 dnl HAVE_SOCKADDR_SA_LEN (defined)
525 dnl
526 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
527 [AC_MSG_CHECKING(if sockaddr struct has sa_len member)
528 AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
529 AC_TRY_COMPILE([
530 # include <sys/types.h>
531 # include <sys/socket.h>],
532 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
533 ac_cv_lbl_sockaddr_has_sa_len=yes,
534 ac_cv_lbl_sockaddr_has_sa_len=no))
535 AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
536 if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
537 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
538 fi])
539
540 dnl
541 dnl Checks to see if -R is used
542 dnl
543 dnl usage:
544 dnl
545 dnl AC_LBL_HAVE_RUN_PATH
546 dnl
547 dnl results:
548 dnl
549 dnl ac_cv_lbl_have_run_path (yes or no)
550 dnl
551 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
552 [AC_MSG_CHECKING(for ${CC-cc} -R)
553 AC_CACHE_VAL(ac_cv_lbl_have_run_path,
554 [echo 'main(){}' > conftest.c
555 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
556 if test ! -s conftest.out ; then
557 ac_cv_lbl_have_run_path=yes
558 else
559 ac_cv_lbl_have_run_path=no
560 fi
561 rm -f conftest*])
562 AC_MSG_RESULT($ac_cv_lbl_have_run_path)
563 ])
564
565 dnl
566 dnl Due to the stupid way it's implemented, AC_CHECK_TYPE is nearly useless.
567 dnl
568 dnl usage:
569 dnl
570 dnl AC_LBL_CHECK_TYPE
571 dnl
572 dnl results:
573 dnl
574 dnl int32_t (defined)
575 dnl u_int32_t (defined)
576 dnl
577 AC_DEFUN(AC_LBL_CHECK_TYPE,
578 [AC_MSG_CHECKING(for $1 using $CC)
579 AC_CACHE_VAL(ac_cv_lbl_have_$1,
580 AC_TRY_COMPILE([
581 # include "confdefs.h"
582 # include <sys/types.h>
583 # if STDC_HEADERS
584 # include <stdlib.h>
585 # include <stddef.h>
586 # endif],
587 [$1 i],
588 ac_cv_lbl_have_$1=yes,
589 ac_cv_lbl_have_$1=no))
590 AC_MSG_RESULT($ac_cv_lbl_have_$1)
591 if test $ac_cv_lbl_have_$1 = no ; then
592 AC_DEFINE($1, $2)
593 fi])
594
595 dnl
596 dnl Check whether a given format can be used to print 64-bit integers
597 dnl
598 AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT,
599 [
600 AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
601 AC_RUN_IFELSE(
602 [
603 AC_LANG_SOURCE(
604 [[
605 # ifdef HAVE_INTTYPES_H
606 #include <inttypes.h>
607 # endif
608 #include <stdio.h>
609 #include <sys/types.h>
610
611 main()
612 {
613 u_int64_t t = 1;
614 char strbuf[16+1];
615 sprintf(strbuf, "%016$1x", t << 32);
616 if (strcmp(strbuf, "0000000100000000") == 0)
617 exit(0);
618 else
619 exit(1);
620 }
621 ]])
622 ],
623 [
624 AC_DEFINE(PRId64, "$1d")
625 AC_DEFINE(PRIo64, "$1o")
626 AC_DEFINE(PRIx64, "$1x")
627 AC_DEFINE(PRIu64, "$1u")
628 AC_MSG_RESULT(yes)
629 ],
630 [
631 AC_MSG_RESULT(no)
632 $2
633 ])
634 ])
635
636 dnl
637 dnl Checks to see if unaligned memory accesses fail
638 dnl
639 dnl usage:
640 dnl
641 dnl AC_LBL_UNALIGNED_ACCESS
642 dnl
643 dnl results:
644 dnl
645 dnl LBL_ALIGN (DEFINED)
646 dnl
647 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
648 [AC_MSG_CHECKING(if unaligned accesses fail)
649 AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
650 [case "$host_cpu" in
651
652 #
653 # These are CPU types where:
654 #
655 # the CPU faults on an unaligned access, but at least some
656 # OSes that support that CPU catch the fault and simulate
657 # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
658 # the simulation is slow, so we don't want to use it;
659 #
660 # the CPU, I infer (from the old
661 #
662 # XXX: should also check that they don't do weird things (like on arm)
663 #
664 # comment) doesn't fault on unaligned accesses, but doesn't
665 # do a normal unaligned fetch, either (e.g., presumably, ARM);
666 #
667 # for whatever reason, the test program doesn't work
668 # (this has been claimed to be the case for several of those
669 # CPUs - I don't know what the problem is; the problem
670 # was reported as "the test program dumps core" for SuperH,
671 # but that's what the test program is *supposed* to do -
672 # it dumps core before it writes anything, so the test
673 # for an empty output file should find an empty output
674 # file and conclude that unaligned accesses don't work).
675 #
676 # This run-time test won't work if you're cross-compiling, so
677 # in order to support cross-compiling for a particular CPU,
678 # we have to wire in the list of CPU types anyway, as far as
679 # I know, so perhaps we should just have a set of CPUs on
680 # which we know it doesn't work, a set of CPUs on which we
681 # know it does work, and have the script just fail on other
682 # cpu types and update it when such a failure occurs.
683 #
684 alpha*|arm*|hp*|mips*|sh*|sparc*|ia64|nv1)
685 ac_cv_lbl_unaligned_fail=yes
686 ;;
687
688 *)
689 cat >conftest.c <<EOF
690 # include <sys/types.h>
691 # include <sys/wait.h>
692 # include <stdio.h>
693 unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
694 main() {
695 unsigned int i;
696 pid_t pid;
697 int status;
698 /* avoid "core dumped" message */
699 pid = fork();
700 if (pid < 0)
701 exit(2);
702 if (pid > 0) {
703 /* parent */
704 pid = waitpid(pid, &status, 0);
705 if (pid < 0)
706 exit(3);
707 exit(!WIFEXITED(status));
708 }
709 /* child */
710 i = *(unsigned int *)&a[[1]];
711 printf("%d\n", i);
712 exit(0);
713 }
714 EOF
715 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
716 conftest.c $LIBS >/dev/null 2>&1
717 if test ! -x conftest ; then
718 dnl failed to compile for some reason
719 ac_cv_lbl_unaligned_fail=yes
720 else
721 ./conftest >conftest.out
722 if test ! -s conftest.out ; then
723 ac_cv_lbl_unaligned_fail=yes
724 else
725 ac_cv_lbl_unaligned_fail=no
726 fi
727 fi
728 rm -f conftest* core core.conftest
729 ;;
730 esac])
731 AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
732 if test $ac_cv_lbl_unaligned_fail = yes ; then
733 AC_DEFINE(LBL_ALIGN)
734 fi])
735
736 dnl
737 dnl If using gcc and the file .devel exists:
738 dnl Compile with -g (if supported) and -Wall
739 dnl If using gcc 2 or later, do extra prototype checking and some other
740 dnl checks
741 dnl If an os prototype include exists, symlink os-proto.h to it
742 dnl
743 dnl usage:
744 dnl
745 dnl AC_LBL_DEVEL(copt)
746 dnl
747 dnl results:
748 dnl
749 dnl $1 (copt appended)
750 dnl HAVE_OS_PROTO_H (defined)
751 dnl os-proto.h (symlinked)
752 dnl
753 AC_DEFUN(AC_LBL_DEVEL,
754 [rm -f os-proto.h
755 if test "${LBL_CFLAGS+set}" = set; then
756 $1="$$1 ${LBL_CFLAGS}"
757 fi
758 if test -f .devel ; then
759 if test "$GCC" = yes ; then
760 if test "${LBL_CFLAGS+set}" != set; then
761 if test "$ac_cv_prog_cc_g" = yes ; then
762 $1="-g $$1"
763 fi
764 $1="$$1 -Wall"
765 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
766 $1="$$1 -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -W"
767 fi
768 fi
769 else
770 case "$host_os" in
771
772 irix6*)
773 V_CCOPT="$V_CCOPT -n32"
774 ;;
775
776 *)
777 ;;
778 esac
779 fi
780 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
781 name="lbl/os-$os.h"
782 if test -f $name ; then
783 ln -s $name os-proto.h
784 AC_DEFINE(HAVE_OS_PROTO_H)
785 else
786 AC_MSG_WARN(can't find $name)
787 fi
788 fi])
789
790 dnl
791 dnl Improved version of AC_CHECK_LIB
792 dnl
793 dnl Thanks to John Hawkinson (jhawk@mit.edu)
794 dnl
795 dnl usage:
796 dnl
797 dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
798 dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
799 dnl
800 dnl results:
801 dnl
802 dnl LIBS
803 dnl
804 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
805 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
806 dnl We keep it around for reference purposes in case it's ever
807 dnl useful in the future.
808 dnl
809
810 define(AC_LBL_CHECK_LIB,
811 [AC_MSG_CHECKING([for $2 in -l$1])
812 dnl Use a cache variable name containing the library, function
813 dnl name, and extra libraries to link with, because the test really is
814 dnl for library $1 defining function $2, when linked with potinal
815 dnl library $5, not just for library $1. Separate tests with the same
816 dnl $1 and different $2's or $5's may have different results.
817 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
818 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
819 [ac_save_LIBS="$LIBS"
820 LIBS="-l$1 $5 $LIBS"
821 AC_TRY_LINK(dnl
822 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
823 [/* Override any gcc2 internal prototype to avoid an error. */
824 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
825 extern "C"
826 #endif
827 ])dnl
828 [/* We use char because int might match the return type of a gcc2
829 builtin and then its argument prototype would still apply. */
830 char $2();
831 ]),
832 [$2()],
833 eval "ac_cv_lbl_lib_$ac_lib_var=yes",
834 eval "ac_cv_lbl_lib_$ac_lib_var=no")
835 LIBS="$ac_save_LIBS"
836 ])dnl
837 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
838 AC_MSG_RESULT(yes)
839 ifelse([$3], ,
840 [changequote(, )dnl
841 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
842 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
843 changequote([, ])dnl
844 AC_DEFINE_UNQUOTED($ac_tr_lib)
845 LIBS="-l$1 $LIBS"
846 ], [$3])
847 else
848 AC_MSG_RESULT(no)
849 ifelse([$4], , , [$4
850 ])dnl
851 fi
852 ])
853
854 dnl
855 dnl AC_LBL_LIBRARY_NET
856 dnl
857 dnl This test is for network applications that need socket() and
858 dnl gethostbyname() -ish functions. Under Solaris, those applications
859 dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
860 dnl with "-lnsl" but should *not* link with "-lsocket" because
861 dnl libsocket.a breaks a number of things (for instance:
862 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
863 dnl versions of IRIX).
864 dnl
865 dnl Unfortunately, many application developers are not aware of this,
866 dnl and mistakenly write tests that cause -lsocket to be used under
867 dnl IRIX. It is also easy to write tests that cause -lnsl to be used
868 dnl under operating systems where neither are necessary (or useful),
869 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
870 dnl
871 dnl This test exists so that every application developer does not test
872 dnl this in a different, and subtly broken fashion.
873
874 dnl It has been argued that this test should be broken up into two
875 dnl seperate tests, one for the resolver libraries, and one for the
876 dnl libraries necessary for using Sockets API. Unfortunately, the two
877 dnl are carefully intertwined and allowing the autoconf user to use
878 dnl them independantly potentially results in unfortunate ordering
879 dnl dependancies -- as such, such component macros would have to
880 dnl carefully use indirection and be aware if the other components were
881 dnl executed. Since other autoconf macros do not go to this trouble,
882 dnl and almost no applications use sockets without the resolver, this
883 dnl complexity has not been implemented.
884 dnl
885 dnl The check for libresolv is in case you are attempting to link
886 dnl statically and happen to have a libresolv.a lying around (and no
887 dnl libnsl.a).
888 dnl
889 AC_DEFUN(AC_LBL_LIBRARY_NET, [
890 # Most operating systems have gethostbyname() in the default searched
891 # libraries (i.e. libc):
892 # Some OSes (eg. Solaris) place it in libnsl
893 # Some strange OSes (SINIX) have it in libsocket:
894 AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
895 # Unfortunately libsocket sometimes depends on libnsl and
896 # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
897 if test "$ac_cv_search_gethostbyname" = "no"
898 then
899 AC_CHECK_LIB(socket, gethostbyname,
900 LIBS="-lsocket -lnsl $LIBS", , -lnsl)
901 fi
902 AC_SEARCH_LIBS(socket, socket, ,
903 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
904 # DLPI needs putmsg under HPUX so test for -lstr while we're at it
905 AC_SEARCH_LIBS(putmsg, str)
906 ])
907
908 dnl Copyright (c) 1999 WIDE Project. All rights reserved.
909 dnl
910 dnl Redistribution and use in source and binary forms, with or without
911 dnl modification, are permitted provided that the following conditions
912 dnl are met:
913 dnl 1. Redistributions of source code must retain the above copyright
914 dnl notice, this list of conditions and the following disclaimer.
915 dnl 2. Redistributions in binary form must reproduce the above copyright
916 dnl notice, this list of conditions and the following disclaimer in the
917 dnl documentation and/or other materials provided with the distribution.
918 dnl 3. Neither the name of the project nor the names of its contributors
919 dnl may be used to endorse or promote products derived from this software
920 dnl without specific prior written permission.
921 dnl
922 dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
923 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
924 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
925 dnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
926 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
927 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
928 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
929 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
930 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
931 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
932 dnl SUCH DAMAGE.
933
934 dnl
935 dnl Checks to see if AF_INET6 is defined
936 AC_DEFUN(AC_CHECK_AF_INET6, [
937 AC_MSG_CHECKING(for AF_INET6)
938 AC_CACHE_VAL($1,
939 AC_TRY_COMPILE([
940 # include <sys/types.h>
941 # include <sys/socket.h>],
942 [int a = AF_INET6],
943 $1=yes,
944 $1=no))
945 AC_MSG_RESULT($$1)
946 if test $$1 = yes ; then
947 AC_DEFINE(HAVE_AF_INET6)
948 fi
949 ])
950
951 dnl
952 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
953 dnl borrowed from LBL libpcap
954 AC_DEFUN(AC_CHECK_SA_LEN, [
955 AC_MSG_CHECKING(if sockaddr struct has sa_len member)
956 AC_CACHE_VAL($1,
957 AC_TRY_COMPILE([
958 # include <sys/types.h>
959 # include <sys/socket.h>],
960 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
961 $1=yes,
962 $1=no))
963 AC_MSG_RESULT($$1)
964 if test $$1 = yes ; then
965 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
966 fi
967 ])
968
969 dnl
970 dnl Checks for portable prototype declaration macro
971 AC_DEFUN(AC_CHECK_PORTABLE_PROTO, [
972 AC_MSG_CHECKING(for __P)
973 AC_CACHE_VAL($1,
974 AC_TRY_COMPILE([
975 # include <unistd.h>],
976 [int f __P(())],
977 $1=yes,
978 $1=no))
979 AC_MSG_RESULT($$1)
980 if test $$1 = yes; then
981 AC_DEFINE(HAVE_PORTABLE_PROTOTYPE)
982 fi
983 ])
984
985 dnl checks for u_intXX_t
986 AC_DEFUN(AC_CHECK_BITTYPES, [
987 $1=yes
988 dnl check for u_int8_t
989 AC_MSG_CHECKING(for u_int8_t)
990 AC_CACHE_VAL(ac_cv_u_int8_t,
991 AC_TRY_COMPILE([
992 # include <sys/types.h>],
993 [u_int8_t i],
994 ac_cv_u_int8_t=yes,
995 ac_cv_u_int8_t=no))
996 AC_MSG_RESULT($ac_cv_u_int8_t)
997 if test $ac_cv_u_int8_t = yes; then
998 AC_DEFINE(HAVE_U_INT8_T)
999 else
1000 $1=no
1001 fi
1002 dnl check for u_int16_t
1003 AC_MSG_CHECKING(for u_int16_t)
1004 AC_CACHE_VAL(ac_cv_u_int16_t,
1005 AC_TRY_COMPILE([
1006 # include <sys/types.h>],
1007 [u_int16_t i],
1008 ac_cv_u_int16_t=yes,
1009 ac_cv_u_int16_t=no))
1010 AC_MSG_RESULT($ac_cv_u_int16_t)
1011 if test $ac_cv_u_int16_t = yes; then
1012 AC_DEFINE(HAVE_U_INT16_T)
1013 else
1014 $1=no
1015 fi
1016 dnl check for u_int32_t
1017 AC_MSG_CHECKING(for u_int32_t)
1018 AC_CACHE_VAL(ac_cv_u_int32_t,
1019 AC_TRY_COMPILE([
1020 # include <sys/types.h>],
1021 [u_int32_t i],
1022 ac_cv_u_int32_t=yes,
1023 ac_cv_u_int32_t=no))
1024 AC_MSG_RESULT($ac_cv_u_int32_t)
1025 if test $ac_cv_u_int32_t = yes; then
1026 AC_DEFINE(HAVE_U_INT32_T)
1027 else
1028 $1=no
1029 fi
1030 dnl check for u_int64_t
1031 AC_MSG_CHECKING(for u_int64_t)
1032 AC_CACHE_VAL(ac_cv_u_int64_t,
1033 AC_TRY_COMPILE([
1034 # include <sys/types.h>],
1035 [u_int64_t i],
1036 ac_cv_u_int64_t=yes,
1037 ac_cv_u_int64_t=no))
1038 AC_MSG_RESULT($ac_cv_u_int64_t)
1039 if test $ac_cv_u_int64_t = yes; then
1040 AC_DEFINE(HAVE_U_INT64_T)
1041 else
1042 $1=no
1043 fi
1044 ])
1045
1046 dnl
1047 dnl Checks for addrinfo structure
1048 AC_DEFUN(AC_STRUCT_ADDRINFO, [
1049 AC_MSG_CHECKING(for addrinfo)
1050 AC_CACHE_VAL($1,
1051 AC_TRY_COMPILE([
1052 # include <netdb.h>],
1053 [struct addrinfo a],
1054 $1=yes,
1055 $1=no))
1056 AC_MSG_RESULT($$1)
1057 if test $$1 = yes; then
1058 AC_DEFINE(HAVE_ADDRINFO)
1059 else
1060 AC_DEFINE(NEED_ADDRINFO_H)
1061 fi
1062 ])
1063
1064 dnl
1065 dnl Checks for NI_MAXSERV
1066 AC_DEFUN(AC_NI_MAXSERV, [
1067 AC_MSG_CHECKING(for NI_MAXSERV)
1068 AC_CACHE_VAL($1,
1069 AC_EGREP_CPP(yes, [#include <netdb.h>
1070 #ifdef NI_MAXSERV
1071 yes
1072 #endif],
1073 $1=yes,
1074 $1=no))
1075 AC_MSG_RESULT($$1)
1076 if test $$1 != yes; then
1077 AC_DEFINE(NEED_ADDRINFO_H)
1078 fi
1079 ])
1080
1081 dnl
1082 dnl Checks for NI_NAMEREQD
1083 AC_DEFUN(AC_NI_NAMEREQD, [
1084 AC_MSG_CHECKING(for NI_NAMEREQD)
1085 AC_CACHE_VAL($1,
1086 AC_EGREP_CPP(yes, [#include <netdb.h>
1087 #ifdef NI_NOFQDN
1088 yes
1089 #endif],
1090 $1=yes,
1091 $1=no))
1092 AC_MSG_RESULT($$1)
1093 if test $$1 != yes; then
1094 AC_DEFINE(NEED_ADDRINFO_H)
1095 fi
1096 ])
1097
1098 dnl
1099 dnl Checks for sockaddr_storage structure
1100 AC_DEFUN(AC_STRUCT_SA_STORAGE, [
1101 AC_MSG_CHECKING(for sockaddr_storage)
1102 AC_CACHE_VAL($1,
1103 AC_TRY_COMPILE([
1104 # include <sys/types.h>
1105 # include <sys/socket.h>],
1106 [struct sockaddr_storage s],
1107 $1=yes,
1108 $1=no))
1109 AC_MSG_RESULT($$1)
1110 if test $$1 = yes; then
1111 AC_DEFINE(HAVE_SOCKADDR_STORAGE)
1112 fi
1113 ])
1114
1115 dnl
1116 dnl Checks for macro of IP address size
1117 AC_DEFUN(AC_CHECK_ADDRSZ, [
1118 $1=yes
1119 dnl check for INADDRSZ
1120 AC_MSG_CHECKING(for INADDRSZ)
1121 AC_CACHE_VAL(ac_cv_inaddrsz,
1122 AC_TRY_COMPILE([
1123 # include <arpa/nameser.h>],
1124 [int a = INADDRSZ],
1125 ac_cv_inaddrsz=yes,
1126 ac_cv_inaddrsz=no))
1127 AC_MSG_RESULT($ac_cv_inaddrsz)
1128 if test $ac_cv_inaddrsz = yes; then
1129 AC_DEFINE(HAVE_INADDRSZ)
1130 else
1131 $1=no
1132 fi
1133 dnl check for IN6ADDRSZ
1134 AC_MSG_CHECKING(for IN6ADDRSZ)
1135 AC_CACHE_VAL(ac_cv_in6addrsz,
1136 AC_TRY_COMPILE([
1137 # include <arpa/nameser.h>],
1138 [int a = IN6ADDRSZ],
1139 ac_cv_in6addrsz=yes,
1140 ac_cv_in6addrsz=no))
1141 AC_MSG_RESULT($ac_cv_in6addrsz)
1142 if test $ac_cv_in6addrsz = yes; then
1143 AC_DEFINE(HAVE_IN6ADDRSZ)
1144 else
1145 $1=no
1146 fi
1147 ])
1148
1149 dnl
1150 dnl check for RES_USE_INET6
1151 AC_DEFUN(AC_CHECK_RES_USE_INET6, [
1152 AC_MSG_CHECKING(for RES_USE_INET6)
1153 AC_CACHE_VAL($1,
1154 AC_TRY_COMPILE([
1155 # include <sys/types.h>
1156 # include <netinet/in.h>
1157 # include <resolv.h>],
1158 [int a = RES_USE_INET6],
1159 $1=yes,
1160 $1=no))
1161 AC_MSG_RESULT($$1)
1162 if test $$1 = yes; then
1163 AC_DEFINE(HAVE_RES_USE_INET6)
1164 fi
1165 ])
1166
1167 dnl
1168 dnl check for AAAA
1169 AC_DEFUN(AC_CHECK_AAAA, [
1170 AC_MSG_CHECKING(for AAAA)
1171 AC_CACHE_VAL($1,
1172 AC_TRY_COMPILE([
1173 # include <sys/types.h>
1174 # include <arpa/nameser.h>],
1175 [int a = T_AAAA],
1176 $1=yes,
1177 $1=no))
1178 AC_MSG_RESULT($$1)
1179 if test $$1 = yes; then
1180 AC_DEFINE(HAVE_AAAA)
1181 fi
1182 ])
1183
1184 dnl
1185 dnl check for struct res_state_ext
1186 AC_DEFUN(AC_STRUCT_RES_STATE_EXT, [
1187 AC_MSG_CHECKING(for res_state_ext)
1188 AC_CACHE_VAL($1,
1189 AC_TRY_COMPILE([
1190 # include <sys/types.h>
1191 # include <netinet/in.h>
1192 # include <netinet6/in6.h>
1193 # include <resolv.h>],
1194 [struct __res_state_ext e],
1195 $1=yes,
1196 $1=no))
1197 AC_MSG_RESULT($$1)
1198 if test $$1 = yes; then
1199 AC_DEFINE(HAVE_RES_STATE_EXT)
1200 fi
1201 ])
1202
1203 dnl
1204 dnl check for struct res_state_ext
1205 AC_DEFUN(AC_STRUCT_RES_STATE, [
1206 AC_MSG_CHECKING(for nsort in res_state)
1207 AC_CACHE_VAL($1,
1208 AC_TRY_COMPILE([
1209 # include <sys/types.h>
1210 # include <netinet/in.h>
1211 # include <netinet6/in6.h>
1212 # include <resolv.h>],
1213 [struct __res_state e; e.nsort = 0],
1214 $1=yes,
1215 $1=no))
1216 AC_MSG_RESULT($$1)
1217 if test $$1 = yes; then
1218 AC_DEFINE(HAVE_NEW_RES_STATE)
1219 fi
1220 ])
1221
1222 dnl
1223 dnl check for h_errno
1224 AC_DEFUN(AC_VAR_H_ERRNO, [
1225 AC_MSG_CHECKING(for h_errno)
1226 AC_CACHE_VAL(ac_cv_var_h_errno,
1227 AC_TRY_COMPILE([
1228 # include <sys/types.h>
1229 # include <netdb.h>],
1230 [int foo = h_errno;],
1231 ac_cv_var_h_errno=yes,
1232 ac_cv_var_h_errno=no))
1233 AC_MSG_RESULT($ac_cv_var_h_errno)
1234 if test "$ac_cv_var_h_errno" = "yes"; then
1235 AC_DEFINE(HAVE_H_ERRNO)
1236 fi
1237 ])
1238
1239 dnl
1240 dnl Test for __attribute__
1241 dnl
1242
1243 AC_DEFUN(AC_C___ATTRIBUTE__, [
1244 AC_MSG_CHECKING(for __attribute__)
1245 AC_CACHE_VAL(ac_cv___attribute__, [
1246 AC_TRY_COMPILE([
1247 #include <stdlib.h>
1248 ],
1249 [
1250 static void foo(void) __attribute__ ((noreturn));
1251
1252 static void
1253 foo(void)
1254 {
1255 exit(1);
1256 }
1257 ],
1258 ac_cv___attribute__=yes,
1259 ac_cv___attribute__=no)])
1260 if test "$ac_cv___attribute__" = "yes"; then
1261 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
1262 V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
1263 else
1264 V_DEFS="$V_DEFS -D_U_=\"\""
1265 fi
1266 AC_MSG_RESULT($ac_cv___attribute__)
1267 ])