configure.in revision 147894
1dnl @(#) $Header: /tcpdump/master/libpcap/configure.in,v 1.120.2.6 2005/06/20 21:37:43 guy Exp $ (LBL)
2dnl
3dnl Copyright (c) 1994, 1995, 1996, 1997
4dnl	The Regents of the University of California.  All rights reserved.
5dnl
6dnl Process this file with autoconf to produce a configure script.
7dnl
8
9AC_REVISION($Revision: 1.120.2.6 $)
10AC_PREREQ(2.50)
11AC_INIT(pcap.c)
12
13AC_CANONICAL_SYSTEM
14
15AC_LBL_C_INIT(V_CCOPT, V_INCLS, V_LIBS)
16AC_LBL_C_INLINE
17AC_C___ATTRIBUTE__
18
19AC_LBL_CHECK_TYPE(u_int8_t, u_char)
20AC_LBL_CHECK_TYPE(u_int16_t, u_short)
21AC_LBL_CHECK_TYPE(u_int32_t, u_int)
22
23dnl
24dnl libpcap doesn't itself use <sys/ioccom.h>; however, the test program
25dnl in "AC_LBL_FIXINCLUDES" in "aclocal.m4" uses it, so we have to
26dnl test for it and set "HAVE_SYS_IOCCOM_H" if we have it, otherwise
27dnl "AC_LBL_FIXINCLUDES" won't work on some platforms such as Solaris.
28dnl
29AC_CHECK_HEADERS(sys/ioccom.h sys/sockio.h limits.h)
30AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include <sys/types.h>
31#include <sys/socket.h>])
32if test "$ac_cv_header_netinet_if_ether_h" != yes; then
33	#
34	# The simple test didn't work.
35	# Do we need to include <net/if.h> first?
36	# Unset ac_cv_header_netinet_if_ether_h so we don't
37	# treat the previous failure as a cached value and
38	# suppress the next test.
39	#
40	AC_MSG_NOTICE([Rechecking with some additional includes])
41	unset ac_cv_header_netinet_if_ether_h
42	AC_CHECK_HEADERS(netinet/if_ether.h, , , [#include <sys/types.h>
43#include <sys/socket.h>
44#include <netinet/in.h>
45struct mbuf;
46struct rtentry;
47#include <net/if.h>])
48fi
49
50AC_LBL_FIXINCLUDES
51
52AC_CHECK_FUNCS(strerror strlcpy)
53
54needsnprintf=no
55AC_CHECK_FUNCS(vsnprintf snprintf,,
56	[needsnprintf=yes])
57if test $needsnprintf = yes; then
58	AC_LIBOBJ(snprintf)
59fi
60
61#
62# Do this before checking for ether_hostton(), as it's a
63# "gethostbyname() -ish function".
64#
65AC_LBL_LIBRARY_NET
66
67#
68# You are in a twisty little maze of UN*Xes, all different.
69# Some might not have ether_hostton().
70# Some might have it, but not declare it in any header file.
71# Some might have it, but declare it in <netinet/if_ether.h>.
72# Some might have it, but declare it in <netinet/ether.h>
73# (And some might have it but document it as something declared in
74# <netinet/ethernet.h>, although <netinet/if_ether.h> appears to work.)
75#
76# Before you is a C compiler.
77#
78AC_CHECK_FUNCS(ether_hostton)
79if test "$ac_cv_func_ether_hostton" = yes; then
80	#
81	# OK, we have ether_hostton().  Do we have <netinet/if_ether.h>?
82	#
83	if test "$ac_cv_header_netinet_if_ether_h" = yes; then
84		#
85		# Yes.  Does it declare ether_hostton()?
86		#
87		AC_CHECK_DECL(ether_hostton,
88		    [
89			AC_DEFINE(NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON,,
90			    [Define to 1 if netinet/if_ether.h declares `ether_hostton'])
91		    ],,
92		    [
93#include <sys/types.h>
94#include <sys/socket.h>
95#include <netinet/in.h>
96#include <arpa/inet.h>
97struct mbuf;
98struct rtentry;
99#include <net/if.h>
100#include <netinet/if_ether.h>
101		    ])
102	fi
103	#
104	# Did that succeed?
105	#
106	if test "$ac_cv_have_decl_ether_hostton" != yes; then
107		#
108		# No, how about <netinet/ether.h>, as on Linux?
109		#
110		AC_CHECK_HEADERS(netinet/ether.h)
111		if test "$ac_cv_header_netinet_ether_h" = yes; then
112			#
113			# We have it - does it declare ether_hostton()?
114			# Unset ac_cv_have_decl_ether_hostton so we don't
115			# treat the previous failure as a cached value and
116			# suppress the next test.
117			#
118			unset ac_cv_have_decl_ether_hostton
119			AC_CHECK_DECL(ether_hostton,
120			    [
121				AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_HOSTTON,,
122				    [Define to 1 if netinet/ether.h declares `ether_hostton'])
123			    ],,
124			    [
125#include <netinet/ether.h>
126			    ])
127		fi
128	fi
129	#
130	# Is ether_hostton() declared?
131	#
132	if test "$ac_cv_have_decl_ether_hostton" != yes; then
133		#
134		# No, we'll have to declare it ourselves.
135		# Do we have "struct ether_addr"?
136		#
137		AC_CHECK_TYPES(struct ether_addr,,,
138		    [
139#include <sys/types.h>
140#include <sys/socket.h>
141#include <netinet/in.h>
142#include <arpa/inet.h>
143struct mbuf;
144struct rtentry;
145#include <net/if.h>
146#include <netinet/if_ether.h>
147		    ])
148		AC_DEFINE(HAVE_DECL_ETHER_HOSTTON, 0,
149		    [Define to 1 if you have the declaration of `ether_hostton', and to 0 if you
150don't.])
151	else
152		AC_DEFINE(HAVE_DECL_ETHER_HOSTTON, 1,
153		    [Define to 1 if you have the declaration of `ether_hostton', and to 0 if you
154don't.])
155	fi
156fi
157
158dnl to pacify those who hate protochain insn
159AC_MSG_CHECKING(if --disable-protochain option is specified)
160AC_ARG_ENABLE(protochain, [  --disable-protochain    disable \"protochain\" insn])
161case "x$enable_protochain" in
162xyes)	enable_protochain=enabled	;;
163xno)	enable_protochain=disabled	;;
164x)	enable_protochain=enabled	;;
165esac
166
167if test "$enable_protochain" = "disabled"; then
168	AC_DEFINE(NO_PROTOCHAIN,1,[do not use protochain])
169fi
170AC_MSG_RESULT(${enable_protochain})
171
172dnl
173dnl Not all versions of test support -c (character special) but it's a
174dnl better way of testing since the device might be protected. So we
175dnl check in our normal order using -r and then check the for the /dev
176dnl guys again using -c.
177dnl
178dnl XXX This could be done for cross-compiling, but for now it's not.
179dnl
180if test -z "$with_pcap" && test "$cross_compiling" = yes; then
181	AC_MSG_ERROR(pcap type not determined when cross-compiling; use --with-pcap=...)
182fi
183AC_ARG_WITH(pcap, [  --with-pcap=TYPE        use packet capture TYPE])
184AC_MSG_CHECKING(packet capture type)
185if test ! -z "$with_pcap" ; then
186	V_PCAP="$withval"
187elif test -r /dev/bpf0 ; then
188	V_PCAP=bpf
189elif test -r /usr/include/net/pfilt.h ; then
190	V_PCAP=pf
191elif test -r /dev/enet ; then
192	V_PCAP=enet
193elif test -r /dev/nit ; then
194	V_PCAP=snit
195elif test -r /usr/include/sys/net/nit.h ; then
196	V_PCAP=nit
197elif test -r /usr/include/linux/socket.h ; then
198	V_PCAP=linux
199elif test -r /usr/include/net/raw.h ; then
200	V_PCAP=snoop
201elif test -r /usr/include/odmi.h ; then
202	#
203	# On AIX, the BPF devices might not yet be present - they're
204	# created the first time libpcap runs after booting.
205	# We check for odmi.h instead.
206	#
207	V_PCAP=bpf
208elif test -r /usr/include/sys/dlpi.h ; then
209	V_PCAP=dlpi
210elif test -c /dev/bpf0 ; then		# check again in case not readable
211	V_PCAP=bpf
212elif test -c /dev/enet ; then		# check again in case not readable
213	V_PCAP=enet
214elif test -c /dev/nit ; then		# check again in case not readable
215	V_PCAP=snit
216else
217	V_PCAP=null
218fi
219AC_MSG_RESULT($V_PCAP)
220
221dnl
222dnl Now figure out how we get a list of interfaces and addresses,
223dnl if we support capturing.  Don't bother if we don't support
224dnl capturing.
225dnl
226if test "$V_PCAP" = null
227then
228	#
229	# We can't capture, so we can't open any capture
230	# devices, so we won't return any interfaces.
231	#
232	V_FINDALLDEVS=null
233else
234	AC_CHECK_FUNC(getifaddrs,[
235		#
236		# We have "getifaddrs()"; make sure we have <ifaddrs.h>
237		# as well, just in case some platform is really weird.
238		#
239		AC_CHECK_HEADER(ifaddrs.h,[
240		    #
241		    # We have the header, so we use "getifaddrs()" to
242		    # get the list of interfaces.
243		    #
244		    V_FINDALLDEVS=getad
245		],[
246		    #
247		    # We don't have the header - give up.
248		    # XXX - we could also fall back on some other
249		    # mechanism, but, for now, this'll catch this
250		    # problem so that we can at least try to figure
251		    # out something to do on systems with "getifaddrs()"
252		    # but without "ifaddrs.h", if there is something
253		    # we can do on those systems.
254		    #
255		    AC_MSG_ERROR([Your system has getifaddrs() but doesn't have a usable <ifaddrs.h>.])
256		])
257	],[
258		#
259		# Well, we don't have "getifaddrs()", so we have to use
260		# some other mechanism; determine what that mechanism is.
261		#
262		# The first thing we use is the type of capture mechanism,
263		# which is somewhat of a proxy for the OS we're using.
264		#
265		case "$V_PCAP" in
266
267		dlpi)
268			#
269			# This might be Solaris 8 or later, with
270			# SIOCGLIFCONF, or it might be some other OS
271			# or some older version of Solaris, with
272			# just SIOCGIFCONF.
273			#
274			AC_MSG_CHECKING(whether we have SIOCGLIFCONF)
275			AC_CACHE_VAL(ac_cv_lbl_have_siocglifconf,
276			    AC_TRY_COMPILE(
277				[#include <sys/param.h>
278				#include <sys/file.h>
279				#include <sys/ioctl.h>
280				#include <sys/socket.h>
281				#include <sys/sockio.h>],
282				[ioctl(0, SIOCGLIFCONF, (char *)0);],
283				ac_cv_lbl_have_siocglifconf=yes,
284				ac_cv_lbl_have_siocglifconf=no))
285			AC_MSG_RESULT($ac_cv_lbl_have_siocglifconf)
286			if test $ac_cv_lbl_have_siocglifconf = yes ; then
287				V_FINDALLDEVS=glifc
288			else
289				V_FINDALLDEVS=gifc
290			fi
291			;;
292
293		*)
294			#
295			# Assume we just have SIOCGIFCONF.
296			# (XXX - on at least later Linux kernels, there's
297			# another mechanism, and we should be using that
298			# instead.)
299			#
300			V_FINDALLDEVS=gifc
301			;;
302		esac])
303fi
304
305AC_MSG_CHECKING(if --enable-ipv6 option is specified)
306AC_ARG_ENABLE(ipv6, [  --enable-ipv6           build IPv6-capable version])
307if test "$enable_ipv6" = "yes"; then
308	AC_DEFINE(INET6,1,[IPv6])
309fi
310AC_MSG_RESULT(${enable_ipv6-no})
311
312AC_MSG_CHECKING(whether to build optimizer debugging code)
313AC_ARG_ENABLE(optimizer-dbg, [  --enable-optimizer-dbg  build optimizer debugging code])
314if test "$enable_optimizer_dbg" = "yes"; then
315	AC_DEFINE(BDEBUG,1,[Enable optimizer debugging])
316fi
317AC_MSG_RESULT(${enable_optimizer_dbg-no})
318
319AC_MSG_CHECKING(whether to build parser debugging code)
320AC_ARG_ENABLE(yydebug, [  --enable-yydebug        build parser debugging code])
321if test "$enable_yydebug" = "yes"; then
322	AC_DEFINE(YYDEBUG,1,[Enable parser debugging])
323fi
324AC_MSG_RESULT(${enable_yydebug-no})
325
326case "$V_PCAP" in
327
328dlpi)
329	AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h)
330	AC_MSG_CHECKING(for /dev/dlpi device)
331	if test -c /dev/dlpi ; then
332		AC_MSG_RESULT(yes)
333		AC_DEFINE(HAVE_DEV_DLPI, 1, [define if you have a /dev/dlpi])
334	else
335		AC_MSG_RESULT(no)
336		dir="/dev/dlpi"
337		AC_MSG_CHECKING(for $dir directory)
338		if test -d $dir ; then
339			AC_MSG_RESULT(yes)
340			AC_DEFINE_UNQUOTED(PCAP_DEV_PREFIX, "$dir", [/dev/dlpi directory])
341		else
342			AC_MSG_RESULT(no)
343		fi
344	fi
345	;;
346
347linux)
348	AC_MSG_CHECKING(Linux kernel version)
349 	if test "$cross_compiling" = yes; then
350 		AC_CACHE_VAL(ac_cv_linux_vers,
351 		    ac_cv_linux_vers=unknown)
352 	else
353 		AC_CACHE_VAL(ac_cv_linux_vers,
354 		    ac_cv_linux_vers=`uname -r 2>&1 | \
355 			sed -n -e '$s/.* //' -e '$s/\..*//p'`)
356 	fi
357	AC_MSG_RESULT($ac_cv_linux_vers)
358 	if test $ac_cv_linux_vers = unknown ; then
359 		AC_MSG_ERROR(cannot determine linux version when cross-compiling)
360 	fi
361	if test $ac_cv_linux_vers -lt 2 ; then
362		AC_MSG_ERROR(version 2 or higher required; see the INSTALL doc for more info)
363	fi
364	AC_LBL_TPACKET_STATS
365	;;
366
367dag)
368	V_DEFS="$V_DEFS -DDAG_ONLY"
369	;;
370
371septel)
372	V_DEFS="$V_DEFS -DSEPTEL_ONLY"
373	;;
374
375null)
376	AC_MSG_WARN(cannot determine packet capture interface)
377	AC_MSG_WARN((see the INSTALL doc for more info))
378	;;
379
380esac
381
382AC_MSG_CHECKING(whether we have /proc/net/dev)
383if test -r /proc/net/dev ; then
384	ac_cv_lbl_proc_net_dev=yes
385else
386	ac_cv_lbl_proc_net_dev=no
387fi
388if test $ac_cv_lbl_proc_net_dev = yes; then
389	AC_DEFINE(HAVE_PROC_NET_DEV, 1, [define if you have a /proc/net/dev])
390fi
391AC_MSG_RESULT($ac_cv_lbl_proc_net_dev)
392
393# Check for Endace DAG card support.
394AC_ARG_WITH([dag], [  --with-dag[[=DIR]]        include Endace DAG support ("yes", "no" or DIR; default="yes" on BSD and Linux if present)],
395[
396	if test "$withval" = no
397	then
398		# User doesn't want DAG support.
399		want_dag=no
400	elif test "$withval" = yes
401	then
402		# User wants DAG support but hasn't specified a directory.
403		want_dag=yes
404	else
405		# User wants DAG support and has specified a directory, so use the provided value.
406		want_dag=yes
407		dag_root=$withval
408	fi
409],[
410	#
411	# Use DAG API if present, otherwise don't
412	#
413	want_dag=ifpresent
414])
415
416AC_ARG_WITH([dag-includes], [  --with-dag-includes=DIR   Endace DAG include directory],
417[
418	# User wants DAG support and has specified a header directory, so use the provided value.
419	want_dag=yes
420	dag_include_dir=$withval
421],[])
422
423AC_ARG_WITH([dag-libraries], [  --with-dag-libraries=DIR  Endace DAG library directory],
424[
425	# User wants DAG support and has specified a library directory, so use the provided value.
426	want_dag=yes
427	dag_lib_dir=$withval
428],[])
429
430case "$V_PCAP" in
431linux|bpf|dag)
432	#
433	# We support the DAG API if we're on Linux or BSD, or if we're
434	# building a DAG-only libpcap.
435	#
436	;;
437*)
438	#
439	# If the user explicitly requested DAG, tell them it's not
440	# supported.
441	#
442	# If they expressed no preference, don't include it.
443	#
444	if test $want_dag = yes; then
445		AC_MSG_ERROR([DAG support is only available with 'linux' 'bpf' and 'dag' packet capture types])
446	elif test $want_dag = yes; then
447		want_dag=no
448	fi
449	;;
450esac
451
452ac_cv_lbl_dag_api=no
453if test "$want_dag" != no; then
454
455	AC_MSG_CHECKING([whether we have DAG API headers])
456
457	# If necessary, set default paths for DAG API headers and libraries.
458	if test -z "$dag_root"; then
459	    dag_root=/usr/local
460	fi
461
462	if test -z "$dag_include_dir"; then
463		dag_include_dir="$dag_root/include"
464	fi
465
466	if test -z "$dag_lib_dir"; then
467	    dag_lib_dir="$dag_root/lib"
468	fi
469	
470	if test -z "$dag_tools_dir"; then
471	    dag_tools_dir="$dag_root/tools"
472		fi
473
474	if test -r $dag_include_dir/dagapi.h; then
475		ac_cv_lbl_dag_api=yes
476	fi
477	AC_MSG_RESULT([$ac_cv_lbl_dag_api ($dag_include_dir)])
478fi
479
480if test $ac_cv_lbl_dag_api = yes; then
481
482	AC_MSG_CHECKING([dagapi.o])	
483	dagapi_obj=no
484	if test -r $dag_tools_dir/dagapi.o; then
485		# 2.4.x.
486		dagapi_obj=$dag_tools_dir/dagapi.o
487	elif test -r $dag_lib_dir/dagapi.o; then
488		# 2.5.x.
489		dagapi_obj=$dag_lib_dir/dagapi.o
490	elif test -r $dag_lib_dir/libdag.a; then
491		# 2.5.x.
492		ar x $dag_lib_dir/libdag.a dagapi.o
493		if test -r ./dagapi.o; then
494		    dagapi_obj=./dagapi.o
495		fi
496	fi
497
498	if test $dagapi_obj = no; then
499		AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_tools_dir  $dag_lib_dir/libdag.a)])
500			ac_cv_lbl_dag_api=no
501	else
502		AC_MSG_RESULT([yes ($dagapi_obj)])
503	fi
504fi
505
506if test $ac_cv_lbl_dag_api = yes; then
507
508	AC_MSG_CHECKING([dagopts.o])	
509	dagopts_obj=no
510	if test -r $dag_tools_dir/dagopts.o; then
511		# 2.4.x.
512		dagopts_obj=$dag_tools_dir/dagopts.o
513	elif test -r $dag_lib_dir/dagopts.o; then
514		# 2.5.x.
515		dagopts_obj=$dag_lib_dir/dagopts.o
516	elif test -r $dag_lib_dir/libdag.a; then
517		# 2.5.x.
518		ar x $dag_lib_dir/libdag.a dagopts.o
519		if test -r ./dagopts.o; then
520		    dagopts_obj=./dagopts.o
521		fi
522	fi
523
524	if test $dagopts_obj = no; then
525		AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_tools_dir  $dag_lib_dir/libdag.a)])
526		ac_cv_lbl_dag_api=no
527	else
528		AC_MSG_RESULT([yes ($dagopts_obj)])
529	fi
530fi
531
532if test $ac_cv_lbl_dag_api = yes; then
533	# Under 2.5.x only we need to add dagreg.o.
534	if test -r $dag_include_dir/dagreg.h; then
535		AC_MSG_CHECKING([dagreg.o])	
536		dagreg_obj=no
537		if test -r $dag_lib_dir/dagreg.o; then
538			# Object file is ready and waiting.
539			dagreg_obj=$dag_lib_dir/dagreg.o
540		elif test -r $dag_lib_dir/libdag.a; then
541			# Extract from libdag.a.
542			ar x $dag_lib_dir/libdag.a dagreg.o
543			if test -r ./dagreg.o; then
544				dagreg_obj=./dagreg.o
545			fi
546		fi
547
548		if test $dagreg_obj = no; then
549			AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_lib_dir/libdag.a)])
550			ac_cv_lbl_dag_api=no
551		else
552			AC_MSG_RESULT([yes ($dagreg_obj)])
553		fi
554	fi
555fi
556
557if test $ac_cv_lbl_dag_api = yes; then
558	V_INCLS="$V_INCLS -I$dag_include_dir"
559	V_LIBS="$V_LIBS $dagapi_obj $dagopts_obj $dagreg_obj"
560	if test $V_PCAP != dag ; then
561		 SSRC="pcap-dag.c"
562	fi
563
564	# See if we can find a general version string.
565	# Don't need to save and restore LIBS to prevent -ldag being
566	# included if there's a found-action (arg 3).
567	saved_ldflags=$LDFLAGS
568	LDFLAGS="-L$dag_lib_dir"
569	AC_CHECK_LIB([dag], [dag_attach_stream], [dag_version="2.5.x"], [dag_version="2.4.x"])
570	LDFLAGS=$saved_ldflags
571
572	# See if we can find a specific version string.
573	AC_MSG_CHECKING([the DAG API version])
574	if test -r "$dag_root/VERSION"; then
575		dag_version="`cat $dag_root/VERSION`"
576	fi
577	AC_MSG_RESULT([$dag_version])
578	AC_DEFINE(HAVE_DAG_API, 1, [define if you have the DAG API])
579fi
580
581if test $ac_cv_lbl_dag_api = no; then
582	if test "$want_dag" = yes; then
583        	# User wanted DAG support but we couldn't find it.
584		AC_MSG_ERROR([DAG API requested, but not found at $dag_root: use --without-dag])
585	fi
586
587	if test "$V_PCAP" = dag; then
588		# User requested "dag" capture type but the DAG API wasn't
589		# found.
590		AC_MSG_ERROR([Specifying the capture type as "dag" requires the DAG API to be present; use the --with-dag options to specify the location. (Try "./configure --help" for more information.)])
591	fi
592fi
593
594AC_ARG_WITH(septel, [  --with-septel[[=DIR]]     include Septel support (located in directory DIR, if supplied).  [default=yes, on Linux, if present]],
595[
596	if test "$withval" = no
597	then
598		want_septel=no
599	elif test "$withval" = yes
600	then
601		want_septel=yes
602		septel_root=
603	else
604		want_septel=yes
605		septel_root=$withval
606	fi
607],[
608	#
609	# Use Septel API if present, otherwise don't
610	#
611	want_septel=ifpresent
612	septel_root=./../septel
613])
614ac_cv_lbl_septel_api=no
615case "$V_PCAP" in
616linux|septel)
617	#
618	# We support the Septel API if we're on Linux, or if we're building
619	# a Septel-only libpcap.
620	#
621	;;
622*)
623	#
624	# If the user explicitly requested Septel, tell them it's not
625	# supported.
626	#
627	# If they expressed no preference, don't include it.
628	#
629	if test $want_septel = yes; then
630		AC_MSG_ERROR(Septel support only available with 'linux' and 'septel' packet capture types)
631	elif test $want_septel = yes; then
632		want_septel=no
633	fi
634	;;
635esac
636
637if test "$with_septel" != no; then
638	AC_MSG_CHECKING(whether we have Septel API)
639
640	if test -z "$septel_root"; then
641		septel_root=$srcdir/../septel
642
643	fi
644
645	septel_tools_dir="$septel_root"
646	septel_include_dir="$septel_root/INC"
647	DEF="-DHAVE_SEPTEL_API"
648
649	ac_cv_lbl_septel_api=no
650	if test -r "$septel_include_dir/msg.h"; then
651		V_INCLS="$V_INCLS -I$septel_include_dir"
652		V_DEFS="$V_DEFS $DEF"
653		V_LIBS="$V_LIBS $septel_tools_dir/asciibin.o $septel_tools_dir/bit2byte.o $septel_tools_dir/confirm.o $septel_tools_dir/fmtmsg.o $septel_tools_dir/gct_unix.o $septel_tools_dir/hqueue.o $septel_tools_dir/ident.o $septel_tools_dir/mem.o $septel_tools_dir/pack.o $septel_tools_dir/parse.o $septel_tools_dir/pool.o $septel_tools_dir/sdlsig.o $septel_tools_dir/strtonum.o $septel_tools_dir/timer.o $septel_tools_dir/trace.o "
654
655		if test "$V_PCAP" != septel ; then
656			 SSRC="pcap-septel.c"
657
658		fi
659		ac_cv_lbl_septel_api=yes
660	fi
661
662	AC_MSG_RESULT($ac_cv_lbl_septel_api)
663	if test $ac_cv_lbl_septel_api = no; then
664		if test "$want_septel" = yes; then
665			AC_MSG_ERROR(Septel API not found under directory $septel_root; use --without-septel)
666		fi
667	else
668		AC_DEFINE(HAVE_SEPTEL_API, 1, [define if you have a Septel API])
669	fi
670fi
671
672if test "$V_PCAP" = septel -a "$ac_cv_lbl_septel_api" = no; then
673	AC_MSG_ERROR(Specifying the capture type as 'septel' requires the Septel API to be present; use --with-septel=DIR)
674fi
675
676
677AC_LBL_LEX_AND_YACC(V_LEX, V_YACC, pcap_)
678if test "$V_LEX" = lex ; then
679# Some versions of lex can't handle the definitions section of scanner.l .
680# Try lexing it and complain if it can't deal.
681	AC_CACHE_CHECK([for capable lex], tcpdump_cv_capable_lex,
682		if lex -t scanner.l > /dev/null 2>&1; then
683			tcpdump_cv_capable_lex=yes
684		else
685			tcpdump_cv_capable_lex=insufficient
686		fi)
687	if test $tcpdump_cv_capable_lex = insufficient ; then
688		AC_MSG_ERROR([Your operating system's lex is insufficient to compile
689 libpcap.  flex is a lex replacement that has many advantages, including
690 being able to compile libpcap.  For more information, see
691 http://www.gnu.org/software/flex/flex.html .])
692	fi
693fi
694
695DYEXT="so"
696case "$host_os" in
697
698aix*)
699	dnl Workaround to enable certain features
700	AC_DEFINE(_SUN,1,[define on AIX to get certain functions])
701	;;
702
703hpux9*)
704	AC_DEFINE(HAVE_HPUX9,1,[on HP-UX 9.x])
705	;;
706
707hpux10.0*)
708	;;
709
710hpux10.1*)
711	;;
712
713hpux*)
714	dnl HPUX 10.20 and above is similar to HPUX 9, but
715	dnl not the same....
716	dnl
717	dnl XXX - DYEXT should be set to "sl" if this is building
718	dnl for 32-bit PA-RISC, but should be left as "so" for
719	dnl 64-bit PA-RISC or, I suspect, IA-64.
720	AC_DEFINE(HAVE_HPUX10_20_OR_LATER,1,[on HP-UX 10.20 or later])
721	;;
722
723sinix*)
724	AC_MSG_CHECKING(if SINIX compiler defines sinix)
725	AC_CACHE_VAL(ac_cv_cc_sinix_defined,
726		AC_TRY_COMPILE(
727		    [],
728		    [int i = sinix;],
729		    ac_cv_cc_sinix_defined=yes,
730		    ac_cv_cc_sinix_defined=no))
731	    AC_MSG_RESULT($ac_cv_cc_sinix_defined)
732	    if test $ac_cv_cc_sinix_defined = no ; then
733		    AC_DEFINE(sinix,1,[on sinix])
734	    fi
735	;;
736
737solaris*)
738	AC_DEFINE(HAVE_SOLARIS,1,[On solaris])
739	;;
740
741darwin*)
742	DYEXT="dylib"
743	V_CCOPT="$V_CCOPT -fno-common"
744	;;
745esac
746
747AC_PROG_RANLIB
748
749AC_LBL_DEVEL(V_CCOPT)
750
751AC_LBL_SOCKADDR_SA_LEN
752
753AC_LBL_SOCKADDR_STORAGE
754
755AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1
756
757AC_LBL_UNALIGNED_ACCESS
758
759#
760# Makefile.in includes rules to generate version.h, so we assume
761# that it will be generated if autoconf is used.
762#
763AC_DEFINE(HAVE_VERSION_H, 1, [define if version.h is generated in the build procedure])
764
765rm -f net
766ln -s ${srcdir}/bpf/net net
767
768AC_SUBST(V_CCOPT)
769AC_SUBST(V_DEFS)
770AC_SUBST(V_INCLS)
771AC_SUBST(V_LIBS)
772AC_SUBST(V_LEX)
773AC_SUBST(V_PCAP)
774AC_SUBST(V_FINDALLDEVS)
775AC_SUBST(V_RANLIB)
776AC_SUBST(V_YACC)
777AC_SUBST(SSRC)
778AC_SUBST(DYEXT)
779
780AC_PROG_INSTALL
781
782AC_CONFIG_HEADER(config.h)
783
784AC_OUTPUT(Makefile)
785
786if test -f .devel ; then
787	make depend
788fi
789exit 0
790