1dnl
2dnl configure.in
3dnl
4dnl Copyright (c) 2001 Dug Song <dugsong@monkey.org>
5dnl
6dnl $Id: configure.in,v 1.18 2002/04/13 05:20:49 dugsong Exp $
7
8AC_INIT(fragroute.c)
9
10AM_INIT_AUTOMAKE(fragroute, 1.2)
11AM_CONFIG_HEADER(config.h)
12
13dnl Initialize prefix.
14if test "$prefix" = "NONE"; then
15   prefix="/usr/local"
16fi
17
18dnl Checks for programs.
19AC_PROG_AWK
20AC_PROG_CC
21AC_PROG_INSTALL
22AC_PROG_LN_S
23AC_PROG_RANLIB
24
25dnl XXX - we need MingW32 under Cygwin for win32
26AC_CYGWIN
27if test "$CYGWIN" = yes ; then
28   if test -d /usr/include/mingw; then
29      CPPFLAGS="$CPPFLAGS -mno-cygwin"
30      CFLAGS="$CFLAGS -mno-cygwin"
31      AC_DEFINE(WIN32_LEAN_AND_MEAN, 1,
32          [Define for faster code generation.])
33      AC_DEFINE(snprintf, _snprintf, [Use MingW32's internal snprintf])
34      AC_DEFINE(vsnprintf, _vsnprintf, [Use MingW32's internal vsnprintf])
35   else
36      AC_MSG_ERROR([need MingW32 package to build under Cygwin])
37   fi
38   dnl XXX - use our internal event-win32 hack
39   EVENTINC="-I${srcdir}/win32"
40   LIBOBJS="$LIBOBJS event-win32.o"
41   AC_SUBST(EVENTINC)
42
43else
44dnl XXX - BEGIN !CYGWIN
45
46AC_LBL_LIBRARY_NET
47
48dnl Checks for libevent
49AC_MSG_CHECKING(for libevent)
50AC_ARG_WITH(libevent,
51[  --with-libevent=DIR     use libevent in DIR],
52[ case "$withval" in
53  yes|no)
54     AC_MSG_RESULT(no)
55     ;;
56  *)
57     AC_MSG_RESULT($withval)
58     if test -f $withval/include/event.h -a -f $withval/lib/libevent.a; then
59        owd=`pwd`
60        if cd $withval; then withval=`pwd`; cd $owd; fi
61	EVENTINC="-I$withval/include"
62	EVENTLIB="-L$withval/lib -levent"
63     elif test -f $withval/event.h -a -f $withval/libevent.a; then
64        owd=`pwd`
65        if cd $withval; then withval=`pwd`; cd $owd; fi
66	EVENTINC="-I$withval"
67	EVENTLIB="-L$withval -levent"
68     else
69        AC_ERROR(event.h or libevent.a not found in $withval)
70     fi
71     ;;
72  esac ],
73[ if test -f ${prefix}/include/event.h -a -f ${prefix}/lib/libevent.a; then
74     EVENTINC="-I${prefix}/include"
75     EVENTLIB="-L${prefix}/lib -levent"
76  else
77     AC_MSG_RESULT(no)
78     AC_ERROR(libevent not found)
79  fi
80  AC_MSG_RESULT(yes) ]
81)
82AC_SUBST(EVENTINC)
83AC_SUBST(EVENTLIB)
84
85dnl XXX - END !CYGWIN
86fi
87
88dnl Checks for libpcap
89AC_MSG_CHECKING(for libpcap)
90AC_ARG_WITH(libpcap,
91[  --with-libpcap=DIR      use libpcap in DIR],
92[ case "$withval" in
93  yes|no)
94     AC_MSG_RESULT(no)
95     ;;
96  *)
97     AC_MSG_RESULT($withval)
98     if test -f $withval/pcap.h -a -f $withval/libpcap.a; then
99        owd=`pwd`
100        if cd $withval; then withval=`pwd`; cd $owd; fi
101	PCAPINC="-I$withval -I$withval/bpf"
102	PCAPLIB="-L$withval -lpcap"
103     elif test -f $withval/include/pcap.h -a \
104	       -f $withval/include/net/bpf.h; then
105	owd=`pwd`
106	if cd $withval; then withval=`pwd`; cd $owd; fi
107	PCAPINC="-I$withval/include"
108	if test -f $withval/lib/libwpcap.a; then
109	   PCAPLIB="-L$withval/lib -lwpcap"
110	else
111	   PCAPLIB="-L$withval/lib -lpcap"
112        fi
113     else
114        AC_ERROR(pcap.h, net/bpf.h, or libpcap.a not found in $withval)
115     fi
116     ;;
117  esac ],
118[ if test -f ${prefix}/include/pcap.h; then
119     PCAPINC="-I${prefix}/include"
120     if test -f ${prefix}/lib/libwpcap.a; then
121	PCAPLIB="-L${prefix}/lib -lwpcap"
122     else
123        PCAPLIB="-L${prefix}/lib -lpcap"
124     fi
125  elif test -f /usr/include/pcap/pcap.h; then
126     PCAPINC="-I/usr/include/pcap"
127     PCAPLIB="-lpcap"
128  elif test -f /usr/include/pcap.h; then
129     PCAPLIB="-lpcap"
130  else
131     AC_MSG_RESULT(no)
132     AC_ERROR(libpcap not found)
133  fi
134  AC_MSG_RESULT(yes) ]
135)
136AC_SUBST(PCAPINC)
137AC_SUBST(PCAPLIB)
138
139dnl Checks for (installed) libdnet
140AC_MSG_CHECKING(for libdnet)
141AC_ARG_WITH(libdnet,
142[  --with-libdnet=DIR      use libdnet in DIR],
143[ case "$withval" in
144  yes|no)
145     AC_MSG_RESULT(no)
146     ;;
147  *)
148     AC_MSG_RESULT($withval)
149     if test -f $withval/src/libdnet.a; then
150	DNETINC="-I$withval/include"
151	DNETLIB="-L$withval/src -ldnet `$withval/dnet-config --libs`"
152     elif test -x $withval/bin/dnet-config; then
153	DNETINC="`$withval/bin/dnet-config --cflags`"
154	DNETLIB="`$withval/bin/dnet-config --libs`"
155     else
156        AC_ERROR(dnet-config not found in $withval/bin)
157     fi
158     ;;
159  esac ],
160[ if test -x ${prefix}/bin/dnet-config; then
161     DNETINC="`${prefix}/bin/dnet-config --cflags`"
162     DNETLIB="`${prefix}/bin/dnet-config --libs`"
163  else
164     AC_MSG_RESULT(no)
165     AC_ERROR(libdnet not found)
166  fi
167  AC_MSG_RESULT(yes) ]
168)
169AC_SUBST(DNETINC)
170AC_SUBST(DNETLIB)
171
172dnl Check for tunnel interface
173AC_MSG_CHECKING(for tunnel interface)
174if test -c /dev/ip -a -c /dev/tun -a -f /usr/include/net/if_tun.h; then
175   AC_MSG_RESULT(Universal TUN/TAP driver on Solaris)
176   LIBOBJS="$LIBOBJS tun-solaris.o"
177elif test "$CYGWIN" = yes ; then
178   AC_MSG_RESULT(win32 - assume CIPE driver is installed)
179   LIBOBJS="$LIBOBJS tun-win32.o"
180else
181   AC_MSG_RESULT(using loopback)
182   LIBOBJS="$LIBOBJS tun-loop.o"
183fi
184
185dnl Checks for header files.
186AC_HEADER_STDC
187AC_CHECK_HEADERS(fcntl.h inttypes.h malloc.h stdint.h strings.h)
188AC_CHECK_HEADERS(sys/ioctl.h sys/time.h unistd.h)
189AC_CHECK_HEADERS(windows.h winsock.h)
190
191dnl Checks for typedefs, structures, and compiler characteristics.
192AC_C_CONST
193AC_TYPE_OFF_T
194AC_TYPE_SIZE_T
195AC_HEADER_TIME
196AC_STRUCT_TM
197AC_PROG_GCC_TRADITIONAL
198if test "$GCC" = yes; then
199   CFLAGS="$CFLAGS -Wall"
200fi
201
202dnl Checks for library functions.
203AC_TYPE_SIGNAL
204AC_CHECK_FUNCS(arc4random gettimeofday select strdup)
205AC_REPLACE_FUNCS(getopt strlcat strlcpy)
206
207dnl Set system-wide configuration file.
208FRAGROUTE_CONF=`eval echo ${sysconfdir}/fragroute.conf`
209AC_SUBST(FRAGROUTE_CONF)
210AC_DEFINE_UNQUOTED(FRAGROUTE_CONF, "$FRAGROUTE_CONF",
211	[Location of configuration file.])
212
213AC_OUTPUT(Makefile scripts/Makefile win32/Makefile fragroute.8)
214