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