Change "Found no match" to "No match found"
[obnox/wireshark/wip.git] / acinclude.m4
1 dnl Macros that test for specific features.
2 dnl This file is part of the Autoconf packaging for Wireshark.
3 dnl Copyright (C) 1998-2000 by Gerald Combs.
4 dnl
5 dnl $Id$
6 dnl
7 dnl This program is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU General Public License as published by
9 dnl the Free Software Foundation; either version 2, or (at your option)
10 dnl any later version.
11 dnl
12 dnl This program is distributed in the hope that it will be useful,
13 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
14 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 dnl GNU General Public License for more details.
16 dnl
17 dnl You should have received a copy of the GNU General Public License
18 dnl along with this program; if not, write to the Free Software
19 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 dnl 02111-1307, USA.
21 dnl
22 dnl As a special exception, the Free Software Foundation gives unlimited
23 dnl permission to copy, distribute and modify the configure scripts that
24 dnl are the output of Autoconf.  You need not follow the terms of the GNU
25 dnl General Public License when using or distributing such scripts, even
26 dnl though portions of the text of Autoconf appear in them.  The GNU
27 dnl General Public License (GPL) does govern all other use of the material
28 dnl that constitutes the Autoconf program.
29 dnl
30 dnl Certain portions of the Autoconf source text are designed to be copied
31 dnl (in certain cases, depending on the input) into the output of
32 dnl Autoconf.  We call these the "data" portions.  The rest of the Autoconf
33 dnl source text consists of comments plus executable code that decides which
34 dnl of the data portions to output in any given case.  We call these
35 dnl comments and executable code the "non-data" portions.  Autoconf never
36 dnl copies any of the non-data portions into its output.
37 dnl
38 dnl This special exception to the GPL applies to versions of Autoconf
39 dnl released by the Free Software Foundation.  When you make and
40 dnl distribute a modified version of Autoconf, you may extend this special
41 dnl exception to the GPL to apply to your modified version as well, *unless*
42 dnl your modified version has the potential to copy into its output some
43 dnl of the text that was the non-data portion of the version that you started
44 dnl with.  (In other words, unless your change moves or copies text from
45 dnl the non-data portions to the data portions.)  If your modification has
46 dnl such potential, you must delete any notice of this special exception
47 dnl to the GPL from your modified version.
48 dnl
49 dnl Written by David MacKenzie, with help from
50 dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
51 dnl Roland McGrath, Noah Friedman, david d zuhn, and many others.
52
53 #
54 # AC_WIRESHARK_ADD_DASH_L
55 #
56 # Add to the variable specified as the first argument a "-L" flag for the
57 # directory specified as the second argument, and, on Solaris, add a
58 # "-R" flag for it as well.
59 #
60 # XXX - IRIX, and other OSes, may require some flag equivalent to
61 # "-R" here.
62 #
63 AC_DEFUN([AC_WIRESHARK_ADD_DASH_L],
64 [$1="$$1 -L$2"
65 case "$host_os" in
66   solaris*)
67     $1="$$1 -R$2"
68   ;;
69 esac
70 ])
71
72
73 #
74 # AC_WIRESHARK_STRUCT_SA_LEN
75 #
76 dnl AC_STRUCT_ST_BLKSIZE extracted from the file in question,
77 dnl "acspecific.m4" in GNU Autoconf 2.12, and turned into
78 dnl AC_WIRESHARK_STRUCT_SA_LEN, which checks if "struct sockaddr"
79 dnl has the 4.4BSD "sa_len" member, and defines HAVE_SA_LEN; that's
80 dnl what's in this file.
81 dnl Done by Guy Harris <guy@alum.mit.edu> on 1998-11-14. 
82
83 dnl ### Checks for structure members
84
85 AC_DEFUN([AC_WIRESHARK_STRUCT_SA_LEN],
86 [AC_CACHE_CHECK([for sa_len in struct sockaddr], ac_cv_wireshark_struct_sa_len,
87 [AC_TRY_COMPILE([#include <sys/types.h>
88 #include <sys/socket.h>], [struct sockaddr s; s.sa_len;],
89 ac_cv_wireshark_struct_sa_len=yes, ac_cv_wireshark_struct_sa_len=no)])
90 if test $ac_cv_wireshark_struct_sa_len = yes; then
91   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
92 fi
93 ])
94
95
96 dnl
97 dnl Check whether a given format can be used to print 64-bit integers
98 dnl
99 AC_DEFUN([AC_WIRESHARK_CHECK_64BIT_FORMAT],
100 [
101   AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
102   AC_RUN_IFELSE(
103     [
104       AC_LANG_SOURCE(
105         [[
106 #         ifdef HAVE_INTTYPES_H
107           #include <inttypes.h>
108 #         endif
109           #include <glibconfig.h>
110           #include <stdio.h>
111           #include <sys/types.h>
112
113           main()
114           {
115             guint64 t = 1;
116             char strbuf[16+1];
117             sprintf(strbuf, "%016$1x", t << 32);
118             if (strcmp(strbuf, "0000000100000000") == 0)
119               exit(0);
120             else
121               exit(1);
122           }
123         ]])
124     ],
125     [
126       AC_DEFINE(PRId64, "$1d", [Format for printing 64-bit signed decimal numbers])
127       AC_DEFINE(PRIo64, "$1o", [Format for printing 64-bit unsigned octal numbers])
128       AC_DEFINE(PRIx64, "$1x", [Format for printing 64-bit unsigned hexadecimal numbers (lower-case)])
129       AC_DEFINE(PRIX64, "$1X", [Format for printing 64-bit unsigned hexadecimal numbers (upper-case)])
130       AC_DEFINE(PRIu64, "$1u", [Format for printing 64-bit unsigned decimal numbers])
131       AC_MSG_RESULT(yes)
132     ],
133     [
134       AC_MSG_RESULT(no)
135       $2
136     ])
137 ])
138
139 #
140 # AC_WIRESHARK_IPV6_STACK
141 #
142 # By Jun-ichiro "itojun" Hagino, <itojun@iijlab.net>
143 #
144 AC_DEFUN([AC_WIRESHARK_IPV6_STACK],
145 [
146         v6type=unknown
147         v6lib=none
148
149         AC_MSG_CHECKING([ipv6 stack type])
150         for i in v6d toshiba kame inria zeta linux linux-glibc solaris8; do
151                 case $i in
152                 v6d)
153                         AC_EGREP_CPP(yes, [
154 #include </usr/local/v6/include/sys/types.h>
155 #ifdef __V6D__
156 yes
157 #endif],
158                                 [v6type=$i; v6lib=v6;
159                                 v6libdir=/usr/local/v6/lib;
160                                 CFLAGS="-I/usr/local/v6/include $CFLAGS"])
161                         ;;
162                 toshiba)
163                         AC_EGREP_CPP(yes, [
164 #include <sys/param.h>
165 #ifdef _TOSHIBA_INET6
166 yes
167 #endif],
168                                 [v6type=$i; v6lib=inet6;
169                                 v6libdir=/usr/local/v6/lib;
170                                 CFLAGS="-DINET6 $CFLAGS"])
171                         ;;
172                 kame)
173                         AC_EGREP_CPP(yes, [
174 #include <netinet/in.h>
175 #ifdef __KAME__
176 yes
177 #endif],
178                                 [v6type=$i; v6lib=inet6;
179                                 v6libdir=/usr/local/v6/lib;
180                                 CFLAGS="-DINET6 $CFLAGS"])
181                         ;;
182                 inria)
183                         AC_EGREP_CPP(yes, [
184 #include <netinet/in.h>
185 #ifdef IPV6_INRIA_VERSION
186 yes
187 #endif],
188                                 [v6type=$i; CFLAGS="-DINET6 $CFLAGS"])
189                         ;;
190                 zeta)
191                         AC_EGREP_CPP(yes, [
192 #include <sys/param.h>
193 #ifdef _ZETA_MINAMI_INET6
194 yes
195 #endif],
196                                 [v6type=$i; v6lib=inet6;
197                                 v6libdir=/usr/local/v6/lib;
198                                 CFLAGS="-DINET6 $CFLAGS"])
199                         ;;
200                 linux)
201                         if test -d /usr/inet6; then
202                                 v6type=$i
203                                 v6lib=inet6
204                                 v6libdir=/usr/inet6
205                                 CFLAGS="-DINET6 $CFLAGS"
206                         fi
207                         ;;
208                 linux-glibc)
209                         AC_EGREP_CPP(yes, [
210 #include <features.h>
211 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
212 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || __GLIBC__ > 2
213 yes
214 #endif
215 #endif],
216                         [v6type=$i; v6lib=inet6; CFLAGS="-DINET6 $CFLAGS"])
217                         ;;
218                 solaris8)
219                         if test "`uname -s`" = "SunOS" && test "`uname -r`" = "5.8"; then
220                                 v6type=$i
221                                 v6lib=inet6
222                                 [CFLAGS="-DINET6 -DSOLARIS8_INET6 $CFLAGS"]
223                         fi
224                         ;; 
225                 esac
226                 if test "$v6type" != "unknown"; then
227                         break
228                 fi
229         done
230
231         if test "$v6lib" != "none"; then
232                 for dir in $v6libdir /usr/local/v6/lib /usr/local/lib; do
233                         if test -d $dir -a -f $dir/lib$v6lib.a; then
234                                 LIBS="-L$dir $LIBS -l$v6lib"
235                                 break
236                         fi
237                 done
238                 enable_ipv6="yes"
239         else
240                 enable_ipv6="no"
241         fi
242         AC_MSG_RESULT(["$v6type, $v6lib"])
243 ])
244
245 #
246 # AC_WIRESHARK_GETHOSTBY_LIB_CHECK
247 #
248 # Checks whether we need "-lnsl" to get "gethostby*()", which we use
249 # in "resolv.c".
250 #
251 # Adapted from stuff in the AC_PATH_XTRA macro in "acspecific.m4" in
252 # GNU Autoconf 2.13; the comment came from there.
253 # Done by Guy Harris <guy@alum.mit.edu> on 2000-01-14. 
254 #
255 AC_DEFUN([AC_WIRESHARK_GETHOSTBY_LIB_CHECK],
256 [
257     # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
258     # to get the SysV transport functions.
259     # chad@anasazi.com says the Pyramid MIS-ES running DC/OSx (SVR4)
260     # needs -lnsl.
261     # The nsl library prevents programs from opening the X display
262     # on Irix 5.2, according to dickey@clark.net.
263     AC_CHECK_FUNC(gethostbyname, ,
264         AC_CHECK_LIB(nsl, gethostbyname, NSL_LIBS="-lnsl"))
265     AC_SUBST(NSL_LIBS)
266 ])
267
268 #
269 # AC_WIRESHARK_SOCKET_LIB_CHECK
270 #
271 # Checks whether we need "-lsocket" to get "socket()", which is used
272 # by libpcap on some platforms - and, in effect, "gethostby*()" on
273 # most if not all platforms (so that it can use NIS or DNS or...
274 # to look up host names).
275 #
276 # Adapted from stuff in the AC_PATH_XTRA macro in "acspecific.m4" in
277 # GNU Autoconf 2.13; the comment came from there.
278 # Done by Guy Harris <guy@alum.mit.edu> on 2000-01-14. 
279 #
280 # We use "connect" because that's what AC_PATH_XTRA did.
281 #
282 AC_DEFUN([AC_WIRESHARK_SOCKET_LIB_CHECK],
283 [
284     # lieder@skyler.mavd.honeywell.com says without -lsocket,
285     # socket/setsockopt and other routines are undefined under SCO ODT
286     # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
287     # on later versions), says simon@lia.di.epfl.ch: it contains
288     # gethostby* variants that don't use the nameserver (or something).
289     # -lsocket must be given before -lnsl if both are needed.
290     # We assume that if connect needs -lnsl, so does gethostbyname.
291     AC_CHECK_FUNC(connect, ,
292       AC_CHECK_LIB(socket, connect, SOCKET_LIBS="-lsocket",
293                 AC_MSG_ERROR(Function 'socket' not found.), $NSL_LIBS))
294     AC_SUBST(SOCKET_LIBS)
295 ])
296
297 #
298 # AC_WIRESHARK_BREAKLOOP_TRY_LINK
299 #
300 AC_DEFUN([AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK],
301 [
302   AC_LINK_IFELSE(
303   [
304       AC_LANG_SOURCE(
305       [[
306 #       include <pcap.h>
307         int main(void)
308         {
309           pcap_t  *pct = NULL;
310           pcap_breakloop(pct);
311           return 0;
312         }
313       ]])
314   ],
315   [
316     ws_breakloop_compiled=yes
317   ],
318   [
319     ws_breakloop_compiled=no
320   ])
321 ])
322
323
324
325 #
326 # AC_WIRESHARK_PCAP_CHECK
327 #
328 AC_DEFUN([AC_WIRESHARK_PCAP_CHECK],
329 [
330         if test -z "$pcap_dir"
331         then
332           # Pcap header checks
333           # XXX need to set a var AC_CHECK_HEADER(pcap.h,,)
334
335           #
336           # The user didn't specify a directory in which libpcap resides;
337           # we assume that the current library search path will work,
338           # but we may have to look for the header in a "pcap"
339           # subdirectory of "/usr/include" or "/usr/local/include",
340           # as some systems apparently put "pcap.h" in a "pcap"
341           # subdirectory, and we also check "$prefix/include" - and
342           # "$prefix/include/pcap", in case $prefix is set to
343           # "/usr/include" or "/usr/local/include".
344           #
345           # XXX - should we just add "$prefix/include" to the include
346           # search path and "$prefix/lib" to the library search path?
347           #
348           AC_MSG_CHECKING(for extraneous pcap header directories)
349           found_pcap_dir=""
350           pcap_dir_list="/usr/include/pcap $prefix/include/pcap $prefix/include"
351           if test "x$ac_cv_enable_usr_local" = "xyes" ; then
352             pcap_dir_list="$pcap_dir_list /usr/local/include/pcap"
353           fi
354           for pcap_dir in $pcap_dir_list
355           do
356             if test -d $pcap_dir ; then
357                 if test x$pcap_dir != x/usr/include -a x$pcap_dir != x/usr/local/include ; then
358                     CFLAGS="$CFLAGS -I$pcap_dir"
359                     CPPFLAGS="$CPPFLAGS -I$pcap_dir"
360                 fi
361                 found_pcap_dir=" $found_pcap_dir -I$pcap_dir"
362                 break
363             fi
364           done
365
366           if test "$found_pcap_dir" != "" ; then
367             AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
368           else
369             AC_MSG_RESULT(not found)
370           fi
371         else
372           #
373           # The user specified a directory in which libpcap resides,
374           # so add the "include" subdirectory of that directory to
375           # the include file search path and the "lib" subdirectory
376           # of that directory to the library search path.
377           #
378           # XXX - if there's also a libpcap in a directory that's
379           # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
380           # make us find the version in the specified directory,
381           # as the compiler and/or linker will search that other
382           # directory before it searches the specified directory.
383           #
384           CFLAGS="$CFLAGS -I$pcap_dir/include"
385           CPPFLAGS="$CPPFLAGS -I$pcap_dir/include"
386           AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $pcap_dir/lib)
387         fi
388
389         # Pcap header check
390         AC_CHECK_HEADER(pcap.h,, 
391             AC_MSG_ERROR([[Header file pcap.h not found; if you installed libpcap
392 from source, did you also do \"make install-incl\", and if you installed a
393 binary package of libpcap, is there also a developer's package of libpcap,
394 and did you also install that package?]]))
395
396         #
397         # Check to see if we find "pcap_open_live" in "-lpcap".
398         # Also check for various additional libraries that libpcap might
399         # require.
400         #
401         AC_CHECK_LIB(pcap, pcap_open_live,
402           [
403             PCAP_LIBS=-lpcap
404             AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library])
405           ], [
406             ac_wireshark_extras_found=no
407             ac_save_LIBS="$LIBS"
408             for extras in "-lcfg -lodm" "-lpfring"
409             do
410                 AC_MSG_CHECKING([for pcap_open_live in -lpcap with $extras])
411                 LIBS="-lpcap $extras"
412                 #
413                 # XXX - can't we use AC_CHECK_LIB here?
414                 #
415                 AC_TRY_LINK(
416                     [
417 #       include <pcap.h>
418                     ],
419                     [
420         pcap_open_live(NULL, 0, 0, 0, NULL);
421                     ],
422                     [
423                         ac_wireshark_extras_found=yes
424                         AC_MSG_RESULT([yes])
425                         PCAP_LIBS="-lpcap $extras"
426                         AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library])
427                     ],
428                     [
429                         AC_MSG_RESULT([no])
430                     ])
431                 if test x$ac_wireshark_extras_found = xyes
432                 then
433                     break
434                 fi
435             done
436             if test x$ac_wireshark_extras_found = xno
437             then
438                 AC_MSG_ERROR([Can't link with library libpcap.])
439             fi
440             LIBS=$ac_save_LIBS
441           ], $SOCKET_LIBS $NSL_LIBS)
442         AC_SUBST(PCAP_LIBS)
443
444         #
445         # Check whether various variables and functions are defined by
446         # libpcap.
447         #
448         ac_save_LIBS="$LIBS"
449         AC_MSG_CHECKING(whether pcap_version is defined by libpcap)
450         LIBS="$PCAP_LIBS $SOCKET_LIBS $NSL_LIBS $LIBS"
451         AC_TRY_LINK(
452            [
453 #       include <stdio.h>
454         extern char *pcap_version;
455            ],
456            [
457         printf ("%s\n", pcap_version);
458            ],
459            ac_cv_pcap_version_defined=yes,
460            ac_cv_pcap_version_defined=no,
461            [echo $ac_n "cross compiling; assumed OK... $ac_c"])
462         if test "$ac_cv_pcap_version_defined" = yes ; then
463                 AC_MSG_RESULT(yes)
464                 AC_DEFINE(HAVE_PCAP_VERSION, 1, [Define if libpcap version is known])
465         else
466                 AC_MSG_RESULT(no)
467         fi
468         AC_CHECK_FUNCS(pcap_open_dead pcap_freecode)
469         #
470         # pcap_breakloop may be present in the library and not declared in the
471         # header file. We are therefore testing whether the function is present
472         # first and then if it is usable. It is usable if it compiles without
473         # an implicit warning. If it is not usable, we output a warning telling
474         # the user to update his pcap header.
475         # 
476         # Ceteris paribus, it should only happen with Mac OS X 10.3[.x] which
477         # can have an up-to-date pcap library without the corresponding pcap
478         # header.
479         #
480         # However, it might also happen on some others OSes with some erroneous
481         # system manipulations where multiple versions of libcap might co-exist 
482         # e.g. hand made symbolic link from libpcap.so -> libpcap.so.0.8 but
483         # having the pcap header version 0.7.
484         #
485         AC_MSG_CHECKING([whether pcap_breakloop is present and usable])
486         ac_CFLAGS_saved="$CFLAGS"
487         AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK
488         if test "x$ws_breakloop_compiled" = "xyes"; then
489           CFLAGS="$CFLAGS -Werror -Wimplicit"
490           AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK
491           if test "x$ws_breakloop_compiled" = "xyes"; then
492             AC_MSG_RESULT(yes)
493             AC_DEFINE(HAVE_PCAP_BREAKLOOP, 1, [Define if pcap_breakloop is known])
494           else
495             AC_MSG_RESULT(broken)
496             AC_MSG_WARN([Your pcap library is more recent than your pcap header.])
497             AC_MSG_WARN([Wireshark won't be able to use functions not declared])
498             AC_MSG_WARN([in that header. You should install a newer version of])
499             AC_MSG_WARN([the header file.])
500           fi
501           CFLAGS="$ac_CFLAGS_saved"
502         else
503           AC_MSG_RESULT(function not present)
504         fi
505
506         #
507         # Later versions of Mac OS X 10.3[.x] ship a pcap.h that
508         # doesn't define pcap_if_t but ship an 0.8[.x] libpcap,
509         # so the library has "pcap_findalldevs()", but pcap.h
510         # doesn't define "pcap_if_t" so you can't actually *use*
511         # "pcap_findalldevs()".
512         #
513         # That even appears to be true of systems shipped with
514         # 10.3.4, so it doesn't appear only to be a case of
515         # Software Update not updating header files.
516         #
517         # (You can work around this by installing the 0.8 header
518         # files.)
519         #
520         AC_CACHE_CHECK([whether pcap_findalldevs is present and usable],
521           [ac_cv_func_pcap_findalldevs],
522           [
523             AC_LINK_IFELSE(
524               [
525                 AC_LANG_SOURCE(
526                   [[
527                     #include <pcap.h>
528                     main()
529                     {
530                       pcap_if_t *devpointer;
531                       char errbuf[1];
532
533                       pcap_findalldevs(&devpointer, errbuf);
534                     }
535                   ]])
536               ],
537               [
538                 ac_cv_func_pcap_findalldevs=yes
539               ],
540               [
541                 ac_cv_func_pcap_findalldevs=no
542               ])
543           ])
544         #
545         # Don't check for other new routines that showed up after
546         # "pcap_findalldevs()" if we don't have a usable
547         # "pcap_findalldevs()", so we don't end up using them if the
548         # "pcap.h" is crufty and old and doesn't declare them.
549         #
550         if test $ac_cv_func_pcap_findalldevs = "yes" ; then
551           AC_DEFINE(HAVE_PCAP_FINDALLDEVS, 1,
552            [Define to 1 if you have the `pcap_findalldevs' function and a pcap.h that declares pcap_if_t.])
553           AC_CHECK_FUNCS(pcap_datalink_val_to_name pcap_datalink_name_to_val)
554           AC_CHECK_FUNCS(pcap_list_datalinks pcap_set_datalink pcap_lib_version)
555           AC_CHECK_FUNCS(pcap_get_selectable_fd)
556         fi
557         LIBS="$ac_save_LIBS"
558 ])
559
560 AC_DEFUN([AC_WIRESHARK_PCAP_REMOTE_CHECK],
561 [
562     ac_save_LIBS="$LIBS"
563     LIBS="$PCAP_LIBS $SOCKET_LIBS $NSL_LIBS $LIBS"
564     AC_DEFINE(HAVE_REMOTE, 1, [Define to 1 to enable remote
565               capturing feature in WinPcap library])
566     AC_CHECK_FUNCS(pcap_open pcap_findalldevs_ex pcap_createsrcstr)
567     if test $ac_cv_func_pcap_open = "yes" -a \
568             $ac_cv_func_pcap_findalldevs_ex = "yes" -a \
569             $ac_cv_func_pcap_createsrcstr = "yes" ; then
570         AC_DEFINE(HAVE_PCAP_REMOTE, 1,
571             [Define to 1 if you have WinPcap remote capturing support and prefer to use these new API features.])
572     fi
573     AC_CHECK_FUNCS(pcap_setsampling)
574     LIBS="$ac_save_LIBS"
575 ])
576
577 #
578 # AC_WIRESHARK_ZLIB_CHECK
579 #
580 AC_DEFUN([AC_WIRESHARK_ZLIB_CHECK],
581 [
582         if test "x$zlib_dir" != "x"
583         then
584           #
585           # The user specified a directory in which zlib resides,
586           # so add the "include" subdirectory of that directory to
587           # the include file search path and the "lib" subdirectory
588           # of that directory to the library search path.
589           #
590           # XXX - if there's also a zlib in a directory that's
591           # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
592           # make us find the version in the specified directory,
593           # as the compiler and/or linker will search that other
594           # directory before it searches the specified directory.
595           #
596           wireshark_save_CFLAGS="$CFLAGS"
597           CFLAGS="$CFLAGS -I$zlib_dir/include"
598           wireshark_save_CPPFLAGS="$CPPFLAGS"
599           CPPFLAGS="$CPPFLAGS -I$zlib_dir/include"
600           wireshark_save_LIBS="$LIBS"
601           AC_WIRESHARK_ADD_DASH_L(LIBS, $zlib_dir/lib)
602         fi
603
604         #
605         # Make sure we have "zlib.h".  If we don't, it means we probably
606         # don't have zlib, so don't use it.
607         #
608         AC_CHECK_HEADER(zlib.h,,
609           [
610             if test "x$zlib_dir" != "x"
611             then
612               #
613               # The user used "--with-zlib=" to specify a directory
614               # containing zlib, but we didn't find the header file
615               # there; that either means they didn't specify the
616               # right directory or are confused about whether zlib
617               # is, in fact, installed.  Report the error and give up.
618               #
619               AC_MSG_ERROR([zlib header not found in directory specified in --with-zlib])
620             else
621               if test "x$want_zlib" = "xyes"
622               then
623                 #
624                 # The user tried to force us to use the library, but we
625                 # couldn't find the header file; report an error.
626                 #
627                 AC_MSG_ERROR(Header file zlib.h not found.)
628               else
629                 #
630                 # We couldn't find the header file; don't use the
631                 # library, as it's probably not present.
632                 #
633                 want_zlib=no
634               fi
635             fi
636           ])
637
638         if test "x$want_zlib" != "xno"
639         then
640                 #
641                 # Well, we at least have the zlib header file.
642                 #
643                 # Check for "gzgets()" in zlib, because we need it, but
644                 # some older versions of zlib don't have it.  It appears
645                 # from the zlib ChangeLog that any released version of zlib
646                 # with "gzgets()" should have the other routines we
647                 # depend on, such as "gzseek()", "gztell()", and "zError()".
648                 #
649                 # Another reason why we require "gzgets()" is that
650                 # some versions of zlib that didn't have it, such
651                 # as 1.0.8, had a bug in "gzseek()" that meant that it
652                 # doesn't work correctly on uncompressed files; this
653                 # means we cannot use version 1.0.8.  (Unfortunately,
654                 # that's the version that comes with recent X11 source,
655                 # and many people who install XFree86 on their Slackware
656                 # boxes don't realize that they should configure it to
657                 # use the native zlib rather than building and installing
658                 # the crappy old version that comes with XFree86.)
659                 #
660                 # I.e., we can't just avoid using "gzgets()", as
661                 # versions of zlib without "gzgets()" are likely to have
662                 # a broken "gzseek()".
663                 #
664                 AC_CHECK_LIB(z, gzgets,
665                 [
666                         if test "x$zlib_dir" != "x"
667                         then
668                                 #
669                                 # Put the "-I" and "-L" flags for zlib at
670                                 # the beginning of CFLAGS, CPPFLAGS, and
671                                 # LIBS.
672                                 #
673                                 LIBS=""
674                                 AC_WIRESHARK_ADD_DASH_L(LIBS, $zlib_dir/lib)
675                                 LIBS="$LIBS -lz $wireshark_save_LIBS"
676                         else
677                                 LIBS="-lz $LIBS"
678                         fi
679                         AC_DEFINE(HAVE_LIBZ, 1, [Define to use libz library])
680                 ],[
681                         if test "x$zlib_dir" != "x"
682                         then
683                                 #
684                                 # Restore the versions of CFLAGS, CPPFLAGS,
685                                 # and LIBS before we added the "-with-zlib="
686                                 # directory, as we didn't actually find
687                                 # zlib there, or didn't find a zlib that
688                                 # contains gzgets there.
689                                 #
690                                 CFLAGS="$wireshark_save_CFLAGS"
691                                 CPPFLAGS="$wireshark_save_CPPFLAGS"
692                                 LIBS="$wireshark_save_LIBS"
693                         fi
694                         want_zlib=no
695                 ])
696         fi
697
698         if test "x$want_zlib" != "xno"
699         then
700                 #
701                 # Well, we at least have the zlib header file and a zlib
702                 # with "gzgets()".
703                 #
704                 # Now check for "gzgets()" in zlib when linking with the
705                 # linker flags for GTK+ applications; people often grab
706                 # XFree86 source and build and install it on their systems,
707                 # and they appear sometimes to misconfigure XFree86 so that,
708                 # even on systems with zlib, it assumes there is no zlib,
709                 # so the XFree86 build process builds and installs its
710                 # own zlib in the X11 library directory.
711                 #
712                 # The XFree86 zlib is an older version that lacks
713                 # "gzgets()", and that's the zlib with which Wireshark
714                 # gets linked, so the build of Wireshark fails.
715                 #
716                 ac_save_CFLAGS="$CFLAGS"
717                 ac_save_LIBS="$LIBS"
718                 CFLAGS="$CFLAGS $GTK_CFLAGS"
719                 LIBS="$GTK_LIBS -lz $LIBS"
720                 AC_MSG_CHECKING([for gzgets missing when linking with X11])
721                 AC_TRY_LINK_FUNC(gzgets, AC_MSG_RESULT(no),
722                   [
723                     AC_MSG_RESULT(yes)
724                     AC_MSG_ERROR(old zlib found when linking with X11 - get rid of old zlib.)
725                   ])
726                 CFLAGS="$ac_save_CFLAGS"
727                 LIBS="$ac_save_LIBS"
728         fi
729 ])
730
731 #
732 # AC_WIRESHARK_LIBPCRE_CHECK
733 #
734 AC_DEFUN([AC_WIRESHARK_LIBPCRE_CHECK],
735 [
736         if test "x$pcre_dir" != "x"
737         then
738           #
739           # The user specified a directory in which libpcre resides,
740           # so add the "include" subdirectory of that directory to
741           # the include file search path and the "lib" subdirectory
742           # of that directory to the library search path.
743           #
744           # XXX - if there's also a libpcre in a directory that's
745           # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
746           # make us find the version in the specified directory,
747           # as the compiler and/or linker will search that other
748           # directory before it searches the specified directory.
749           #
750           wireshark_save_CFLAGS="$CFLAGS"
751           CFLAGS="$CFLAGS -I$pcre_dir/include"
752           wireshark_save_CPPFLAGS="$CPPFLAGS"
753           CPPFLAGS="$CPPFLAGS -I$pcre_dir/include"
754           wireshark_save_LIBS="$LIBS"
755           LIBS="$LIBS -lpcre"
756           wireshark_save_LDFLAGS="$LDFLAGS"
757           LDFLAGS="$LDFLAGS -L$pcre_dir/lib"
758         fi
759
760         #
761         # Make sure we have "pcre.h".  If we don't, it means we probably
762         # don't have libpcre, so don't use it.
763         #
764         AC_CHECK_HEADER(pcre.h,,
765           [
766             if test "x$pcre_dir" != "x"
767             then
768               #
769               # The user used "--with-pcre=" to specify a directory
770               # containing libpcre, but we didn't find the header file
771               # there; that either means they didn't specify the
772               # right directory or are confused about whether libpcre
773               # is, in fact, installed.  Report the error and give up.
774               #
775               AC_MSG_ERROR([libpcre header not found in directory specified in --with-pcre])
776             else
777               if test "x$want_pcre" = "xyes"
778               then
779                 #
780                 # The user tried to force us to use the library, but we
781                 # couldn't find the header file; report an error.
782                 #
783                 AC_MSG_ERROR(Header file pcre.h not found.)
784               else
785                 #
786                 # We couldn't find the header file; don't use the
787                 # library, as it's probably not present.
788                 #
789                 want_pcre=no
790               fi
791             fi
792           ])
793
794         if test "x$want_pcre" != "xno"
795         then
796                 #
797                 # Well, we at least have the pcre header file.
798                 #
799                 # We're only using standard functions from libpcre,
800                 # so we don't need to perform extra checks.
801                 #
802                 AC_CHECK_LIB(pcre, pcre_compile,
803                 [
804                         if test "x$pcre_dir" != "x"
805                         then
806                                 #
807                                 # Put the "-I" and "-L" flags for pcre at
808                                 # the beginning of CFLAGS, CPPFLAGS,
809                                 # LDFLAGS, and LIBS.
810                                 #
811                                 PCRE_LIBS="-L$pcre_dir/lib -lpcre $wireshark_save_LIBS"
812                         else
813                                 PCRE_LIBS="-lpcre"
814                         fi
815                         AC_DEFINE(HAVE_LIBPCRE, 1, [Define to use libpcre library])
816                 ],[
817                         if test "x$pcre_dir" != "x"
818                         then
819                                 #
820                                 # Restore the versions of CFLAGS, CPPFLAGS,
821                                 # LDFLAGS, and LIBS before we added the
822                                 # "--with-pcre=" directory, as we didn't
823                                 # actually find pcre there.
824                                 #
825                                 CFLAGS="$wireshark_save_CFLAGS"
826                                 CPPFLAGS="$wireshark_save_CPPFLAGS"
827                                 LDFLAGS="$wireshark_save_LDFLAGS"
828                                 LIBS="$wireshark_save_LIBS"
829                                 PCRE_LIBS=""
830                         fi
831                         want_pcre=no
832                 ])
833                 AC_SUBST(PCRE_LIBS)
834         fi
835 ])
836
837 #
838 # AC_WIRESHARK_LIBLUA_CHECK
839 #
840 AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[
841
842         if test "x$lua_dir" != "x"
843         then
844                 #
845                 # The user specified a directory in which liblua resides,
846                 # so add the "include" subdirectory of that directory to
847                 # the include file search path and the "lib" subdirectory
848                 # of that directory to the library search path.
849                 #
850                 # XXX - if there's also a liblua in a directory that's
851                 # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
852                 # make us find the version in the specified directory,
853                 # as the compiler and/or linker will search that other
854                 # directory before it searches the specified directory.
855                 #
856                 wireshark_save_CFLAGS="$CFLAGS"
857                 CFLAGS="$CFLAGS -I$lua_dir/include"
858                 wireshark_save_CPPFLAGS="$CPPFLAGS"
859                 CPPFLAGS="$CPPFLAGS -I$lua_dir/include"
860                 wireshark_save_LIBS="$LIBS"
861                 LIBS="$LIBS -L$lua_dir/lib -llua -lm"
862                 wireshark_save_LDFLAGS="$LDFLAGS"
863                 LDFLAGS="$LDFLAGS -L$lua_dir/lib"
864         else 
865                 #
866                 # The user specified no directory in which liblua resides,
867                 # so just add "-llua -lliblua" to the used libs.
868                 #
869                 wireshark_save_CFLAGS="$CFLAGS"
870                 wireshark_save_CPPFLAGS="$CPPFLAGS"
871                 wireshark_save_LDFLAGS="$LDFLAGS"
872                 wireshark_save_LIBS="$LIBS"
873                 LIBS="$LIBS -llua -lm"
874         fi
875
876         #
877         # Make sure we have "lua.h", "lualib.h" and "lauxlib.h".  If we don't, it means we probably
878         # don't have liblua, so don't use it.
879         #
880         AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h,,
881         [
882                 AC_CHECK_HEADERS(lua5.1/lua.h lua5.1/lualib.h lua5.1/lauxlib.h,
883                 [
884                         if test "x$lua_dir" != "x"
885                         then
886                                 LUA_INCLUDES="-I$lua_dir/include/lua5.1"
887                         else
888                                 # we found lua5.1/lua.h, but we don't know which include dir contains it
889                                 AC_MSG_ERROR(Header file lua.h was found as lua5.1/lua.h but we can't use it. Please set the PATH for the --with-lua configure parameter. \n probably it is /usr.)
890                         fi
891                         
892                 ],
893                 [
894                         if test "x$lua_dir" != "x"
895                         then
896                                 #
897                                 # The user used "--with-lua=" to specify a directory
898                                 # containing liblua, but we didn't find the header file
899                                 # there; that either means they didn't specify the
900                                 # right directory or are confused about whether liblua
901                                 # is, in fact, installed.  Report the error and give up.
902                                 #
903                                 AC_MSG_ERROR([liblua header not found in directory specified in --with-lua])
904                         else
905                                 if test "x$want_lua" = "xyes"
906                                 then
907                                         #
908                                         # The user tried to force us to use the library, but we
909                                         # couldn't find the header file; report an error.
910                                         #
911                                         AC_MSG_ERROR(Header file lua.h not found.)
912                                 else
913                                         #
914                                         # We couldn't find the header file; don't use the
915                                         # library, as it's probably not present.
916                                         #
917                                         want_lua=no
918                                 fi
919                         fi
920                 ])
921         ])
922
923         if test "x$want_lua" != "xno"
924         then
925                 #
926                 # Well, we at least have the lua header file.
927                 #
928                 # let's check if the libs are there
929                 #
930
931                 # At least on Suse 9.3 systems, liblualib needs linking
932                 # against libm.
933                 LIBS="$LIBS $LUA_LIBS -lm"
934
935                 AC_CHECK_LIB(lua, lua_call,
936                 [
937                         if test "x$lua_dir" != "x"
938                         then
939                                 #
940                                 # Put the "-I" and "-L" flags for lua at
941                                 # the beginning of CFLAGS, CPPFLAGS,
942                                 # LDFLAGS, and LIBS.
943                                 #
944                                 LUA_LIBS="-L$lua_dir/lib -llua -lm"
945                                 LUA_INCLUDES="-I$lua_dir/include"
946                         else
947                                 LUA_LIBS="-llua -lm"
948                                 LUA_INCLUDES=""
949                         fi
950
951                         #
952                         # we got lua, now look for lualib
953                         #
954                         AC_CHECK_LIB(lualib, luaL_openlib,
955                         [
956                                 #
957                                 # we have 5.0
958                                 #
959                                 LUA_LIBS="$LUA_LIBS -llualib"
960                         ],[
961                                 #
962                                 # no lualib, in 5.1 there's only liblua
963                                 # do we have 5.1?
964                                 #
965                                 
966                                 LIBS="$wireshark_save_LIBS $LUA_LIBS"
967
968                                 AC_CHECK_LIB(lua, luaL_register,
969                                 [
970                                     #
971                                     #  Lua 5.1 found
972                                     #
973                                     AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1])
974                                 ],[
975                                     #
976                                     # No, it is not 5.1
977                                     #
978                                     if test "x$lua_dir" != "x"
979                                     then
980                                         #
981                                         # Restore the versions of CFLAGS, CPPFLAGS,
982                                         # LDFLAGS, and LIBS before we added the
983                                         # "--with-lua=" directory, as we didn't
984                                         # actually find lua there.
985                                         #
986                                         CFLAGS="$wireshark_save_CFLAGS"
987                                         CPPFLAGS="$wireshark_save_CPPFLAGS"
988                                         LDFLAGS="$wireshark_save_LDFLAGS"
989                                         LIBS="$wireshark_save_LIBS"
990                                         LUA_LIBS=""
991                                     fi
992                                     # User requested --with-lua but it isn't available
993                                     if test "x$want_lua" = "xyes"
994                                     then
995                                         AC_MSG_ERROR(Linking with liblualib failed.)
996                                     fi
997                                     want_lua=no
998                                 ])
999                         ])
1000                 ],[  
1001                         #
1002                         # We could not find the libs, maybe we have version number in the lib name
1003                         #
1004
1005                         LIBS="$wireshark_save_LIBS -llua5.1 -lm"
1006
1007                         AC_CHECK_LIB(lua5.1, luaL_register,
1008                         [
1009                             #
1010                             #  Lua 5.1 found
1011                             #
1012                             AC_DEFINE(HAVE_LUA_5_1, 1, [Define to use Lua 5.1])
1013                             LUA_LIBS=" -llua5.1 -lm"
1014                         ],[
1015                                 #
1016                                 # Restore the versions of CFLAGS, CPPFLAGS,
1017                                 # LDFLAGS, and LIBS before we added the
1018                                 # "--with-lua=" directory, as we didn't
1019                                 # actually find lua there.
1020                                 #
1021                                 CFLAGS="$wireshark_save_CFLAGS"
1022                                 CPPFLAGS="$wireshark_save_CPPFLAGS"
1023                                 LDFLAGS="$wireshark_save_LDFLAGS"
1024                                 LIBS="$wireshark_save_LIBS"
1025                                 LUA_LIBS=""
1026                                 # User requested --with-lua but it isn't available
1027                                 if test "x$want_lua" = "xyes"
1028                                 then
1029                                         AC_MSG_ERROR(Linking with liblua failed.)
1030                                 fi
1031                                 want_lua=no
1032                         ])
1033                 ])
1034
1035         CFLAGS="$wireshark_save_CFLAGS"
1036         CPPFLAGS="$wireshark_save_CPPFLAGS"
1037         LDFLAGS="$wireshark_save_LDFLAGS"
1038         LIBS="$wireshark_save_LIBS"
1039         AC_SUBST(LUA_LIBS)
1040         AC_SUBST(LUA_INCLUDES)
1041
1042         fi
1043 ])
1044
1045 #
1046 # AC_WIRESHARK_LIBPORTAUDIO_CHECK
1047 #
1048 AC_DEFUN([AC_WIRESHARK_LIBPORTAUDIO_CHECK],[
1049
1050         if test "x$portaudio_dir" != "x"
1051         then
1052                 #
1053                 # The user specified a directory in which libportaudio
1054                 # resides, so add the "include" subdirectory of that directory to
1055                 # the include file search path and the "lib" subdirectory
1056                 # of that directory to the library search path.
1057                 #
1058                 # XXX - if there's also a libportaudio in a directory that's
1059                 # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
1060                 # make us find the version in the specified directory,
1061                 # as the compiler and/or linker will search that other
1062                 # directory before it searches the specified directory.
1063                 #
1064                 wireshark_save_CFLAGS="$CFLAGS"
1065                 CFLAGS="$CFLAGS -I$portaudio_dir/include"
1066                 wireshark_save_CPPFLAGS="$CPPFLAGS"
1067                 CPPFLAGS="$CPPFLAGS -I$portaudio_dir/include"
1068                 wireshark_save_LIBS="$LIBS"
1069                 LIBS="$LIBS -L$portaudio_dir/lib -lportaudio"
1070                 wireshark_save_LDFLAGS="$LDFLAGS"
1071                 LDFLAGS="$LDFLAGS -L$portaudio_dir/lib"
1072         else 
1073                 #
1074                 # The user specified no directory in which libportaudio resides,
1075                 # so just add "-lportaudio" to the used libs.
1076                 #
1077                 wireshark_save_CFLAGS="$CFLAGS"
1078                 wireshark_save_CPPFLAGS="$CPPFLAGS"
1079                 wireshark_save_LDFLAGS="$LDFLAGS"
1080                 wireshark_save_LIBS="$LIBS"
1081                 LIBS="$LIBS -lportaudio"
1082         fi
1083
1084         #
1085         # Make sure we have "portaudio.h".  If we don't, it means we probably
1086         # don't have libportaudio, so don't use it.
1087         #
1088         AC_CHECK_HEADERS(portaudio.h,,
1089         [
1090                 if test "x$portaudio_dir" != "x"
1091                 then
1092                         #
1093                         # The user used "--with-portaudio=" to specify a directory
1094                         # containing libportaudio, but we didn't find the header file
1095                         # there; that either means they didn't specify the
1096                         # right directory or are confused about whether libportaudio
1097                         # is, in fact, installed.  Report the error and give up.
1098                         #
1099                         AC_MSG_ERROR([libportaudio header not found in directory specified in --with-portaudio])
1100                 else
1101                         CFLAGS="$wireshark_save_CFLAGS"
1102                         CPPFLAGS="$wireshark_save_CPPFLAGS"
1103                         LDFLAGS="$wireshark_save_LDFLAGS"
1104                         LIBS="$wireshark_save_LIBS"
1105                         PORTAUDIO_LIBS=""
1106                         if test "x$want_portaudio" = "xyes"
1107                         then
1108                                 #
1109                                 # The user tried to force us to use the library, but we
1110                                 # couldn't find the header file; report an error.
1111                                 #
1112                                 AC_MSG_ERROR(Header file portaudio.h not found.)
1113                         else
1114                                 #
1115                                 # We couldn't find the header file; don't use the
1116                                 # library, as it's probably not present.
1117                                 #
1118                                 want_portaudio=no
1119                         fi
1120                 fi
1121         ])
1122
1123         #
1124         # Check whether we have the right version of portaudio
1125         #
1126         if test "x$want_portaudio" != "xno"
1127         then
1128                 AC_CHECK_TYPE(PortAudioStream,
1129                 AC_DEFINE(PORTAUDIO_API_1, 1, [Define if we are using version of of the Portaudio library API]),
1130                 ,
1131                 [#include <portaudio.h>])
1132         fi
1133
1134         if test "x$want_portaudio" != "xno"
1135         then
1136                 #
1137                 # Well, we at least have the portaudio header file.
1138                 #
1139                 # let's check if the libs are there
1140                 #
1141
1142                 AC_CHECK_LIB(portaudio, Pa_Initialize,
1143                 [
1144                         if test "x$portaudio_dir" != "x"
1145                         then
1146                                 #
1147                                 # Put the "-I" and "-L" flags for portaudio at
1148                                 # the beginning of CFLAGS, CPPFLAGS,
1149                                 # LDFLAGS, and LIBS.
1150                                 #
1151                                 PORTAUDIO_LIBS="-L$portaudio_dir/lib -lportaudio"
1152                                 PORTAUDIO_INCLUDES="-I$portaudio_dir/include"
1153                         else
1154                                 PORTAUDIO_LIBS="-lportaudio"
1155                                 PORTAUDIO_INCLUDES=""
1156                         fi
1157                         AC_DEFINE(HAVE_LIBPORTAUDIO, 1, [Define to use libportaudio library])
1158                         want_portaudio=yes
1159                 ],[  
1160                         #
1161                         # Restore the versions of CFLAGS, CPPFLAGS,
1162                         # LDFLAGS, and LIBS before we added the
1163                         # "--with-portaudio=" directory, as we didn't
1164                         # actually find portaudio there.
1165                         #
1166                         CFLAGS="$wireshark_save_CFLAGS"
1167                         CPPFLAGS="$wireshark_save_CPPFLAGS"
1168                         LDFLAGS="$wireshark_save_LDFLAGS"
1169                         LIBS="$wireshark_save_LIBS"
1170                         PORTAUDIO_LIBS=""
1171                         # User requested --with-portaudio but it isn't available
1172                         if test "x$want_portaudio" = "xyes"
1173                         then
1174                                 AC_MSG_ERROR(Linking with libportaudio failed.)
1175                         fi
1176                         want_portaudio=no
1177                 ])
1178
1179         CFLAGS="$wireshark_save_CFLAGS"
1180         CPPFLAGS="$wireshark_save_CPPFLAGS"
1181         LDFLAGS="$wireshark_save_LDFLAGS"
1182         LIBS="$wireshark_save_LIBS"
1183         AC_SUBST(PORTAUDIO_LIBS)
1184         AC_SUBST(PORTAUDIO_INCLUDES)
1185
1186         fi
1187 ])
1188
1189 #
1190 # AC_WIRESHARK_RPM_CHECK
1191 # Looks for the rpm program, and checks to see if we can redefine "_topdir".
1192 #
1193 AC_DEFUN([AC_WIRESHARK_RPM_CHECK],
1194 [
1195         AC_CHECK_PROG(ac_cv_wireshark_have_rpm, rpm, "yes", "no")
1196         if test "x$ac_cv_wireshark_have_rpm" = "xyes"; then
1197                 rpm --define '_topdir /tmp' > /dev/null 2>&1
1198                 AC_MSG_CHECKING(to see if we can redefine _topdir)
1199                 if test $? -eq 0 ; then
1200                         AC_MSG_RESULT(yes)
1201                         HAVE_RPM=yes
1202                 else
1203                         AC_MSG_RESULT(no.  You'll have to build packages manually.)
1204                         HAVE_RPM=no
1205                 fi
1206         fi
1207 ])
1208
1209 #
1210 # AC_WIRESHARK_GNU_SED_CHECK
1211 # Checks if GNU sed is the first sed in PATH.
1212 #
1213 AC_DEFUN([AC_WIRESHARK_GNU_SED_CHECK],
1214 [
1215         AC_MSG_CHECKING(for GNU sed as first sed in PATH)
1216         if  ( sh -c "sed --version" </dev/null 2> /dev/null | grep "GNU sed" 2>&1 > /dev/null ) ;  then
1217                 AC_MSG_RESULT(yes)
1218                 HAVE_GNU_SED=yes
1219         else
1220                 AC_MSG_RESULT(no)
1221                 HAVE_GNU_SED=no
1222         fi
1223 ])
1224
1225 #
1226 # AC_WIRESHARK_ADNS_CHECK
1227 #
1228 AC_DEFUN([AC_WIRESHARK_ADNS_CHECK],
1229 [
1230         want_adns=defaultyes
1231
1232         if test "x$want_adns" = "xdefaultyes"; then
1233                 want_adns=yes
1234                 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1235                         withval=/usr/local
1236                         if test -d "$withval"; then
1237                                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1238                         fi
1239                 fi
1240         fi
1241
1242         if test "x$want_adns" = "xyes"; then
1243                 AC_CHECK_LIB(adns, adns_init,
1244                   [
1245                     ADNS_LIBS=-ladns
1246                 AC_DEFINE(HAVE_GNU_ADNS, 1, [Define to use GNU ADNS library])
1247                 have_good_adns=yes
1248                   ],, $SOCKET_LIBS $NSL_LIBS
1249                 )
1250         else
1251                 AC_MSG_RESULT(not required)
1252         fi
1253 ])
1254
1255
1256 #
1257 # AC_WIRESHARK_LIBCAP_CHECK
1258 #
1259 AC_DEFUN([AC_WIRESHARK_LIBCAP_CHECK],
1260 [
1261         want_libcap=defaultyes
1262
1263         if test "x$want_libcap" = "xdefaultyes"; then
1264                 want_libcap=yes
1265                 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1266                         withval=/usr/local
1267                         if test -d "$withval"; then
1268                                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1269                         fi
1270                 fi
1271         fi
1272
1273         if test "x$want_libcap" = "xyes"; then
1274                 AC_CHECK_LIB(cap, cap_set_flag,
1275                   [
1276                     LIBCAP_LIBS=-lcap
1277                 AC_DEFINE(HAVE_LIBCAP, 1, [Define to use the libcap library])
1278                 have_good_libcap=yes
1279                   ],,
1280                 )
1281         else
1282                 AC_MSG_RESULT(not required)
1283         fi
1284 ])
1285
1286
1287 #
1288 # AC_WIRESHARK_KRB5_CHECK
1289 #
1290 AC_DEFUN([AC_WIRESHARK_KRB5_CHECK],
1291 [
1292         wireshark_save_CFLAGS="$CFLAGS"
1293         wireshark_save_CPPFLAGS="$CPPFLAGS"
1294         if test "x$krb5_dir" != "x"
1295         then
1296           #
1297           # The user specified a directory in which kerberos resides,
1298           # so add the "include" subdirectory of that directory to
1299           # the include file search path and the "lib" subdirectory
1300           # of that directory to the library search path.
1301           #
1302           # XXX - if there's also a kerberos in a directory that's
1303           # already in CFLAGS, CPPFLAGS, or LDFLAGS, this won't
1304           # make us find the version in the specified directory,
1305           # as the compiler and/or linker will search that other
1306           # directory before it searches the specified directory.
1307           #
1308           CFLAGS="$CFLAGS -I$krb5_dir/include"
1309           CPPFLAGS="$CPPFLAGS -I$krb5_dir/include"
1310           ac_heimdal_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'`
1311           ac_mit_version=`grep 'Massachusetts Institute of Technology' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts Institute of Technology.*$/MIT/'`
1312           ac_krb5_version="$ac_heimdal_version$ac_mit_version"
1313           if test "x$ac_krb5_version" = "xHEIMDAL"
1314               KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 $SSL_LIBS -lroken -lcrypt"
1315           then
1316               KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lk5crypto -lcom_err"
1317           fi
1318           if test "x$ac_krb5_version" = "xMIT"
1319           then
1320             AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
1321           fi
1322         else
1323           AC_PATH_PROG(KRB5_CONFIG, krb5-config) 
1324           if test -x "$KRB5_CONFIG"
1325           then
1326             KRB5_FLAGS=`"$KRB5_CONFIG" --cflags`
1327             KRB5_LIBS=`"$KRB5_CONFIG" --libs`
1328             CFLAGS="$CFLAGS $KRB5_FLAGS"
1329             CPPFLAGS="$CPPFLAGS $KRB5_FLAGS"
1330             #
1331             # If -lcrypto is in KRB5_FLAGS, we require it to build
1332             # with Heimdal/MIT.  We don't want to built with it by
1333             # default, due to annoying license incompatibilities
1334             # between the OpenSSL license and the GPL, so:
1335             #
1336             #   if SSL_LIBS is set to a non-empty string, we
1337             #   remove -lcrypto from KRB5_LIBS and replace
1338             #   it with SSL_LIBS;
1339             #
1340             #   if SSL_LIBS is not set to a non-empty string
1341             #   we fail with an appropriate error message.
1342             #
1343             case "$KRB5_LIBS" in
1344             *-lcrypto*)
1345                 if test ! -z "$SSL_LIBS"
1346                 then
1347                     KRB5_LIBS=`echo $KRB5_LIBS | sed 's/-lcrypto//'`
1348                     KRB5_LIBS="$KRB5_LIBS $SSL_LIBS"
1349                 else
1350                     AC_MSG_ERROR([Kerberos library requires -lcrypto but --with-ssl not specified])
1351                 fi
1352                 ;;
1353             esac
1354             ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/'`
1355           fi
1356         fi
1357
1358         #
1359         # Make sure we have "krb5.h".  If we don't, it means we probably
1360         # don't have kerberos, so don't use it.
1361         #
1362         AC_CHECK_HEADER(krb5.h,,
1363           [
1364             if test "x$krb5_dir" != "x"
1365             then
1366               #
1367               # The user used "--with-krb5=" to specify a directory
1368               # containing kerberos, but we didn't find the header file
1369               # there; that either means they didn't specify the
1370               # right directory or are confused about whether kerberos
1371               # is, in fact, installed.  Report the error and give up.
1372               #
1373               AC_MSG_ERROR([kerberos header not found in directory specified in --with-krb5])
1374             else
1375               if test "x$want_krb5" = "xyes"
1376               then
1377                 #
1378                 # The user tried to force us to use the library, but we
1379                 # couldn't find the header file; report an error.
1380                 #
1381                 AC_MSG_ERROR(Header file krb5.h not found.)
1382               else
1383                 #
1384                 # We couldn't find the header file; don't use the
1385                 # library, as it's probably not present.
1386                 #
1387                 want_krb5=no
1388                 AC_MSG_RESULT(No Heimdal or MIT header found - disabling dissection for some kerberos data in packet decoding)
1389               fi
1390             fi
1391           ])
1392
1393         if test "x$want_krb5" != "xno"
1394         then
1395             #
1396             # Well, we at least have the krb5 header file.
1397             # Check whether this is Heimdal or MIT.
1398             #
1399             AC_MSG_CHECKING(whether the Kerberos library is Heimdal or MIT)
1400             if test "x$ac_krb5_version" = "xHEIMDAL" -o "x$ac_krb5_version" = "xMIT"
1401             then
1402                 #
1403                 # Yes.
1404                 # Check whether we have krb5_kt_resolve - and whether
1405                 # we need to link with -lresolv when linking with
1406                 # the Kerberos library.
1407                 #
1408                 AC_MSG_RESULT($ac_krb5_version)
1409                 wireshark_save_LIBS="$LIBS"
1410                 found_krb5_kt_resolve=no
1411                 for extras in "" "-lresolv"
1412                 do
1413                     LIBS="$KRB5_LIBS $extras"
1414                     if test -z "$extras"
1415                     then
1416                         AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve])
1417                     else
1418                         AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve (linking with $extras)])
1419                     fi
1420                     AC_TRY_LINK(
1421                         [
1422                         ],
1423                         [
1424                             krb5_kt_resolve();
1425                         ],
1426                         [
1427                             #
1428                             # We found "krb5_kt_resolve()", and required
1429                             # the libraries in extras as well.
1430                             #
1431                             AC_MSG_RESULT(yes)
1432                             KRB5_LIBS="$LIBS"
1433                             AC_DEFINE(HAVE_KERBEROS, 1, [Define to use kerberos])
1434                             if test "x$ac_krb5_version" = "xHEIMDAL"
1435                             then
1436                                 AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1, [Define to use heimdal kerberos])
1437                             elif test "x$ac_krb5_version" = "xMIT"
1438                             then
1439                                 AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
1440                             fi
1441                             found_krb5_kt_resolve=yes
1442                             break
1443                         ],
1444                         [
1445                             AC_MSG_RESULT(no)
1446                         ])
1447                 done
1448                 if test "$found_krb5_kt_resolve" = no
1449                 then
1450                     #
1451                     # We didn't find "krb5_kt_resolve()" in the
1452                     # Kerberos library, even when we tried linking
1453                     # with -lresolv; we can't link with kerberos.
1454                     #
1455                     if test "x$want_krb5" = "xyes"
1456                     then
1457                         #
1458                         # The user tried to force us to use the library,
1459                         # but we can't do so; report an error.
1460                         #
1461                         AC_MSG_ERROR(Usable $ac_krb5_version not found)
1462                     else
1463                         #
1464                         # Restore the versions of CFLAGS and CPPFLAGS
1465                         # from before we added the flags for Kerberos.
1466                         #
1467                         AC_MSG_RESULT(Usable $ac_krb5_version not found - disabling dissection for some kerberos data in packet decoding)
1468                         CFLAGS="$wireshark_save_CFLAGS"
1469                         CPPFLAGS="$wireshark_save_CPPFLAGS"
1470                         KRB5_LIBS=""
1471                         want_krb5=no
1472                     fi
1473                 else
1474                     #
1475                     # We can link with Kerberos; see whether krb5.h
1476                     # defines KEYTYPE_ARCFOUR_56 (where "defines" means
1477                     # "as a #define or as an enum member).
1478                     #
1479                     AC_MSG_CHECKING([whether krb5.h defines KEYTYPE_ARCFOUR_56])
1480                     AC_COMPILE_IFELSE(
1481                       [
1482                         AC_LANG_SOURCE(
1483                           [[
1484                             #include <krb5.h>
1485                             #include <stdio.h>
1486
1487                             main()
1488                             {
1489                               printf("%u\n", KEYTYPE_ARCFOUR_56);
1490                             }
1491                           ]])
1492                       ],
1493                       [
1494                         AC_MSG_RESULT(yes)
1495                         AC_DEFINE(HAVE_KEYTYPE_ARCFOUR_56, 1, [Define if krb5.h defines KEYTYPE_ARCFOUR_56])
1496                       ],
1497                       [
1498                         AC_MSG_RESULT(no)
1499                       ])
1500                 fi
1501                 LIBS="$wireshark_save_LIBS"
1502             else
1503                 #
1504                 # It's not Heimdal or MIT.
1505                 #
1506                 AC_MSG_RESULT(no)
1507                 if test "x$want_krb5" = "xyes"
1508                 then
1509                     #
1510                     # The user tried to force us to use the library,
1511                     # but we can't do so; report an error.
1512                     #
1513                     AC_MSG_ERROR(Kerberos not found)
1514                 else
1515                     #
1516                     # Restore the versions of CFLAGS and CPPFLAGS
1517                     # from before we added the flags for Kerberos.
1518                     #
1519                     AC_MSG_RESULT(Kerberos not found - disabling dissection for some kerberos data in packet decoding)
1520                     CFLAGS="$wireshark_save_CFLAGS"
1521                     CPPFLAGS="$wireshark_save_CPPFLAGS"
1522                     KRB5_LIBS=""
1523                     want_krb5=no
1524                 fi
1525             fi
1526         else
1527             #
1528             # The user asked us not to use Kerberos, or they didn't
1529             # say whether they wanted us to use it but we found
1530             # that we couldn't.
1531             #
1532             # Restore the versions of CFLAGS and CPPFLAGS
1533             # from before we added the flags for Kerberos.
1534             #
1535             CFLAGS="$wireshark_save_CFLAGS"
1536             CPPFLAGS="$wireshark_save_CPPFLAGS"
1537             KRB5_LIBS=""
1538             want_krb5=no
1539         fi
1540         AC_SUBST(KRB5_LIBS)
1541 ])
1542
1543 dnl
1544 dnl Check whether a given format can be used to print 64-bit integers
1545 dnl
1546 AC_DEFUN([AC_WIRESHARK_CHECK_64BIT_FORMAT],
1547 [
1548   AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
1549   AC_RUN_IFELSE(
1550     [
1551       AC_LANG_SOURCE(
1552         [[
1553           #include <glib.h>
1554           #if GTK_MAJOR_VERSION >= 2
1555           #include <glib/gprintf.h>
1556           #endif
1557           #include <stdio.h>
1558
1559           main()
1560           {
1561             guint64 t = 1;
1562             char strbuf[16+1];
1563           #if GTK_MAJOR_VERSION >= 2
1564             g_snprintf(strbuf, sizeof strbuf, "%016$1x", t << 32);
1565           #else
1566             snprintf(strbuf, sizeof strbuf, "%016$1x", t << 32);
1567           #endif
1568             if (strcmp(strbuf, "0000000100000000") == 0)
1569               exit(0);
1570             else
1571               exit(1);
1572           }
1573         ]])
1574     ],
1575     [
1576       AC_DEFINE(G_GINT64_MODIFIER, "$1", [Format modifier for printing 64-bit numbers])
1577       AC_MSG_RESULT(yes)
1578     ],
1579     [
1580       AC_MSG_RESULT(no)
1581       $2
1582     ])
1583 ])
1584
1585 #
1586 # AC_WIRESHARK_GCC_CFLAGS_CHECK
1587 #
1588 # $1 : cflags to test
1589 #
1590 # The macro first determines if the compiler is GCC. Then compile with the
1591 # defined cflags. The defined flags are added to CFLAGS only if the compilation
1592 # succeeds.
1593 #
1594 AC_DEFUN([AC_WIRESHARK_GCC_CFLAGS_CHECK],
1595 [GCC_OPTION="$1"
1596 AC_MSG_CHECKING(whether we can add $GCC_OPTION to CFLAGS)
1597 if test "x$GCC" != "x"; then
1598   CFLAGS_saved="$CFLAGS"
1599   CFLAGS="$CFLAGS $GCC_OPTION"
1600   AC_COMPILE_IFELSE([
1601     AC_LANG_SOURCE([[
1602                       int foo;
1603                   ]])],
1604                   [
1605                     AC_MSG_RESULT(yes)
1606                   ],
1607                   [
1608                     AC_MSG_RESULT(no)
1609                     CFLAGS="$CFLAGS_saved"
1610                   ])
1611 else
1612   AC_MSG_RESULT(no)
1613 fi
1614 ])