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