Blame configure.in

Packit 03b34a
dnl Libnet autoconfiguration information file
Packit 03b34a
dnl Copyright (c) 1998 - 2002 Mike D. Schiffman <mike@infonexus.com>
Packit 03b34a
dnl All rights reserved.
Packit 03b34a
dnl
Packit 03b34a
dnl Process this file with autoconf to produce a configure script.
Packit 03b34a
Packit 03b34a
AC_INIT(libnet, 1.1.6)
Packit 03b34a
AC_MSG_RESULT(beginning autoconfiguration process for libnet-${PACKAGE_VERSION} ...)
Packit 03b34a
AC_CANONICAL_SYSTEM
Packit 03b34a
AC_CONFIG_SRCDIR([src/libnet_build_ip.c])
Packit 03b34a
AC_CONFIG_MACRO_DIR([m4])
Packit 03b34a
AM_INIT_AUTOMAKE
Packit 03b34a
AM_CONFIG_HEADER([include/config.h])
Packit 03b34a
AM_MAINTAINER_MODE
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl Check for the usual programs
Packit 03b34a
dnl
Packit 03b34a
AC_PROG_CC
Packit 03b34a
AC_PROG_INSTALL
Packit 03b34a
AC_USE_SYSTEM_EXTENSIONS
Packit 03b34a
dnl disable shared libraries (for now)
Packit 03b34a
dnl AC_DISABLE_SHARED
Packit 03b34a
ifdef(
Packit 03b34a
      [LT_INIT],
Packit 03b34a
      [LT_INIT],
Packit 03b34a
      [AC_PROG_LIBTOOL]
Packit 03b34a
)
Packit 03b34a
Packit 03b34a
AC_CHECK_HEADERS(sys/sockio.h)
Packit 03b34a
AC_CHECK_FUNCS([gethostbyname2])
Packit 03b34a
AC_CHECK_FUNCS([getifaddrs])
Packit 03b34a
AC_TYPE_UINT16_T
Packit 03b34a
AC_TYPE_UINT32_T
Packit 03b34a
AC_TYPE_UINT64_T
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl And some custom things
Packit 03b34a
dnl
Packit 03b34a
Packit 03b34a
AC_LIBNET_ENDIAN_CHECK
Packit 03b34a
dnl AC_LBL_LIBRARY_NET
Packit 03b34a
Packit 03b34a
AC_SUBST(ENDIANESS)
Packit 03b34a
AC_SUBST(HAVE_PACKET_SOCKET)
Packit 03b34a
AC_SUBST(ADDITIONAL_LIBS)
Packit 03b34a
AC_SUBST(LIBNET_CONFIG_DEFINES)
Packit 03b34a
AC_SUBST(LIBNET_CONFIG_LIBS)
Packit 03b34a
AC_SUBST(LIBNET_CONFIG_CFLAGS)
Packit 03b34a
AC_SUBST(LTLIBOBJS)
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl Set the root install directory
Packit 03b34a
dnl
Packit 03b34a
AC_PREFIX_DEFAULT(/usr/local)
Packit 03b34a
dnl if test "$prefix" = "NONE"; then
Packit 03b34a
dnl     prefix="/usr"
Packit 03b34a
dnl fi
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl Get link-layer interface type
Packit 03b34a
dnl
Packit 03b34a
AC_ARG_WITH(
Packit 03b34a
	[link-layer],
Packit 03b34a
	[AS_HELP_STRING([--with-link-layer],[when cross-compiling, one of * from libnet_link_*.c @<:@autodetect@:>@])]
Packit 03b34a
)
Packit 03b34a
Packit 03b34a
AC_CHECK_HEADERS([net/pfilt.h sys/net/nit.h net/raw.h sys/dlpi.h linux/socket.h])
Packit 03b34a
Packit 03b34a
AC_MSG_CHECKING(link-layer packet interface type)
Packit 03b34a
Packit 03b34a
if test -n "${with_link_layer}"; then
Packit 03b34a
    case "${with_link_layer}" in
Packit 03b34a
        bpf)   AC_LIBOBJ([libnet_link_bpf]) ;;
Packit 03b34a
        pf)    AC_LIBOBJ([libnet_link_pf]) ;;
Packit 03b34a
        snit)  AC_LIBOBJ([libnet_link_snit]) ;;
Packit 03b34a
        nit)   AC_LIBOBJ([libnet_link_nit]) ;;
Packit 03b34a
        snoop) AC_LIBOBJ([libnet_link_snoop]) ;;
Packit 03b34a
        dlpi)  AC_LIBOBJ([libnet_link_dlpi]) ;;
Packit 03b34a
        linux) AC_LIBOBJ([libnet_link_linux])
Packit 03b34a
	       AC_LIBNET_CHECK_PF_PACKET
Packit 03b34a
	       AC_LIBNET_LINUX_PROCFS ;;
Packit 03b34a
        none) AC_LIBOBJ([libnet_link_none]) ;;
Packit 03b34a
        *) AC_MSG_ERROR([Invalid link type "${with_link_layer}"]) ;;
Packit 03b34a
    esac
Packit 03b34a
    AC_MSG_RESULT(user selected link layer ${with_link_layer})
Packit 03b34a
elif test "${cross_compiling}" != "yes" -a -r /dev/bpf0 ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_bpf])
Packit 03b34a
    AC_MSG_RESULT(found link layer bpf)
Packit 03b34a
elif test "${ac_cv_header_net_pfilt_h}" = "yes" ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_pf])
Packit 03b34a
    AC_MSG_RESULT(found link layer pf)
Packit 03b34a
elif test "${cross_compiling}" != "yes" -a -r /dev/nit ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_snit])
Packit 03b34a
    AC_MSG_RESULT(found link layer snit)
Packit 03b34a
elif test "${ac_cv_header_sys_net_nit_h}" = "yes" ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_nit])
Packit 03b34a
    AC_MSG_RESULT(found link layer nit)
Packit 03b34a
elif test "${ac_cv_header_net_raw_h}" = "yes" ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_snoop])
Packit 03b34a
    AC_MSG_RESULT(found link layer snoop)
Packit 03b34a
elif test "${ac_cv_header_sys_dlpi_h}" = "yes" ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_dlpi])
Packit 03b34a
    AC_MSG_RESULT(found link layer dlpi)
Packit 03b34a
    AC_DEFINE(HAVE_DLPI, 1, [Define if the <sys/dlpi.h> header exists.])
Packit 03b34a
elif test "${ac_cv_header_linux_socket_h}" = "yes" ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_linux])
Packit 03b34a
    AC_MSG_RESULT(found link layer linux)
Packit 03b34a
    AC_LIBNET_CHECK_PF_PACKET
Packit 03b34a
    AC_LIBNET_LINUX_PROCFS
Packit 03b34a
elif test "${cross_compiling}" != "yes" -a -c /dev/bpf0 ; then           # check again in case not readable
Packit 03b34a
    AC_LIBOBJ([libnet_link_bpf])
Packit 03b34a
    AC_MSG_RESULT(found link layer bpf)
Packit 03b34a
elif test "${cross_compiling}" != "yes" -a -c /dev/nit ; then            # check again in case not readable
Packit 03b34a
    AC_LIBOBJ([libnet_link_snit])
Packit 03b34a
    AC_MSG_RESULT(found link layer snit)
Packit 03b34a
elif test "$target_os" = "cygwin" ; then
Packit 03b34a
    AC_LIBOBJ([libnet_link_win32])
Packit 03b34a
    AC_MSG_RESULT(found link layer win32 wpcap)
Packit 03b34a
else
Packit 03b34a
    AC_LIBOBJ([libnet_link_none])
Packit 03b34a
    AC_MSG_WARN(could not find a link-layer packet interface)
Packit 03b34a
    AC_MSG_WARN(link-layer packet injection will not be available)
Packit 03b34a
fi
Packit 03b34a
Packit 03b34a
dnl This is necessary so that .o files in LIBOBJS are also built via
Packit 03b34a
dnl the ANSI2KNR-filtering rules.
Packit 03b34a
LIB@&t@OBJS=`echo "$LIB@&t@OBJS" |
Packit 03b34a
       sed 's,\.[[^.]]* ,$U&,;;s,\.[[^.]]*$,$U&,'`
Packit 03b34a
LTLIBOBJS=`echo "$LIB@&t@OBJS" |
Packit 03b34a
       sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`
Packit 03b34a
Packit 03b34a
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl Inform user about the packet builders we've got
Packit 03b34a
dnl
Packit 03b34a
echo -n "scanning available packet construction modules: "
Packit 03b34a
for dir in src/*build*c ; do
Packit 03b34a
    echo $dir | sed -e /src\\/libnet_build_/s/// | sed -e /\\.c/s/// | tr \\n \\040
Packit 03b34a
done
Packit 03b34a
echo ""
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl Check and set OS specific parameters
Packit 03b34a
dnl
Packit 03b34a
Packit 03b34a
case "$target_os" in
Packit 03b34a
Packit 03b34a
*linux*)
Packit 03b34a
    AC_DEFINE(_BSD_SOURCE, 1,
Packit 03b34a
        [Define as necessary to "unhide" header symbols.])
Packit 03b34a
    AC_DEFINE(__BSD_SOURCE, 1,
Packit 03b34a
        [Define as necessary to "unhide" header symbols.])
Packit 03b34a
    AC_DEFINE(__FAVOR_BSD, 1,
Packit 03b34a
        [Define if we should favor the BSD APIs when possible in Linux.])
Packit 03b34a
Packit 03b34a
    LIBNET_CONFIG_DEFINES="-D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD"
Packit 03b34a
    AC_CHECK_HEADERS(net/ethernet.h, \
Packit 03b34a
        LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DHAVE_NET_ETHERNET_H")
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*freebsd*)
Packit 03b34a
    AC_DEFINE(LIBNET_BSDISH_OS, 1,
Packit 03b34a
        [Define if our build OS supports the BSD APIs])
Packit 03b34a
    AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1,
Packit 03b34a
        [Define if libnet should byteswap data.])
Packit 03b34a
    AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1,
Packit 03b34a
        [Define if the sockaddr structure includes a sa_len member.])
Packit 03b34a
Packit 03b34a
    LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP -DHAVE_SOCKADDR_SA_LEN"
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*netbsd*)
Packit 03b34a
    AC_DEFINE(LIBNET_BSDISH_OS, 1,
Packit 03b34a
        [Define if our build OS supports the BSD APIs])
Packit 03b34a
    AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1,
Packit 03b34a
        [Define if libnet should byteswap data.])
Packit 03b34a
Packit 03b34a
    LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*openbsd*)
Packit 03b34a
    AC_DEFINE(LIBNET_BSDISH_OS, 1,
Packit 03b34a
        [Define if our build OS supports the BSD APIs])
Packit 03b34a
    AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1,
Packit 03b34a
        [Define if the sockaddr structure includes a sa_len member.])
Packit 03b34a
    LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS"
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*bsdi*)
Packit 03b34a
    AC_DEFINE(LIBNET_BSDISH_OS, 1,
Packit 03b34a
        [Define if our build OS supports the BSD APIs])
Packit 03b34a
    AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1,
Packit 03b34a
        [Define if libnet should byteswap data.])
Packit 03b34a
    LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*darwin*)
Packit 03b34a
    AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1,
Packit 03b34a
        [Define if the sockaddr structure includes a sa_len member.])
Packit 03b34a
    LIBNET_CONFIG_DEFINES="-DHAVE_SOCKADDR_SA_LEN"
Packit 03b34a
Packit 03b34a
dnl
Packit 03b34a
dnl Check to see if x86
Packit 03b34a
dnl
Packit 03b34a
Packit 03b34a
    case "$target" in
Packit 03b34a
    i?86-*-*darwin*)
Packit 03b34a
        AC_DEFINE(LIBNET_BSDISH_OS)
Packit 03b34a
        AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
Packit 03b34a
        LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
Packit 03b34a
        ;;
Packit 03b34a
Packit 03b34a
    *)
Packit 03b34a
        ;;
Packit 03b34a
Packit 03b34a
    esac
Packit 03b34a
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*solaris*)
Packit 03b34a
    AC_DEFINE(HAVE_SOLARIS, 1, [Define if we are running on Solaris.])
Packit 03b34a
    AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h)
Packit 03b34a
    AC_MSG_CHECKING(for /dev/dlpi device)
Packit 03b34a
    if test -c /dev/dlpi; then
Packit 03b34a
        AC_MSG_RESULT(yes)
Packit 03b34a
        AC_DEFINE(HAVE_DEV_DLPI, 1, [Define if /dev/dlpi is available.])
Packit 03b34a
    else
Packit 03b34a
        AC_MSG_RESULT(no)
Packit 03b34a
        dir="/dev/dlpi"
Packit 03b34a
        AC_MSG_CHECKING(for $dir directory)
Packit 03b34a
        if test -d $dir ; then
Packit 03b34a
            AC_MSG_RESULT(yes)
Packit 03b34a
            AC_DEFINE_UNQUOTED(DLPI_DEV_PREFIX, "$dir",
Packit 03b34a
                [Define if /dev/dlpi is a directory.])
Packit 03b34a
        else
Packit 03b34a
            AC_MSG_RESULT(no)
Packit 03b34a
        fi
Packit 03b34a
    fi
Packit 03b34a
    AC_CHECK_LIB(socket, socket, ,AC_MSG_ERROR(libsocket not found.))
Packit 03b34a
    AC_CHECK_LIB(nsl, gethostbyname, ,AC_MSG_ERROR(libnsl not found.))
Packit 03b34a
    AC_CHECK_LIB(resolv, hstrerror, ,AC_MSG_ERROR(libresolv not found.))
Packit 03b34a
Packit 03b34a
dnl 
Packit 03b34a
dnl Broken checksums?
Packit 03b34a
dnl
Packit 03b34a
    case "`uname -r`" in
Packit 03b34a
    5.4)
Packit 03b34a
        AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
Packit 03b34a
            [Define if our version of Solaris has broken checksums.])
Packit 03b34a
        ;;
Packit 03b34a
    5.5*)
Packit 03b34a
        AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
Packit 03b34a
            [Define if our version of Solaris has broken checksums.])
Packit 03b34a
        ;;
Packit 03b34a
    5.8)
Packit 03b34a
        AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
Packit 03b34a
            [Define if our version of Solaris has broken checksums.])
Packit 03b34a
        AC_DEFINE(HAVE_SOLARIS_IPV6, 1,
Packit 03b34a
            [Define if our version of Solaris supports IPv6.])
Packit 03b34a
Packit 03b34a
        ;;
Packit 03b34a
    5.9)
Packit 03b34a
        AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
Packit 03b34a
            [Define if our version of Solaris has broken checksums.])
Packit 03b34a
        AC_DEFINE(HAVE_SOLARIS_IPV6, 1,
Packit 03b34a
            [Define if our version of Solaris supports IPv6.])
Packit 03b34a
        ;;
Packit 03b34a
    5.10|5.11|5.12)
Packit 03b34a
        AC_DEFINE(HAVE_SOLARIS_IPV6, 1,
Packit 03b34a
            [Define if our version of Solaris supports IPv6.])
Packit 03b34a
        ;;
Packit 03b34a
Packit 03b34a
    esac
Packit 03b34a
Packit 03b34a
    ADDITIONAL_LIBS='-lresolv -lsocket -lnsl'
Packit 03b34a
    LIBNET_CONFIG_LIBS="$LIBNET_CONFIG_LIBS -lresolv -lsocket -lnsl"
Packit 03b34a
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*hpux11*)
Packit 03b34a
    AC_DEFINE(HAVE_HPUX11, 1, [Define if we are building on HP/UX.])
Packit 03b34a
    AC_CHECK_HEADERS(sys/dlpi_ext.h)
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
*cygwin*)
Packit 03b34a
     AC_DEFINE(LIBNET_BSDISH_OS, 1,
Packit 03b34a
         [Define if our build OS supports the BSD APIs])
Packit 03b34a
     AC_DEFINE(NO_SNPRINTF, 1,
Packit 03b34a
         [Define if snprintf() is unavailable on our system.])
Packit 03b34a
     LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DNO_SNPRINTF"
Packit 03b34a
     CFLAGS="$CFLAGS -mno-cygwin -O0 -fnative-struct -DNO_SNPRINTF -I/usr/include/pcap"
Packit 03b34a
     AC_CHECK_LIB(packet, PacketSetMode, ,AC_MSG_ERROR(packet lib not found.))
Packit 03b34a
     AC_CHECK_LIB(wpcap, pcap_setmode, ,AC_MSG_ERROR(pcap lib not found.))
Packit 03b34a
     LIBS="$LIBS -lws2_32"
Packit 03b34a
     ;;
Packit 03b34a
Packit 03b34a
*)
Packit 03b34a
    AC_MSG_WARN(apparently your OS is not officially supported yet)
Packit 03b34a
    AC_MSG_WARN(this may not work)
Packit 03b34a
    AC_MSG_RESULT(please send diffs to vieuxtech@gmail.com)
Packit 03b34a
    ;;
Packit 03b34a
Packit 03b34a
esac
Packit 03b34a
Packit 03b34a
Packit 03b34a
AC_ARG_ENABLE([samples],
Packit 03b34a
    [AS_HELP_STRING([--enable-samples],[install the sample programs @<:@default=no@:>@])])
Packit 03b34a
Packit 03b34a
AM_CONDITIONAL([INSTALL_SAMPLES], [test x"$enable_samples" = xyes])
Packit 03b34a
Packit 03b34a
AC_OUTPUT(Makefile src/Makefile win32/Makefile \
Packit 03b34a
	include/Makefile \
Packit 03b34a
	include/libnet/Makefile include/win32/Makefile \
Packit 03b34a
	sample/Makefile doc/Makefile \
Packit 03b34a
	doc/man/Makefile doc/man/man3/Makefile doc/html/Makefile \
Packit 03b34a
	version.h include/libnet.h libnet-config)
Packit 03b34a
dnl EOF