1 dnl @(#) $Header: /tcpdump/master/tcpdump/aclocal.m4,v 1.110 2005-04-21 03:50:29 guy Exp $ (LBL)
3 dnl Copyright (c) 1995, 1996, 1997, 1998
4 dnl The Regents of the University of California. All rights reserved.
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.
22 dnl LBL autoconf macros
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
34 dnl AC_LBL_C_INIT(copt, incls)
42 dnl ac_cv_lbl_gcc_vers
45 AC_DEFUN(AC_LBL_C_INIT,
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])
53 if test "${srcdir}" != "." ; then
56 if test "${CFLAGS+set}" = set; then
59 if test -z "$CC" ; then
63 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
64 if test $SHLICC2 = yes ; then
71 if test -z "$CC" -a "$with_gcc" = no ; then
76 if test "$GCC" = yes ; then
77 if test "$SHLICC2" = yes ; then
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]]]*//' \
88 AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
89 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
94 AC_MSG_CHECKING(that $CC handles ansi prototypes)
95 AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes,
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
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,
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)
119 CFLAGS="$savedcflags"
120 V_CCOPT="-Aa $V_CCOPT"
121 AC_DEFINE(_HPUX_SOURCE)
125 AC_MSG_ERROR(see the INSTALL doc for more info)
129 $2="$$2 -I/usr/local/include"
130 LDFLAGS="$LDFLAGS -L/usr/local/lib"
135 V_CCOPT="$V_CCOPT -xansi -signed -O"
139 V_CCOPT="$V_CCOPT -std1 -O"
143 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
144 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
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
162 # Try compiling a sample of the type of code that appears in
163 # gencode.c with "inline", "__inline__", and "__inline".
165 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
166 # as it just tests whether a function returning "int" can be inlined;
167 # at least some versions of HP's C compiler can inline that, but can't
168 # inline a function that returns a struct pointer.
170 AC_DEFUN(AC_LBL_C_INLINE,
171 [AC_MSG_CHECKING(for inline)
172 AC_CACHE_VAL(ac_cv_lbl_inline, [
175 for ac_lbl_inline in inline __inline__ __inline
178 [#define inline $ac_lbl_inline
179 static inline struct iltest *foo(void);
185 static inline struct iltest *
188 static struct iltest xxx;
191 }],,ac_lbl_cc_inline=yes,)
192 if test "$ac_lbl_cc_inline" = yes ; then
196 if test "$ac_lbl_cc_inline" = yes ; then
197 ac_cv_lbl_inline=$ac_lbl_inline
199 if test ! -z "$ac_cv_lbl_inline" ; then
200 AC_MSG_RESULT($ac_cv_lbl_inline)
204 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
207 dnl Use pfopen.c if available and pfopen() not in standard libraries
209 dnl Look for libpcap in ..
210 dnl Use the installed libpcap if there is no local version
214 dnl AC_LBL_LIBPCAP(pcapdep, incls)
219 dnl $2 (incls appended)
223 AC_DEFUN(AC_LBL_LIBPCAP,
224 [AC_REQUIRE([AC_LBL_LIBRARY_NET])
226 dnl save a copy before locating libpcap.a
229 pfopen=/usr/examples/packetfilter/pfopen.c
230 if test -f $pfopen ; then
231 AC_CHECK_FUNCS(pfopen)
232 if test $ac_cv_func_pfopen = "no" ; then
233 AC_MSG_RESULT(Using $pfopen)
237 AC_MSG_CHECKING(for local pcap library)
240 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
241 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
242 for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
243 basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'`
244 if test $lastdir = $basedir ; then
245 dnl skip alphas when an actual release is present
249 if test -r $dir/libpcap.a ; then
250 libpcap=$dir/libpcap.a
252 dnl continue and select the last one that exists
255 if test $libpcap = FAIL ; then
256 AC_MSG_RESULT(not found)
257 AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
258 if test $libpcap = FAIL ; then
259 AC_MSG_ERROR(see the INSTALL doc for more info)
262 dnl Good old Red Hat Linux puts "pcap.h" in
263 dnl "/usr/include/pcap"; had the LBL folks done so,
264 dnl that would have been a good idea, but for
265 dnl the Red Hat folks to do so just breaks source
266 dnl compatibility with other systems.
268 dnl We work around this by assuming that, as we didn't
269 dnl find a local libpcap, libpcap is in /usr/lib or
270 dnl /usr/local/lib and that the corresponding header
271 dnl file is under one of those directories; if we don't
272 dnl find it in either of those directories, we check to
273 dnl see if it's in a "pcap" subdirectory of them and,
274 dnl if so, add that subdirectory to the "-I" list.
276 AC_MSG_CHECKING(for extraneous pcap header directories)
277 if test \( ! -r /usr/local/include/pcap.h \) -a \
278 \( ! -r /usr/include/pcap.h \); then
279 if test -r /usr/local/include/pcap/pcap.h; then
280 d="/usr/local/include/pcap"
281 elif test -r /usr/include/pcap/pcap.h; then
282 d="/usr/include/pcap"
285 if test -z "$d" ; then
286 AC_MSG_RESULT(not found)
289 AC_MSG_RESULT(found -- -I$d added)
293 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
294 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
295 if test -r $d/pcap.h; then
297 elif test -r $places/pcap.h; then
300 AC_MSG_ERROR(cannot find pcap.h, see INSTALL)
302 AC_MSG_RESULT($libpcap)
304 LIBS="$libpcap $LIBS"
308 pseexe="/lib/pse.exp"
309 AC_MSG_CHECKING(for $pseexe)
310 if test -f $pseexe ; then
312 LIBS="$LIBS -I:$pseexe"
315 # We need "-lodm" and "-lcfg", as libpcap requires them on
316 # AIX, and we just build a static libpcap.a and thus can't
317 # arrange that when you link with libpcap you automatically
318 # link with those libraries.
320 LIBS="$LIBS -lodm -lcfg"
325 dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()",
326 dnl and "pcap_datalink_name_to_val()", and use substitute versions
327 dnl if they're not present
329 AC_CHECK_FUNC(pcap_list_datalinks,
330 AC_DEFINE(HAVE_PCAP_LIST_DATALINKS),
331 AC_LIBOBJ(datalinks))
332 AC_CHECK_FUNC(pcap_set_datalink,
333 AC_DEFINE(HAVE_PCAP_SET_DATALINK))
334 AC_CHECK_FUNC(pcap_datalink_name_to_val,
336 AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL)
337 AC_CHECK_FUNC(pcap_datalink_val_to_description,
338 AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION),
344 dnl Check for "pcap_breakloop()"; you can't substitute for it if
345 dnl it's absent (it has hooks into the live capture routines),
346 dnl so just define the HAVE_ value if it's there.
348 AC_CHECK_FUNCS(pcap_breakloop)
352 dnl Define RETSIGTYPE and RETSIGVAL
356 dnl AC_LBL_TYPE_SIGNAL
360 dnl RETSIGTYPE (defined)
361 dnl RETSIGVAL (defined)
363 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
364 [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
366 if test "$ac_cv_type_signal" = void ; then
367 AC_DEFINE(RETSIGVAL,)
369 AC_DEFINE(RETSIGVAL,(0))
374 AC_DEFINE(_BSD_SIGNALS)
378 dnl prefer sigaction() to sigset()
379 AC_CHECK_FUNCS(sigaction)
380 if test $ac_cv_func_sigaction = no ; then
381 AC_CHECK_FUNCS(sigset)
387 dnl If using gcc, make sure we have ANSI ioctl definitions
391 dnl AC_LBL_FIXINCLUDES
393 AC_DEFUN(AC_LBL_FIXINCLUDES,
394 [if test "$GCC" = yes ; then
395 AC_MSG_CHECKING(for ANSI ioctl definitions)
396 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
399 * This generates a "duplicate case value" when fixincludes
402 # include <sys/types.h>
403 # include <sys/time.h>
404 # include <sys/ioctl.h>
405 # ifdef HAVE_SYS_IOCCOM_H
406 # include <sys/ioccom.h>
412 ac_cv_lbl_gcc_fixincludes=yes,
413 ac_cv_lbl_gcc_fixincludes=no))
414 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
415 if test $ac_cv_lbl_gcc_fixincludes = no ; then
416 # Don't cache failure
417 unset ac_cv_lbl_gcc_fixincludes
418 AC_MSG_ERROR(see the INSTALL for more info)
423 dnl Check for flex, default to lex
424 dnl Require flex 2.4 or higher
425 dnl Check for bison, default to yacc
426 dnl Default to lex/yacc if both flex and bison are not available
427 dnl Define the yy prefix string if using flex and bison
431 dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix)
436 dnl $2 (yacc appended)
437 dnl $3 (optional flex and bison -P prefix)
439 AC_DEFUN(AC_LBL_LEX_AND_YACC,
440 [AC_ARG_WITH(flex, [ --without-flex don't use flex])
441 AC_ARG_WITH(bison, [ --without-bison don't use bison])
442 if test "$with_flex" = no ; then
445 AC_CHECK_PROGS($1, flex, lex)
447 if test "$$1" = flex ; then
448 # The -V flag was added in 2.4
449 AC_MSG_CHECKING(for flex 2.4 or higher)
450 AC_CACHE_VAL(ac_cv_lbl_flex_v24,
451 if flex -V >/dev/null 2>&1; then
452 ac_cv_lbl_flex_v24=yes
454 ac_cv_lbl_flex_v24=no
456 AC_MSG_RESULT($ac_cv_lbl_flex_v24)
457 if test $ac_cv_lbl_flex_v24 = no ; then
458 s="2.4 or higher required"
459 AC_MSG_WARN(ignoring obsolete flex executable ($s))
463 if test "$with_bison" = no ; then
466 AC_CHECK_PROGS($2, bison, yacc)
468 if test "$$2" = bison ; then
471 if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then
472 AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc)
476 if test "$$1" = flex -a -n "$3" ; then
482 dnl Checks to see if union wait is used with WEXITSTATUS()
486 dnl AC_LBL_UNION_WAIT
490 dnl DECLWAITSTATUS (defined)
492 AC_DEFUN(AC_LBL_UNION_WAIT,
493 [AC_MSG_CHECKING(if union wait is used)
494 AC_CACHE_VAL(ac_cv_lbl_union_wait,
496 # include <sys/types.h>
497 # include <sys/wait.h>],
499 u_int i = WEXITSTATUS(status);
500 u_int j = waitpid(0, &status, 0);],
501 ac_cv_lbl_union_wait=no,
502 ac_cv_lbl_union_wait=yes))
503 AC_MSG_RESULT($ac_cv_lbl_union_wait)
504 if test $ac_cv_lbl_union_wait = yes ; then
505 AC_DEFINE(DECLWAITSTATUS,union wait)
507 AC_DEFINE(DECLWAITSTATUS,int)
511 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
515 dnl AC_LBL_SOCKADDR_SA_LEN
519 dnl HAVE_SOCKADDR_SA_LEN (defined)
521 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
522 [AC_MSG_CHECKING(if sockaddr struct has sa_len member)
523 AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
525 # include <sys/types.h>
526 # include <sys/socket.h>],
527 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
528 ac_cv_lbl_sockaddr_has_sa_len=yes,
529 ac_cv_lbl_sockaddr_has_sa_len=no))
530 AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
531 if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
532 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
536 dnl Checks to see if -R is used
540 dnl AC_LBL_HAVE_RUN_PATH
544 dnl ac_cv_lbl_have_run_path (yes or no)
546 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
547 [AC_MSG_CHECKING(for ${CC-cc} -R)
548 AC_CACHE_VAL(ac_cv_lbl_have_run_path,
549 [echo 'main(){}' > conftest.c
550 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
551 if test ! -s conftest.out ; then
552 ac_cv_lbl_have_run_path=yes
554 ac_cv_lbl_have_run_path=no
557 AC_MSG_RESULT($ac_cv_lbl_have_run_path)
561 dnl Check whether a given format can be used to print 64-bit integers
563 AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT,
565 AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
570 # ifdef HAVE_INTTYPES_H
571 #include <inttypes.h>
573 # ifdef HAVE_SYS_BITYPES_H
574 #include <sys/bitypes.h>
577 #include <sys/types.h>
583 sprintf(strbuf, "%016$1x", t << 32);
584 if (strcmp(strbuf, "0000000100000000") == 0)
592 AC_DEFINE(PRId64, "$1d")
593 AC_DEFINE(PRIo64, "$1o")
594 AC_DEFINE(PRIx64, "$1x")
595 AC_DEFINE(PRIu64, "$1u")
605 dnl Checks to see if unaligned memory accesses fail
609 dnl AC_LBL_UNALIGNED_ACCESS
613 dnl LBL_ALIGN (DEFINED)
615 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
616 [AC_MSG_CHECKING(if unaligned accesses fail)
617 AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
621 # These are CPU types where:
623 # the CPU faults on an unaligned access, but at least some
624 # OSes that support that CPU catch the fault and simulate
625 # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
626 # the simulation is slow, so we don't want to use it;
628 # the CPU, I infer (from the old
630 # XXX: should also check that they don't do weird things (like on arm)
632 # comment) doesn't fault on unaligned accesses, but doesn't
633 # do a normal unaligned fetch, either (e.g., presumably, ARM);
635 # for whatever reason, the test program doesn't work
636 # (this has been claimed to be the case for several of those
637 # CPUs - I don't know what the problem is; the problem
638 # was reported as "the test program dumps core" for SuperH,
639 # but that's what the test program is *supposed* to do -
640 # it dumps core before it writes anything, so the test
641 # for an empty output file should find an empty output
642 # file and conclude that unaligned accesses don't work).
644 # This run-time test won't work if you're cross-compiling, so
645 # in order to support cross-compiling for a particular CPU,
646 # we have to wire in the list of CPU types anyway, as far as
647 # I know, so perhaps we should just have a set of CPUs on
648 # which we know it doesn't work, a set of CPUs on which we
649 # know it does work, and have the script just fail on other
650 # cpu types and update it when such a failure occurs.
652 alpha*|arm*|hp*|mips*|sh*|sparc*|ia64|nv1)
653 ac_cv_lbl_unaligned_fail=yes
657 cat >conftest.c <<EOF
658 # include <sys/types.h>
659 # include <sys/wait.h>
661 unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
666 /* avoid "core dumped" message */
672 pid = waitpid(pid, &status, 0);
675 exit(!WIFEXITED(status));
678 i = *(unsigned int *)&a[[1]];
683 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
684 conftest.c $LIBS >/dev/null 2>&1
685 if test ! -x conftest ; then
686 dnl failed to compile for some reason
687 ac_cv_lbl_unaligned_fail=yes
689 ./conftest >conftest.out
690 if test ! -s conftest.out ; then
691 ac_cv_lbl_unaligned_fail=yes
693 ac_cv_lbl_unaligned_fail=no
696 rm -f conftest* core core.conftest
699 AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
700 if test $ac_cv_lbl_unaligned_fail = yes ; then
705 dnl If using gcc and the file .devel exists:
706 dnl Compile with -g (if supported) and -Wall
707 dnl If using gcc 2 or later, do extra prototype checking and some other
709 dnl If an os prototype include exists, symlink os-proto.h to it
713 dnl AC_LBL_DEVEL(copt)
717 dnl $1 (copt appended)
718 dnl HAVE_OS_PROTO_H (defined)
719 dnl os-proto.h (symlinked)
721 AC_DEFUN(AC_LBL_DEVEL,
723 if test "${LBL_CFLAGS+set}" = set; then
724 $1="$$1 ${LBL_CFLAGS}"
726 if test -f .devel ; then
727 if test "$GCC" = yes ; then
728 if test "${LBL_CFLAGS+set}" != set; then
729 if test "$ac_cv_prog_cc_g" = yes ; then
733 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
734 $1="$$1 -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -W"
741 V_CCOPT="$V_CCOPT -n32"
748 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
750 if test -f $name ; then
751 ln -s $name os-proto.h
752 AC_DEFINE(HAVE_OS_PROTO_H)
754 AC_MSG_WARN(can't find $name)
759 dnl Improved version of AC_CHECK_LIB
761 dnl Thanks to John Hawkinson (jhawk@mit.edu)
765 dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
766 dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
772 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
773 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
774 dnl We keep it around for reference purposes in case it's ever
775 dnl useful in the future.
778 define(AC_LBL_CHECK_LIB,
779 [AC_MSG_CHECKING([for $2 in -l$1])
780 dnl Use a cache variable name containing the library, function
781 dnl name, and extra libraries to link with, because the test really is
782 dnl for library $1 defining function $2, when linked with potinal
783 dnl library $5, not just for library $1. Separate tests with the same
784 dnl $1 and different $2's or $5's may have different results.
785 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
786 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
787 [ac_save_LIBS="$LIBS"
790 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
791 [/* Override any gcc2 internal prototype to avoid an error. */
792 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
796 [/* We use char because int might match the return type of a gcc2
797 builtin and then its argument prototype would still apply. */
801 eval "ac_cv_lbl_lib_$ac_lib_var=yes",
802 eval "ac_cv_lbl_lib_$ac_lib_var=no")
805 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
809 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
810 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
812 AC_DEFINE_UNQUOTED($ac_tr_lib)
823 dnl AC_LBL_LIBRARY_NET
825 dnl This test is for network applications that need socket() and
826 dnl gethostbyname() -ish functions. Under Solaris, those applications
827 dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
828 dnl with "-lnsl" but should *not* link with "-lsocket" because
829 dnl libsocket.a breaks a number of things (for instance:
830 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
831 dnl versions of IRIX).
833 dnl Unfortunately, many application developers are not aware of this,
834 dnl and mistakenly write tests that cause -lsocket to be used under
835 dnl IRIX. It is also easy to write tests that cause -lnsl to be used
836 dnl under operating systems where neither are necessary (or useful),
837 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
839 dnl This test exists so that every application developer does not test
840 dnl this in a different, and subtly broken fashion.
842 dnl It has been argued that this test should be broken up into two
843 dnl seperate tests, one for the resolver libraries, and one for the
844 dnl libraries necessary for using Sockets API. Unfortunately, the two
845 dnl are carefully intertwined and allowing the autoconf user to use
846 dnl them independantly potentially results in unfortunate ordering
847 dnl dependancies -- as such, such component macros would have to
848 dnl carefully use indirection and be aware if the other components were
849 dnl executed. Since other autoconf macros do not go to this trouble,
850 dnl and almost no applications use sockets without the resolver, this
851 dnl complexity has not been implemented.
853 dnl The check for libresolv is in case you are attempting to link
854 dnl statically and happen to have a libresolv.a lying around (and no
857 AC_DEFUN(AC_LBL_LIBRARY_NET, [
858 # Most operating systems have gethostbyname() in the default searched
859 # libraries (i.e. libc):
860 # Some OSes (eg. Solaris) place it in libnsl
861 # Some strange OSes (SINIX) have it in libsocket:
862 AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
863 # Unfortunately libsocket sometimes depends on libnsl and
864 # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
865 if test "$ac_cv_search_gethostbyname" = "no"
867 AC_CHECK_LIB(socket, gethostbyname,
868 LIBS="-lsocket -lnsl $LIBS", , -lnsl)
870 AC_SEARCH_LIBS(socket, socket, ,
871 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
872 # DLPI needs putmsg under HPUX so test for -lstr while we're at it
873 AC_SEARCH_LIBS(putmsg, str)
876 dnl Copyright (c) 1999 WIDE Project. All rights reserved.
878 dnl Redistribution and use in source and binary forms, with or without
879 dnl modification, are permitted provided that the following conditions
881 dnl 1. Redistributions of source code must retain the above copyright
882 dnl notice, this list of conditions and the following disclaimer.
883 dnl 2. Redistributions in binary form must reproduce the above copyright
884 dnl notice, this list of conditions and the following disclaimer in the
885 dnl documentation and/or other materials provided with the distribution.
886 dnl 3. Neither the name of the project nor the names of its contributors
887 dnl may be used to endorse or promote products derived from this software
888 dnl without specific prior written permission.
890 dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
891 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
892 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
893 dnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
894 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
895 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
896 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
897 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
898 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
899 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
903 dnl Checks to see if AF_INET6 is defined
904 AC_DEFUN(AC_CHECK_AF_INET6, [
905 AC_MSG_CHECKING(for AF_INET6)
908 # include <sys/types.h>
909 # include <sys/socket.h>],
914 if test $$1 = yes ; then
915 AC_DEFINE(HAVE_AF_INET6)
920 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
921 dnl borrowed from LBL libpcap
922 AC_DEFUN(AC_CHECK_SA_LEN, [
923 AC_MSG_CHECKING(if sockaddr struct has sa_len member)
926 # include <sys/types.h>
927 # include <sys/socket.h>],
928 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
932 if test $$1 = yes ; then
933 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
938 dnl Checks for portable prototype declaration macro
939 AC_DEFUN(AC_CHECK_PORTABLE_PROTO, [
940 AC_MSG_CHECKING(for __P)
943 # include <unistd.h>],
948 if test $$1 = yes; then
949 AC_DEFINE(HAVE_PORTABLE_PROTOTYPE)
953 dnl checks for u_intXX_t
954 AC_DEFUN(AC_CHECK_BITTYPES, [
956 dnl check for u_int8_t
957 AC_MSG_CHECKING(for u_int8_t)
958 AC_CACHE_VAL(ac_cv_u_int8_t,
960 # include <sys/types.h>],
964 AC_MSG_RESULT($ac_cv_u_int8_t)
965 if test $ac_cv_u_int8_t = yes; then
966 AC_DEFINE(HAVE_U_INT8_T)
970 dnl check for u_int16_t
971 AC_MSG_CHECKING(for u_int16_t)
972 AC_CACHE_VAL(ac_cv_u_int16_t,
974 # include <sys/types.h>],
978 AC_MSG_RESULT($ac_cv_u_int16_t)
979 if test $ac_cv_u_int16_t = yes; then
980 AC_DEFINE(HAVE_U_INT16_T)
984 dnl check for u_int32_t
985 AC_MSG_CHECKING(for u_int32_t)
986 AC_CACHE_VAL(ac_cv_u_int32_t,
988 # include <sys/types.h>],
992 AC_MSG_RESULT($ac_cv_u_int32_t)
993 if test $ac_cv_u_int32_t = yes; then
994 AC_DEFINE(HAVE_U_INT32_T)
998 dnl check for u_int64_t
999 AC_MSG_CHECKING(for u_int64_t)
1000 AC_CACHE_VAL(ac_cv_u_int64_t,
1002 # include <sys/types.h>],
1004 ac_cv_u_int64_t=yes,
1005 ac_cv_u_int64_t=no))
1006 AC_MSG_RESULT($ac_cv_u_int64_t)
1007 if test $ac_cv_u_int64_t = yes; then
1008 AC_DEFINE(HAVE_U_INT64_T)
1015 dnl Checks for addrinfo structure
1016 AC_DEFUN(AC_STRUCT_ADDRINFO, [
1017 AC_MSG_CHECKING(for addrinfo)
1020 # include <netdb.h>],
1021 [struct addrinfo a],
1025 if test $$1 = yes; then
1026 AC_DEFINE(HAVE_ADDRINFO)
1028 AC_DEFINE(NEED_ADDRINFO_H)
1033 dnl Checks for NI_MAXSERV
1034 AC_DEFUN(AC_NI_MAXSERV, [
1035 AC_MSG_CHECKING(for NI_MAXSERV)
1037 AC_EGREP_CPP(yes, [#include <netdb.h>
1044 if test $$1 != yes; then
1045 AC_DEFINE(NEED_ADDRINFO_H)
1050 dnl Checks for NI_NAMEREQD
1051 AC_DEFUN(AC_NI_NAMEREQD, [
1052 AC_MSG_CHECKING(for NI_NAMEREQD)
1054 AC_EGREP_CPP(yes, [#include <netdb.h>
1061 if test $$1 != yes; then
1062 AC_DEFINE(NEED_ADDRINFO_H)
1067 dnl Checks for sockaddr_storage structure
1068 AC_DEFUN(AC_STRUCT_SA_STORAGE, [
1069 AC_MSG_CHECKING(for sockaddr_storage)
1072 # include <sys/types.h>
1073 # include <sys/socket.h>],
1074 [struct sockaddr_storage s],
1078 if test $$1 = yes; then
1079 AC_DEFINE(HAVE_SOCKADDR_STORAGE)
1084 dnl Checks for macro of IP address size
1085 AC_DEFUN(AC_CHECK_ADDRSZ, [
1087 dnl check for INADDRSZ
1088 AC_MSG_CHECKING(for INADDRSZ)
1089 AC_CACHE_VAL(ac_cv_inaddrsz,
1091 # include <arpa/nameser.h>],
1095 AC_MSG_RESULT($ac_cv_inaddrsz)
1096 if test $ac_cv_inaddrsz = yes; then
1097 AC_DEFINE(HAVE_INADDRSZ)
1101 dnl check for IN6ADDRSZ
1102 AC_MSG_CHECKING(for IN6ADDRSZ)
1103 AC_CACHE_VAL(ac_cv_in6addrsz,
1105 # include <arpa/nameser.h>],
1106 [int a = IN6ADDRSZ],
1107 ac_cv_in6addrsz=yes,
1108 ac_cv_in6addrsz=no))
1109 AC_MSG_RESULT($ac_cv_in6addrsz)
1110 if test $ac_cv_in6addrsz = yes; then
1111 AC_DEFINE(HAVE_IN6ADDRSZ)
1118 dnl check for RES_USE_INET6
1119 AC_DEFUN(AC_CHECK_RES_USE_INET6, [
1120 AC_MSG_CHECKING(for RES_USE_INET6)
1123 # include <sys/types.h>
1124 # include <netinet/in.h>
1125 # include <resolv.h>],
1126 [int a = RES_USE_INET6],
1130 if test $$1 = yes; then
1131 AC_DEFINE(HAVE_RES_USE_INET6)
1137 AC_DEFUN(AC_CHECK_AAAA, [
1138 AC_MSG_CHECKING(for AAAA)
1141 # include <sys/types.h>
1142 # include <arpa/nameser.h>],
1147 if test $$1 = yes; then
1148 AC_DEFINE(HAVE_AAAA)
1153 dnl check for struct res_state_ext
1154 AC_DEFUN(AC_STRUCT_RES_STATE_EXT, [
1155 AC_MSG_CHECKING(for res_state_ext)
1158 # include <sys/types.h>
1159 # include <netinet/in.h>
1160 # include <netinet6/in6.h>
1161 # include <resolv.h>],
1162 [struct __res_state_ext e],
1166 if test $$1 = yes; then
1167 AC_DEFINE(HAVE_RES_STATE_EXT)
1172 dnl check for struct res_state_ext
1173 AC_DEFUN(AC_STRUCT_RES_STATE, [
1174 AC_MSG_CHECKING(for nsort in res_state)
1177 # include <sys/types.h>
1178 # include <netinet/in.h>
1179 # include <netinet6/in6.h>
1180 # include <resolv.h>],
1181 [struct __res_state e; e.nsort = 0],
1185 if test $$1 = yes; then
1186 AC_DEFINE(HAVE_NEW_RES_STATE)
1191 dnl check for h_errno
1192 AC_DEFUN(AC_VAR_H_ERRNO, [
1193 AC_MSG_CHECKING(for h_errno)
1194 AC_CACHE_VAL(ac_cv_var_h_errno,
1196 # include <sys/types.h>
1197 # include <netdb.h>],
1198 [int foo = h_errno;],
1199 ac_cv_var_h_errno=yes,
1200 ac_cv_var_h_errno=no))
1201 AC_MSG_RESULT($ac_cv_var_h_errno)
1202 if test "$ac_cv_var_h_errno" = "yes"; then
1203 AC_DEFINE(HAVE_H_ERRNO)
1208 dnl Test for __attribute__
1211 AC_DEFUN(AC_C___ATTRIBUTE__, [
1212 AC_MSG_CHECKING(for __attribute__)
1213 AC_CACHE_VAL(ac_cv___attribute__, [
1218 static void foo(void) __attribute__ ((noreturn));
1227 main(int argc, char **argv)
1232 ac_cv___attribute__=yes,
1233 ac_cv___attribute__=no)])
1234 if test "$ac_cv___attribute__" = "yes"; then
1235 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
1236 V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
1238 V_DEFS="$V_DEFS -D_U_=\"\""
1240 AC_MSG_RESULT($ac_cv___attribute__)