add winpcap 4.0.2 from url http://www.winpcap.org/
[natblaster.git] / libnet / configure.in
blob849a60bb55f39858397ca76b618847c1ff5fc600
1 dnl $Id: configure.in,v 1.9 2004/03/01 20:26:11 mike Exp $
2 dnl
3 dnl Libnet autoconfiguration information file
4 dnl Copyright (c) 1998 - 2002 Mike D. Schiffman <mike@infonexus.com>
5 dnl All rights reserved.
6 dnl
7 dnl Process this file with autoconf to produce a configure script.
10 AC_INIT(src/libnet_build_ip.c)
11 LIBNET_VERSION=`cat VERSION`
12 AC_MSG_RESULT(beginning autoconfiguration process for libnet-$LIBNET_VERSION...)
13 AC_CANONICAL_SYSTEM
15 AM_INIT_AUTOMAKE(libnet, $LIBNET_VERSION)
16 AM_CONFIG_HEADER(include/config.h)
17 AM_MAINTAINER_MODE
19 dnl
20 dnl Check for the usual programs
21 dnl
22 AC_PROG_CC
23 AC_PROG_INSTALL
24 AC_PROG_RANLIB
26 AC_CHECK_HEADERS(sys/sockio.h)
28 dnl
29 dnl And some custom things
30 dnl
32 AC_LIBNET_ENDIAN_CHECK
33 AC_LBL_UNALIGNED_ACCESS
34 dnl AC_LBL_LIBRARY_NET
36 AC_SUBST(ENDIANESS)
37 AC_SUBST(LIBNET_VERSION)
38 AC_SUBST(HAVE_PACKET_SOCKET)
39 AC_SUBST(ADDITIONAL_LIBS)
40 AC_SUBST(LIBNET_CONFIG_DEFINES)
41 AC_SUBST(LIBNET_CONFIG_LIBS)
42 AC_SUBST(LIBNET_CONFIG_CFLAGS)
44 dnl
45 dnl Check for typedefs, structures, and compiler characteristics
46 dnl
47 AC_PROG_GCC_TRADITIONAL
48 if test "$GCC" = yes ; then
49     CFLAGS="$CFLAGS -Wall"
52 dnl
53 dnl Set the root install directory
54 dnl
55 AC_PREFIX_DEFAULT(/usr)
56 dnl if test "$prefix" = "NONE"; then
57 dnl     prefix="/usr"
58 dnl fi
60 dnl
61 dnl Check for library functions.
62 dnl
63 AC_CHECK_FUNCS(strerror)
65 dnl
66 dnl Get link-layer interface type
67 dnl
68 AC_MSG_CHECKING(link-layer packet interface type)
70 if test -r /dev/bpf0 ; then
71     AC_LIBOBJ([libnet_link_bpf])
72     AC_MSG_RESULT(found bpf)
73 elif test -r /usr/include/net/pfilt.h ; then
74     AC_LIBOBJ([libnet_link_pf])
75     AC_MSG_RESULT(found pf)
76 elif test -r /dev/nit ; then
77     AC_LIBOBJ([libnet_link_snit])
78     AC_MSG_RESULT(found snit)
79 elif test -r /usr/include/sys/net/nit.h ; then
80     AC_LIBOBJ([libnet_link_nit])
81     AC_MSG_RESULT(found nit)
82 elif test -r /usr/include/net/raw.h ; then
83     AC_LIBOBJ([libnet_link_snoop])
84     AC_MSG_RESULT(found snoop)
85 elif test -r /usr/include/sys/dlpi.h ; then
86     AC_LIBOBJ([libnet_link_dlpi])
87     AC_MSG_RESULT(found dlpi)
88     AC_DEFINE(HAVE_DLPI)
89 elif test -r /usr/include/linux/socket.h ; then
90     AC_LIBOBJ([libnet_link_linux])
91     AC_MSG_RESULT(found linux primitives)
92     AC_LIBNET_CHECK_PF_PACKET
93     AC_LIBNET_LINUX_PROCFS
94 elif test -c /dev/bpf0 ; then           # check again in case not readable
95     AC_LIBOBJ([libnet_link_bpf])
96     AC_MSG_RESULT(found bpf)
97 elif test -c /dev/nit ; then            # check again in case not readable
98     AC_LIBOBJ([libnet_link_snit])
99     AC_MSG_RESULT(found snit)
100 elif test "$target_os" = "cygwin" ; then
101      AC_LIBOBJ([libnet_link_win32])
102      AC_MSG_RESULT(found win32 wpcap)
103 else
104     AC_LIBOBJ([libnet_link_none])
105     AC_MSG_WARN(could not find a link-layer packet interface)
106     AC_MSG_WARN(link-layer packet injection will not be available)
110 dnl Inform user about the packet builders we've got
112 echo -n "scanning available packet construction modules: "
113 for dir in src/*build*c ; do
114     echo $dir | sed -e /src\\/libnet_build_/s/// | sed -e /\\.c/s/// | tr \\n \\040
115 done
116 echo ""
119 dnl Check and set OS specific parameters
122 case "$target_os" in
124 *linux*)
125     AC_DEFINE(_BSD_SOURCE)
126     AC_DEFINE(__BSD_SOURCE)
127     AC_DEFINE(__FAVOR_BSD)
128     LIBNET_CONFIG_DEFINES="-D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD"
129     AC_CHECK_HEADERS(net/ethernet.h, \
130         LIBNET_CONFIG_DEFINES="$LIBNET_CONFIG_DEFINES -DHAVE_NET_ETHERNET_H")
131     ;;
133 *freebsd*)
134     AC_DEFINE(LIBNET_BSDISH_OS)
135     AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
136     AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
137     LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP -DHAVE_SOCKADDR_SA_LEN"
138     ;;
140 *netbsd*)
141     AC_DEFINE(LIBNET_BSDISH_OS)
142     AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
143     LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
144     ;;
146 *openbsd*)
147     AC_DEFINE(LIBNET_BSDISH_OS)
148     AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
149     LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS"
150     ;;
152 *bsdi*)
153     AC_DEFINE(LIBNET_BSDISH_OS)
154     AC_DEFINE(LIBNET_BSD_BYTE_SWAP)
155     LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DLIBNET_BSD_BYTE_SWAP"
156     ;;
158 *darwin*)
159     AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
160     LIBNET_CONFIG_DEFINES="-DHAVE_SOCKADDR_SA_LEN"
161     ;;
163 *solaris*)
164     AC_DEFINE(HAVE_SOLARIS)
165     AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h)
166     AC_MSG_CHECKING(for /dev/dlpi device)
167     if test -c /dev/dlpi; then
168         AC_MSG_RESULT(yes)
169         AC_DEFINE(HAVE_DEV_DLPI)
170     else
171         AC_MSG_RESULT(no)
172         dir="/dev/dlpi"
173         AC_MSG_CHECKING(for $dir directory)
174         if test -d $dir ; then
175             AC_MSG_RESULT(yes)
176             AC_DEFINE_UNQUOTED(DLPI_DEV_PREFIX, "$dir")
177         else
178             AC_MSG_RESULT(no)
179         fi
180     fi
181     AC_CHECK_LIB(socket, socket, ,AC_MSG_ERROR(libsocket not found.))
182     AC_CHECK_LIB(nsl, gethostbyname, ,AC_MSG_ERROR(libnsl not found.))
184 dnl 
185 dnl Broken checksums?
187     case "`uname -r`" in
188     5.4)
189         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
190         ;;
191     5.5*)
192         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
193         ;;
194     5.8)
195         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
196         AC_DEFINE(HAVE_SOLARIS_IPV6)
197         ;;
198     5.9)
199         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
200         AC_DEFINE(HAVE_SOLARIS_IPV6)
201         ;;
203     esac
205     ADDITIONAL_LIBS='-lsocket -lnsl'
206     LIBNET_CONFIG_LIBS="$LIBNET_CONFIG_LIBS -lsocket -lnsl"
207     ;;
209 *hpux11*)
210     AC_DEFINE(HAVE_HPUX11)
211     AC_CHECK_HEADERS(sys/dlpi_ext.h)
212     ;;
214 *cygwin*)
215      AC_DEFINE(LIBNET_BSDISH_OS)
216      AC_DEFINE(NO_SNPRINTF)
217      LIBNET_CONFIG_DEFINES="-DLIBNET_BSDISH_OS -DNO_SNPRINTF"
218      CFLAGS="$CFLAGS -mno-cygwin -O0 -fnative-struct -DNO_SNPRINTF -I/usr/include/pcap"
219      AC_CHECK_LIB(packet, PacketSetMode, ,AC_MSG_ERROR(packet lib not found.))
220      AC_CHECK_LIB(wpcap, pcap_setmode, ,AC_MSG_ERROR(pcap lib not found.))
221      LIBS="$LIBS -lws2_32"
222      ;;
225     AC_MSG_WARN(apparently your OS is not officially supported yet)
226     AC_MSG_WARN(this may not work)
227     AC_MSG_RESULT(please send diffs to mike@infonexus.com)
228     ;;
230 esac
232 AC_OUTPUT(Makefile src/Makefile include/Makefile \
233     include/libnet/Makefile sample/Makefile version.h include/libnet.h \
234     libnet-config, chmod +x libnet-config)
235 dnl EOF