Home | History | Annotate | Download | only in tcpdump
      1 dnl @(#) $Header: /tcpdump/master/tcpdump/aclocal.m4,v 1.116 2008-09-25 21:45:50 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 Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC.
     27 dnl
     28 dnl It appears that newer versions of autoconf (2.64 and later) will,
     29 dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the
     30 dnl beginning of the macro, even if the macro itself calls AC_PROG_CC.
     31 dnl See the "Prerequisite Macros" and "Expanded Before Required" sections
     32 dnl in the Autoconf documentation.
     33 dnl
     34 dnl This causes a steaming heap of fail in our case, as we were, in
     35 dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC,
     36 dnl calling AC_PROG_CC, and then doing the tests we now do in
     37 dnl AC_LBL_C_INIT.  Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC,
     38 dnl and AC_LBL_C_INIT at the top level.
     39 dnl
     40 AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC,
     41 [
     42     AC_BEFORE([$0], [AC_LBL_C_INIT])
     43     AC_BEFORE([$0], [AC_PROG_CC])
     44     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
     45     AC_BEFORE([$0], [AC_LBL_DEVEL])
     46     AC_ARG_WITH(gcc, [  --without-gcc           don't use gcc])
     47     $1=""
     48     if test "${srcdir}" != "." ; then
     49 	    $1="-I$srcdir"
     50     fi
     51     if test "${CFLAGS+set}" = set; then
     52 	    LBL_CFLAGS="$CFLAGS"
     53     fi
     54     if test -z "$CC" ; then
     55 	    case "$host_os" in
     56 
     57 	    bsdi*)
     58 		    AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
     59 		    if test $SHLICC2 = yes ; then
     60 			    CC=shlicc2
     61 			    export CC
     62 		    fi
     63 		    ;;
     64 	    esac
     65     fi
     66     if test -z "$CC" -a "$with_gcc" = no ; then
     67 	    CC=cc
     68 	    export CC
     69     fi
     70 ])
     71 
     72 dnl
     73 dnl Determine which compiler we're using (cc or gcc)
     74 dnl If using gcc, determine the version number
     75 dnl If using cc:
     76 dnl     require that it support ansi prototypes
     77 dnl     use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to
     78 dnl     do that ourselves for gcc)
     79 dnl     add -g flags, as appropriate
     80 dnl     explicitly specify /usr/local/include
     81 dnl
     82 dnl NOTE WELL: with newer versions of autoconf, "gcc" means any compiler
     83 dnl that defines __GNUC__, which means clang, for example, counts as "gcc".
     84 dnl
     85 dnl usage:
     86 dnl
     87 dnl	AC_LBL_C_INIT(copt, incls)
     88 dnl
     89 dnl results:
     90 dnl
     91 dnl	$1 (copt set)
     92 dnl	$2 (incls set)
     93 dnl	CC
     94 dnl	LDFLAGS
     95 dnl	LBL_CFLAGS
     96 dnl
     97 AC_DEFUN(AC_LBL_C_INIT,
     98 [
     99     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
    100     AC_BEFORE([$0], [AC_LBL_DEVEL])
    101     AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT])
    102     if test "$GCC" = yes ; then
    103 	    #
    104 	    # -Werror forces warnings to be errors.
    105 	    #
    106 	    ac_lbl_cc_force_warning_errors=-Werror
    107 
    108 	    #
    109 	    # Use -ffloat-store so that, on 32-bit x86, we don't
    110 	    # do 80-bit arithmetic with the FPU; that way we should
    111 	    # get the same results for floating-point calculations
    112 	    # on x86-32 and x86-64.
    113 	    #
    114 	    AC_LBL_CHECK_COMPILER_OPT($1, -ffloat-store)
    115     else
    116 	    $2="$$2 -I/usr/local/include"
    117 	    LDFLAGS="$LDFLAGS -L/usr/local/lib"
    118 
    119 	    case "$host_os" in
    120 
    121 	    darwin*)
    122 		    #
    123 		    # This is assumed either to be GCC or clang, both
    124 		    # of which use -Werror to force warnings to be errors.
    125 		    #
    126 		    ac_lbl_cc_force_warning_errors=-Werror
    127 		    ;;
    128 
    129 	    hpux*)
    130 		    #
    131 		    # HP C, which is what we presume we're using, doesn't
    132 		    # exit with a non-zero exit status if we hand it an
    133 		    # invalid -W flag, can't be forced to do so even with
    134 		    # +We, and doesn't handle GCC-style -W flags, so we
    135 		    # don't want to try using GCC-style -W flags.
    136 		    #
    137 		    ac_lbl_cc_dont_try_gcc_dashW=yes
    138 		    ;;
    139 
    140 	    irix*)
    141 		    #
    142 		    # MIPS C, which is what we presume we're using, doesn't
    143 		    # necessarily exit with a non-zero exit status if we
    144 		    # hand it an invalid -W flag, can't be forced to do
    145 		    # so, and doesn't handle GCC-style -W flags, so we
    146 		    # don't want to try using GCC-style -W flags.
    147 		    #
    148 		    ac_lbl_cc_dont_try_gcc_dashW=yes
    149 		    #
    150 		    # It also, apparently, defaults to "char" being
    151 		    # unsigned, unlike most other C implementations;
    152 		    # I suppose we could say "signed char" whenever
    153 		    # we want to guarantee a signed "char", but let's
    154 		    # just force signed chars.
    155 		    #
    156 		    # -xansi is normally the default, but the
    157 		    # configure script was setting it; perhaps -cckr
    158 		    # was the default in the Old Days.  (Then again,
    159 		    # that would probably be for backwards compatibility
    160 		    # in the days when ANSI C was Shiny and New, i.e.
    161 		    # 1989 and the early '90's, so maybe we can just
    162 		    # drop support for those compilers.)
    163 		    #
    164 		    # -g is equivalent to -g2, which turns off
    165 		    # optimization; we choose -g3, which generates
    166 		    # debugging information but doesn't turn off
    167 		    # optimization (even if the optimization would
    168 		    # cause inaccuracies in debugging).
    169 		    #
    170 		    $1="$$1 -xansi -signed -g3"
    171 		    ;;
    172 
    173 	    osf*)
    174 	    	    #
    175 		    # Presumed to be DEC OSF/1, Digital UNIX, or
    176 		    # Tru64 UNIX.
    177 		    #
    178 		    # The DEC C compiler, which is what we presume we're
    179 		    # using, doesn't exit with a non-zero exit status if we
    180 		    # hand it an invalid -W flag, can't be forced to do
    181 		    # so, and doesn't handle GCC-style -W flags, so we
    182 		    # don't want to try using GCC-style -W flags.
    183 		    #
    184 		    ac_lbl_cc_dont_try_gcc_dashW=yes
    185 		    #
    186 		    # -g is equivalent to -g2, which turns off
    187 		    # optimization; we choose -g3, which generates
    188 		    # debugging information but doesn't turn off
    189 		    # optimization (even if the optimization would
    190 		    # cause inaccuracies in debugging).
    191 		    #
    192 		    $1="$$1 -g3"
    193 		    ;;
    194 
    195 	    solaris*)
    196 		    #
    197 		    # Assumed to be Sun C, which requires -errwarn to force
    198 		    # warnings to be treated as errors.
    199 		    #
    200 		    ac_lbl_cc_force_warning_errors=-errwarn
    201 		    ;;
    202 
    203 	    ultrix*)
    204 		    AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
    205 		    AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
    206 			AC_TRY_COMPILE(
    207 			    [#include <sys/types.h>],
    208 			    [struct a { int b; };
    209 			    void c(const struct a *)],
    210 			    ac_cv_lbl_cc_const_proto=yes,
    211 			    ac_cv_lbl_cc_const_proto=no))
    212 		    AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
    213 		    if test $ac_cv_lbl_cc_const_proto = no ; then
    214 			    AC_DEFINE(const,[],
    215 			        [to handle Ultrix compilers that don't support const in prototypes])
    216 		    fi
    217 		    ;;
    218 	    esac
    219 	    $1="$$1 -O"
    220     fi
    221 ])
    222 
    223 dnl
    224 dnl Check whether the compiler option specified as the second argument
    225 dnl is supported by the compiler and, if so, add it to the macro
    226 dnl specified as the first argument
    227 dnl
    228 AC_DEFUN(AC_LBL_CHECK_COMPILER_OPT,
    229     [
    230 	AC_MSG_CHECKING([whether the compiler supports the $2 option])
    231 	save_CFLAGS="$CFLAGS"
    232 	CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors $2"
    233 	AC_TRY_COMPILE(
    234 	    [],
    235 	    [return 0],
    236 	    [
    237 		AC_MSG_RESULT([yes])
    238 		CFLAGS="$save_CFLAGS"
    239 		$1="$$1 $2"
    240 	    ],
    241 	    [
    242 		AC_MSG_RESULT([no])
    243 		CFLAGS="$save_CFLAGS"
    244 	    ])
    245     ])
    246 
    247 dnl
    248 dnl Check whether the compiler supports an option to generate
    249 dnl Makefile-style dependency lines
    250 dnl
    251 dnl GCC uses -M for this.  Non-GCC compilers that support this
    252 dnl use a variety of flags, including but not limited to -M.
    253 dnl
    254 dnl We test whether the flag in question is supported, as older
    255 dnl versions of compilers might not support it.
    256 dnl
    257 dnl We don't try all the possible flags, just in case some flag means
    258 dnl "generate dependencies" on one compiler but means something else
    259 dnl on another compiler.
    260 dnl
    261 dnl Most compilers that support this send the output to the standard
    262 dnl output by default.  IBM's XLC, however, supports -M but sends
    263 dnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout
    264 dnl to work around that, so we don't bother with XLC.
    265 dnl
    266 AC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT,
    267     [
    268 	AC_MSG_CHECKING([whether the compiler supports generating dependencies])
    269 	if test "$GCC" = yes ; then
    270 		#
    271 		# GCC, or a compiler deemed to be GCC by AC_PROG_CC (even
    272 		# though it's not); we assume that, in this case, the flag
    273 		# would be -M.
    274 		#
    275 		ac_lbl_dependency_flag="-M"
    276 	else
    277 		#
    278 		# Not GCC or a compiler deemed to be GCC; what platform is
    279 		# this?  (We're assuming that if the compiler isn't GCC
    280 		# it's the compiler from the vendor of the OS; that won't
    281 		# necessarily be true for x86 platforms, where it might be
    282 		# the Intel C compiler.)
    283 		#
    284 		case "$host_os" in
    285 
    286 		irix*|osf*|darwin*)
    287 			#
    288 			# MIPS C for IRIX, DEC C, and clang all use -M.
    289 			#
    290 			ac_lbl_dependency_flag="-M"
    291 			;;
    292 
    293 		solaris*)
    294 			#
    295 			# Sun C uses -xM.
    296 			#
    297 			ac_lbl_dependency_flag="-xM"
    298 			;;
    299 
    300 		hpux*)
    301 			#
    302 			# HP's older C compilers don't support this.
    303 			# HP's newer C compilers support this with
    304 			# either +M or +Make; the older compilers
    305 			# interpret +M as something completely
    306 			# different, so we use +Make so we don't
    307 			# think it works with the older compilers.
    308 			#
    309 			ac_lbl_dependency_flag="+Make"
    310 			;;
    311 
    312 		*)
    313 			#
    314 			# Not one of the above; assume no support for
    315 			# generating dependencies.
    316 			#
    317 			ac_lbl_dependency_flag=""
    318 			;;
    319 		esac
    320 	fi
    321 
    322 	#
    323 	# Is ac_lbl_dependency_flag defined and, if so, does the compiler
    324 	# complain about it?
    325 	#
    326 	# Note: clang doesn't seem to exit with an error status when handed
    327 	# an unknown non-warning error, even if you pass it
    328 	# -Werror=unknown-warning-option.  However, it always supports
    329 	# -M, so the fact that this test always succeeds with clang
    330 	# isn't an issue.
    331 	#
    332 	if test ! -z "$ac_lbl_dependency_flag"; then
    333 		AC_LANG_CONFTEST(
    334 		    [AC_LANG_SOURCE([[int main(void) { return 0; }]])])
    335 		echo "$CC" $ac_lbl_dependency_flag conftest.c >&5
    336 		if "$CC" $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1; then
    337 			AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag])
    338 			DEPENDENCY_CFLAG="$ac_lbl_dependency_flag"
    339 			MKDEP='${srcdir}/mkdep'
    340 		else
    341 			AC_MSG_RESULT([no])
    342 			#
    343 			# We can't run mkdep, so have "make depend" do
    344 			# nothing.
    345 			#
    346 			MKDEP=:
    347 		fi
    348 		rm -rf conftest*
    349 	else
    350 		AC_MSG_RESULT([no])
    351 		#
    352 		# We can't run mkdep, so have "make depend" do
    353 		# nothing.
    354 		#
    355 		MKDEP=:
    356 	fi
    357 	AC_SUBST(DEPENDENCY_CFLAG)
    358 	AC_SUBST(MKDEP)
    359     ])
    360 
    361 #
    362 # Try compiling a sample of the type of code that appears in
    363 # gencode.c with "inline", "__inline__", and "__inline".
    364 #
    365 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
    366 # as it just tests whether a function returning "int" can be inlined;
    367 # at least some versions of HP's C compiler can inline that, but can't
    368 # inline a function that returns a struct pointer.
    369 #
    370 # Make sure we use the V_CCOPT flags, because some of those might
    371 # disable inlining.
    372 #
    373 AC_DEFUN(AC_LBL_C_INLINE,
    374     [AC_MSG_CHECKING(for inline)
    375     save_CFLAGS="$CFLAGS"
    376     CFLAGS="$V_CCOPT"
    377     AC_CACHE_VAL(ac_cv_lbl_inline, [
    378 	ac_cv_lbl_inline=""
    379 	ac_lbl_cc_inline=no
    380 	for ac_lbl_inline in inline __inline__ __inline
    381 	do
    382 	    AC_TRY_COMPILE(
    383 		[#define inline $ac_lbl_inline
    384 		static inline struct iltest *foo(void);
    385 		struct iltest {
    386 		    int iltest1;
    387 		    int iltest2;
    388 		};
    389 
    390 		static inline struct iltest *
    391 		foo()
    392 		{
    393 		    static struct iltest xxx;
    394 
    395 		    return &xxx;
    396 		}],,ac_lbl_cc_inline=yes,)
    397 	    if test "$ac_lbl_cc_inline" = yes ; then
    398 		break;
    399 	    fi
    400 	done
    401 	if test "$ac_lbl_cc_inline" = yes ; then
    402 	    ac_cv_lbl_inline=$ac_lbl_inline
    403 	fi])
    404     CFLAGS="$save_CFLAGS"
    405     if test ! -z "$ac_cv_lbl_inline" ; then
    406 	AC_MSG_RESULT($ac_cv_lbl_inline)
    407     else
    408 	AC_MSG_RESULT(no)
    409     fi
    410     AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
    411 
    412 dnl
    413 dnl Use pfopen.c if available and pfopen() not in standard libraries
    414 dnl Require libpcap
    415 dnl Look for libpcap in ..
    416 dnl Use the installed libpcap if there is no local version
    417 dnl
    418 dnl usage:
    419 dnl
    420 dnl	AC_LBL_LIBPCAP(pcapdep, incls)
    421 dnl
    422 dnl results:
    423 dnl
    424 dnl	$1 (pcapdep set)
    425 dnl	$2 (incls appended)
    426 dnl	LIBS
    427 dnl	LBL_LIBS
    428 dnl
    429 AC_DEFUN(AC_LBL_LIBPCAP,
    430     [AC_REQUIRE([AC_LBL_LIBRARY_NET])
    431     dnl
    432     dnl save a copy before locating libpcap.a
    433     dnl
    434     LBL_LIBS="$LIBS"
    435     pfopen=/usr/examples/packetfilter/pfopen.c
    436     if test -f $pfopen ; then
    437 	    AC_CHECK_FUNCS(pfopen)
    438 	    if test $ac_cv_func_pfopen = "no" ; then
    439 		    AC_MSG_RESULT(Using $pfopen)
    440 		    LIBS="$LIBS $pfopen"
    441 	    fi
    442     fi
    443     AC_MSG_CHECKING(for local pcap library)
    444     libpcap=FAIL
    445     lastdir=FAIL
    446     places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
    447 	egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'`
    448     for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
    449 	    basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//' | \
    450 	        sed -e 's/-PRE-GIT$//' `
    451 	    if test $lastdir = $basedir ; then
    452 		    dnl skip alphas when an actual release is present
    453 		    continue;
    454 	    fi
    455 	    lastdir=$dir
    456 	    if test -r $dir/libpcap.a ; then
    457 		    libpcap=$dir/libpcap.a
    458 		    d=$dir
    459 		    dnl continue and select the last one that exists
    460 	    fi
    461     done
    462     if test $libpcap = FAIL ; then
    463 	    AC_MSG_RESULT(not found)
    464 
    465 	    #
    466 	    # Look for pcap-config.
    467 	    #
    468 	    AC_PATH_TOOL(PCAP_CONFIG, pcap-config)
    469 	    if test -n "$PCAP_CONFIG" ; then
    470 		#
    471 		# Found - use it to get the include flags for
    472 		# libpcap and the flags to link with libpcap.
    473 		#
    474 		# Please read section 11.6 "Shell Substitutions"
    475 		# in the autoconf manual before doing anything
    476 		# to this that involves quoting.  Especially note
    477 		# the statement "There is just no portable way to use
    478 		# double-quoted strings inside double-quoted back-quoted
    479 		# expressions (pfew!)."
    480 		#
    481 		cflags=`"$PCAP_CONFIG" --cflags`
    482 		$2="$cflags $$2"
    483 		libpcap=`"$PCAP_CONFIG" --libs`
    484 	    else
    485 		#
    486 		# Not found; look for pcap.
    487 		#
    488 		AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
    489 		if test $libpcap = FAIL ; then
    490 		    AC_MSG_ERROR(see the INSTALL doc for more info)
    491 		fi
    492 		dnl
    493 		dnl Some versions of Red Hat Linux put "pcap.h" in
    494 		dnl "/usr/include/pcap"; had the LBL folks done so,
    495 		dnl that would have been a good idea, but for
    496 		dnl the Red Hat folks to do so just breaks source
    497 		dnl compatibility with other systems.
    498 		dnl
    499 		dnl We work around this by assuming that, as we didn't
    500 		dnl find a local libpcap, libpcap is in /usr/lib or
    501 		dnl /usr/local/lib and that the corresponding header
    502 		dnl file is under one of those directories; if we don't
    503 		dnl find it in either of those directories, we check to
    504 		dnl see if it's in a "pcap" subdirectory of them and,
    505 		dnl if so, add that subdirectory to the "-I" list.
    506 		dnl
    507 		dnl (We now also put pcap.h in /usr/include/pcap, but we
    508 		dnl leave behind a /usr/include/pcap.h that includes it,
    509 		dnl so you can still just include <pcap.h>.)
    510 		dnl
    511 		AC_MSG_CHECKING(for extraneous pcap header directories)
    512 		if test \( ! -r /usr/local/include/pcap.h \) -a \
    513 			\( ! -r /usr/include/pcap.h \); then
    514 		    if test -r /usr/local/include/pcap/pcap.h; then
    515 			d="/usr/local/include/pcap"
    516 		    elif test -r /usr/include/pcap/pcap.h; then
    517 			d="/usr/include/pcap"
    518 		    fi
    519 		fi
    520 		if test -z "$d" ; then
    521 		    AC_MSG_RESULT(not found)
    522 		else
    523 		    $2="-I$d $$2"
    524 		    AC_MSG_RESULT(found -- -I$d added)
    525 		fi
    526 	    fi
    527     else
    528 	    $1=$libpcap
    529 	    places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
    530     	 		egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
    531 	    if test -r $d/pcap.h; then
    532 		    $2="-I$d $$2"
    533 	    elif test -r $places/pcap.h; then
    534 		    $2="-I$places $$2"
    535 	    else
    536                     AC_MSG_ERROR(cannot find pcap.h, see INSTALL)
    537  	    fi
    538 	    AC_MSG_RESULT($libpcap)
    539 	    AC_PATH_PROG(PCAP_CONFIG, pcap-config,, $d)
    540 	    if test -n "$PCAP_CONFIG"; then
    541 		#
    542 		# The libpcap directory has a pcap-config script.
    543 		# Use it to get any additioal libraries needed
    544 		# to link with the libpcap archive library in
    545 		# that directory.
    546 		#
    547 		# Please read section 11.6 "Shell Substitutions"
    548 		# in the autoconf manual before doing anything
    549 		# to this that involves quoting.  Especially note
    550 		# the statement "There is just no portable way to use
    551 		# double-quoted strings inside double-quoted back-quoted
    552 		# expressions (pfew!)."
    553 		#
    554 		additional_libs=`"$PCAP_CONFIG" --additional-libs --static`
    555 		libpcap="$libpcap $additional_libs"
    556 	    fi
    557     fi
    558     LIBS="$libpcap $LIBS"
    559     if ! test -n "$PCAP_CONFIG" ; then
    560 	#
    561 	# We don't have pcap-config; find out any additional link flags
    562 	# we need.  (If we have pcap-config, we assume it tells us what
    563 	# we need.)
    564 	#
    565 	case "$host_os" in
    566 
    567 	aix*)
    568 	    #
    569 	    # If libpcap is DLPI-based, we have to use /lib/pse.exp if
    570 	    # present, as we use the STREAMS routines.
    571 	    #
    572 	    # (XXX - true only if we're linking with a static libpcap?)
    573 	    #
    574 	    pseexe="/lib/pse.exp"
    575 	    AC_MSG_CHECKING(for $pseexe)
    576 	    if test -f $pseexe ; then
    577 		    AC_MSG_RESULT(yes)
    578 		    LIBS="$LIBS -I:$pseexe"
    579 	    fi
    580 
    581 	    #
    582 	    # If libpcap is BPF-based, we need "-lodm" and "-lcfg", as
    583 	    # we use them to load the BPF module.
    584 	    #
    585 	    # (XXX - true only if we're linking with a static libpcap?)
    586 	    #
    587 	    LIBS="$LIBS -lodm -lcfg"
    588 	    ;;
    589 	esac
    590     fi
    591 
    592     dnl
    593     dnl Check for "pcap_loop()", to make sure we found a working
    594     dnl libpcap and have all the right other libraries with which
    595     dnl to link.  (Otherwise, the checks below will fail, not
    596     dnl because the routines are missing from the library, but
    597     dnl because we aren't linking properly with libpcap, and
    598     dnl that will cause confusing errors at build time.)
    599     dnl
    600     AC_CHECK_FUNC(pcap_loop,,
    601 	[
    602 	    AC_MSG_ERROR(
    603 [Report this to tcpdump-workers (a] lists.tcpdump.org, and include the
    604 config.log file in your report.  If you have downloaded libpcap from
    605 tcpdump.org, and built it yourself, please also include the config.log
    606 file from the libpcap source directory, the Makefile from the libpcap
    607 source directory, and the output of the make process for libpcap, as
    608 this could be a problem with the libpcap that was built, and we will
    609 not be able to determine why this is happening, and thus will not be
    610 able to fix it, without that information, as we have not been able to
    611 reproduce this problem ourselves.])
    612 	])
    613 
    614     dnl
    615     dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()",
    616     dnl and "pcap_datalink_name_to_val()", and use substitute versions
    617     dnl if they're not present.
    618     dnl
    619     AC_CHECK_FUNC(pcap_list_datalinks,
    620 	AC_DEFINE(HAVE_PCAP_LIST_DATALINKS, 1,
    621 	    [define if libpcap has pcap_list_datalinks()]),
    622 	[
    623 	    AC_LIBOBJ(datalinks)
    624 	])
    625     AC_CHECK_FUNC(pcap_set_datalink,
    626 	AC_DEFINE(HAVE_PCAP_SET_DATALINK, 1,
    627 	    [define if libpcap has pcap_set_datalink()]))
    628     AC_CHECK_FUNC(pcap_datalink_name_to_val,
    629 	[
    630 	    AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL, 1,
    631 		[define if libpcap has pcap_datalink_name_to_val()])
    632 	    AC_CHECK_FUNC(pcap_datalink_val_to_description,
    633 		AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION, 1,
    634 		    [define if libpcap has pcap_datalink_val_to_description()]),
    635 		[
    636 		    AC_LIBOBJ(dlnames)
    637 		])
    638 	],
    639 	[
    640 	    AC_LIBOBJ(dlnames)
    641 	])
    642 
    643     dnl
    644     dnl Check for "pcap_breakloop()"; you can't substitute for it if
    645     dnl it's absent (it has hooks into the live capture routines),
    646     dnl so just define the HAVE_ value if it's there.
    647     dnl
    648     AC_CHECK_FUNCS(pcap_breakloop)
    649 
    650     dnl
    651     dnl Check for "pcap_dump_ftell()" and use a substitute version
    652     dnl if it's not present.
    653     AC_CHECK_FUNC(pcap_dump_ftell,
    654 	AC_DEFINE(HAVE_PCAP_DUMP_FTELL, 1,
    655 	    [define if libpcap has pcap_dump_ftell()]),
    656 	[
    657 	    AC_LIBOBJ(pcap_dump_ftell)
    658 	])
    659 ])
    660 
    661 dnl
    662 dnl Define RETSIGTYPE and RETSIGVAL
    663 dnl
    664 dnl usage:
    665 dnl
    666 dnl	AC_LBL_TYPE_SIGNAL
    667 dnl
    668 dnl results:
    669 dnl
    670 dnl	RETSIGTYPE (defined)
    671 dnl	RETSIGVAL (defined)
    672 dnl
    673 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
    674     [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
    675     AC_TYPE_SIGNAL
    676     if test "$ac_cv_type_signal" = void ; then
    677 	    AC_DEFINE(RETSIGVAL,[],[return value of signal handlers])
    678     else
    679 	    AC_DEFINE(RETSIGVAL,(0),[return value of signal handlers])
    680     fi
    681     case "$host_os" in
    682 
    683     irix*)
    684 	    AC_DEFINE(_BSD_SIGNALS,1,[get BSD semantics on Irix])
    685 	    ;;
    686 
    687     *)
    688 	    dnl prefer sigaction() to sigset()
    689 	    AC_CHECK_FUNCS(sigaction)
    690 	    if test $ac_cv_func_sigaction = no ; then
    691 		    AC_CHECK_FUNCS(sigset)
    692 	    fi
    693 	    ;;
    694     esac])
    695 
    696 dnl
    697 dnl If using gcc, make sure we have ANSI ioctl definitions
    698 dnl
    699 dnl usage:
    700 dnl
    701 dnl	AC_LBL_FIXINCLUDES
    702 dnl
    703 AC_DEFUN(AC_LBL_FIXINCLUDES,
    704     [if test "$GCC" = yes ; then
    705 	    AC_MSG_CHECKING(for ANSI ioctl definitions)
    706 	    AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
    707 		AC_TRY_COMPILE(
    708 		    [/*
    709 		     * This generates a "duplicate case value" when fixincludes
    710 		     * has not be run.
    711 		     */
    712 #		include <sys/types.h>
    713 #		include <sys/time.h>
    714 #		include <sys/ioctl.h>
    715 #		ifdef HAVE_SYS_IOCCOM_H
    716 #		include <sys/ioccom.h>
    717 #		endif],
    718 		    [switch (0) {
    719 		    case _IO('A', 1):;
    720 		    case _IO('B', 1):;
    721 		    }],
    722 		    ac_cv_lbl_gcc_fixincludes=yes,
    723 		    ac_cv_lbl_gcc_fixincludes=no))
    724 	    AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
    725 	    if test $ac_cv_lbl_gcc_fixincludes = no ; then
    726 		    # Don't cache failure
    727 		    unset ac_cv_lbl_gcc_fixincludes
    728 		    AC_MSG_ERROR(see the INSTALL for more info)
    729 	    fi
    730     fi])
    731 
    732 dnl
    733 dnl Checks to see if union wait is used with WEXITSTATUS()
    734 dnl
    735 dnl usage:
    736 dnl
    737 dnl	AC_LBL_UNION_WAIT
    738 dnl
    739 dnl results:
    740 dnl
    741 dnl	DECLWAITSTATUS (defined)
    742 dnl
    743 AC_DEFUN(AC_LBL_UNION_WAIT,
    744     [AC_MSG_CHECKING(if union wait is used)
    745     AC_CACHE_VAL(ac_cv_lbl_union_wait,
    746 	AC_TRY_COMPILE([
    747 #	include <sys/types.h>
    748 #	include <sys/wait.h>],
    749 	    [int status;
    750 	    u_int i = WEXITSTATUS(status);
    751 	    u_int j = waitpid(0, &status, 0);],
    752 	    ac_cv_lbl_union_wait=no,
    753 	    ac_cv_lbl_union_wait=yes))
    754     AC_MSG_RESULT($ac_cv_lbl_union_wait)
    755     if test $ac_cv_lbl_union_wait = yes ; then
    756 	    AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait])
    757     else
    758 	    AC_DEFINE(DECLWAITSTATUS,int,[type for wait])
    759     fi])
    760 
    761 dnl
    762 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
    763 dnl
    764 dnl usage:
    765 dnl
    766 dnl	AC_LBL_SOCKADDR_SA_LEN
    767 dnl
    768 dnl results:
    769 dnl
    770 dnl	HAVE_SOCKADDR_SA_LEN (defined)
    771 dnl
    772 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
    773     [AC_MSG_CHECKING(if sockaddr struct has the sa_len member)
    774     AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
    775 	AC_TRY_COMPILE([
    776 #	include <sys/types.h>
    777 #	include <sys/socket.h>],
    778 	[u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
    779 	ac_cv_lbl_sockaddr_has_sa_len=yes,
    780 	ac_cv_lbl_sockaddr_has_sa_len=no))
    781     AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
    782     if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
    783 	    AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member])
    784     fi])
    785 
    786 dnl
    787 dnl Checks to see if -R is used
    788 dnl
    789 dnl usage:
    790 dnl
    791 dnl	AC_LBL_HAVE_RUN_PATH
    792 dnl
    793 dnl results:
    794 dnl
    795 dnl	ac_cv_lbl_have_run_path (yes or no)
    796 dnl
    797 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
    798     [AC_MSG_CHECKING(for ${CC-cc} -R)
    799     AC_CACHE_VAL(ac_cv_lbl_have_run_path,
    800 	[echo 'main(){}' > conftest.c
    801 	${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
    802 	if test ! -s conftest.out ; then
    803 		ac_cv_lbl_have_run_path=yes
    804 	else
    805 		ac_cv_lbl_have_run_path=no
    806 	fi
    807 	rm -f -r conftest*])
    808     AC_MSG_RESULT($ac_cv_lbl_have_run_path)
    809     ])
    810 
    811 dnl
    812 dnl Check whether a given format can be used to print 64-bit integers
    813 dnl
    814 AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT,
    815   [
    816     AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
    817     AC_RUN_IFELSE(
    818       [
    819 	AC_LANG_SOURCE(
    820 	  [[
    821 #	    ifdef HAVE_INTTYPES_H
    822 	    #include <inttypes.h>
    823 #	    endif
    824 #	    ifdef HAVE_SYS_BITYPES_H
    825             #include <sys/bitypes.h>
    826 #	    endif
    827 	    #include <stdio.h>
    828 	    #include <sys/types.h>
    829 
    830 	    main()
    831 	    {
    832 	      u_int64_t t = 1;
    833 	      char strbuf[16+1];
    834 	      sprintf(strbuf, "%016$1x", t << 32);
    835 	      if (strcmp(strbuf, "0000000100000000") == 0)
    836 		exit(0);
    837 	      else
    838 		exit(1);
    839 	    }
    840 	  ]])
    841       ],
    842       [
    843 	AC_DEFINE(PRId64, "$1d", [define if the platform doesn't define PRId64])
    844 	AC_DEFINE(PRIo64, "$1o", [define if the platform doesn't define PRIo64])
    845 	AC_DEFINE(PRIx64, "$1x", [define if the platform doesn't define PRIu64])
    846 	AC_DEFINE(PRIu64, "$1u", [define if the platform doesn't define PRIx64])
    847 	AC_MSG_RESULT(yes)
    848       ],
    849       [
    850 	AC_MSG_RESULT(no)
    851 	$2
    852       ])
    853   ])
    854 
    855 dnl
    856 dnl Checks to see if unaligned memory accesses fail
    857 dnl
    858 dnl usage:
    859 dnl
    860 dnl	AC_LBL_UNALIGNED_ACCESS
    861 dnl
    862 dnl results:
    863 dnl
    864 dnl	LBL_ALIGN (DEFINED)
    865 dnl
    866 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
    867     [AC_MSG_CHECKING(if unaligned accesses fail)
    868     AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
    869 	[case "$host_cpu" in
    870 
    871 	#
    872 	# These are CPU types where:
    873 	#
    874 	#	the CPU faults on an unaligned access, but at least some
    875 	#	OSes that support that CPU catch the fault and simulate
    876 	#	the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
    877 	#	the simulation is slow, so we don't want to use it;
    878 	#
    879 	#	the CPU, I infer (from the old
    880 	#
    881 	# XXX: should also check that they don't do weird things (like on arm)
    882 	#
    883 	#	comment) doesn't fault on unaligned accesses, but doesn't
    884 	#	do a normal unaligned fetch, either (e.g., presumably, ARM);
    885 	#
    886 	#	for whatever reason, the test program doesn't work
    887 	#	(this has been claimed to be the case for several of those
    888 	#	CPUs - I don't know what the problem is; the problem
    889 	#	was reported as "the test program dumps core" for SuperH,
    890 	#	but that's what the test program is *supposed* to do -
    891 	#	it dumps core before it writes anything, so the test
    892 	#	for an empty output file should find an empty output
    893 	#	file and conclude that unaligned accesses don't work).
    894 	#
    895 	# This run-time test won't work if you're cross-compiling, so
    896 	# in order to support cross-compiling for a particular CPU,
    897 	# we have to wire in the list of CPU types anyway, as far as
    898 	# I know, so perhaps we should just have a set of CPUs on
    899 	# which we know it doesn't work, a set of CPUs on which we
    900 	# know it does work, and have the script just fail on other
    901 	# cpu types and update it when such a failure occurs.
    902 	#
    903 	alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1)
    904 		ac_cv_lbl_unaligned_fail=yes
    905 		;;
    906 
    907 	*)
    908 		cat >conftest.c <<EOF
    909 #		include <sys/types.h>
    910 #		include <sys/wait.h>
    911 #		include <stdio.h>
    912 		unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
    913 		main() {
    914 		unsigned int i;
    915 		pid_t pid;
    916 		int status;
    917 		/* avoid "core dumped" message */
    918 		pid = fork();
    919 		if (pid <  0)
    920 			exit(2);
    921 		if (pid > 0) {
    922 			/* parent */
    923 			pid = waitpid(pid, &status, 0);
    924 			if (pid < 0)
    925 				exit(3);
    926 			exit(!WIFEXITED(status));
    927 		}
    928 		/* child */
    929 		i = *(unsigned int *)&a[[1]];
    930 		printf("%d\n", i);
    931 		exit(0);
    932 		}
    933 EOF
    934 		${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
    935 		    conftest.c $LIBS >/dev/null 2>&1
    936 		if test ! -x conftest ; then
    937 			dnl failed to compile for some reason
    938 			ac_cv_lbl_unaligned_fail=yes
    939 		else
    940 			./conftest >conftest.out
    941 			if test ! -s conftest.out ; then
    942 				ac_cv_lbl_unaligned_fail=yes
    943 			else
    944 				ac_cv_lbl_unaligned_fail=no
    945 			fi
    946 		fi
    947 		rm -f -r conftest* core core.conftest
    948 		;;
    949 	esac])
    950     AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
    951     if test $ac_cv_lbl_unaligned_fail = yes ; then
    952 	    AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails])
    953     fi])
    954 
    955 dnl
    956 dnl If the file .devel exists:
    957 dnl	Add some warning flags if the compiler supports them
    958 dnl	If an os prototype include exists, symlink os-proto.h to it
    959 dnl
    960 dnl usage:
    961 dnl
    962 dnl	AC_LBL_DEVEL(copt)
    963 dnl
    964 dnl results:
    965 dnl
    966 dnl	$1 (copt appended)
    967 dnl	HAVE_OS_PROTO_H (defined)
    968 dnl	os-proto.h (symlinked)
    969 dnl
    970 AC_DEFUN(AC_LBL_DEVEL,
    971     [rm -f os-proto.h
    972     if test "${LBL_CFLAGS+set}" = set; then
    973 	    $1="$$1 ${LBL_CFLAGS}"
    974     fi
    975     if test -f .devel ; then
    976 	    #
    977 	    # Skip all the warning option stuff on some compilers.
    978 	    #
    979 	    if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then
    980 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wall)
    981 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes)
    982 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes)
    983 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wwrite-strings)
    984 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wpointer-arith)
    985 		    AC_LBL_CHECK_COMPILER_OPT($1, -W)
    986 	    fi
    987 	    AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT()
    988 	    #
    989 	    # We used to set -n32 for IRIX 6 when not using GCC (presumed
    990 	    # to mean that we're using MIPS C or MIPSpro C); it specified
    991 	    # the "new" faster 32-bit ABI, introduced in IRIX 6.2.  I'm
    992 	    # not sure why that would be something to do *only* with a
    993 	    # .devel file; why should the ABI for which we produce code
    994 	    # depend on .devel?
    995 	    #
    996 	    os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
    997 	    name="lbl/os-$os.h"
    998 	    if test -f $name ; then
    999 		    ln -s $name os-proto.h
   1000 		    AC_DEFINE(HAVE_OS_PROTO_H, 1,
   1001 			[if there's an os_proto.h for this platform, to use additional prototypes])
   1002 	    else
   1003 		    AC_MSG_WARN(can't find $name)
   1004 	    fi
   1005     fi])
   1006 
   1007 dnl
   1008 dnl Improved version of AC_CHECK_LIB
   1009 dnl
   1010 dnl Thanks to John Hawkinson (jhawk (a] mit.edu)
   1011 dnl
   1012 dnl usage:
   1013 dnl
   1014 dnl	AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
   1015 dnl	    ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
   1016 dnl
   1017 dnl results:
   1018 dnl
   1019 dnl	LIBS
   1020 dnl
   1021 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
   1022 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
   1023 dnl We keep it around for reference purposes in case it's ever
   1024 dnl useful in the future.
   1025 dnl
   1026 
   1027 define(AC_LBL_CHECK_LIB,
   1028 [AC_MSG_CHECKING([for $2 in -l$1])
   1029 dnl Use a cache variable name containing the library, function
   1030 dnl name, and extra libraries to link with, because the test really is
   1031 dnl for library $1 defining function $2, when linked with potinal
   1032 dnl library $5, not just for library $1.  Separate tests with the same
   1033 dnl $1 and different $2's or $5's may have different results.
   1034 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
   1035 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
   1036 [ac_save_LIBS="$LIBS"
   1037 LIBS="-l$1 $5 $LIBS"
   1038 AC_TRY_LINK(dnl
   1039 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
   1040 [/* Override any gcc2 internal prototype to avoid an error.  */
   1041 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
   1042 extern "C"
   1043 #endif
   1044 ])dnl
   1045 [/* We use char because int might match the return type of a gcc2
   1046     builtin and then its argument prototype would still apply.  */
   1047 char $2();
   1048 ]),
   1049 	    [$2()],
   1050 	    eval "ac_cv_lbl_lib_$ac_lib_var=yes",
   1051 	    eval "ac_cv_lbl_lib_$ac_lib_var=no")
   1052 LIBS="$ac_save_LIBS"
   1053 ])dnl
   1054 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
   1055   AC_MSG_RESULT(yes)
   1056   ifelse([$3], ,
   1057 [changequote(, )dnl
   1058   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
   1059     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
   1060 changequote([, ])dnl
   1061   AC_DEFINE_UNQUOTED($ac_tr_lib)
   1062   LIBS="-l$1 $LIBS"
   1063 ], [$3])
   1064 else
   1065   AC_MSG_RESULT(no)
   1066 ifelse([$4], , , [$4
   1067 ])dnl
   1068 fi
   1069 ])
   1070 
   1071 dnl
   1072 dnl AC_LBL_LIBRARY_NET
   1073 dnl
   1074 dnl This test is for network applications that need socket() and
   1075 dnl gethostbyname() -ish functions.  Under Solaris, those applications
   1076 dnl need to link with "-lsocket -lnsl".  Under IRIX, they need to link
   1077 dnl with "-lnsl" but should *not* link with "-lsocket" because
   1078 dnl libsocket.a breaks a number of things (for instance:
   1079 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
   1080 dnl versions of IRIX).
   1081 dnl
   1082 dnl Unfortunately, many application developers are not aware of this,
   1083 dnl and mistakenly write tests that cause -lsocket to be used under
   1084 dnl IRIX.  It is also easy to write tests that cause -lnsl to be used
   1085 dnl under operating systems where neither are necessary (or useful),
   1086 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
   1087 dnl
   1088 dnl This test exists so that every application developer does not test
   1089 dnl this in a different, and subtly broken fashion.
   1090 
   1091 dnl It has been argued that this test should be broken up into two
   1092 dnl seperate tests, one for the resolver libraries, and one for the
   1093 dnl libraries necessary for using Sockets API. Unfortunately, the two
   1094 dnl are carefully intertwined and allowing the autoconf user to use
   1095 dnl them independantly potentially results in unfortunate ordering
   1096 dnl dependancies -- as such, such component macros would have to
   1097 dnl carefully use indirection and be aware if the other components were
   1098 dnl executed. Since other autoconf macros do not go to this trouble,
   1099 dnl and almost no applications use sockets without the resolver, this
   1100 dnl complexity has not been implemented.
   1101 dnl
   1102 dnl The check for libresolv is in case you are attempting to link
   1103 dnl statically and happen to have a libresolv.a lying around (and no
   1104 dnl libnsl.a).
   1105 dnl
   1106 AC_DEFUN(AC_LBL_LIBRARY_NET, [
   1107     # Most operating systems have gethostbyname() in the default searched
   1108     # libraries (i.e. libc):
   1109     # Some OSes (eg. Solaris) place it in libnsl
   1110     # Some strange OSes (SINIX) have it in libsocket:
   1111     AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
   1112     # Unfortunately libsocket sometimes depends on libnsl and
   1113     # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
   1114     if test "$ac_cv_search_gethostbyname" = "no"
   1115     then
   1116 	AC_CHECK_LIB(socket, gethostbyname,
   1117                      LIBS="-lsocket -lnsl $LIBS", , -lnsl)
   1118     fi
   1119     AC_SEARCH_LIBS(socket, socket, ,
   1120 	AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
   1121     # DLPI needs putmsg under HPUX so test for -lstr while we're at it
   1122     AC_SEARCH_LIBS(putmsg, str)
   1123     ])
   1124 
   1125 dnl Copyright (c) 1999 WIDE Project. All rights reserved.
   1126 dnl
   1127 dnl Redistribution and use in source and binary forms, with or without
   1128 dnl modification, are permitted provided that the following conditions
   1129 dnl are met:
   1130 dnl 1. Redistributions of source code must retain the above copyright
   1131 dnl    notice, this list of conditions and the following disclaimer.
   1132 dnl 2. Redistributions in binary form must reproduce the above copyright
   1133 dnl    notice, this list of conditions and the following disclaimer in the
   1134 dnl    documentation and/or other materials provided with the distribution.
   1135 dnl 3. Neither the name of the project nor the names of its contributors
   1136 dnl    may be used to endorse or promote products derived from this software
   1137 dnl    without specific prior written permission.
   1138 dnl 
   1139 dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
   1140 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   1141 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   1142 dnl ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
   1143 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   1144 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   1145 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   1146 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   1147 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   1148 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   1149 dnl SUCH DAMAGE.
   1150 
   1151 dnl
   1152 dnl Checks to see if AF_INET6 is defined
   1153 AC_DEFUN(AC_CHECK_AF_INET6, [
   1154 	AC_MSG_CHECKING(for AF_INET6)
   1155 	AC_CACHE_VAL($1,
   1156 	AC_TRY_COMPILE([
   1157 #		include <sys/types.h>
   1158 #		include <sys/socket.h>],
   1159 		[int a = AF_INET6],
   1160 		$1=yes,
   1161 		$1=no))
   1162 	AC_MSG_RESULT($$1)
   1163 		if test $$1 = yes ; then
   1164 			AC_DEFINE(HAVE_AF_INET6)
   1165 	fi
   1166 ])
   1167 
   1168 dnl
   1169 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
   1170 dnl borrowed from LBL libpcap
   1171 AC_DEFUN(AC_CHECK_SA_LEN, [
   1172 	AC_MSG_CHECKING(if sockaddr struct has sa_len member)
   1173 	AC_CACHE_VAL($1,
   1174 	AC_TRY_COMPILE([
   1175 #		include <sys/types.h>
   1176 #		include <sys/socket.h>],
   1177 		[u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
   1178 		$1=yes,
   1179 		$1=no))
   1180 	AC_MSG_RESULT($$1)
   1181 		if test $$1 = yes ; then
   1182 			AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
   1183 	fi
   1184 ])
   1185 
   1186 dnl
   1187 dnl Checks for addrinfo structure
   1188 AC_DEFUN(AC_STRUCT_ADDRINFO, [
   1189 	AC_MSG_CHECKING(for addrinfo)
   1190 	AC_CACHE_VAL($1,
   1191 	AC_TRY_COMPILE([
   1192 #		include <netdb.h>],
   1193 		[struct addrinfo a],
   1194 		$1=yes,
   1195 		$1=no))
   1196 	AC_MSG_RESULT($$1)
   1197 	if test $$1 = yes; then
   1198 		AC_DEFINE(HAVE_ADDRINFO, 1,
   1199 		    [define if you have the addrinfo function])
   1200 	else
   1201 		AC_DEFINE(NEED_ADDRINFO_H, 1,
   1202 		    [define if you need to include missing/addrinfo.h])
   1203 	fi
   1204 ])
   1205 
   1206 dnl
   1207 dnl Checks for NI_MAXSERV
   1208 AC_DEFUN(AC_NI_MAXSERV, [
   1209 	AC_MSG_CHECKING(for NI_MAXSERV)
   1210 	AC_CACHE_VAL($1,
   1211 	AC_EGREP_CPP(yes, [#include <netdb.h>
   1212 #ifdef NI_MAXSERV
   1213 yes
   1214 #endif],
   1215 		$1=yes,
   1216 		$1=no))
   1217 	AC_MSG_RESULT($$1)
   1218 	if test $$1 != yes; then
   1219 		AC_DEFINE(NEED_ADDRINFO_H)
   1220 	fi
   1221 ])
   1222 
   1223 dnl
   1224 dnl Checks for NI_NAMEREQD
   1225 AC_DEFUN(AC_NI_NAMEREQD, [
   1226 	AC_MSG_CHECKING(for NI_NAMEREQD)
   1227 	AC_CACHE_VAL($1,
   1228 	AC_EGREP_CPP(yes, [#include <netdb.h>
   1229 #ifdef NI_NOFQDN
   1230 yes
   1231 #endif],
   1232 		$1=yes,
   1233 		$1=no))
   1234 	AC_MSG_RESULT($$1)
   1235 	if test $$1 != yes; then
   1236 		AC_DEFINE(NEED_ADDRINFO_H)
   1237 	fi
   1238 ])
   1239 
   1240 dnl
   1241 dnl Checks for sockaddr_storage structure
   1242 AC_DEFUN(AC_STRUCT_SA_STORAGE, [
   1243 	AC_MSG_CHECKING(for sockaddr_storage)
   1244 	AC_CACHE_VAL($1,
   1245 	AC_TRY_COMPILE([
   1246 #		include <sys/types.h>
   1247 #		include <sys/socket.h>],
   1248 		[struct sockaddr_storage s],
   1249 		$1=yes,
   1250 		$1=no))
   1251 	AC_MSG_RESULT($$1)
   1252 	if test $$1 = yes; then
   1253 		AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1,
   1254 		    [define if you have struct sockaddr_storage])
   1255 	fi
   1256 ])
   1257 
   1258 dnl
   1259 dnl check for h_errno
   1260 AC_DEFUN(AC_VAR_H_ERRNO, [
   1261 	AC_MSG_CHECKING(for h_errno)
   1262 	AC_CACHE_VAL(ac_cv_var_h_errno,
   1263 	AC_TRY_COMPILE([
   1264 #		include <sys/types.h>
   1265 #		include <netdb.h>],
   1266 		[int foo = h_errno;],
   1267 		ac_cv_var_h_errno=yes,
   1268 		ac_cv_var_h_errno=no))
   1269 	AC_MSG_RESULT($ac_cv_var_h_errno)
   1270 	if test "$ac_cv_var_h_errno" = "yes"; then
   1271 		AC_DEFINE(HAVE_H_ERRNO, 1,
   1272 		    [define if you have the h_errno variable])
   1273 	fi
   1274 ])
   1275 
   1276 dnl
   1277 dnl Test for __attribute__
   1278 dnl
   1279 
   1280 AC_DEFUN(AC_C___ATTRIBUTE__, [
   1281 AC_MSG_CHECKING(for __attribute__)
   1282 AC_CACHE_VAL(ac_cv___attribute__, [
   1283 AC_COMPILE_IFELSE([
   1284   AC_LANG_SOURCE([[
   1285 #include <stdlib.h>
   1286 
   1287 static void foo(void) __attribute__ ((noreturn));
   1288 
   1289 static void
   1290 foo(void)
   1291 {
   1292   exit(1);
   1293 }
   1294 
   1295 int
   1296 main(int argc, char **argv)
   1297 {
   1298   foo();
   1299 }
   1300   ]])],
   1301 ac_cv___attribute__=yes,
   1302 ac_cv___attribute__=no)])
   1303 if test "$ac_cv___attribute__" = "yes"; then
   1304   AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
   1305 else
   1306   #
   1307   # We can't use __attribute__, so we can't use __attribute__((unused)),
   1308   # so we define _U_ to an empty string.
   1309   #
   1310   V_DEFS="$V_DEFS -D_U_=\"\""
   1311 fi
   1312 AC_MSG_RESULT($ac_cv___attribute__)
   1313 ])
   1314 
   1315 
   1316 dnl
   1317 dnl Test whether __attribute__((unused)) can be used without warnings
   1318 dnl
   1319 
   1320 AC_DEFUN(AC_C___ATTRIBUTE___UNUSED, [
   1321 AC_MSG_CHECKING([whether __attribute__((unused)) can be used without warnings])
   1322 AC_CACHE_VAL(ac_cv___attribute___unused, [
   1323 save_CFLAGS="$CFLAGS"
   1324 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
   1325 AC_COMPILE_IFELSE([
   1326   AC_LANG_SOURCE([[
   1327 #include <stdlib.h>
   1328 #include <stdio.h>
   1329 
   1330 int
   1331 main(int argc  __attribute((unused)), char **argv __attribute((unused)))
   1332 {
   1333   printf("Hello, world!\n");
   1334   return 0;
   1335 }
   1336   ]])],
   1337 ac_cv___attribute___unused=yes,
   1338 ac_cv___attribute___unused=no)])
   1339 CFLAGS="$save_CFLAGS"
   1340 if test "$ac_cv___attribute___unused" = "yes"; then
   1341   V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
   1342 else
   1343   V_DEFS="$V_DEFS -D_U_=\"\""
   1344 fi
   1345 AC_MSG_RESULT($ac_cv___attribute___unused)
   1346 ])
   1347 
   1348 dnl
   1349 dnl Test whether __attribute__((format)) can be used without warnings
   1350 dnl
   1351 
   1352 AC_DEFUN(AC_C___ATTRIBUTE___FORMAT, [
   1353 AC_MSG_CHECKING([whether __attribute__((format)) can be used without warnings])
   1354 AC_CACHE_VAL(ac_cv___attribute___format, [
   1355 save_CFLAGS="$CFLAGS"
   1356 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
   1357 AC_COMPILE_IFELSE([
   1358   AC_LANG_SOURCE([[
   1359 #include <stdlib.h>
   1360 
   1361 extern int foo(const char *fmt, ...)
   1362 		  __attribute__ ((format (printf, 1, 2)));
   1363 
   1364 int
   1365 main(int argc, char **argv)
   1366 {
   1367   foo("%s", "test");
   1368 }
   1369   ]])],
   1370 ac_cv___attribute___format=yes,
   1371 ac_cv___attribute___format=no)])
   1372 CFLAGS="$save_CFLAGS"
   1373 if test "$ac_cv___attribute___format" = "yes"; then
   1374   AC_DEFINE(__ATTRIBUTE___FORMAT_OK, 1,
   1375     [define if your compiler allows __attribute__((format)) without a warning])
   1376 fi
   1377 AC_MSG_RESULT($ac_cv___attribute___format)
   1378 ])
   1379 
   1380 dnl
   1381 dnl Test whether __attribute__((format)) can be applied to function
   1382 dnl pointers
   1383 dnl
   1384 
   1385 AC_DEFUN(AC_C___ATTRIBUTE___FORMAT_FUNCTION_POINTER, [
   1386 AC_MSG_CHECKING([whether __attribute__((format)) can be applied to function pointers])
   1387 AC_CACHE_VAL(ac_cv___attribute___format_function_pointer, [
   1388 AC_COMPILE_IFELSE([
   1389   AC_LANG_SOURCE([[
   1390 #include <stdlib.h>
   1391 
   1392 extern int (*foo)(const char *fmt, ...)
   1393 		  __attribute__ ((format (printf, 1, 2)));
   1394 
   1395 int
   1396 main(int argc, char **argv)
   1397 {
   1398   (*foo)("%s", "test");
   1399 }
   1400   ]])],
   1401 ac_cv___attribute___format_function_pointer=yes,
   1402 ac_cv___attribute___format_function_pointer=no)])
   1403 if test "$ac_cv___attribute___format_function_pointer" = "yes"; then
   1404   AC_DEFINE(__ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS, 1,
   1405     [define if your compiler allows __attribute__((format)) to be applied to function pointers])
   1406 fi
   1407 AC_MSG_RESULT($ac_cv___attribute___format_function_pointer)
   1408 ])
   1409 
   1410 AC_DEFUN(AC_C___ATTRIBUTE___NORETURN_FUNCTION_POINTER, [
   1411 AC_MSG_CHECKING([whether __attribute__((noreturn)) can be applied to function pointers without warnings])
   1412 AC_CACHE_VAL(ac_cv___attribute___noreturn_function_pointer, [
   1413 save_CFLAGS="$CFLAGS"
   1414 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
   1415 AC_COMPILE_IFELSE([
   1416   AC_LANG_SOURCE([[
   1417 #include <stdlib.h>
   1418 
   1419 extern int (*foo)(int i)
   1420 		  __attribute__ ((noreturn));
   1421 
   1422 int
   1423 main(int argc, char **argv)
   1424 {
   1425   (*foo)(1);
   1426 }
   1427   ]])],
   1428 ac_cv___attribute___noreturn_function_pointer=yes,
   1429 ac_cv___attribute___noreturn_function_pointer=no)])
   1430 CFLAGS="$save_CFLAGS"
   1431 if test "$ac_cv___attribute___noreturn_function_pointer" = "yes"; then
   1432   AC_DEFINE(__ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS, 1,
   1433     [define if your compiler allows __attribute__((noreturn)) to be applied to function pointers])
   1434 fi
   1435 AC_MSG_RESULT($ac_cv___attribute___noreturn_function_pointer)
   1436 ])
   1437 
   1438 AC_DEFUN(AC_LBL_SSLEAY,
   1439     [
   1440 	#
   1441 	# Find the last component of $libdir; it's not necessarily
   1442 	# "lib" - it might be "lib64" on, for example, x86-64
   1443 	# Linux systems.
   1444 	#
   1445 	# We assume the directory in which we're looking for
   1446 	# libcrypto has a subdirectory with that as its name.
   1447 	#
   1448 	tmplib=`echo "$libdir" | sed 's,.*/,,'`
   1449 
   1450 	#
   1451 	# XXX - is there a better way to check if a given library is
   1452 	# in a given directory than checking each of the possible
   1453 	# shared library suffixes?
   1454 	#
   1455 	# Are there any other suffixes we need to look for?  Do we
   1456 	# have to worry about ".so.{version}"?
   1457 	#
   1458 	# Or should we just look for "libcrypto.*"?
   1459 	#
   1460 	if test -d "$1/$tmplib" -a \( -f "$1/$tmplib/libcrypto.a" -o \
   1461 		          	    -f "$1/$tmplib/libcrypto.so" -o \
   1462 		          	    -f "$1/$tmplib/libcrypto.sl" -o \
   1463 			  	    -f "$1/$tmplib/libcrypto.dylib" \); then
   1464 		ac_cv_ssleay_path="$1"
   1465 	fi
   1466 
   1467 	#
   1468 	# Make sure we have the headers as well.
   1469 	#
   1470 	if test -d "$1/include/openssl" -a -f "$1/include/openssl/des.h"; then
   1471 		incdir="-I$1/include"
   1472 	fi
   1473 ])
   1474