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