dnl @(#) $Header: /home/cvs/vlan/vlan/tcpdump-3.4/configure.in,v 1.1 1999/10/17 20:01:14 greear Exp $ (LBL)
dnl
dnl Copyright (c) 1994, 1995, 1996, 1997
dnl	The Regents of the University of California.  All rights reserved.
dnl
dnl Process this file with autoconf to produce a configure script.
dnl

AC_INIT(tcpdump.c)

AC_CANONICAL_SYSTEM

umask 002

if test -z "$PWD" ; then
	PWD=`pwd`
fi

AC_LBL_C_INIT(V_CCOPT, V_INCLS)

AC_CHECK_HEADERS(fcntl.h malloc.h memory.h rpc/rpcent.h)
AC_HEADER_TIME

case "$target_os" in

linux*)
	AC_MSG_CHECKING(Linux kernel version)
	AC_CACHE_VAL(ac_cv_linux_vers,
	    ac_cv_linux_vers=`uname -r 2>&1 | \
		sed -n -e '$s/.* //' -e '$s/\..*//p'`)
	AC_MSG_RESULT($ac_cv_linux_vers)
	if test $ac_cv_linux_vers -lt 2 ; then
		AC_MSG_ERROR(version 2 or higher required; see the INSTALL doc for more info)
	fi
	AC_DEFINE(HAVE_NET_SLIP_H)
	;;

*)
	AC_CHECK_HEADERS(net/slip.h)
	;;
esac

AC_REPLACE_FUNCS(vfprintf strcasecmp)
AC_CHECK_FUNCS(ether_ntoa setlinebuf)

dnl The following generates a warning from autoconf...
AC_C_BIGENDIAN

AC_CHECK_LIB(dnet, main)
AC_CHECK_LIB(rpc, main)

AC_LBL_TYPE_SIGNAL

AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS)

V_GROUP=0
if test -f /etc/group -a ! -z "`grep '^wheel:' /etc/group`" ; then
	V_GROUP=wheel
fi
case "$target_os" in

aix*)
	dnl Workaround to enable certain features
	AC_DEFINE(_SUN)
	;;

irix*)
	V_GROUP=sys
	;;

linux*)
	V_INCLS="$V_INCLS -Ilinux-include"
	;;

osf*)
	V_GROUP=system
	dnl Workaround around ip_hl vs. ip_vhl problem in netinet/ip.h
	AC_DEFINE(__STDC__,2)
	;;

solaris*)
	V_GROUP=sys
	;;
esac

if test -f /dev/bpf0 ; then
	V_GROUP=bpf
fi

AC_LBL_CHECK_TYPE(int32_t, int)
AC_LBL_CHECK_TYPE(u_int32_t, u_int)

AC_LBL_DEVEL(V_CCOPT)

AC_LBL_SOCKADDR_SA_LEN

AC_MSG_CHECKING(if ether_header uses ether_addr structs)
AC_CACHE_VAL(ac_cv_ether_header_has_ea,
    LBL_SAVE_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $V_INCLS"
    AC_TRY_COMPILE([
#	include <sys/types.h>
#	if __STDC__
	/* osf3 has REALLY good prototyes */
	struct mbuf;
	struct rtentry;
#	endif
#	include <sys/socket.h>
#	include <net/if.h>
#	include <netinet/in.h>
#	include <netinet/if_ether.h>],
	[u_int i =
	    sizeof(((struct ether_header *)0)->ether_dhost.ether_addr_octet)],
	ac_cv_ether_header_has_ea=yes,
	ac_cv_ether_header_has_ea=no)
    CFLAGS="$LBL_SAVE_CFLAGS")
AC_MSG_RESULT($ac_cv_ether_header_has_ea)
if test $ac_cv_ether_header_has_ea = yes ; then
	AC_DEFINE(ETHER_HEADER_HAS_EA)
fi

AC_MSG_CHECKING(if ether_arp uses ether_addr structs)
AC_CACHE_VAL(ac_cv_ether_arp_has_ea,
    LBL_SAVE_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $V_INCLS"
    AC_TRY_COMPILE([
#	include <sys/types.h>
#	if __STDC__
	/* osf3 has REALLY good prototyes */
	struct mbuf;
	struct rtentry;
#	endif
#	include <sys/socket.h>
#	include <net/if.h>
#	include <netinet/in.h>
#	include <netinet/if_ether.h>],
	[u_int i =
	    sizeof(((struct ether_arp *)0)->arp_sha.ether_addr_octet)],
	ac_cv_ether_arp_has_ea=yes,
	ac_cv_ether_arp_has_ea=no)
    CFLAGS="$LBL_SAVE_CFLAGS")
AC_MSG_RESULT($ac_cv_ether_arp_has_ea)
if test $ac_cv_ether_arp_has_ea = yes ; then
	AC_DEFINE(ETHER_ARP_HAS_EA)
fi

AC_MSG_CHECKING(if ether_arp uses erp_xsha member)
AC_CACHE_VAL(ac_cv_struct_ether_arp_x,
    LBL_SAVE_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $V_INCLS"
    AC_TRY_COMPILE([
#	include <sys/types.h>
#	include <sys/socket.h>
#	if __STDC__
	/* osf3 has REALLY good prototyes */
	struct mbuf;
	struct rtentry;
#	endif
#	include <net/if.h>
#	include <netinet/in.h>
#	include <netinet/if_ether.h>],
	[u_int i = sizeof( ((struct ether_arp *)0)->arp_xsha)],
	ac_cv_struct_ether_arp_x=yes,
	ac_cv_struct_ether_arp_x=no)
    CFLAGS="$LBL_SAVE_CFLAGS")
AC_MSG_RESULT($ac_cv_struct_ether_arp_x)
if test $ac_cv_struct_ether_arp_x = yes ; then
	AC_DEFINE(ETHER_ARP_HAS_X)
fi

AC_LBL_UNALIGNED_ACCESS

if test "${srcdir}" = "." ; then
	srcdirprefix=""
else
	srcdirprefix="./"
fi

if test -r ${srcdirprefix}lbl/gnuc.h ; then
	rm -f gnuc.h
	ln -s ${srcdirprefix}lbl/gnuc.h gnuc.h
fi

AC_SUBST(V_CCOPT)
AC_SUBST(V_GROUP)
AC_SUBST(V_INCLS)
AC_SUBST(V_PCAPDEP)

AC_PROG_INSTALL

AC_OUTPUT(Makefile)

if test -f .devel ; then
	make depend
fi
exit 0
