Home | History | Annotate | Download | only in libpcap
      1 dnl Copyright (c) 1995, 1996, 1997, 1998
      2 dnl	The Regents of the University of California.  All rights reserved.
      3 dnl
      4 dnl Redistribution and use in source and binary forms, with or without
      5 dnl modification, are permitted provided that: (1) source code distributions
      6 dnl retain the above copyright notice and this paragraph in its entirety, (2)
      7 dnl distributions including binary code include the above copyright notice and
      8 dnl this paragraph in its entirety in the documentation or other materials
      9 dnl provided with the distribution, and (3) all advertising materials mentioning
     10 dnl features or use of this software display the following acknowledgement:
     11 dnl ``This product includes software developed by the University of California,
     12 dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
     13 dnl the University nor the names of its contributors may be used to endorse
     14 dnl or promote products derived from this software without specific prior
     15 dnl written permission.
     16 dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
     17 dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
     18 dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
     19 dnl
     20 dnl LBL autoconf macros
     21 dnl
     22 
     23 dnl
     24 dnl Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC.
     25 dnl
     26 dnl It appears that newer versions of autoconf (2.64 and later) will,
     27 dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the
     28 dnl beginning of the macro, even if the macro itself calls AC_PROG_CC.
     29 dnl See the "Prerequisite Macros" and "Expanded Before Required" sections
     30 dnl in the Autoconf documentation.
     31 dnl
     32 dnl This causes a steaming heap of fail in our case, as we were, in
     33 dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC,
     34 dnl calling AC_PROG_CC, and then doing the tests we now do in
     35 dnl AC_LBL_C_INIT.  Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC,
     36 dnl and AC_LBL_C_INIT at the top level.
     37 dnl
     38 AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC,
     39 [
     40     AC_BEFORE([$0], [AC_LBL_C_INIT])
     41     AC_BEFORE([$0], [AC_PROG_CC])
     42     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
     43     AC_BEFORE([$0], [AC_LBL_DEVEL])
     44     AC_ARG_WITH(gcc, [  --without-gcc           don't use gcc])
     45     $1=""
     46     if test "${srcdir}" != "." ; then
     47 	    $1="-I\$(srcdir)"
     48     fi
     49     if test "${CFLAGS+set}" = set; then
     50 	    LBL_CFLAGS="$CFLAGS"
     51     fi
     52     if test -z "$CC" ; then
     53 	    case "$host_os" in
     54 
     55 	    bsdi*)
     56 		    AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
     57 		    if test $SHLICC2 = yes ; then
     58 			    CC=shlicc2
     59 			    export CC
     60 		    fi
     61 		    ;;
     62 	    esac
     63     fi
     64     if test -z "$CC" -a "$with_gcc" = no ; then
     65 	    CC=cc
     66 	    export CC
     67     fi
     68 ])
     69 
     70 dnl
     71 dnl Determine which compiler we're using (cc or gcc)
     72 dnl If using gcc, determine the version number
     73 dnl If using cc:
     74 dnl     require that it support ansi prototypes
     75 dnl     use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to
     76 dnl     do that ourselves for gcc)
     77 dnl     add -g flags, as appropriate
     78 dnl     explicitly specify /usr/local/include
     79 dnl
     80 dnl NOTE WELL: with newer versions of autoconf, "gcc" means any compiler
     81 dnl that defines __GNUC__, which means clang, for example, counts as "gcc".
     82 dnl
     83 dnl usage:
     84 dnl
     85 dnl	AC_LBL_C_INIT(copt, incls)
     86 dnl
     87 dnl results:
     88 dnl
     89 dnl	$1 (copt set)
     90 dnl	$2 (incls set)
     91 dnl	CC
     92 dnl	LDFLAGS
     93 dnl	LBL_CFLAGS
     94 dnl
     95 AC_DEFUN(AC_LBL_C_INIT,
     96 [
     97     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
     98     AC_BEFORE([$0], [AC_LBL_DEVEL])
     99     AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT])
    100     if test "$GCC" = yes ; then
    101 	    #
    102 	    # -Werror forces warnings to be errors.
    103 	    #
    104 	    ac_lbl_cc_force_warning_errors=-Werror
    105 
    106 	    #
    107 	    # Try to have the compiler default to hiding symbols,
    108 	    # so that only symbols explicitly exported with
    109 	    # PCAP_API will be visible outside (shared) libraries.
    110 	    #
    111 	    AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden)
    112     else
    113 	    $2="$$2 -I/usr/local/include"
    114 	    LDFLAGS="$LDFLAGS -L/usr/local/lib"
    115 
    116 	    case "$host_os" in
    117 
    118 	    darwin*)
    119 		    #
    120 		    # This is assumed either to be GCC or clang, both
    121 		    # of which use -Werror to force warnings to be errors.
    122 		    #
    123 		    ac_lbl_cc_force_warning_errors=-Werror
    124 
    125 		    #
    126 		    # Try to have the compiler default to hiding symbols,
    127 		    # so that only symbols explicitly exported with
    128 		    # PCAP_API will be visible outside (shared) libraries.
    129 		    #
    130 		    AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden)
    131 		    ;;
    132 
    133 	    hpux*)
    134 		    #
    135 		    # HP C, which is what we presume we're using, doesn't
    136 		    # exit with a non-zero exit status if we hand it an
    137 		    # invalid -W flag, can't be forced to do so even with
    138 		    # +We, and doesn't handle GCC-style -W flags, so we
    139 		    # don't want to try using GCC-style -W flags.
    140 		    #
    141 		    ac_lbl_cc_dont_try_gcc_dashW=yes
    142 		    ;;
    143 
    144 	    irix*)
    145 		    #
    146 		    # MIPS C, which is what we presume we're using, doesn't
    147 		    # necessarily exit with a non-zero exit status if we
    148 		    # hand it an invalid -W flag, can't be forced to do
    149 		    # so, and doesn't handle GCC-style -W flags, so we
    150 		    # don't want to try using GCC-style -W flags.
    151 		    #
    152 		    ac_lbl_cc_dont_try_gcc_dashW=yes
    153 		    #
    154 		    # It also, apparently, defaults to "char" being
    155 		    # unsigned, unlike most other C implementations;
    156 		    # I suppose we could say "signed char" whenever
    157 		    # we want to guarantee a signed "char", but let's
    158 		    # just force signed chars.
    159 		    #
    160 		    # -xansi is normally the default, but the
    161 		    # configure script was setting it; perhaps -cckr
    162 		    # was the default in the Old Days.  (Then again,
    163 		    # that would probably be for backwards compatibility
    164 		    # in the days when ANSI C was Shiny and New, i.e.
    165 		    # 1989 and the early '90's, so maybe we can just
    166 		    # drop support for those compilers.)
    167 		    #
    168 		    # -g is equivalent to -g2, which turns off
    169 		    # optimization; we choose -g3, which generates
    170 		    # debugging information but doesn't turn off
    171 		    # optimization (even if the optimization would
    172 		    # cause inaccuracies in debugging).
    173 		    #
    174 		    $1="$$1 -xansi -signed -g3"
    175 		    ;;
    176 
    177 	    osf*)
    178 		    #
    179 		    # Presumed to be DEC OSF/1, Digital UNIX, or
    180 		    # Tru64 UNIX.
    181 		    #
    182 		    # The DEC C compiler, which is what we presume we're
    183 		    # using, doesn't exit with a non-zero exit status if we
    184 		    # hand it an invalid -W flag, can't be forced to do
    185 		    # so, and doesn't handle GCC-style -W flags, so we
    186 		    # don't want to try using GCC-style -W flags.
    187 		    #
    188 		    ac_lbl_cc_dont_try_gcc_dashW=yes
    189 		    #
    190 		    # -g is equivalent to -g2, which turns off
    191 		    # optimization; we choose -g3, which generates
    192 		    # debugging information but doesn't turn off
    193 		    # optimization (even if the optimization would
    194 		    # cause inaccuracies in debugging).
    195 		    #
    196 		    $1="$$1 -g3"
    197 		    ;;
    198 
    199 	    solaris*)
    200 		    #
    201 		    # Assumed to be Sun C, which requires -errwarn to force
    202 		    # warnings to be treated as errors.
    203 		    #
    204 		    ac_lbl_cc_force_warning_errors=-errwarn
    205 
    206 		    #
    207 		    # Try to have the compiler default to hiding symbols,
    208 		    # so that only symbols explicitly exported with
    209 		    # PCAP_API will be visible outside (shared) libraries.
    210 		    #
    211 		    AC_LBL_CHECK_COMPILER_OPT($1, -xldscope=hidden)
    212 		    ;;
    213 
    214 	    ultrix*)
    215 		    AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
    216 		    AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
    217 			AC_TRY_COMPILE(
    218 			    [#include <sys/types.h>],
    219 			    [struct a { int b; };
    220 			    void c(const struct a *)],
    221 			    ac_cv_lbl_cc_const_proto=yes,
    222 			    ac_cv_lbl_cc_const_proto=no))
    223 		    AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
    224 		    if test $ac_cv_lbl_cc_const_proto = no ; then
    225 			    AC_DEFINE(const,[],
    226 			        [to handle Ultrix compilers that don't support const in prototypes])
    227 		    fi
    228 		    ;;
    229 	    esac
    230 	    $1="$$1 -O"
    231     fi
    232 ])
    233 
    234 dnl
    235 dnl Check whether, if you pass an unknown warning option to the
    236 dnl compiler, it fails or just prints a warning message and succeeds.
    237 dnl Set ac_lbl_unknown_warning_option_error to the appropriate flag
    238 dnl to force an error if it would otherwise just print a warning message
    239 dnl and succeed.
    240 dnl
    241 AC_DEFUN(AC_LBL_CHECK_UNKNOWN_WARNING_OPTION_ERROR,
    242     [
    243 	AC_MSG_CHECKING([whether the compiler fails when given an unknown warning option])
    244 	save_CFLAGS="$CFLAGS"
    245 	CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy"
    246 	AC_TRY_COMPILE(
    247 	    [],
    248 	    [return 0],
    249 	    [
    250 		AC_MSG_RESULT([no])
    251 		#
    252 		# We're assuming this is clang, where
    253 		# -Werror=unknown-warning-option is the appropriate
    254 		# option to force the compiler to fail.
    255 		#
    256 		ac_lbl_unknown_warning_option_error="-Werror=unknown-warning-option"
    257 	    ],
    258 	    [
    259 		AC_MSG_RESULT([yes])
    260 	    ])
    261 	CFLAGS="$save_CFLAGS"
    262     ])
    263 
    264 dnl
    265 dnl Check whether the compiler option specified as the second argument
    266 dnl is supported by the compiler and, if so, add it to the macro
    267 dnl specified as the first argument
    268 dnl
    269 AC_DEFUN(AC_LBL_CHECK_COMPILER_OPT,
    270     [
    271 	AC_MSG_CHECKING([whether the compiler supports the $2 option])
    272 	save_CFLAGS="$CFLAGS"
    273 	if expr "x$2" : "x-W.*" >/dev/null
    274 	then
    275 	    CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error $2"
    276 	elif expr "x$2" : "x-f.*" >/dev/null
    277 	then
    278 	    CFLAGS="$CFLAGS -Werror $2"
    279 	elif expr "x$2" : "x-m.*" >/dev/null
    280 	then
    281 	    CFLAGS="$CFLAGS -Werror $2"
    282 	else
    283 	    CFLAGS="$CFLAGS $2"
    284 	fi
    285 	AC_TRY_COMPILE(
    286 	    [],
    287 	    [return 0],
    288 	    [
    289 		AC_MSG_RESULT([yes])
    290 		CFLAGS="$save_CFLAGS"
    291 		$1="$$1 $2"
    292 	    ],
    293 	    [
    294 		AC_MSG_RESULT([no])
    295 		CFLAGS="$save_CFLAGS"
    296 	    ])
    297     ])
    298 
    299 dnl
    300 dnl Check whether the compiler supports an option to generate
    301 dnl Makefile-style dependency lines
    302 dnl
    303 dnl GCC uses -M for this.  Non-GCC compilers that support this
    304 dnl use a variety of flags, including but not limited to -M.
    305 dnl
    306 dnl We test whether the flag in question is supported, as older
    307 dnl versions of compilers might not support it.
    308 dnl
    309 dnl We don't try all the possible flags, just in case some flag means
    310 dnl "generate dependencies" on one compiler but means something else
    311 dnl on another compiler.
    312 dnl
    313 dnl Most compilers that support this send the output to the standard
    314 dnl output by default.  IBM's XLC, however, supports -M but sends
    315 dnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout
    316 dnl to work around that, so we don't bother with XLC.
    317 dnl
    318 AC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT,
    319     [
    320 	AC_MSG_CHECKING([whether the compiler supports generating dependencies])
    321 	if test "$GCC" = yes ; then
    322 		#
    323 		# GCC, or a compiler deemed to be GCC by AC_PROG_CC (even
    324 		# though it's not); we assume that, in this case, the flag
    325 		# would be -M.
    326 		#
    327 		ac_lbl_dependency_flag="-M"
    328 	else
    329 		#
    330 		# Not GCC or a compiler deemed to be GCC; what platform is
    331 		# this?  (We're assuming that if the compiler isn't GCC
    332 		# it's the compiler from the vendor of the OS; that won't
    333 		# necessarily be true for x86 platforms, where it might be
    334 		# the Intel C compiler.)
    335 		#
    336 		case "$host_os" in
    337 
    338 		irix*|osf*|darwin*)
    339 			#
    340 			# MIPS C for IRIX, DEC C, and clang all use -M.
    341 			#
    342 			ac_lbl_dependency_flag="-M"
    343 			;;
    344 
    345 		solaris*)
    346 			#
    347 			# Sun C uses -xM.
    348 			#
    349 			ac_lbl_dependency_flag="-xM"
    350 			;;
    351 
    352 		hpux*)
    353 			#
    354 			# HP's older C compilers don't support this.
    355 			# HP's newer C compilers support this with
    356 			# either +M or +Make; the older compilers
    357 			# interpret +M as something completely
    358 			# different, so we use +Make so we don't
    359 			# think it works with the older compilers.
    360 			#
    361 			ac_lbl_dependency_flag="+Make"
    362 			;;
    363 
    364 		*)
    365 			#
    366 			# Not one of the above; assume no support for
    367 			# generating dependencies.
    368 			#
    369 			ac_lbl_dependency_flag=""
    370 			;;
    371 		esac
    372 	fi
    373 
    374 	#
    375 	# Is ac_lbl_dependency_flag defined and, if so, does the compiler
    376 	# complain about it?
    377 	#
    378 	# Note: clang doesn't seem to exit with an error status when handed
    379 	# an unknown non-warning error, even if you pass it
    380 	# -Werror=unknown-warning-option.  However, it always supports
    381 	# -M, so the fact that this test always succeeds with clang
    382 	# isn't an issue.
    383 	#
    384 	if test ! -z "$ac_lbl_dependency_flag"; then
    385 		AC_LANG_CONFTEST(
    386 		    [AC_LANG_SOURCE([[int main(void) { return 0; }]])])
    387 		echo "$CC" $ac_lbl_dependency_flag conftest.c >&5
    388 		if "$CC" $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1; then
    389 			AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag])
    390 			DEPENDENCY_CFLAG="$ac_lbl_dependency_flag"
    391 			MKDEP='${srcdir}/mkdep'
    392 		else
    393 			AC_MSG_RESULT([no])
    394 			#
    395 			# We can't run mkdep, so have "make depend" do
    396 			# nothing.
    397 			#
    398 			MKDEP=:
    399 		fi
    400 		rm -rf conftest*
    401 	else
    402 		AC_MSG_RESULT([no])
    403 		#
    404 		# We can't run mkdep, so have "make depend" do
    405 		# nothing.
    406 		#
    407 		MKDEP=:
    408 	fi
    409 	AC_SUBST(DEPENDENCY_CFLAG)
    410 	AC_SUBST(MKDEP)
    411     ])
    412 
    413 dnl
    414 dnl Determine what options are needed to build a shared library
    415 dnl
    416 dnl usage:
    417 dnl
    418 dnl	AC_LBL_SHLIBS_INIT
    419 dnl
    420 dnl results:
    421 dnl
    422 dnl	V_CCOPT (modified to build position-independent code)
    423 dnl	V_SHLIB_CMD
    424 dnl	V_SHLIB_OPT
    425 dnl	V_SONAME_OPT
    426 dnl	V_RPATH_OPT
    427 dnl
    428 AC_DEFUN(AC_LBL_SHLIBS_INIT,
    429     [AC_PREREQ(2.50)
    430     if test "$GCC" = yes ; then
    431 	    #
    432 	    # On platforms where we build a shared library:
    433 	    #
    434 	    #	add options to generate position-independent code,
    435 	    #	if necessary (it's the default in AIX and Darwin/OS X);
    436 	    #
    437 	    #	define option to set the soname of the shared library,
    438 	    #	if the OS supports that;
    439 	    #
    440 	    #	add options to specify, at link time, a directory to
    441 	    #	add to the run-time search path, if that's necessary.
    442 	    #
    443 	    V_SHLIB_CMD="\$(CC)"
    444 	    V_SHLIB_OPT="-shared"
    445 	    case "$host_os" in
    446 
    447 	    aix*)
    448 		    ;;
    449 
    450 	    freebsd*|netbsd*|openbsd*|dragonfly*|linux*|osf*)
    451 	    	    #
    452 		    # Platforms where the linker is the GNU linker
    453 		    # or accepts command-line arguments like
    454 		    # those the GNU linker accepts.
    455 		    #
    456 		    # Some instruction sets require -fPIC on some
    457 		    # operating systems.  Check for them.  If you
    458 		    # have a combination that requires it, add it
    459 		    # here.
    460 		    #
    461 		    PIC_OPT=-fpic
    462 		    case "$host_cpu" in
    463 
    464 		    sparc64*)
    465 			case "$host_os" in
    466 
    467 			freebsd*|openbsd*)
    468 			    PIC_OPT=-fPIC
    469 			    ;;
    470 			esac
    471 			;;
    472 		    esac
    473 		    V_CCOPT="$V_CCOPT $PIC_OPT"
    474 		    V_SONAME_OPT="-Wl,-soname,"
    475 		    V_RPATH_OPT="-Wl,-rpath,"
    476 		    ;;
    477 
    478 	    hpux*)
    479 		    V_CCOPT="$V_CCOPT -fpic"
    480 	    	    #
    481 		    # XXX - this assumes GCC is using the HP linker,
    482 		    # rather than the GNU linker, and that the "+h"
    483 		    # option is used on all HP-UX platforms, both .sl
    484 		    # and .so.
    485 		    #
    486 		    V_SONAME_OPT="-Wl,+h,"
    487 		    #
    488 		    # By default, directories specifed with -L
    489 		    # are added to the run-time search path, so
    490 		    # we don't add them in pcap-config.
    491 		    #
    492 		    ;;
    493 
    494 	    solaris*)
    495 		    V_CCOPT="$V_CCOPT -fpic"
    496 		    #
    497 		    # XXX - this assumes GCC is using the Sun linker,
    498 		    # rather than the GNU linker.
    499 		    #
    500 		    V_SONAME_OPT="-Wl,-h,"
    501 		    V_RPATH_OPT="-Wl,-R,"
    502 		    ;;
    503 	    esac
    504     else
    505 	    #
    506 	    # Set the appropriate compiler flags and, on platforms
    507 	    # where we build a shared library:
    508 	    #
    509 	    #	add options to generate position-independent code,
    510 	    #	if necessary (it's the default in Darwin/OS X);
    511 	    #
    512 	    #	if we generate ".so" shared libraries, define the
    513 	    #	appropriate options for building the shared library;
    514 	    #
    515 	    #	add options to specify, at link time, a directory to
    516 	    #	add to the run-time search path, if that's necessary.
    517 	    #
    518 	    # Note: spaces after V_SONAME_OPT are significant; on
    519 	    # some platforms the soname is passed with a GCC-like
    520 	    # "-Wl,-soname,{soname}" option, with the soname part
    521 	    # of the option, while on other platforms the C compiler
    522 	    # driver takes it as a regular option with the soname
    523 	    # following the option.  The same applies to V_RPATH_OPT.
    524 	    #
    525 	    case "$host_os" in
    526 
    527 	    aix*)
    528 		    V_SHLIB_CMD="\$(CC)"
    529 		    V_SHLIB_OPT="-G -bnoentry -bexpall"
    530 		    ;;
    531 
    532 	    freebsd*|netbsd*|openbsd*|dragonfly*|linux*)
    533 		    #
    534 		    # "cc" is GCC.
    535 		    #
    536 		    V_CCOPT="$V_CCOPT -fpic"
    537 		    V_SHLIB_CMD="\$(CC)"
    538 		    V_SHLIB_OPT="-shared"
    539 		    V_SONAME_OPT="-Wl,-soname,"
    540 		    V_RPATH_OPT="-Wl,-rpath,"
    541 		    ;;
    542 
    543 	    hpux*)
    544 		    V_CCOPT="$V_CCOPT +z"
    545 		    V_SHLIB_CMD="\$(LD)"
    546 		    V_SHLIB_OPT="-b"
    547 		    V_SONAME_OPT="+h "
    548 		    #
    549 		    # By default, directories specifed with -L
    550 		    # are added to the run-time search path, so
    551 		    # we don't add them in pcap-config.
    552 		    #
    553 		    ;;
    554 
    555 	    osf*)
    556 	    	    #
    557 		    # Presumed to be DEC OSF/1, Digital UNIX, or
    558 		    # Tru64 UNIX.
    559 		    #
    560 		    V_SHLIB_CMD="\$(CC)"
    561 		    V_SHLIB_OPT="-shared"
    562 		    V_SONAME_OPT="-soname "
    563 		    V_RPATH_OPT="-rpath "
    564 		    ;;
    565 
    566 	    solaris*)
    567 		    V_CCOPT="$V_CCOPT -Kpic"
    568 		    V_SHLIB_CMD="\$(CC)"
    569 		    V_SHLIB_OPT="-G"
    570 		    V_SONAME_OPT="-h "
    571 		    V_RPATH_OPT="-R"
    572 		    ;;
    573 	    esac
    574     fi
    575 ])
    576 
    577 #
    578 # Try compiling a sample of the type of code that appears in
    579 # gencode.c with "inline", "__inline__", and "__inline".
    580 #
    581 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
    582 # as it just tests whether a function returning "int" can be inlined;
    583 # at least some versions of HP's C compiler can inline that, but can't
    584 # inline a function that returns a struct pointer.
    585 #
    586 # Make sure we use the V_CCOPT flags, because some of those might
    587 # disable inlining.
    588 #
    589 AC_DEFUN(AC_LBL_C_INLINE,
    590     [AC_MSG_CHECKING(for inline)
    591     save_CFLAGS="$CFLAGS"
    592     CFLAGS="$V_CCOPT"
    593     AC_CACHE_VAL(ac_cv_lbl_inline, [
    594 	ac_cv_lbl_inline=""
    595 	ac_lbl_cc_inline=no
    596 	for ac_lbl_inline in inline __inline__ __inline
    597 	do
    598 	    AC_TRY_COMPILE(
    599 		[#define inline $ac_lbl_inline
    600 		static inline struct iltest *foo(void);
    601 		struct iltest {
    602 		    int iltest1;
    603 		    int iltest2;
    604 		};
    605 
    606 		static inline struct iltest *
    607 		foo()
    608 		{
    609 		    static struct iltest xxx;
    610 
    611 		    return &xxx;
    612 		}],,ac_lbl_cc_inline=yes,)
    613 	    if test "$ac_lbl_cc_inline" = yes ; then
    614 		break;
    615 	    fi
    616 	done
    617 	if test "$ac_lbl_cc_inline" = yes ; then
    618 	    ac_cv_lbl_inline=$ac_lbl_inline
    619 	fi])
    620     CFLAGS="$save_CFLAGS"
    621     if test ! -z "$ac_cv_lbl_inline" ; then
    622 	AC_MSG_RESULT($ac_cv_lbl_inline)
    623     else
    624 	AC_MSG_RESULT(no)
    625     fi
    626     AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
    627 
    628 dnl
    629 dnl If using gcc, make sure we have ANSI ioctl definitions
    630 dnl
    631 dnl usage:
    632 dnl
    633 dnl	AC_LBL_FIXINCLUDES
    634 dnl
    635 AC_DEFUN(AC_LBL_FIXINCLUDES,
    636     [if test "$GCC" = yes ; then
    637 	    AC_MSG_CHECKING(for ANSI ioctl definitions)
    638 	    AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
    639 		AC_TRY_COMPILE(
    640 		    [/*
    641 		     * This generates a "duplicate case value" when fixincludes
    642 		     * has not be run.
    643 		     */
    644 #		include <sys/types.h>
    645 #		include <sys/time.h>
    646 #		include <sys/ioctl.h>
    647 #		ifdef HAVE_SYS_IOCCOM_H
    648 #		include <sys/ioccom.h>
    649 #		endif],
    650 		    [switch (0) {
    651 		    case _IO('A', 1):;
    652 		    case _IO('B', 1):;
    653 		    }],
    654 		    ac_cv_lbl_gcc_fixincludes=yes,
    655 		    ac_cv_lbl_gcc_fixincludes=no))
    656 	    AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
    657 	    if test $ac_cv_lbl_gcc_fixincludes = no ; then
    658 		    # Don't cache failure
    659 		    unset ac_cv_lbl_gcc_fixincludes
    660 		    AC_MSG_ERROR(see the INSTALL for more info)
    661 	    fi
    662     fi])
    663 
    664 dnl
    665 dnl Checks to see if union wait is used with WEXITSTATUS()
    666 dnl
    667 dnl usage:
    668 dnl
    669 dnl	AC_LBL_UNION_WAIT
    670 dnl
    671 dnl results:
    672 dnl
    673 dnl	DECLWAITSTATUS (defined)
    674 dnl
    675 AC_DEFUN(AC_LBL_UNION_WAIT,
    676     [AC_MSG_CHECKING(if union wait is used)
    677     AC_CACHE_VAL(ac_cv_lbl_union_wait,
    678 	AC_TRY_COMPILE([
    679 #	include <sys/types.h>
    680 #	include <sys/wait.h>],
    681 	    [int status;
    682 	    u_int i = WEXITSTATUS(status);
    683 	    u_int j = waitpid(0, &status, 0);],
    684 	    ac_cv_lbl_union_wait=no,
    685 	    ac_cv_lbl_union_wait=yes))
    686     AC_MSG_RESULT($ac_cv_lbl_union_wait)
    687     if test $ac_cv_lbl_union_wait = yes ; then
    688 	    AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait])
    689     else
    690 	    AC_DEFINE(DECLWAITSTATUS,int,[type for wait])
    691     fi])
    692 
    693 dnl
    694 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
    695 dnl
    696 dnl usage:
    697 dnl
    698 dnl	AC_LBL_SOCKADDR_SA_LEN
    699 dnl
    700 dnl results:
    701 dnl
    702 dnl	HAVE_SOCKADDR_SA_LEN (defined)
    703 dnl
    704 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
    705     [AC_MSG_CHECKING(if sockaddr struct has the sa_len member)
    706     AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
    707 	AC_TRY_COMPILE([
    708 #	include <sys/types.h>
    709 #	include <sys/socket.h>],
    710 	[u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
    711 	ac_cv_lbl_sockaddr_has_sa_len=yes,
    712 	ac_cv_lbl_sockaddr_has_sa_len=no))
    713     AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
    714     if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
    715 	    AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member])
    716     fi])
    717 
    718 dnl
    719 dnl Checks to see if there's a sockaddr_storage structure
    720 dnl
    721 dnl usage:
    722 dnl
    723 dnl	AC_LBL_SOCKADDR_STORAGE
    724 dnl
    725 dnl results:
    726 dnl
    727 dnl	HAVE_SOCKADDR_STORAGE (defined)
    728 dnl
    729 AC_DEFUN(AC_LBL_SOCKADDR_STORAGE,
    730     [AC_MSG_CHECKING(if sockaddr_storage struct exists)
    731     AC_CACHE_VAL(ac_cv_lbl_has_sockaddr_storage,
    732 	AC_TRY_COMPILE([
    733 #	include <sys/types.h>
    734 #	include <sys/socket.h>],
    735 	[u_int i = sizeof (struct sockaddr_storage)],
    736 	ac_cv_lbl_has_sockaddr_storage=yes,
    737 	ac_cv_lbl_has_sockaddr_storage=no))
    738     AC_MSG_RESULT($ac_cv_lbl_has_sockaddr_storage)
    739     if test $ac_cv_lbl_has_sockaddr_storage = yes ; then
    740 	    AC_DEFINE(HAVE_SOCKADDR_STORAGE,1,[if struct sockaddr_storage exists])
    741     fi])
    742 
    743 dnl
    744 dnl Checks to see if the dl_hp_ppa_info_t struct has the HP-UX 11.00
    745 dnl dl_module_id_1 member
    746 dnl
    747 dnl usage:
    748 dnl
    749 dnl	AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1
    750 dnl
    751 dnl results:
    752 dnl
    753 dnl	HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1 (defined)
    754 dnl
    755 dnl NOTE: any compile failure means we conclude that it doesn't have
    756 dnl that member, so if we don't have DLPI, don't have a <sys/dlpi_ext.h>
    757 dnl header, or have one that doesn't declare a dl_hp_ppa_info_t type,
    758 dnl we conclude it doesn't have that member (which is OK, as either we
    759 dnl won't be using code that would use that member, or we wouldn't
    760 dnl compile in any case).
    761 dnl
    762 AC_DEFUN(AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1,
    763     [AC_MSG_CHECKING(if dl_hp_ppa_info_t struct has dl_module_id_1 member)
    764     AC_CACHE_VAL(ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1,
    765 	AC_TRY_COMPILE([
    766 #	include <sys/types.h>
    767 #	include <sys/dlpi.h>
    768 #	include <sys/dlpi_ext.h>],
    769 	[u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1)],
    770 	ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes,
    771 	ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no))
    772     AC_MSG_RESULT($ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1)
    773     if test $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1 = yes ; then
    774 	    AC_DEFINE(HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1,1,[if ppa_info_t_dl_module_id exists])
    775     fi])
    776 
    777 dnl
    778 dnl Checks to see if -R is used
    779 dnl
    780 dnl usage:
    781 dnl
    782 dnl	AC_LBL_HAVE_RUN_PATH
    783 dnl
    784 dnl results:
    785 dnl
    786 dnl	ac_cv_lbl_have_run_path (yes or no)
    787 dnl
    788 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
    789     [AC_MSG_CHECKING(for ${CC-cc} -R)
    790     AC_CACHE_VAL(ac_cv_lbl_have_run_path,
    791 	[echo 'main(){}' > conftest.c
    792 	${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
    793 	if test ! -s conftest.out ; then
    794 		ac_cv_lbl_have_run_path=yes
    795 	else
    796 		ac_cv_lbl_have_run_path=no
    797 	fi
    798 	rm -f -r conftest*])
    799     AC_MSG_RESULT($ac_cv_lbl_have_run_path)
    800     ])
    801 
    802 dnl
    803 dnl Checks to see if unaligned memory accesses fail
    804 dnl
    805 dnl usage:
    806 dnl
    807 dnl	AC_LBL_UNALIGNED_ACCESS
    808 dnl
    809 dnl results:
    810 dnl
    811 dnl	LBL_ALIGN (DEFINED)
    812 dnl
    813 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
    814     [AC_MSG_CHECKING(if unaligned accesses fail)
    815     AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
    816 	[case "$host_cpu" in
    817 
    818 	#
    819 	# These are CPU types where:
    820 	#
    821 	#	the CPU faults on an unaligned access, but at least some
    822 	#	OSes that support that CPU catch the fault and simulate
    823 	#	the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
    824 	#	the simulation is slow, so we don't want to use it;
    825 	#
    826 	#	the CPU, I infer (from the old
    827 	#
    828 	# XXX: should also check that they don't do weird things (like on arm)
    829 	#
    830 	#	comment) doesn't fault on unaligned accesses, but doesn't
    831 	#	do a normal unaligned fetch, either (e.g., presumably, ARM);
    832 	#
    833 	#	for whatever reason, the test program doesn't work
    834 	#	(this has been claimed to be the case for several of those
    835 	#	CPUs - I don't know what the problem is; the problem
    836 	#	was reported as "the test program dumps core" for SuperH,
    837 	#	but that's what the test program is *supposed* to do -
    838 	#	it dumps core before it writes anything, so the test
    839 	#	for an empty output file should find an empty output
    840 	#	file and conclude that unaligned accesses don't work).
    841 	#
    842 	# This run-time test won't work if you're cross-compiling, so
    843 	# in order to support cross-compiling for a particular CPU,
    844 	# we have to wire in the list of CPU types anyway, as far as
    845 	# I know, so perhaps we should just have a set of CPUs on
    846 	# which we know it doesn't work, a set of CPUs on which we
    847 	# know it does work, and have the script just fail on other
    848 	# cpu types and update it when such a failure occurs.
    849 	#
    850 	alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1)
    851 		ac_cv_lbl_unaligned_fail=yes
    852 		;;
    853 
    854 	*)
    855 		cat >conftest.c <<EOF
    856 #		include <sys/types.h>
    857 #		include <sys/wait.h>
    858 #		include <stdio.h>
    859 		unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
    860 		main() {
    861 		unsigned int i;
    862 		pid_t pid;
    863 		int status;
    864 		/* avoid "core dumped" message */
    865 		pid = fork();
    866 		if (pid <  0)
    867 			exit(2);
    868 		if (pid > 0) {
    869 			/* parent */
    870 			pid = waitpid(pid, &status, 0);
    871 			if (pid < 0)
    872 				exit(3);
    873 			exit(!WIFEXITED(status));
    874 		}
    875 		/* child */
    876 		i = *(unsigned int *)&a[[1]];
    877 		printf("%d\n", i);
    878 		exit(0);
    879 		}
    880 EOF
    881 		${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
    882 		    conftest.c $LIBS >/dev/null 2>&1
    883 		if test ! -x conftest ; then
    884 			dnl failed to compile for some reason
    885 			ac_cv_lbl_unaligned_fail=yes
    886 		else
    887 			./conftest >conftest.out
    888 			if test ! -s conftest.out ; then
    889 				ac_cv_lbl_unaligned_fail=yes
    890 			else
    891 				ac_cv_lbl_unaligned_fail=no
    892 			fi
    893 		fi
    894 		rm -f -r conftest* core core.conftest
    895 		;;
    896 	esac])
    897     AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
    898     if test $ac_cv_lbl_unaligned_fail = yes ; then
    899 	    AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails])
    900     fi])
    901 
    902 dnl
    903 dnl If the file .devel exists:
    904 dnl	Add some warning flags if the compiler supports them
    905 dnl	If an os prototype include exists, symlink os-proto.h to it
    906 dnl
    907 dnl usage:
    908 dnl
    909 dnl	AC_LBL_DEVEL(copt)
    910 dnl
    911 dnl results:
    912 dnl
    913 dnl	$1 (copt appended)
    914 dnl	HAVE_OS_PROTO_H (defined)
    915 dnl	os-proto.h (symlinked)
    916 dnl
    917 AC_DEFUN(AC_LBL_DEVEL,
    918     [rm -f os-proto.h
    919     if test "${LBL_CFLAGS+set}" = set; then
    920 	    $1="$$1 ${LBL_CFLAGS}"
    921     fi
    922     if test -f .devel ; then
    923 	    #
    924 	    # Skip all the warning option stuff on some compilers.
    925 	    #
    926 	    if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then
    927 		    AC_LBL_CHECK_UNKNOWN_WARNING_OPTION_ERROR()
    928 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wall)
    929 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wsign-compare)
    930 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes)
    931 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes)
    932 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wshadow)
    933 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wdeclaration-after-statement)
    934 		    AC_LBL_CHECK_COMPILER_OPT($1, -Wused-but-marked-unused)
    935 	    fi
    936 	    AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT()
    937 	    #
    938 	    # We used to set -n32 for IRIX 6 when not using GCC (presumed
    939 	    # to mean that we're using MIPS C or MIPSpro C); it specified
    940 	    # the "new" faster 32-bit ABI, introduced in IRIX 6.2.  I'm
    941 	    # not sure why that would be something to do *only* with a
    942 	    # .devel file; why should the ABI for which we produce code
    943 	    # depend on .devel?
    944 	    #
    945 	    os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
    946 	    name="lbl/os-$os.h"
    947 	    if test -f $name ; then
    948 		    ln -s $name os-proto.h
    949 		    AC_DEFINE(HAVE_OS_PROTO_H, 1,
    950 			[if there's an os_proto.h for this platform, to use additional prototypes])
    951 	    else
    952 		    AC_MSG_WARN(can't find $name)
    953 	    fi
    954     fi])
    955 
    956 dnl
    957 dnl Improved version of AC_CHECK_LIB
    958 dnl
    959 dnl Thanks to John Hawkinson (jhawk (a] mit.edu)
    960 dnl
    961 dnl usage:
    962 dnl
    963 dnl	AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
    964 dnl	    ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
    965 dnl
    966 dnl results:
    967 dnl
    968 dnl	LIBS
    969 dnl
    970 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
    971 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
    972 dnl We keep it around for reference purposes in case it's ever
    973 dnl useful in the future.
    974 dnl
    975 
    976 define(AC_LBL_CHECK_LIB,
    977 [AC_MSG_CHECKING([for $2 in -l$1])
    978 dnl Use a cache variable name containing the library, function
    979 dnl name, and extra libraries to link with, because the test really is
    980 dnl for library $1 defining function $2, when linked with potinal
    981 dnl library $5, not just for library $1.  Separate tests with the same
    982 dnl $1 and different $2's or $5's may have different results.
    983 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
    984 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
    985 [ac_save_LIBS="$LIBS"
    986 LIBS="-l$1 $5 $LIBS"
    987 AC_TRY_LINK(dnl
    988 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
    989 [/* Override any gcc2 internal prototype to avoid an error.  */
    990 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
    991 extern "C"
    992 #endif
    993 ])dnl
    994 [/* We use char because int might match the return type of a gcc2
    995     builtin and then its argument prototype would still apply.  */
    996 char $2();
    997 ]),
    998 	    [$2()],
    999 	    eval "ac_cv_lbl_lib_$ac_lib_var=yes",
   1000 	    eval "ac_cv_lbl_lib_$ac_lib_var=no")
   1001 LIBS="$ac_save_LIBS"
   1002 ])dnl
   1003 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
   1004   AC_MSG_RESULT(yes)
   1005   ifelse([$3], ,
   1006 [changequote(, )dnl
   1007   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
   1008     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
   1009 changequote([, ])dnl
   1010   AC_DEFINE_UNQUOTED($ac_tr_lib)
   1011   LIBS="-l$1 $LIBS"
   1012 ], [$3])
   1013 else
   1014   AC_MSG_RESULT(no)
   1015 ifelse([$4], , , [$4
   1016 ])dnl
   1017 fi
   1018 ])
   1019 
   1020 dnl
   1021 dnl AC_LBL_LIBRARY_NET
   1022 dnl
   1023 dnl This test is for network applications that need socket() and
   1024 dnl gethostbyname() -ish functions.  Under Solaris, those applications
   1025 dnl need to link with "-lsocket -lnsl".  Under IRIX, they need to link
   1026 dnl with "-lnsl" but should *not* link with "-lsocket" because
   1027 dnl libsocket.a breaks a number of things (for instance:
   1028 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
   1029 dnl versions of IRIX).
   1030 dnl
   1031 dnl Unfortunately, many application developers are not aware of this,
   1032 dnl and mistakenly write tests that cause -lsocket to be used under
   1033 dnl IRIX.  It is also easy to write tests that cause -lnsl to be used
   1034 dnl under operating systems where neither are necessary (or useful),
   1035 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
   1036 dnl
   1037 dnl This test exists so that every application developer does not test
   1038 dnl this in a different, and subtly broken fashion.
   1039 
   1040 dnl It has been argued that this test should be broken up into two
   1041 dnl seperate tests, one for the resolver libraries, and one for the
   1042 dnl libraries necessary for using Sockets API. Unfortunately, the two
   1043 dnl are carefully intertwined and allowing the autoconf user to use
   1044 dnl them independantly potentially results in unfortunate ordering
   1045 dnl dependancies -- as such, such component macros would have to
   1046 dnl carefully use indirection and be aware if the other components were
   1047 dnl executed. Since other autoconf macros do not go to this trouble,
   1048 dnl and almost no applications use sockets without the resolver, this
   1049 dnl complexity has not been implemented.
   1050 dnl
   1051 dnl The check for libresolv is in case you are attempting to link
   1052 dnl statically and happen to have a libresolv.a lying around (and no
   1053 dnl libnsl.a).
   1054 dnl
   1055 AC_DEFUN(AC_LBL_LIBRARY_NET, [
   1056     # Most operating systems have gethostbyname() in the default searched
   1057     # libraries (i.e. libc):
   1058     # Some OSes (eg. Solaris) place it in libnsl
   1059     # Some strange OSes (SINIX) have it in libsocket:
   1060     AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
   1061     # Unfortunately libsocket sometimes depends on libnsl and
   1062     # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
   1063     if test "$ac_cv_search_gethostbyname" = "no"
   1064     then
   1065 	AC_CHECK_LIB(socket, gethostbyname,
   1066                      LIBS="-lsocket -lnsl $LIBS", , -lnsl)
   1067     fi
   1068     AC_SEARCH_LIBS(socket, socket, ,
   1069 	AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
   1070     # DLPI needs putmsg under HPUX so test for -lstr while we're at it
   1071     AC_SEARCH_LIBS(putmsg, str)
   1072     ])
   1073 
   1074 dnl
   1075 dnl Test for __attribute__
   1076 dnl
   1077 
   1078 AC_DEFUN(AC_C___ATTRIBUTE__, [
   1079 AC_MSG_CHECKING(for __attribute__)
   1080 AC_CACHE_VAL(ac_cv___attribute__, [
   1081 AC_COMPILE_IFELSE([
   1082   AC_LANG_SOURCE([[
   1083 #include <stdlib.h>
   1084 
   1085 static void foo(void) __attribute__ ((noreturn));
   1086 
   1087 static void
   1088 foo(void)
   1089 {
   1090   exit(1);
   1091 }
   1092 
   1093 int
   1094 main(int argc, char **argv)
   1095 {
   1096   foo();
   1097 }
   1098   ]])],
   1099 ac_cv___attribute__=yes,
   1100 ac_cv___attribute__=no)])
   1101 if test "$ac_cv___attribute__" = "yes"; then
   1102   AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
   1103 else
   1104   #
   1105   # We can't use __attribute__, so we can't use __attribute__((unused)),
   1106   # so we define _U_ to an empty string.
   1107   #
   1108   V_DEFS="$V_DEFS -D_U_=\"\""
   1109 fi
   1110 AC_MSG_RESULT($ac_cv___attribute__)
   1111 ])
   1112 
   1113 dnl
   1114 dnl Test whether __attribute__((unused)) can be used without warnings
   1115 dnl
   1116 
   1117 AC_DEFUN(AC_C___ATTRIBUTE___UNUSED, [
   1118 AC_MSG_CHECKING([whether __attribute__((unused)) can be used without warnings])
   1119 AC_CACHE_VAL(ac_cv___attribute___unused, [
   1120 save_CFLAGS="$CFLAGS"
   1121 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
   1122 AC_COMPILE_IFELSE([
   1123   AC_LANG_SOURCE([[
   1124 #include <stdlib.h>
   1125 #include <stdio.h>
   1126 
   1127 int
   1128 main(int argc  __attribute((unused)), char **argv __attribute((unused)))
   1129 {
   1130   printf("Hello, world!\n");
   1131   return 0;
   1132 }
   1133   ]])],
   1134 ac_cv___attribute___unused=yes,
   1135 ac_cv___attribute___unused=no)])
   1136 CFLAGS="$save_CFLAGS"
   1137 if test "$ac_cv___attribute___unused" = "yes"; then
   1138   V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
   1139 else
   1140   V_DEFS="$V_DEFS -D_U_=\"\""
   1141 fi
   1142 AC_MSG_RESULT($ac_cv___attribute___unused)
   1143 ])
   1144 
   1145 dnl
   1146 dnl Test whether __attribute__((format)) can be used without warnings
   1147 dnl
   1148 
   1149 AC_DEFUN(AC_C___ATTRIBUTE___FORMAT, [
   1150 AC_MSG_CHECKING([whether __attribute__((format)) can be used without warnings])
   1151 AC_CACHE_VAL(ac_cv___attribute___format, [
   1152 save_CFLAGS="$CFLAGS"
   1153 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
   1154 AC_COMPILE_IFELSE([
   1155   AC_LANG_SOURCE([[
   1156 #include <stdlib.h>
   1157 
   1158 extern int foo(const char *fmt, ...)
   1159 		  __attribute__ ((format (printf, 1, 2)));
   1160 
   1161 int
   1162 main(int argc, char **argv)
   1163 {
   1164   foo("%s", "test");
   1165 }
   1166   ]])],
   1167 ac_cv___attribute___format=yes,
   1168 ac_cv___attribute___format=no)])
   1169 CFLAGS="$save_CFLAGS"
   1170 if test "$ac_cv___attribute___format" = "yes"; then
   1171   AC_DEFINE(__ATTRIBUTE___FORMAT_OK, 1,
   1172     [define if your compiler allows __attribute__((format)) without a warning])
   1173 fi
   1174 AC_MSG_RESULT($ac_cv___attribute___format)
   1175 ])
   1176 
   1177 dnl
   1178 dnl Checks to see if tpacket_stats is defined in linux/if_packet.h
   1179 dnl If so then pcap-linux.c can use this to report proper statistics.
   1180 dnl
   1181 dnl -Scott Barron
   1182 dnl
   1183 AC_DEFUN(AC_LBL_TPACKET_STATS,
   1184    [AC_MSG_CHECKING(if if_packet.h has tpacket_stats defined)
   1185    AC_CACHE_VAL(ac_cv_lbl_tpacket_stats,
   1186    AC_TRY_COMPILE([
   1187 #  include <linux/if_packet.h>],
   1188    [struct tpacket_stats stats],
   1189    ac_cv_lbl_tpacket_stats=yes,
   1190    ac_cv_lbl_tpacket_stats=no))
   1191    AC_MSG_RESULT($ac_cv_lbl_tpacket_stats)
   1192    if test $ac_cv_lbl_tpacket_stats = yes; then
   1193        AC_DEFINE(HAVE_TPACKET_STATS,1,[if if_packet.h has tpacket_stats defined])
   1194    fi])
   1195 
   1196 dnl
   1197 dnl Checks to see if the tpacket_auxdata struct has a tp_vlan_tci member.
   1198 dnl
   1199 dnl usage:
   1200 dnl
   1201 dnl	AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI
   1202 dnl
   1203 dnl results:
   1204 dnl
   1205 dnl	HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI (defined)
   1206 dnl
   1207 dnl NOTE: any compile failure means we conclude that it doesn't have
   1208 dnl that member, so if we don't have tpacket_auxdata, we conclude it
   1209 dnl doesn't have that member (which is OK, as either we won't be using
   1210 dnl code that would use that member, or we wouldn't compile in any case).
   1211 dnl
   1212 AC_DEFUN(AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI,
   1213     [AC_MSG_CHECKING(if tpacket_auxdata struct has tp_vlan_tci member)
   1214     AC_CACHE_VAL(ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci,
   1215 	AC_TRY_COMPILE([
   1216 #	include <sys/types.h>
   1217 #	include <linux/if_packet.h>],
   1218 	[u_int i = sizeof(((struct tpacket_auxdata *)0)->tp_vlan_tci)],
   1219 	ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=yes,
   1220 	ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=no))
   1221     AC_MSG_RESULT($ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci)
   1222     if test $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci = yes ; then
   1223 	    HAVE_LINUX_TPACKET_AUXDATA=tp_vlan_tci
   1224 	    AC_SUBST(HAVE_LINUX_TPACKET_AUXDATA)
   1225 	    AC_DEFINE(HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI,1,[if tp_vlan_tci exists])
   1226     fi])
   1227 
   1228 dnl
   1229 dnl Checks to see if Solaris has the dl_passive_req_t struct defined
   1230 dnl in <sys/dlpi.h>.
   1231 dnl
   1232 dnl usage:
   1233 dnl
   1234 dnl	AC_LBL_DL_PASSIVE_REQ_T
   1235 dnl
   1236 dnl results:
   1237 dnl
   1238 dnl 	HAVE_DLPI_PASSIVE (defined)
   1239 dnl
   1240 AC_DEFUN(AC_LBL_DL_PASSIVE_REQ_T,
   1241         [AC_MSG_CHECKING(if dl_passive_req_t struct exists)
   1242        AC_CACHE_VAL(ac_cv_lbl_has_dl_passive_req_t,
   1243                 AC_TRY_COMPILE([
   1244 #       include <sys/types.h>
   1245 #       include <sys/dlpi.h>],
   1246         [u_int i = sizeof(dl_passive_req_t)],
   1247         ac_cv_lbl_has_dl_passive_req_t=yes,
   1248         ac_cv_lbl_has_dl_passive_req_t=no))
   1249     AC_MSG_RESULT($ac_cv_lbl_has_dl_passive_req_t)
   1250     if test $ac_cv_lbl_has_dl_passive_req_t = yes ; then
   1251             AC_DEFINE(HAVE_DLPI_PASSIVE,1,[if passive_req_t primitive
   1252 		exists])
   1253     fi])
   1254