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