Blame aclocal.m4

Packit 209cc3
dnl Copyright (c) 1995, 1996, 1997, 1998
Packit 209cc3
dnl	The Regents of the University of California.  All rights reserved.
Packit 209cc3
dnl
Packit 209cc3
dnl Redistribution and use in source and binary forms, with or without
Packit 209cc3
dnl modification, are permitted provided that: (1) source code distributions
Packit 209cc3
dnl retain the above copyright notice and this paragraph in its entirety, (2)
Packit 209cc3
dnl distributions including binary code include the above copyright notice and
Packit 209cc3
dnl this paragraph in its entirety in the documentation or other materials
Packit 209cc3
dnl provided with the distribution, and (3) all advertising materials mentioning
Packit 209cc3
dnl features or use of this software display the following acknowledgement:
Packit 209cc3
dnl ``This product includes software developed by the University of California,
Packit 209cc3
dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
Packit 209cc3
dnl the University nor the names of its contributors may be used to endorse
Packit 209cc3
dnl or promote products derived from this software without specific prior
Packit 209cc3
dnl written permission.
Packit 209cc3
dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
Packit 209cc3
dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
Packit 209cc3
dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Packit 209cc3
dnl
Packit 209cc3
dnl LBL autoconf macros
Packit 209cc3
dnl
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC.
Packit 209cc3
dnl
Packit 209cc3
dnl It appears that newer versions of autoconf (2.64 and later) will,
Packit 209cc3
dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the
Packit 209cc3
dnl beginning of the macro, even if the macro itself calls AC_PROG_CC.
Packit 209cc3
dnl See the "Prerequisite Macros" and "Expanded Before Required" sections
Packit 209cc3
dnl in the Autoconf documentation.
Packit 209cc3
dnl
Packit 209cc3
dnl This causes a steaming heap of fail in our case, as we were, in
Packit 209cc3
dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC,
Packit 209cc3
dnl calling AC_PROG_CC, and then doing the tests we now do in
Packit 209cc3
dnl AC_LBL_C_INIT.  Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC,
Packit 209cc3
dnl and AC_LBL_C_INIT at the top level.
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC,
Packit 209cc3
[
Packit 209cc3
    AC_BEFORE([$0], [AC_LBL_C_INIT])
Packit 209cc3
    AC_BEFORE([$0], [AC_PROG_CC])
Packit 209cc3
    AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
Packit 209cc3
    AC_BEFORE([$0], [AC_LBL_DEVEL])
Packit 209cc3
    AC_ARG_WITH(gcc, [  --without-gcc           don't use gcc])
Packit 209cc3
    $1=""
Packit 209cc3
    if test "${srcdir}" != "." ; then
Packit 209cc3
	    $1="-I\$(srcdir)"
Packit 209cc3
    fi
Packit 209cc3
    if test "${CFLAGS+set}" = set; then
Packit 209cc3
	    LBL_CFLAGS="$CFLAGS"
Packit 209cc3
    fi
Packit 209cc3
    if test -z "$CC" ; then
Packit 209cc3
	    case "$host_os" in
Packit 209cc3
Packit 209cc3
	    bsdi*)
Packit 209cc3
		    AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
Packit 209cc3
		    if test $SHLICC2 = yes ; then
Packit 209cc3
			    CC=shlicc2
Packit 209cc3
			    export CC
Packit 209cc3
		    fi
Packit 209cc3
		    ;;
Packit 209cc3
	    esac
Packit 209cc3
    fi
Packit 209cc3
    if test -z "$CC" -a "$with_gcc" = no ; then
Packit 209cc3
	    CC=cc
Packit 209cc3
	    export CC
Packit 209cc3
    fi
Packit 209cc3
])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Determine which compiler we're using (cc or gcc)
Packit 209cc3
dnl If using gcc, determine the version number
Packit 209cc3
dnl If using cc:
Packit 209cc3
dnl     require that it support ansi prototypes
Packit 209cc3
dnl     use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to
Packit 209cc3
dnl     do that ourselves for gcc)
Packit 209cc3
dnl     add -g flags, as appropriate
Packit 209cc3
dnl     explicitly specify /usr/local/include
Packit 209cc3
dnl
Packit 209cc3
dnl NOTE WELL: with newer versions of autoconf, "gcc" means any compiler
Packit 209cc3
dnl that defines __GNUC__, which means clang, for example, counts as "gcc".
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_C_INIT(copt, incls)
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	$1 (copt set)
Packit 209cc3
dnl	$2 (incls set)
Packit 209cc3
dnl	CC
Packit 209cc3
dnl	LDFLAGS
Packit 209cc3
dnl	LBL_CFLAGS
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_C_INIT,
Packit 209cc3
[
Packit 209cc3
    AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
Packit 209cc3
    AC_BEFORE([$0], [AC_LBL_DEVEL])
Packit 209cc3
    AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT])
Packit 209cc3
    if test "$GCC" = yes ; then
Packit 209cc3
	    #
Packit 209cc3
	    # -Werror forces warnings to be errors.
Packit 209cc3
	    #
Packit 209cc3
	    ac_lbl_cc_force_warning_errors=-Werror
Packit 209cc3
Packit 209cc3
	    #
Packit 209cc3
	    # Try to have the compiler default to hiding symbols,
Packit 209cc3
	    # so that only symbols explicitly exported with
Packit 209cc3
	    # PCAP_API will be visible outside (shared) libraries.
Packit 209cc3
	    #
Packit 209cc3
	    AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden)
Packit 209cc3
    else
Packit 209cc3
	    $2="$$2 -I/usr/local/include"
Packit 209cc3
	    LDFLAGS="$LDFLAGS -L/usr/local/lib"
Packit 209cc3
Packit 209cc3
	    case "$host_os" in
Packit 209cc3
Packit 209cc3
	    darwin*)
Packit 209cc3
		    #
Packit 209cc3
		    # This is assumed either to be GCC or clang, both
Packit 209cc3
		    # of which use -Werror to force warnings to be errors.
Packit 209cc3
		    #
Packit 209cc3
		    ac_lbl_cc_force_warning_errors=-Werror
Packit 209cc3
Packit 209cc3
		    #
Packit 209cc3
		    # Try to have the compiler default to hiding symbols,
Packit 209cc3
		    # so that only symbols explicitly exported with
Packit 209cc3
		    # PCAP_API will be visible outside (shared) libraries.
Packit 209cc3
		    #
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden)
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    hpux*)
Packit 209cc3
		    #
Packit 209cc3
		    # HP C, which is what we presume we're using, doesn't
Packit 209cc3
		    # exit with a non-zero exit status if we hand it an
Packit 209cc3
		    # invalid -W flag, can't be forced to do so even with
Packit 209cc3
		    # +We, and doesn't handle GCC-style -W flags, so we
Packit 209cc3
		    # don't want to try using GCC-style -W flags.
Packit 209cc3
		    #
Packit 209cc3
		    ac_lbl_cc_dont_try_gcc_dashW=yes
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    irix*)
Packit 209cc3
		    #
Packit 209cc3
		    # MIPS C, which is what we presume we're using, doesn't
Packit 209cc3
		    # necessarily exit with a non-zero exit status if we
Packit 209cc3
		    # hand it an invalid -W flag, can't be forced to do
Packit 209cc3
		    # so, and doesn't handle GCC-style -W flags, so we
Packit 209cc3
		    # don't want to try using GCC-style -W flags.
Packit 209cc3
		    #
Packit 209cc3
		    ac_lbl_cc_dont_try_gcc_dashW=yes
Packit 209cc3
		    #
Packit 209cc3
		    # It also, apparently, defaults to "char" being
Packit 209cc3
		    # unsigned, unlike most other C implementations;
Packit 209cc3
		    # I suppose we could say "signed char" whenever
Packit 209cc3
		    # we want to guarantee a signed "char", but let's
Packit 209cc3
		    # just force signed chars.
Packit 209cc3
		    #
Packit 209cc3
		    # -xansi is normally the default, but the
Packit 209cc3
		    # configure script was setting it; perhaps -cckr
Packit 209cc3
		    # was the default in the Old Days.  (Then again,
Packit 209cc3
		    # that would probably be for backwards compatibility
Packit 209cc3
		    # in the days when ANSI C was Shiny and New, i.e.
Packit 209cc3
		    # 1989 and the early '90's, so maybe we can just
Packit 209cc3
		    # drop support for those compilers.)
Packit 209cc3
		    #
Packit 209cc3
		    # -g is equivalent to -g2, which turns off
Packit 209cc3
		    # optimization; we choose -g3, which generates
Packit 209cc3
		    # debugging information but doesn't turn off
Packit 209cc3
		    # optimization (even if the optimization would
Packit 209cc3
		    # cause inaccuracies in debugging).
Packit 209cc3
		    #
Packit 209cc3
		    $1="$$1 -xansi -signed -g3"
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    osf*)
Packit 209cc3
		    #
Packit 209cc3
		    # Presumed to be DEC OSF/1, Digital UNIX, or
Packit 209cc3
		    # Tru64 UNIX.
Packit 209cc3
		    #
Packit 209cc3
		    # The DEC C compiler, which is what we presume we're
Packit 209cc3
		    # using, doesn't exit with a non-zero exit status if we
Packit 209cc3
		    # hand it an invalid -W flag, can't be forced to do
Packit 209cc3
		    # so, and doesn't handle GCC-style -W flags, so we
Packit 209cc3
		    # don't want to try using GCC-style -W flags.
Packit 209cc3
		    #
Packit 209cc3
		    ac_lbl_cc_dont_try_gcc_dashW=yes
Packit 209cc3
		    #
Packit 209cc3
		    # -g is equivalent to -g2, which turns off
Packit 209cc3
		    # optimization; we choose -g3, which generates
Packit 209cc3
		    # debugging information but doesn't turn off
Packit 209cc3
		    # optimization (even if the optimization would
Packit 209cc3
		    # cause inaccuracies in debugging).
Packit 209cc3
		    #
Packit 209cc3
		    $1="$$1 -g3"
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    solaris*)
Packit 209cc3
		    #
Packit 209cc3
		    # Assumed to be Sun C, which requires -errwarn to force
Packit 209cc3
		    # warnings to be treated as errors.
Packit 209cc3
		    #
Packit 209cc3
		    ac_lbl_cc_force_warning_errors=-errwarn
Packit 209cc3
Packit 209cc3
		    #
Packit 209cc3
		    # Try to have the compiler default to hiding symbols,
Packit 209cc3
		    # so that only symbols explicitly exported with
Packit 209cc3
		    # PCAP_API will be visible outside (shared) libraries.
Packit 209cc3
		    #
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -xldscope=hidden)
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    ultrix*)
Packit 209cc3
		    AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
Packit 209cc3
		    AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
Packit 209cc3
			AC_TRY_COMPILE(
Packit 209cc3
			    [#include <sys/types.h>],
Packit 209cc3
			    [struct a { int b; };
Packit 209cc3
			    void c(const struct a *)],
Packit 209cc3
			    ac_cv_lbl_cc_const_proto=yes,
Packit 209cc3
			    ac_cv_lbl_cc_const_proto=no))
Packit 209cc3
		    AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
Packit 209cc3
		    if test $ac_cv_lbl_cc_const_proto = no ; then
Packit 209cc3
			    AC_DEFINE(const,[],
Packit 209cc3
			        [to handle Ultrix compilers that don't support const in prototypes])
Packit 209cc3
		    fi
Packit 209cc3
		    ;;
Packit 209cc3
	    esac
Packit 209cc3
	    $1="$$1 -O"
Packit 209cc3
    fi
Packit 209cc3
])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Check whether, if you pass an unknown warning option to the
Packit 209cc3
dnl compiler, it fails or just prints a warning message and succeeds.
Packit 209cc3
dnl Set ac_lbl_unknown_warning_option_error to the appropriate flag
Packit 209cc3
dnl to force an error if it would otherwise just print a warning message
Packit 209cc3
dnl and succeed.
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_CHECK_UNKNOWN_WARNING_OPTION_ERROR,
Packit 209cc3
    [
Packit 209cc3
	AC_MSG_CHECKING([whether the compiler fails when given an unknown warning option])
Packit 209cc3
	save_CFLAGS="$CFLAGS"
Packit 209cc3
	CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy"
Packit 209cc3
	AC_TRY_COMPILE(
Packit 209cc3
	    [],
Packit 209cc3
	    [return 0],
Packit 209cc3
	    [
Packit 209cc3
		AC_MSG_RESULT([no])
Packit 209cc3
		#
Packit 209cc3
		# We're assuming this is clang, where
Packit 209cc3
		# -Werror=unknown-warning-option is the appropriate
Packit 209cc3
		# option to force the compiler to fail.
Packit 209cc3
		#
Packit 209cc3
		ac_lbl_unknown_warning_option_error="-Werror=unknown-warning-option"
Packit 209cc3
	    ],
Packit 209cc3
	    [
Packit 209cc3
		AC_MSG_RESULT([yes])
Packit 209cc3
	    ])
Packit 209cc3
	CFLAGS="$save_CFLAGS"
Packit 209cc3
    ])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Check whether the compiler option specified as the second argument
Packit 209cc3
dnl is supported by the compiler and, if so, add it to the macro
Packit 209cc3
dnl specified as the first argument
Packit 209cc3
dnl
Packit 209cc3
dnl If a third argument is supplied, treat it as C code to be compiled
Packit 209cc3
dnl with the flag in question, and the "treat warnings as errors" flag
Packit 209cc3
dnl set, and don't add the flag to the first argument if the compile
Packit 209cc3
dnl fails; this is for warning options cause problems that can't be
Packit 209cc3
dnl worked around.  If a third argument is supplied, a fourth argument
Packit 209cc3
dnl should also be supplied; it's a message desribing what the test
Packit 209cc3
dnl program is checking.
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_CHECK_COMPILER_OPT,
Packit 209cc3
    [
Packit 209cc3
	AC_MSG_CHECKING([whether the compiler supports the $2 option])
Packit 209cc3
	save_CFLAGS="$CFLAGS"
Packit 209cc3
	if expr "x$2" : "x-W.*" >/dev/null
Packit 209cc3
	then
Packit 209cc3
	    CFLAGS="$CFLAGS $ac_lbl_unknown_warning_option_error $2"
Packit 209cc3
	elif expr "x$2" : "x-f.*" >/dev/null
Packit 209cc3
	then
Packit 209cc3
	    CFLAGS="$CFLAGS -Werror $2"
Packit 209cc3
	elif expr "x$2" : "x-m.*" >/dev/null
Packit 209cc3
	then
Packit 209cc3
	    CFLAGS="$CFLAGS -Werror $2"
Packit 209cc3
	else
Packit 209cc3
	    CFLAGS="$CFLAGS $2"
Packit 209cc3
	fi
Packit 209cc3
	AC_TRY_COMPILE(
Packit 209cc3
	    [],
Packit 209cc3
	    [return 0],
Packit 209cc3
	    [
Packit 209cc3
		AC_MSG_RESULT([yes])
Packit 209cc3
		can_add_to_cflags=yes
Packit 209cc3
		#
Packit 209cc3
		# The compile supports this; do we have some C code for
Packit 209cc3
		# which the warning should *not* appear?
Packit 209cc3
		# We test the fourth argument because the third argument
Packit 209cc3
		# could contain quotes, breaking the test.
Packit 209cc3
		#
Packit 209cc3
		if test "x$4" != "x"
Packit 209cc3
		then
Packit 209cc3
		    CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
Packit 209cc3
		    AC_MSG_CHECKING(whether $2 $4)
Packit 209cc3
		    AC_COMPILE_IFELSE(
Packit 209cc3
		      [AC_LANG_SOURCE($3)],
Packit 209cc3
		      [
Packit 209cc3
			#
Packit 209cc3
			# Not a problem.
Packit 209cc3
			#
Packit 209cc3
			AC_MSG_RESULT(no)
Packit 209cc3
		      ],
Packit 209cc3
		      [
Packit 209cc3
			#
Packit 209cc3
			# A problem.
Packit 209cc3
			#
Packit 209cc3
			AC_MSG_RESULT(yes)
Packit 209cc3
			can_add_to_cflags=no
Packit 209cc3
		      ])
Packit 209cc3
		fi
Packit 209cc3
		CFLAGS="$save_CFLAGS"
Packit 209cc3
		if test x"$can_add_to_cflags" = "xyes"
Packit 209cc3
		then
Packit 209cc3
		    $1="$$1 $2"
Packit 209cc3
		fi
Packit 209cc3
	    ],
Packit 209cc3
	    [
Packit 209cc3
		AC_MSG_RESULT([no])
Packit 209cc3
		CFLAGS="$save_CFLAGS"
Packit 209cc3
	    ])
Packit 209cc3
    ])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Check whether the compiler supports an option to generate
Packit 209cc3
dnl Makefile-style dependency lines
Packit 209cc3
dnl
Packit 209cc3
dnl GCC uses -M for this.  Non-GCC compilers that support this
Packit 209cc3
dnl use a variety of flags, including but not limited to -M.
Packit 209cc3
dnl
Packit 209cc3
dnl We test whether the flag in question is supported, as older
Packit 209cc3
dnl versions of compilers might not support it.
Packit 209cc3
dnl
Packit 209cc3
dnl We don't try all the possible flags, just in case some flag means
Packit 209cc3
dnl "generate dependencies" on one compiler but means something else
Packit 209cc3
dnl on another compiler.
Packit 209cc3
dnl
Packit 209cc3
dnl Most compilers that support this send the output to the standard
Packit 209cc3
dnl output by default.  IBM's XLC, however, supports -M but sends
Packit 209cc3
dnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout
Packit 209cc3
dnl to work around that, so we don't bother with XLC.
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT,
Packit 209cc3
    [
Packit 209cc3
	AC_MSG_CHECKING([whether the compiler supports generating dependencies])
Packit 209cc3
	if test "$GCC" = yes ; then
Packit 209cc3
		#
Packit 209cc3
		# GCC, or a compiler deemed to be GCC by AC_PROG_CC (even
Packit 209cc3
		# though it's not); we assume that, in this case, the flag
Packit 209cc3
		# would be -M.
Packit 209cc3
		#
Packit 209cc3
		ac_lbl_dependency_flag="-M"
Packit 209cc3
	else
Packit 209cc3
		#
Packit 209cc3
		# Not GCC or a compiler deemed to be GCC; what platform is
Packit 209cc3
		# this?  (We're assuming that if the compiler isn't GCC
Packit 209cc3
		# it's the compiler from the vendor of the OS; that won't
Packit 209cc3
		# necessarily be true for x86 platforms, where it might be
Packit 209cc3
		# the Intel C compiler.)
Packit 209cc3
		#
Packit 209cc3
		case "$host_os" in
Packit 209cc3
Packit 209cc3
		irix*|osf*|darwin*)
Packit 209cc3
			#
Packit 209cc3
			# MIPS C for IRIX, DEC C, and clang all use -M.
Packit 209cc3
			#
Packit 209cc3
			ac_lbl_dependency_flag="-M"
Packit 209cc3
			;;
Packit 209cc3
Packit 209cc3
		solaris*)
Packit 209cc3
			#
Packit 209cc3
			# Sun C uses -xM.
Packit 209cc3
			#
Packit 209cc3
			ac_lbl_dependency_flag="-xM"
Packit 209cc3
			;;
Packit 209cc3
Packit 209cc3
		hpux*)
Packit 209cc3
			#
Packit 209cc3
			# HP's older C compilers don't support this.
Packit 209cc3
			# HP's newer C compilers support this with
Packit 209cc3
			# either +M or +Make; the older compilers
Packit 209cc3
			# interpret +M as something completely
Packit 209cc3
			# different, so we use +Make so we don't
Packit 209cc3
			# think it works with the older compilers.
Packit 209cc3
			#
Packit 209cc3
			ac_lbl_dependency_flag="+Make"
Packit 209cc3
			;;
Packit 209cc3
Packit 209cc3
		*)
Packit 209cc3
			#
Packit 209cc3
			# Not one of the above; assume no support for
Packit 209cc3
			# generating dependencies.
Packit 209cc3
			#
Packit 209cc3
			ac_lbl_dependency_flag=""
Packit 209cc3
			;;
Packit 209cc3
		esac
Packit 209cc3
	fi
Packit 209cc3
Packit 209cc3
	#
Packit 209cc3
	# Is ac_lbl_dependency_flag defined and, if so, does the compiler
Packit 209cc3
	# complain about it?
Packit 209cc3
	#
Packit 209cc3
	# Note: clang doesn't seem to exit with an error status when handed
Packit 209cc3
	# an unknown non-warning error, even if you pass it
Packit 209cc3
	# -Werror=unknown-warning-option.  However, it always supports
Packit 209cc3
	# -M, so the fact that this test always succeeds with clang
Packit 209cc3
	# isn't an issue.
Packit 209cc3
	#
Packit 209cc3
	if test ! -z "$ac_lbl_dependency_flag"; then
Packit 209cc3
		AC_LANG_CONFTEST(
Packit 209cc3
		    [AC_LANG_SOURCE([[int main(void) { return 0; }]])])
Packit 209cc3
		if AC_RUN_LOG([eval "$CC $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1"]); then
Packit 209cc3
			AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag])
Packit 209cc3
			DEPENDENCY_CFLAG="$ac_lbl_dependency_flag"
Packit 209cc3
			MKDEP='${srcdir}/mkdep'
Packit 209cc3
		else
Packit 209cc3
			AC_MSG_RESULT([no])
Packit 209cc3
			#
Packit 209cc3
			# We can't run mkdep, so have "make depend" do
Packit 209cc3
			# nothing.
Packit 209cc3
			#
Packit 209cc3
			MKDEP='${srcdir}/nomkdep'
Packit 209cc3
		fi
Packit 209cc3
		rm -rf conftest*
Packit 209cc3
	else
Packit 209cc3
		AC_MSG_RESULT([no])
Packit 209cc3
		#
Packit 209cc3
		# We can't run mkdep, so have "make depend" do
Packit 209cc3
		# nothing.
Packit 209cc3
		#
Packit 209cc3
		MKDEP='${srcdir}/nomkdep'
Packit 209cc3
	fi
Packit 209cc3
	AC_SUBST(DEPENDENCY_CFLAG)
Packit 209cc3
	AC_SUBST(MKDEP)
Packit 209cc3
    ])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Determine what options are needed to build a shared library
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_SHLIBS_INIT
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	V_SHLIB_CCOPT (modified to build position-independent code)
Packit 209cc3
dnl	V_SHLIB_CMD
Packit 209cc3
dnl	V_SHLIB_OPT
Packit 209cc3
dnl	V_SONAME_OPT
Packit 209cc3
dnl	V_RPATH_OPT
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_SHLIBS_INIT,
Packit 209cc3
    [AC_PREREQ(2.50)
Packit 209cc3
    if test "$GCC" = yes ; then
Packit 209cc3
	    #
Packit 209cc3
	    # On platforms where we build a shared library:
Packit 209cc3
	    #
Packit 209cc3
	    #	add options to generate position-independent code,
Packit 209cc3
	    #	if necessary (it's the default in AIX and Darwin/macOS);
Packit 209cc3
	    #
Packit 209cc3
	    #	define option to set the soname of the shared library,
Packit 209cc3
	    #	if the OS supports that;
Packit 209cc3
	    #
Packit 209cc3
	    #	add options to specify, at link time, a directory to
Packit 209cc3
	    #	add to the run-time search path, if that's necessary.
Packit 209cc3
	    #
Packit 209cc3
	    V_SHLIB_CMD="\$(CC)"
Packit 209cc3
	    V_SHLIB_OPT="-shared"
Packit 209cc3
	    case "$host_os" in
Packit 209cc3
Packit 209cc3
	    aix*)
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    freebsd*|netbsd*|openbsd*|dragonfly*|linux*|osf*|midipix*)
Packit 209cc3
	    	    #
Packit 209cc3
		    # Platforms where the linker is the GNU linker
Packit 209cc3
		    # or accepts command-line arguments like
Packit 209cc3
		    # those the GNU linker accepts.
Packit 209cc3
		    #
Packit 209cc3
		    # Some instruction sets require -fPIC on some
Packit 209cc3
		    # operating systems.  Check for them.  If you
Packit 209cc3
		    # have a combination that requires it, add it
Packit 209cc3
		    # here.
Packit 209cc3
		    #
Packit 209cc3
		    PIC_OPT=-fpic
Packit 209cc3
		    case "$host_cpu" in
Packit 209cc3
Packit 209cc3
		    sparc64*)
Packit 209cc3
			case "$host_os" in
Packit 209cc3
Packit 209cc3
			freebsd*|openbsd*|linux*)
Packit 209cc3
			    PIC_OPT=-fPIC
Packit 209cc3
			    ;;
Packit 209cc3
			esac
Packit 209cc3
			;;
Packit 209cc3
		    esac
Packit 209cc3
		    V_SHLIB_CCOPT="$V_SHLIB_CCOPT $PIC_OPT"
Packit 209cc3
		    V_SONAME_OPT="-Wl,-soname,"
Packit 209cc3
		    V_RPATH_OPT="-Wl,-rpath,"
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    hpux*)
Packit 209cc3
		    V_SHLIB_CCOPT="$V_SHLIB_CCOPT -fpic"
Packit 209cc3
	    	    #
Packit 209cc3
		    # XXX - this assumes GCC is using the HP linker,
Packit 209cc3
		    # rather than the GNU linker, and that the "+h"
Packit 209cc3
		    # option is used on all HP-UX platforms, both .sl
Packit 209cc3
		    # and .so.
Packit 209cc3
		    #
Packit 209cc3
		    V_SONAME_OPT="-Wl,+h,"
Packit 209cc3
		    #
Packit 209cc3
		    # By default, directories specifed with -L
Packit 209cc3
		    # are added to the run-time search path, so
Packit 209cc3
		    # we don't add them in pcap-config.
Packit 209cc3
		    #
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    solaris*)
Packit 209cc3
		    V_SHLIB_CCOPT="$V_SHLIB_CCOPT -fpic"
Packit 209cc3
		    #
Packit 209cc3
		    # XXX - this assumes GCC is using the Sun linker,
Packit 209cc3
		    # rather than the GNU linker.
Packit 209cc3
		    #
Packit 209cc3
		    V_SONAME_OPT="-Wl,-h,"
Packit 209cc3
		    V_RPATH_OPT="-Wl,-R,"
Packit 209cc3
		    ;;
Packit 209cc3
	    esac
Packit 209cc3
    else
Packit 209cc3
	    #
Packit 209cc3
	    # Set the appropriate compiler flags and, on platforms
Packit 209cc3
	    # where we build a shared library:
Packit 209cc3
	    #
Packit 209cc3
	    #	add options to generate position-independent code,
Packit 209cc3
	    #	if necessary (it's the default in Darwin/macOS);
Packit 209cc3
	    #
Packit 209cc3
	    #	if we generate ".so" shared libraries, define the
Packit 209cc3
	    #	appropriate options for building the shared library;
Packit 209cc3
	    #
Packit 209cc3
	    #	add options to specify, at link time, a directory to
Packit 209cc3
	    #	add to the run-time search path, if that's necessary.
Packit 209cc3
	    #
Packit 209cc3
	    # Note: spaces after V_SONAME_OPT are significant; on
Packit 209cc3
	    # some platforms the soname is passed with a GCC-like
Packit 209cc3
	    # "-Wl,-soname,{soname}" option, with the soname part
Packit 209cc3
	    # of the option, while on other platforms the C compiler
Packit 209cc3
	    # driver takes it as a regular option with the soname
Packit 209cc3
	    # following the option.  The same applies to V_RPATH_OPT.
Packit 209cc3
	    #
Packit 209cc3
	    case "$host_os" in
Packit 209cc3
Packit 209cc3
	    aix*)
Packit 209cc3
		    V_SHLIB_CMD="\$(CC)"
Packit 209cc3
		    V_SHLIB_OPT="-G -bnoentry -bexpall"
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    freebsd*|netbsd*|openbsd*|dragonfly*|linux*)
Packit 209cc3
		    #
Packit 209cc3
		    # "cc" is GCC.
Packit 209cc3
		    #
Packit 209cc3
		    V_SHLIB_CCOPT="$V_SHLIB_CCOPT -fpic"
Packit 209cc3
		    V_SHLIB_CMD="\$(CC)"
Packit 209cc3
		    V_SHLIB_OPT="-shared"
Packit 209cc3
		    V_SONAME_OPT="-Wl,-soname,"
Packit 209cc3
		    V_RPATH_OPT="-Wl,-rpath,"
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    hpux*)
Packit 209cc3
		    V_SHLIB_CCOPT="$V_SHLIB_CCOPT +z"
Packit 209cc3
		    V_SHLIB_CMD="\$(LD)"
Packit 209cc3
		    V_SHLIB_OPT="-b"
Packit 209cc3
		    V_SONAME_OPT="+h "
Packit 209cc3
		    #
Packit 209cc3
		    # By default, directories specifed with -L
Packit 209cc3
		    # are added to the run-time search path, so
Packit 209cc3
		    # we don't add them in pcap-config.
Packit 209cc3
		    #
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    osf*)
Packit 209cc3
	    	    #
Packit 209cc3
		    # Presumed to be DEC OSF/1, Digital UNIX, or
Packit 209cc3
		    # Tru64 UNIX.
Packit 209cc3
		    #
Packit 209cc3
		    V_SHLIB_CMD="\$(CC)"
Packit 209cc3
		    V_SHLIB_OPT="-shared"
Packit 209cc3
		    V_SONAME_OPT="-soname "
Packit 209cc3
		    V_RPATH_OPT="-rpath "
Packit 209cc3
		    ;;
Packit 209cc3
Packit 209cc3
	    solaris*)
Packit 209cc3
		    V_SHLIB_CCOPT="$V_SHLIB_CCOPT -Kpic"
Packit 209cc3
		    V_SHLIB_CMD="\$(CC)"
Packit 209cc3
		    V_SHLIB_OPT="-G"
Packit 209cc3
		    V_SONAME_OPT="-h "
Packit 209cc3
		    V_RPATH_OPT="-R"
Packit 209cc3
		    ;;
Packit 209cc3
	    esac
Packit 209cc3
    fi
Packit 209cc3
])
Packit 209cc3
Packit 209cc3
#
Packit 209cc3
# Try compiling a sample of the type of code that appears in
Packit 209cc3
# gencode.c with "inline", "__inline__", and "__inline".
Packit 209cc3
#
Packit 209cc3
# Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
Packit 209cc3
# as it just tests whether a function returning "int" can be inlined;
Packit 209cc3
# at least some versions of HP's C compiler can inline that, but can't
Packit 209cc3
# inline a function that returns a struct pointer.
Packit 209cc3
#
Packit 209cc3
# Make sure we use the V_CCOPT flags, because some of those might
Packit 209cc3
# disable inlining.
Packit 209cc3
#
Packit 209cc3
AC_DEFUN(AC_LBL_C_INLINE,
Packit 209cc3
    [AC_MSG_CHECKING(for inline)
Packit 209cc3
    save_CFLAGS="$CFLAGS"
Packit 209cc3
    CFLAGS="$V_CCOPT"
Packit 209cc3
    AC_CACHE_VAL(ac_cv_lbl_inline, [
Packit 209cc3
	ac_cv_lbl_inline=""
Packit 209cc3
	ac_lbl_cc_inline=no
Packit 209cc3
	for ac_lbl_inline in inline __inline__ __inline
Packit 209cc3
	do
Packit 209cc3
	    AC_TRY_COMPILE(
Packit 209cc3
		[#define inline $ac_lbl_inline
Packit 209cc3
		static inline struct iltest *foo(void);
Packit 209cc3
		struct iltest {
Packit 209cc3
		    int iltest1;
Packit 209cc3
		    int iltest2;
Packit 209cc3
		};
Packit 209cc3
Packit 209cc3
		static inline struct iltest *
Packit 209cc3
		foo()
Packit 209cc3
		{
Packit 209cc3
		    static struct iltest xxx;
Packit 209cc3
Packit 209cc3
		    return &xx;;
Packit 209cc3
		}],,ac_lbl_cc_inline=yes,)
Packit 209cc3
	    if test "$ac_lbl_cc_inline" = yes ; then
Packit 209cc3
		break;
Packit 209cc3
	    fi
Packit 209cc3
	done
Packit 209cc3
	if test "$ac_lbl_cc_inline" = yes ; then
Packit 209cc3
	    ac_cv_lbl_inline=$ac_lbl_inline
Packit 209cc3
	fi])
Packit 209cc3
    CFLAGS="$save_CFLAGS"
Packit 209cc3
    if test ! -z "$ac_cv_lbl_inline" ; then
Packit 209cc3
	AC_MSG_RESULT($ac_cv_lbl_inline)
Packit 209cc3
    else
Packit 209cc3
	AC_MSG_RESULT(no)
Packit 209cc3
    fi
Packit 209cc3
    AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl If using gcc, make sure we have ANSI ioctl definitions
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_FIXINCLUDES
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_FIXINCLUDES,
Packit 209cc3
    [if test "$GCC" = yes ; then
Packit 209cc3
	    AC_MSG_CHECKING(for ANSI ioctl definitions)
Packit 209cc3
	    AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
Packit 209cc3
		AC_TRY_COMPILE(
Packit 209cc3
		    [/*
Packit 209cc3
		     * This generates a "duplicate case value" when fixincludes
Packit 209cc3
		     * has not be run.
Packit 209cc3
		     */
Packit 209cc3
#		include <sys/types.h>
Packit 209cc3
#		include <sys/time.h>
Packit 209cc3
#		include <sys/ioctl.h>
Packit 209cc3
#		ifdef HAVE_SYS_IOCCOM_H
Packit 209cc3
#		include <sys/ioccom.h>
Packit 209cc3
#		endif],
Packit 209cc3
		    [switch (0) {
Packit 209cc3
		    case _IO('A', 1):;
Packit 209cc3
		    case _IO('B', 1):;
Packit 209cc3
		    }],
Packit 209cc3
		    ac_cv_lbl_gcc_fixincludes=yes,
Packit 209cc3
		    ac_cv_lbl_gcc_fixincludes=no))
Packit 209cc3
	    AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
Packit 209cc3
	    if test $ac_cv_lbl_gcc_fixincludes = no ; then
Packit 209cc3
		    # Don't cache failure
Packit 209cc3
		    unset ac_cv_lbl_gcc_fixincludes
Packit 209cc3
		    AC_MSG_ERROR(see the INSTALL for more info)
Packit 209cc3
	    fi
Packit 209cc3
    fi])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Checks to see if union wait is used with WEXITSTATUS()
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_UNION_WAIT
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	DECLWAITSTATUS (defined)
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_UNION_WAIT,
Packit 209cc3
    [AC_MSG_CHECKING(if union wait is used)
Packit 209cc3
    AC_CACHE_VAL(ac_cv_lbl_union_wait,
Packit 209cc3
	AC_TRY_COMPILE([
Packit 209cc3
#	include <sys/types.h>
Packit 209cc3
#	include <sys/wait.h>],
Packit 209cc3
	    [int status;
Packit 209cc3
	    u_int i = WEXITSTATUS(status);
Packit 209cc3
	    u_int j = waitpid(0, &status, 0);],
Packit 209cc3
	    ac_cv_lbl_union_wait=no,
Packit 209cc3
	    ac_cv_lbl_union_wait=yes))
Packit 209cc3
    AC_MSG_RESULT($ac_cv_lbl_union_wait)
Packit 209cc3
    if test $ac_cv_lbl_union_wait = yes ; then
Packit 209cc3
	    AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait])
Packit 209cc3
    else
Packit 209cc3
	    AC_DEFINE(DECLWAITSTATUS,int,[type for wait])
Packit 209cc3
    fi])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Checks to see if -R is used
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_HAVE_RUN_PATH
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	ac_cv_lbl_have_run_path (yes or no)
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
Packit 209cc3
    [AC_MSG_CHECKING(for ${CC-cc} -R)
Packit 209cc3
    AC_CACHE_VAL(ac_cv_lbl_have_run_path,
Packit 209cc3
	[echo 'main(){}' > conftest.c
Packit 209cc3
	${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
Packit 209cc3
	if test ! -s conftest.out ; then
Packit 209cc3
		ac_cv_lbl_have_run_path=yes
Packit 209cc3
	else
Packit 209cc3
		ac_cv_lbl_have_run_path=no
Packit 209cc3
	fi
Packit 209cc3
	rm -f -r conftest*])
Packit 209cc3
    AC_MSG_RESULT($ac_cv_lbl_have_run_path)
Packit 209cc3
    ])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Checks to see if unaligned memory accesses fail
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_UNALIGNED_ACCESS
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	LBL_ALIGN (DEFINED)
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
Packit 209cc3
    [AC_MSG_CHECKING(if unaligned accesses fail)
Packit 209cc3
    AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
Packit 209cc3
	[case "$host_cpu" in
Packit 209cc3
Packit 209cc3
	#
Packit 209cc3
	# These are CPU types where:
Packit 209cc3
	#
Packit 209cc3
	#	the CPU faults on an unaligned access, but at least some
Packit 209cc3
	#	OSes that support that CPU catch the fault and simulate
Packit 209cc3
	#	the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
Packit 209cc3
	#	the simulation is slow, so we don't want to use it;
Packit 209cc3
	#
Packit 209cc3
	#	the CPU, I infer (from the old
Packit 209cc3
	#
Packit 209cc3
	# XXX: should also check that they don't do weird things (like on arm)
Packit 209cc3
	#
Packit 209cc3
	#	comment) doesn't fault on unaligned accesses, but doesn't
Packit 209cc3
	#	do a normal unaligned fetch, either (e.g., presumably, ARM);
Packit 209cc3
	#
Packit 209cc3
	#	for whatever reason, the test program doesn't work
Packit 209cc3
	#	(this has been claimed to be the case for several of those
Packit 209cc3
	#	CPUs - I don't know what the problem is; the problem
Packit 209cc3
	#	was reported as "the test program dumps core" for SuperH,
Packit 209cc3
	#	but that's what the test program is *supposed* to do -
Packit 209cc3
	#	it dumps core before it writes anything, so the test
Packit 209cc3
	#	for an empty output file should find an empty output
Packit 209cc3
	#	file and conclude that unaligned accesses don't work).
Packit 209cc3
	#
Packit 209cc3
	# This run-time test won't work if you're cross-compiling, so
Packit 209cc3
	# in order to support cross-compiling for a particular CPU,
Packit 209cc3
	# we have to wire in the list of CPU types anyway, as far as
Packit 209cc3
	# I know, so perhaps we should just have a set of CPUs on
Packit 209cc3
	# which we know it doesn't work, a set of CPUs on which we
Packit 209cc3
	# know it does work, and have the script just fail on other
Packit 209cc3
	# cpu types and update it when such a failure occurs.
Packit 209cc3
	#
Packit 209cc3
	alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1)
Packit 209cc3
		ac_cv_lbl_unaligned_fail=yes
Packit 209cc3
		;;
Packit 209cc3
Packit 209cc3
	*)
Packit 209cc3
		cat >conftest.c <
Packit 209cc3
#		include <sys/types.h>
Packit 209cc3
#		include <sys/wait.h>
Packit 209cc3
#		include <stdio.h>
Packit 209cc3
		unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
Packit 209cc3
		main() {
Packit 209cc3
		unsigned int i;
Packit 209cc3
		pid_t pid;
Packit 209cc3
		int status;
Packit 209cc3
		/* avoid "core dumped" message */
Packit 209cc3
		pid = fork();
Packit 209cc3
		if (pid <  0)
Packit 209cc3
			exit(2);
Packit 209cc3
		if (pid > 0) {
Packit 209cc3
			/* parent */
Packit 209cc3
			pid = waitpid(pid, &status, 0);
Packit 209cc3
			if (pid < 0)
Packit 209cc3
				exit(3);
Packit 209cc3
			exit(!WIFEXITED(status));
Packit 209cc3
		}
Packit 209cc3
		/* child */
Packit 209cc3
		i = *(unsigned int *)&a[[1]];
Packit 209cc3
		printf("%d\n", i);
Packit 209cc3
		exit(0);
Packit 209cc3
		}
Packit 209cc3
EOF
Packit 209cc3
		${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
Packit 209cc3
		    conftest.c $LIBS >/dev/null 2>&1
Packit 209cc3
		if test ! -x conftest ; then
Packit 209cc3
			dnl failed to compile for some reason
Packit 209cc3
			ac_cv_lbl_unaligned_fail=yes
Packit 209cc3
		else
Packit 209cc3
			./conftest >conftest.out
Packit 209cc3
			if test ! -s conftest.out ; then
Packit 209cc3
				ac_cv_lbl_unaligned_fail=yes
Packit 209cc3
			else
Packit 209cc3
				ac_cv_lbl_unaligned_fail=no
Packit 209cc3
			fi
Packit 209cc3
		fi
Packit 209cc3
		rm -f -r conftest* core core.conftest
Packit 209cc3
		;;
Packit 209cc3
	esac])
Packit 209cc3
    AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
Packit 209cc3
    if test $ac_cv_lbl_unaligned_fail = yes ; then
Packit 209cc3
	    AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails])
Packit 209cc3
    fi])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl If the file .devel exists:
Packit 209cc3
dnl	Add some warning flags if the compiler supports them
Packit 209cc3
dnl	If an os prototype include exists, symlink os-proto.h to it
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_DEVEL(copt)
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	$1 (copt appended)
Packit 209cc3
dnl	HAVE_OS_PROTO_H (defined)
Packit 209cc3
dnl	os-proto.h (symlinked)
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_DEVEL,
Packit 209cc3
    [rm -f os-proto.h
Packit 209cc3
    if test "${LBL_CFLAGS+set}" = set; then
Packit 209cc3
	    $1="$$1 ${LBL_CFLAGS}"
Packit 209cc3
    fi
Packit 209cc3
    if test -f .devel ; then
Packit 209cc3
	    #
Packit 209cc3
	    # Skip all the warning option stuff on some compilers.
Packit 209cc3
	    #
Packit 209cc3
	    if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then
Packit 209cc3
		    AC_LBL_CHECK_UNKNOWN_WARNING_OPTION_ERROR()
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -W)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wall)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wcomma)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wdeclaration-after-statement)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wdocumentation)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wformat-nonliteral)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-noreturn)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-variable-declarations)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wshadow)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wsign-compare)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wunused-parameter)
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wused-but-marked-unused)
Packit 209cc3
		    # Warns about safeguards added in case the enums are
Packit 209cc3
		    # extended
Packit 209cc3
		    # AC_LBL_CHECK_COMPILER_OPT($1, -Wcovered-switch-default)
Packit 209cc3
		    #
Packit 209cc3
		    # This can cause problems with ntohs(), ntohl(),
Packit 209cc3
		    # htons(), and htonl() on some platforms, such
Packit 209cc3
		    # as OpenBSD 6.3 with Clang 5.0.1.  I guess the
Packit 209cc3
		    # problem is that the macro that ultimately does
Packit 209cc3
		    # the byte-swapping involves a conditional
Packit 209cc3
		    # expression that tests whether the value being
Packit 209cc3
		    # swapped is a compile-time constant or not,
Packit 209cc3
		    # using __builtin_constant_p(), and, depending
Packit 209cc3
		    # on whether it is, does a compile-time swap or
Packit 209cc3
		    # a run-time swap; perhaps the compiler always
Packit 209cc3
		    # considers one of the two results of the
Packit 209cc3
		    # conditional expressin is never evaluated,
Packit 209cc3
		    # because the conditional check is done at
Packit 209cc3
		    # compile time, and thus always says "that
Packit 209cc3
		    # expression is never executed".
Packit 209cc3
		    #
Packit 209cc3
		    # (Perhaps there should be a way of flagging
Packit 209cc3
		    # an expression that you *want* evaluated at
Packit 209cc3
		    # compile time, so that the compiler 1) warns
Packit 209cc3
		    # if it *can't* be evaluated at compile time
Packit 209cc3
		    # and 2) *doesn't* warn that the true or false
Packit 209cc3
		    # branch will never be reached.)
Packit 209cc3
		    #
Packit 209cc3
		    AC_LBL_CHECK_COMPILER_OPT($1, -Wunreachable-code,
Packit 209cc3
		      [
Packit 209cc3
#include <arpa/inet.h>
Packit 209cc3
Packit 209cc3
unsigned short
Packit 209cc3
testme(unsigned short a)
Packit 209cc3
{
Packit 209cc3
	return ntohs(a);
Packit 209cc3
}
Packit 209cc3
		      ],
Packit 209cc3
		      [generates warnings from ntohs()])
Packit 209cc3
	    fi
Packit 209cc3
	    AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT()
Packit 209cc3
	    #
Packit 209cc3
	    # We used to set -n32 for IRIX 6 when not using GCC (presumed
Packit 209cc3
	    # to mean that we're using MIPS C or MIPSpro C); it specified
Packit 209cc3
	    # the "new" faster 32-bit ABI, introduced in IRIX 6.2.  I'm
Packit 209cc3
	    # not sure why that would be something to do *only* with a
Packit 209cc3
	    # .devel file; why should the ABI for which we produce code
Packit 209cc3
	    # depend on .devel?
Packit 209cc3
	    #
Packit 209cc3
	    os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
Packit 209cc3
	    name="lbl/os-$os.h"
Packit 209cc3
	    if test -f $name ; then
Packit 209cc3
		    ln -s $name os-proto.h
Packit 209cc3
		    AC_DEFINE(HAVE_OS_PROTO_H, 1,
Packit 209cc3
			[if there's an os_proto.h for this platform, to use additional prototypes])
Packit 209cc3
	    else
Packit 209cc3
		    AC_MSG_WARN(can't find $name)
Packit 209cc3
	    fi
Packit 209cc3
    fi])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl Improved version of AC_CHECK_LIB
Packit 209cc3
dnl
Packit 209cc3
dnl Thanks to John Hawkinson (jhawk@mit.edu)
Packit 209cc3
dnl
Packit 209cc3
dnl usage:
Packit 209cc3
dnl
Packit 209cc3
dnl	AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
Packit 209cc3
dnl	    ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
Packit 209cc3
dnl
Packit 209cc3
dnl results:
Packit 209cc3
dnl
Packit 209cc3
dnl	LIBS
Packit 209cc3
dnl
Packit 209cc3
dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
Packit 209cc3
dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
Packit 209cc3
dnl We keep it around for reference purposes in case it's ever
Packit 209cc3
dnl useful in the future.
Packit 209cc3
dnl
Packit 209cc3
Packit 209cc3
define(AC_LBL_CHECK_LIB,
Packit 209cc3
[AC_MSG_CHECKING([for $2 in -l$1])
Packit 209cc3
dnl Use a cache variable name containing the library, function
Packit 209cc3
dnl name, and extra libraries to link with, because the test really is
Packit 209cc3
dnl for library $1 defining function $2, when linked with potinal
Packit 209cc3
dnl library $5, not just for library $1.  Separate tests with the same
Packit 209cc3
dnl $1 and different $2's or $5's may have different results.
Packit 209cc3
ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
Packit 209cc3
AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
Packit 209cc3
[ac_save_LIBS="$LIBS"
Packit 209cc3
LIBS="-l$1 $5 $LIBS"
Packit 209cc3
AC_TRY_LINK(dnl
Packit 209cc3
ifelse([$2], [main], , dnl Avoid conflicting decl of main.
Packit 209cc3
[/* Override any gcc2 internal prototype to avoid an error.  */
Packit 209cc3
]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
Packit 209cc3
extern "C"
Packit 209cc3
#endif
Packit 209cc3
])dnl
Packit 209cc3
[/* We use char because int might match the return type of a gcc2
Packit 209cc3
    builtin and then its argument prototype would still apply.  */
Packit 209cc3
char $2();
Packit 209cc3
]),
Packit 209cc3
	    [$2()],
Packit 209cc3
	    eval "ac_cv_lbl_lib_$ac_lib_var=yes",
Packit 209cc3
	    eval "ac_cv_lbl_lib_$ac_lib_var=no")
Packit 209cc3
LIBS="$ac_save_LIBS"
Packit 209cc3
])dnl
Packit 209cc3
if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
Packit 209cc3
  AC_MSG_RESULT(yes)
Packit 209cc3
  ifelse([$3], ,
Packit 209cc3
[changequote(, )dnl
Packit 209cc3
  ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
Packit 209cc3
    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
Packit 209cc3
changequote([, ])dnl
Packit 209cc3
  AC_DEFINE_UNQUOTED($ac_tr_lib)
Packit 209cc3
  LIBS="-l$1 $LIBS"
Packit 209cc3
], [$3])
Packit 209cc3
else
Packit 209cc3
  AC_MSG_RESULT(no)
Packit 209cc3
ifelse([$4], , , [$4
Packit 209cc3
])dnl
Packit 209cc3
fi
Packit 209cc3
])
Packit 209cc3
Packit 209cc3
dnl
Packit 209cc3
dnl AC_LBL_LIBRARY_NET
Packit 209cc3
dnl
Packit 209cc3
dnl This test is for network applications that need socket functions and
Packit 209cc3
dnl getaddrinfo()/getnameinfo()-ish functions.  We now require
Packit 209cc3
dnl getaddrinfo() and getnameinfo().  We also prefer versions of
Packit 209cc3
dnl recvmsg() that conform to the Single UNIX Specification, so that we
Packit 209cc3
dnl can check whether a datagram received with recvmsg() was truncated
Packit 209cc3
dnl when received due to the buffer being too small.
Packit 209cc3
dnl
Packit 209cc3
dnl On most operating systems, they're available in the system library.
Packit 209cc3
dnl
Packit 209cc3
dnl Under Solaris, we need to link with libsocket and libnsl to get
Packit 209cc3
dnl getaddrinfo() and getnameinfo() and, if we have libxnet, we need to
Packit 209cc3
dnl link with libxnet before libsocket to get a version of recvmsg()
Packit 209cc3
dnl that conforms to the Single UNIX Specification.
Packit 209cc3
dnl
Packit 209cc3
dnl We use getaddrinfo() because we want a portable thread-safe way
Packit 209cc3
dnl of getting information for a host name or port; there exist _r
Packit 209cc3
dnl versions of gethostbyname() and getservbyname() on some platforms,
Packit 209cc3
dnl but not on all platforms.
Packit 209cc3
dnl
Packit 209cc3
AC_DEFUN(AC_LBL_LIBRARY_NET, [
Packit 209cc3
    #
Packit 209cc3
    # Most operating systems have getaddrinfo() in the default searched
Packit 209cc3
    # libraries (i.e. libc).  Check there first.
Packit 209cc3
    #
Packit 209cc3
    AC_CHECK_FUNC(getaddrinfo,,
Packit 209cc3
    [
Packit 209cc3
	#
Packit 209cc3
	# Not found in the standard system libraries.
Packit 209cc3
	# Try libsocket, which requires libnsl.
Packit 209cc3
	#
Packit 209cc3
	AC_CHECK_LIB(socket, getaddrinfo,
Packit 209cc3
	[
Packit 209cc3
	    #
Packit 209cc3
	    # OK, we found it in libsocket.
Packit 209cc3
	    #
Packit 209cc3
	    LIBS="-lsocket -lnsl $LIBS"
Packit 209cc3
	],
Packit 209cc3
	[
Packit 209cc3
	    #
Packit 209cc3
	    # We didn't find it.
Packit 209cc3
	    #
Packit 209cc3
	    AC_MSG_ERROR([getaddrinfo is required, but wasn't found])
Packit 209cc3
	], -lnsl)
Packit 209cc3
Packit 209cc3
	#
Packit 209cc3
	# OK, do we have recvmsg() in libxnet?
Packit 209cc3
	# We also link with libsocket and libnsl.
Packit 209cc3
	#
Packit 209cc3
	AC_CHECK_LIB(xnet, recvmsg,
Packit 209cc3
	[
Packit 209cc3
	    #
Packit 209cc3
	    # Yes - link with it as well.
Packit 209cc3
	    #
Packit 209cc3
	    LIBS="-lxnet $LIBS"
Packit 209cc3
	], , -lsocket -lnsl)
Packit 209cc3
    ])
Packit 209cc3
    # DLPI needs putmsg under HPUX so test for -lstr while we're at it
Packit 209cc3
    AC_SEARCH_LIBS(putmsg, str)
Packit 209cc3
])