From e.yimjia via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9289 :
[metze/wireshark/wip.git] / configure.ac
1 # $Id$
2 #
3
4 m4_define([version_major], [1])
5 m4_define([version_minor], [11])
6 m4_define([version_micro], [1])
7 m4_define([version_micro_extra], version_micro)
8 m4_append([version_micro_extra], [])
9
10 AC_INIT(wireshark, [version_major.version_minor.version_micro_extra], http://bugs.wireshark.org/, , http://www.wireshark.org/)
11
12 # Minimum autoconf version we require.
13 AC_PREREQ(2.60)
14 # Variable expansion doesn't work in AC_PREREQ()
15 AC_MIN_VERSION=2.60
16 AC_SUBST(AC_MIN_VERSION)
17
18 dnl Check for CPU / vendor / OS
19 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
20 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
21 dnl needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
22 dnl macros.
23 dnl
24 dnl As nothing in the Wireshark is itself a build tool (we are not,
25 dnl for example, a compiler that generates machine code), we probably
26 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
27 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
28 dnl AC_CANONICAL_HOST - instead.  Note that we do have tools, such as
29 dnl lemon, that need to be built for the build machine, not for the
30 dnl host machine, so we might need both.
31 dnl
32 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
33
34 dnl AC_CANONICAL_BUILD
35 dnl AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
37
38 AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip])
39
40 # Make Wireshark's version available in config.h
41 AC_DEFINE(VERSION_MAJOR, version_major, [Wireshark's major version])
42 AC_DEFINE(VERSION_MINOR, version_minor, [Wireshark's minor version])
43 AC_DEFINE(VERSION_MICRO, version_micro, [Wireshark's micro version])
44
45 AM_DISABLE_STATIC
46
47 #
48 # Checks for programs used in the main build process.
49 #
50 AC_PROG_CC
51 AM_PROG_CC_C_O
52 AC_PROG_CXX
53 AC_PROG_CPP
54 AC_WIRESHARK_CLANG_CHECK
55
56 dnl Work around libtool bug (fixed in the version 1.5a?)
57 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
58 AC_LIBTOOL_DLOPEN
59 AC_PROG_LIBTOOL
60 if test ! -z "$CXX"; then
61         #
62         # OK, we found something AC_LANG_CXX thinks is a C++ compiler,
63         # but is it one?
64         #
65         # Some UN*Xes have, by default, a case-insensitive file
66         # system, and AC_PROG_CXX looks for, among other things,
67         # "CC" as a C++ compiler, and, if you have a case-insensitive
68         # file system and a C compiler named "cc" (both true, by
69         # default, on OS X), AC_PROG_CXX may end up thinking it's
70         # the C++ compiler.
71         #
72         # So we check by feeding the purported C++ compiler a
73         # program using C++ features (iostream).
74         #
75         # We do this after AC_PROG_LIBTOOL; if we did so before, and
76         # cleared CXX if what we had isn't a C++ compiler, that'd
77         # get undone by AC_PROG_LIBTOOL for some reason.
78         #
79         AC_MSG_CHECKING(whether $CXX is a C++ compiler)
80         AC_LANG_PUSH([C++])
81         AC_LINK_IFELSE([AC_LANG_PROGRAM(
82         [
83 #include <iostream>
84         ],
85         [
86         std::cout << "Hello World! ";
87         return 0;
88         ])],
89                 [AC_MSG_RESULT(yes)],
90                 [
91                         AC_MSG_RESULT(no)
92                         CXX=""
93                 ])
94         AC_LANG_POP([C++])
95 fi
96 AC_PATH_PROG(PERL, perl)
97
98 # Check for Python.
99 AC_PATH_PROG(PYTHON, python)
100 if test ! -z "$PYTHON"; then
101         #
102         # OK, we found Python; is it Python 2.5 or later?
103         # Note: we don't use named components for sys.version_info to get
104         # the major version number, as named components for version_info
105         # were apparently introduced in Python 2.7.
106         #
107         AC_MSG_CHECKING([whether $PYTHON is Python 2.5 or later])
108         python_major_version=`$PYTHON -c 'import sys; print (sys.version_info[[0]])'`
109         python_minor_version=`$PYTHON -c 'import sys; print (sys.version_info[[1]])'`
110         if test "$python_major_version" -eq 2 -a "$python_minor_version" -lt 5 ; then
111                 AC_MSG_RESULT(no)
112                 AC_MSG_WARN([Building with Python $python_major_version.$python_minor_version may not work])
113         else
114                 AC_MSG_RESULT(yes)
115         fi
116 fi
117
118 #
119 # XXX - should autogen.sh check for YACC/Bison and Flex?  A user building
120 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
121 # as the tarball should contain the results of running YACC/Bison on .y
122 # files and running Flex on .l files, but a user building from SVN
123 # will have to run YACC/Bison and Flex to process those files.
124 #
125 # On the other hand, what about users who use a distribution tarball to
126 # do development?  They *shouldn't* - that's what the SVN repository is
127 # for - but they might.  They'd get errors if they modify a .y or .l
128 # file and try to do a build - but the error should tell them that they
129 # need to get YACC/Bison and/or Flex.
130 #
131 # Then again, getting them shouldn't be too big of a burden.
132 #
133 # XXX - is the same true of pod2man and pod2html, or are they needed
134 # even when building from a distribution tarball?
135 #
136 #
137 AC_PROG_YACC
138 AC_PATH_PROG(YACCDUMMY, $YACC)
139 if test "x$YACCDUMMY" = x
140 then
141         AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
142 fi
143 AM_PROG_LEX
144 AC_PATH_PROG(LEX, flex)
145 if test "x$LEX" = x
146 then
147         AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
148 fi
149 AC_PATH_PROG(POD2MAN, pod2man)
150 if test "x$POD2MAN" = x
151 then
152         #
153         # The alternative is not to build the man pages....
154         #
155         AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
156 fi
157 AC_PATH_PROG(POD2HTML, pod2html)
158 if test "x$POD2HTML" = x
159 then
160         #
161         # The alternative is not to build the HTML man pages....
162         #
163         AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
164 fi
165
166 #
167 # Checks for programs used by Wireshark/TShark/etc.
168 #
169
170 #
171 # XXX - this looks for various HTML viewers on the host, not the target;
172 # we really want to know what's available on the target, for cross-builds.
173 # That would probably require us to, at run time, look for xdg-open and,
174 # if we don't find it, look for mozilla, htmlview, etc.
175 #
176 AC_PATH_PROG(HTML_VIEWER, xdg-open)
177 if test "x$HTML_VIEWER" != x
178 then
179         #
180         # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
181         # Define some variable to be that, so we just run that?
182         #
183         AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
184
185         #
186         # XXX - we have to define HTML_VIEWER for the prefs.c code that
187         # sets the default value of the Web browser preference, even
188         # though that preference won't be offered.
189         #
190         AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
191 else
192         AC_PATH_PROG(HTML_VIEWER, htmlview)
193         if test "x$HTML_VIEWER" = x
194         then
195                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
196         else
197                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
198         fi
199 fi
200
201 #
202 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
203 # flags such as -pedantic, -W warning flags and -f feature flags.  Currently,
204 # we assume GCC and clang do; other compilers should be added here.
205 #
206 # This is done to avoid getting tripped up by compilers that support
207 # those flags but give them a different meaning.
208 #
209 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
210         ac_supports_gcc_flags=yes
211 fi
212
213 #
214 # Set "ac_supports_W_linker_passthrough" if the compiler is known to
215 # support "-Wl,{options}" to pass options through to the linker.
216 # Currently, we assume GCC, xlc, and clang do; other compilers should
217 # be added here.
218 #
219 if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then
220         ac_supports_W_linker_passthrough=yes
221 fi
222
223 #
224 # Set "ac_supports_attribute_unused" if the compiler is known to
225 # support "__attribute__(unused)".
226 # Currently, we assume GCC and clang do; other compilers should
227 # be added here.
228 #
229 # XXX - do this with a compiler test?
230 #
231 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
232         ac_supports_W_linker_passthrough=yes
233 fi
234
235 if test "x$CC_FOR_BUILD" = x
236 then
237        CC_FOR_BUILD=$CC
238 fi
239 AC_SUBST(CC_FOR_BUILD)
240 AC_SUBST(CFLAGS_FOR_BUILD)
241
242 # Check for doxygen
243 AC_PATH_PROG(DOXYGEN, doxygen)
244 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
245 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
246
247 #
248 # Check for pkg-config and set PKG_CONFIG accordingly.
249 #
250 # This is referenced via AC_REQUIRE([PKG_PROG_PKG_CONFIG] in some macros
251 # like PKG_CHECK_MODULES. If the first call to such a macro is under an
252 # "if" statement, it's safer to call PKG_PROG_PKG_CONFIG directly, see
253 # the comments in acolocal.m4
254 #
255 PKG_PROG_PKG_CONFIG
256
257 AC_ARG_ENABLE(osx-deploy-target,
258   AC_HELP_STRING( [--enable-osx-deploy-target],
259     [choose an OS X deployment target @<:@default=major release on which you're building@:>@]),
260 [
261         #
262         # Is this OS X?
263         #
264         case "$host_os" in
265         darwin*)
266                 #
267                 # Yes.
268                 #
269                 # Let the user specify an OS X release to use as a
270                 # deplayment target; if they specify that we should
271                 # have a deployment target but don't specify the
272                 # deployment target, then, if we have SDKs available,
273                 # pick the OS version on which the build is being done.
274                 # This also causes the build to be done against an SDK
275                 # rather than against the headers and libraries in
276                 # /usr/include and /usr/lib.
277                 #
278                 # Check for an OS X deployment target early, so that
279                 # as many tests using the compiler are done using the
280                 # flags that we'll be using when building.
281                 #
282                 if test $enableval = no
283                 then
284                         #
285                         # The user explicitly said
286                         # --disable-osx-deploy-target, so don't build
287                         # against an SDK.
288                         #
289                         deploy_target=
290                 elif test $enableval = yes
291                 then
292                         #
293                         # The user said --enable-osx-deploy-target, but
294                         # didn't say what version to target; target the
295                         # major version number of the version of OS X on
296                         # which we're running.
297                         #
298                         # (We quote the command so that we can use
299                         # autoconf's M4 quoting characters, [ and ], in
300                         # the sed expression.)
301                         #
302                         [deploy_target=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
303                 else
304                         deploy_target="$enableval"
305                 fi
306                 ;;
307
308         *)
309                 #
310                 # No.  Fail, because whatever the user intended for us to
311                 # do, we can't do it.
312                 #
313                 AC_MSG_ERROR([--enable-osx-deploy-target specified on an OS other than OS X])
314                 ;;
315         esac
316 ],[
317         #
318         # Is this OS X?
319         #
320         case "$host_os" in
321         darwin*)
322                 #
323                 # Yes.
324                 #
325                 # If we have SDKs available, default to targeting the major
326                 # version number of the version of OS X on which we're
327                 # running.
328                 #
329                 # (We quote the command so that we can use autoconf's
330                 # M4 quoting characters, [ and ], in the sed expression.)
331                 #
332                 for i in /Developer/SDKs \
333                     /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
334                     /Library/Developer/CommandLineTools/SDKs
335                 do
336                         if test -d "$i"
337                         then
338                                 [deploy_target=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
339                                 break
340                         fi
341                 done
342                 ;;
343
344         *)
345                 #
346                 # No.  There's nothing to do.
347                 #
348                 ;;
349         esac
350 ])
351
352 if test ! -z "$deploy_target"
353 then
354         AC_MSG_CHECKING([whether we can build for OS X $deploy_target])
355         case $deploy_target in
356
357         10.0|10.1|10.2)
358                 #
359                 # I'm not sure this would even work.
360                 #
361                 AC_MSG_RESULT(no)
362                 AC_ERROR([We don't support building for OS X $deploy_target])
363                 ;;
364
365         10.3)
366                 #
367                 # XXX - never tested.
368                 #
369                 AC_MSG_RESULT(yes)
370                 SDKPATH="/Developer/SDKs/MacOSX10.3.9.sdk"
371                 ;;
372
373         *)
374                 #
375                 # XXX - for 10.4, do we need 10.4u?  We're
376                 # not currently doing fat builds (we'd need
377                 # fat versions of the support libraries for
378                 # that to be useful), but, if we do, we'd
379                 # need to use 10.4u.
380                 #
381                 for i in /Developer/SDKs \
382                     /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
383                     /Library/Developer/CommandLineTools/SDKs
384                 do
385                         if test -d "$i"/"MacOSX$deploy_target.sdk"
386                         then
387                                 SDKPATH="$i"/"MacOSX$deploy_target.sdk"
388                                 break
389                         fi
390                 done
391                 if test -z "$SDKPATH"
392                 then
393                         AC_MSG_RESULT(no)
394                         AC_MSG_ERROR([We couldn't find the SDK for OS X $deploy_target])
395                 fi
396                 AC_MSG_RESULT(yes)
397                 ;;
398         esac
399
400         #
401         # Add a -mmacosx-version-min flag to force tests that
402         # use the compiler, as well as the build itself, not to,
403         # for example, use compiler or linker features not supported
404         # by the minimum targeted version of the OS.
405         #
406         # Add an -isysroot flag to use the SDK.
407         #
408         CFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CFLAGS"
409         CXXFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CXXFLAGS"
410         LDFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $LDFLAGS"
411
412         #
413         # Add a -sdkroot flag to use with osx-app.sh.
414         #
415         OSX_APP_FLAGS="-sdkroot $SDKPATH"
416
417         #
418         # XXX - do we need this to build the Wireshark wrapper?
419         # XXX - is this still necessary with the -mmacosx-version-min
420         # flag being set?
421         #
422         OSX_DEPLOY_TARGET="MACOSX_DEPLOYMENT_TARGET=$deploy_target"
423
424         #
425         # In the installer package XML file, give the deployment target
426         # as the minimum version.
427         #
428         OSX_MIN_VERSION="$deploy_target"
429
430         case $deploy_target in
431
432         10.4|10.5)
433                 #
434                 # Only 32-bit builds are supported.  10.5
435                 # (and 10.4?) had a bug that causes some BPF
436                 # functions not to work with 64-bit userland
437                 # code, so capturing won't work.
438                 #
439                 CFLAGS="-m32 $CFLAGS"
440                 CXXFLAGS="-m32 $CXXFLAGS"
441                 LDFLAGS="-m32 $LDFLAGS"
442                 ;;
443         esac
444 else
445         #
446         # Is this OS X?
447         #
448         case "$host_os" in
449         darwin*)
450                 #
451                 # Yes.
452                 #
453                 # In the installer package XML file, give the current OS
454                 # version, minor version and all, as the minimum version.
455                 # We can't guarantee that the resulting binary will work
456                 # on older OS versions, not even older minor versions
457                 # (original release or earlier software updates).
458                 #
459                 OSX_MIN_VERSION=`sw_vers -productVersion`
460                 ;;
461         esac
462 fi
463 AC_SUBST(OSX_MIN_VERSION)
464
465 #
466 # Try to arrange for large file support.
467 #
468 AC_SYS_LARGEFILE
469
470 #
471 # GUI toolkit options
472 #
473 AC_ARG_WITH([qt],
474   AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@],
475                   [use Qt @<:@default=yes@:>@]),
476   with_qt="$withval", with_qt="unspecified")
477
478 AC_ARG_WITH([gtk2],
479   AC_HELP_STRING( [--with-gtk2=@<:@yes/no@:>@],
480                   [use GTK+ 2.0 @<:@default=no@:>@]),
481   with_gtk2="$withval", with_gtk2="unspecified")
482
483 AC_ARG_WITH([gtk3],
484   AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
485                   [use GTK+ 3.0 instead of 2.0 @<:@default=yes@:>@]),
486   with_gtk3="$withval", with_gtk3="unspecified")
487
488 # GnuTLS
489 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+, then switched back to
490 # LGPLv2.1+ in version 3.1.10
491 tls_message="no"
492 AC_ARG_WITH([gnutls],
493   AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
494                   [use GnuTLS library @<:@default=yes@:>@]),
495   with_gnutls="$withval", with_gnutls="yes")
496 if test "x$with_gnutls" = "xyes"; then
497   have_license_compatible_gnutls="no"
498   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.1.10 ],
499     [ have_license_compatible_gnutls="yes" ], [ echo "GnuTLS >= 3.1.10 not found " ]
500   )
501
502   if test "x$have_license_compatible_gnutls" != "xyes"; then
503     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0 gnutls < 3],
504       [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 1.2.0, < 3.0 not found " ]
505     )
506   fi
507
508   if test "x$have_license_compatible_gnutls" = "xyes"; then
509     echo "GnuTLS found, enabling SSL decryption"
510     AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
511     tls_message="yes"
512   else
513     echo "GnuTLS with compatible license not found, disabling SSL decryption"
514     tls_message="no"
515   fi
516 fi
517
518 # libgrypt
519 gcrypt_message="no"
520 AC_ARG_WITH([gcrypt],
521   AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
522                   [use gcrypt library @<:@default=yes@:>@]),
523   with_gcrypt="$withval", with_gcrypt="yes")
524 if test "x$with_gcrypt" = "xyes"; then
525   AM_PATH_LIBGCRYPT(1.1.92,
526         [
527                 echo "libgcrypt found, enabling ipsec decryption"
528                 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
529                 gcrypt_message="yes"
530         ]
531         , [
532                 if test x$libgcrypt_config_prefix != x ; then
533                         AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
534                 else
535                         echo "libgcrypt not found, disabling ipsec decryption"
536                         gcrypt_message="no"
537                 fi
538         ]
539   )
540 fi
541
542 AC_ARG_WITH(libnl,
543   AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
544                  [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
545 [
546         if test "x$withval" = "xno"
547         then
548                 want_libnl=no
549         elif test "x$withval" = "xyes"
550         then
551                 want_libnl=yes
552                 libnl_version=any
553         elif test "x$withval" = "x1"
554         then
555                 want_libnl=yes
556                 libnl_version=1
557         elif test "x$withval" = "x2"
558         then
559                 want_libnl=yes
560                 libnl_version=2
561         elif test "x$withval" = "x3"
562         then
563                 want_libnl=yes
564                 libnl_version=3
565         else
566                 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
567         fi
568 ],[
569         #
570         # Use libnl if it's present, otherwise don't.
571         #
572         want_libnl=ifavailable
573         libnl_version=any
574 ])
575 #
576 # Libnl is Linux-specific.
577 #
578 libnl_message="no"
579 case "$host_os" in
580 linux*)
581         AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
582
583         if test x$want_libnl = "xno"; then
584                 AC_MSG_RESULT(no)
585         else
586                 AC_MSG_RESULT(yes)
587                 #
588                 # Test for specific libnl versions only if no version
589                 # was specified by the user or if the version in question
590                 # was requested by the user.
591                 #
592                 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
593                         PKG_CHECK_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
594                 fi
595                 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
596                         PKG_CHECK_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
597                 fi
598                 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
599                         PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
600                 fi
601                 if (test "${have_libnl3}" = "yes"); then
602                         CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
603                         LIBS="$LIBS $LIBNL3_LIBS"
604                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
605                         AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
606                         libnl_message="yes (v3)"
607                         enable_airpcap=no
608                 elif (test "${have_libnl2}" = "yes"); then
609                         CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
610                         LIBS="$LIBS $LIBNL2_LIBS"
611                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
612                         AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
613                         libnl_message="yes (v2)"
614                         enable_airpcap=no
615                 elif (test "${have_libnl1}" = "yes"); then
616                         CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
617                         LIBS="$LIBS $LIBNL1_LIBS"
618                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
619                         AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
620                         libnl_message="yes (v1)"
621                         enable_airpcap=no
622                 else
623                         if test x$want_libnl = "xyes"; then
624                                 case "$libnl_version" in
625
626                                 any)
627                                         AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
628                                         ;;
629
630                                 *)
631                                         AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
632                                         ;;
633                                 esac
634                         fi
635                 fi
636         fi
637
638         AC_MSG_CHECKING([if nl80211.h is new enough])
639           AC_TRY_COMPILE([#include <linux/nl80211.h>],
640             [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
641                 x = NL80211_ATTR_SUPPORTED_IFTYPES;
642                 x = NL80211_ATTR_SUPPORTED_COMMANDS;
643                 x = NL80211_ATTR_WIPHY_FREQ;
644                 x = NL80211_CHAN_NO_HT;],
645             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
646             [AC_MSG_RESULT(no)])
647
648         AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
649           AC_TRY_COMPILE([#include <linux/nl80211.h>],
650             [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
651             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
652             [AC_MSG_RESULT(no)])
653         ;;
654
655 *)
656         if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
657                 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
658         fi
659 esac
660
661 # libsmi
662 # FIXME: currently the path argument to with-libsmi is being ignored
663 AX_LIBSMI
664
665 #
666 # Check for programs used when building DocBook documentation.
667 #
668
669 # Check for a2x (convert asciidoc to another format)
670 AC_PATH_PROG(A2X, a2x)
671 AC_CHECK_PROG(HAVE_A2X, a2x, "yes", "no")
672 AM_CONDITIONAL(HAVE_A2X, test x$HAVE_A2X = xyes)
673
674 # Want to control a tape drive? Use mt. Want to convert HTML to text?
675 # Uhhhhh... elinks? lynx? w3m? pandoc? html2text?
676 AC_PATH_PROG(ELINKS, elinks)
677 AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no")
678 AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes)
679
680 # Check for fop (translate .fo to e.g. pdf)
681 AC_PATH_PROG(FOP, fop)
682 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
683 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
684
685 # Check for lynx (html -> text)
686 AC_PATH_PROG(LYNX, lynx)
687 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
688 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
689
690 # Check for w3m (html -> text)
691 AC_PATH_PROG(W3M, w3m)
692 AC_CHECK_PROG(HAVE_W3M, w3m, "yes", "no")
693 AM_CONDITIONAL(HAVE_W3M, test x$HAVE_W3M = xyes)
694
695 # Check for xmllint
696 AC_PATH_PROG(XMLLINT, xmllint)
697 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
698 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
699
700 # Check for xsltproc
701 AC_PATH_PROG(XSLTPROC, xsltproc)
702 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
703 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
704
705
706 # Check for packaging utilities
707 # For now, we check to see if the various packaging utilites are in our
708 # path.  I'm too lazy to write code to go hunt for them.  -  Gerald
709
710 #
711 # Source packages.
712 # (Lets you install the desktop files.)
713 #
714 AC_PATH_PROG(DESKTOP_FILE_INSTALL, desktop-file-install)
715
716 # SVR4/Solaris
717 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
718 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
719 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
720
721 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
722      -a x$HAVE_PKGTRANS = xyes ; then
723   HAVE_SVR4_PACKAGING=yes
724 else
725   HAVE_SVR4_PACKAGING=no
726 fi
727 AC_SUBST(HAVE_SVR4_PACKAGING)
728
729 # RPM
730 AC_WIRESHARK_RPM_CHECK
731 AC_SUBST(HAVE_RPM)
732
733 # Debian
734 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
735
736 # Mac OS X
737 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
738 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
739 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
740
741 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
742      -a x$HAVE_BLESS = xyes ; then
743   HAVE_OSX_PACKAGING=yes
744 else
745   HAVE_OSX_PACKAGING=no
746 fi
747 AC_SUBST(HAVE_OSX_PACKAGING)
748
749 #
750 # Some compilers have to be told to fail on unknown warning errors;
751 # make sure we do that.
752 #
753 AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR
754
755 #
756 # Try to add some additional gcc checks to CFLAGS
757 #
758 AC_ARG_ENABLE(extra-gcc-checks,
759   AC_HELP_STRING( [--enable-extra-gcc-checks],
760                   [do additional -W checks in GCC @<:@default=no@:>@]),
761 [
762         wireshark_extra_gcc_flags=$enableval
763         if test $enableval != no
764         then
765                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-pedantic)
766                 #
767                 # Various code blocks this one.
768                 #
769                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Woverflow)
770                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
771                 #
772                 # Some memset() calls to clear out structures
773                 # on the stack are getting flagged as "will never
774                 # be executed" by this, at least by Apple's
775                 # i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on
776                 # Apple Inc. build 5658) (LLVM build 2336.11.00), for
777                 # some unknown reason.
778                 #
779                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunreachable-code)
780                 #
781                 # Due to various places where APIs we don't control
782                 # require us to cast away constness, we can probably
783                 # never enable these ones with -Werror.
784                 #
785                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-qual)
786                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wbad-function-cast, C)
787                 #
788                 # Some generated ASN.1 dissectors block this one;
789                 # multiple function declarations for the same
790                 # function are being generated.
791                 #
792                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wredundant-decls)
793                 #
794                 # Some loops are safe, but it's hard to convince the
795                 # compiler of that.
796                 #
797                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunsafe-loop-optimizations)
798                 #
799                 # All the registration functions block these for now.
800                 #
801                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-prototypes)
802                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-declarations)
803                 #
804                 # A bunch of "that might not work on SPARC" code blocks
805                 # this one for now.
806                 #
807                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-align)
808         fi
809 ],)
810 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
811 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wextra) # -W is now known as -Wextra
812 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdeclaration-after-statement, C)
813 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wendif-labels)
814 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpointer-arith)
815 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-pointer-sign, C)
816 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
817 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wformat-security)
818 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wold-style-definition, C)
819 # The Qt headers generate a ton of shortening errors on 64-bit systems
820 # so only enable this for C for now.
821 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshorten-64-to-32, C)
822 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wstrict-prototypes, C)
823 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wjump-misses-init, C)
824 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wvla)
825 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Waddress)
826 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
827 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wattributes)
828 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
829 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
830 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpragmas)
831 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-overlength-strings)
832 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wwrite-strings)
833 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-long-long)
834 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wc++-compat, C)
835
836 #
837 # XXX - OK for C++?
838 #
839 # Make sure -Wshadow doesn't complain about variables in function and
840 # function pointer declarations shadowing other variables; if not, don't
841 # turn it on, as some versions of GCC (including the one in at least
842 # some Xcode versions that came with Mac OS X 10.5) complain about
843 # that.
844 #
845 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshadow, C,
846   [
847 extern int bar(int a);
848 extern int foo(int);
849
850 int
851 foo(int a)
852 {
853         int (*fptr)(int a) = bar;
854
855         return fptr(a) * 2;
856 }
857   ],
858   [warns about variables in function declarations shadowing other variables])
859
860 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
861 # is given a constant string.
862 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
863 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wlogical-op, C,
864   [
865 #include <string.h>
866
867 int foo(const char *, int);
868 int bar(void);
869
870 int
871 foo(const char *sep, int c)
872 {
873         if (strchr (sep, c) != NULL)
874                 return 1;
875         else
876                 return 0;
877 }
878
879 int
880 bar(void)
881 {
882         return foo("<", 'a');
883 }
884   ],
885   [generates warnings from strchr()])
886
887
888 #
889 # On OS X, suppress warnings about deprecated declarations, because
890 # they apparently think everything on OS X is Shiny Happy Apple-
891 # Framework-Based Apps and are deprecating some perfectly OK
892 # multi-platform open-source libraries that we use in our multi-platform
893 # open-source application in favor of various frameworks that are
894 # OS X-only.
895 #
896 case "$host_os" in
897 darwin*)
898         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-deprecated-declarations)
899         ;;
900 esac
901
902 #
903 # Use the faster pre gcc 4.5 floating point precision if available.
904 #
905 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
906
907 CFLAGS_before_fvhidden=$CFLAGS
908 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
909 if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden"
910 then
911         # TODO add other ways of hiding symbols
912         AC_MSG_WARN(Compiler will export all symbols from shared libraries)
913 fi
914
915 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
916 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
917 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
918 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
919 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
920 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
921
922 #
923 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
924 # so that we can build dumpcap PIE - it may run with elevated
925 # privileges, and using PIE means the OS can run it at random locations
926 # in the address space to make attacks more difficult.
927 #
928 CFLAGS_before_pie=$CFLAGS
929 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
930 if test "x$CLFAGS" != "x$CFLAGS_before_pie"
931 then
932         # Restore CFLAGS
933         CFLAGS=$CFLAGS_before_pie
934
935         LDFLAGS_before_pie=$LDFLAGS
936         AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
937         if test "x$LDFLAGS" != "x$LDFLAGS_before_pie"
938         then
939                 # We can use PIE
940                 PIE_CFLAGS="-fPIE"
941                 PIE_LDFLAGS="-pie"
942
943                 # Restore LDFLAGS
944                 LDFLAGS=$LDFLAGS_before_pie
945         fi
946
947 fi
948 AC_SUBST(PIE_CFLAGS)
949 AC_SUBST(PIE_LDFLAGS)
950
951 #
952 # If we're running GCC or clang define _U_ to be "__attribute__((unused))"
953 # so we can use _U_ to flag unused function parameters and not get warnings
954 # about them. Otherwise, define _U_ to be an empty string so that _U_ used
955 # to flag an unused function parameters will compile with other compilers.
956 #
957 # XXX - similar hints for other compilers?
958 #
959 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
960   AC_DEFINE(_U_, __attribute__((unused)), [Hint to the compiler that a function parameters is not used])
961 else
962   AC_DEFINE(_U_, , [Hint to the compiler that a function parameters is not used])
963 fi
964
965 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
966 #  (only if the GCC 'optimization level' > 0).
967 #
968 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
969 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
970 #
971 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
972 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
973
974 #
975 # If the compiler supports GCC-style flags, enable a barrier "stop on
976 # warning".
977 # This barrier is set for a very large part of the code. However, it is
978 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
979 #
980 warnings_as_errors_default="yes"
981 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
982 AC_ARG_ENABLE(warnings-as-errors,
983   AC_HELP_STRING( [--enable-warnings-as-errors],
984                   [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra warnings are enabled@:>@]),
985 [
986   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
987     with_warnings_as_errors="yes"
988     AC_MSG_RESULT(yes)
989   else
990     with_warnings_as_errors="no"
991     AC_MSG_RESULT(no)
992   fi
993 ],
994 [
995   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
996     with_warnings_as_errors="yes"
997     AC_MSG_RESULT(yes)
998   else
999     with_warnings_as_errors="no"
1000     AC_MSG_RESULT(no)
1001   fi
1002 ]
1003 )
1004 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
1005
1006 #
1007 # Add any platform-specific compiler flags needed.
1008 #
1009 AC_MSG_CHECKING(for platform-specific compiler flags)
1010 if test "x$GCC" = "xyes" ; then
1011         #
1012         # GCC - do any platform-specific tweaking necessary.
1013         #
1014         case "$host_os" in
1015         solaris*)
1016                 # the X11 headers don't automatically include prototype info
1017                 # and a lot don't include the return type
1018                 CPPFLAGS="$CPPFLAGS -DFUNCPROTO=15"
1019                 CFLAGS="$CFLAGS -Wno-return-type"
1020                 CXXFLAGS="$CXXFLAGS -Wno-return-type"
1021                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
1022                 ;;
1023         *)
1024                 AC_MSG_RESULT(none needed)
1025                 ;;
1026         esac
1027 else
1028         #
1029         # Not GCC - assume it's the vendor's compiler.
1030         #
1031         case "$host_os" in
1032         hpux*)
1033                 #
1034                 # HP's ANSI C compiler; flags suggested by Jost Martin.
1035                 # "-Ae" for ANSI C plus extensions such as "long long".
1036                 # "+O2", for optimization.  XXX - works with "-g"?
1037                 #
1038                 # HP's ANSI C++ compiler doesn't support "-Ae", but
1039                 # does support "+O2", at least according to the
1040                 # documentation I can find online.
1041                 #
1042                 CFLAGS="-Ae +O2 $CFLAGS"
1043                 CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
1044                 CXXFLAGS="+O2 $CFLAGS"
1045                 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
1046                 ;;
1047         *)
1048                 AC_MSG_RESULT(none needed)
1049                 ;;
1050         esac
1051 fi
1052
1053 #
1054 # Add any platform-specific linker flags needed.
1055 #
1056 AC_MSG_CHECKING(for platform-specific linker flags)
1057 case "$host_os" in
1058 darwin*)
1059         #
1060         # Add -Wl,-single_module to the LDFLAGS used with shared
1061         # libraries, to fix some error that show up in some cases;
1062         # some Apple documentation recommends it for most shared
1063         # libraries.
1064         #
1065         LDFLAGS_SHAREDLIB="-Wl,-single_module"
1066         #
1067         # Add -Wl,-search_paths_first to make sure that if we search
1068         # directories A and B, in that order, for a given library, a
1069         # non-shared version in directory A, rather than a shared
1070         # version in directory B, is chosen (so we can use
1071         # --with-pcap=/usr/local to force all programs to be linked
1072         # with a static version installed in /usr/local/lib rather than
1073         # the system version in /usr/lib).
1074         #
1075         # Also add -Wl,-rpath,@executable_path/../lib and
1076         # -Wl,-rpath,/usr/local/lib, so that, if we build an app
1077         # bundle, we can tweak all the executable images, shared
1078         # libraries, and plugins in the bundle to look for non-system
1079         # libraries in the rpath, rather than having a script tweak
1080         # DYLD_LIBRARY_PATH.
1081         #
1082         LDFLAGS="-Wl,-search_paths_first -Wl,-rpath,@executable_path/../lib -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/usr/local/lib $LDFLAGS"
1083         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first, and rpaths])
1084         ;;
1085 cygwin*)
1086         #
1087         # Shared libraries in cygwin/Win32 must never contain
1088         # undefined symbols.
1089         #
1090         LDFLAGS="$LDFLAGS -no-undefined"
1091         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
1092         ;;
1093 *)
1094         AC_MSG_RESULT(none needed)
1095         ;;
1096 esac
1097 AC_SUBST(LDFLAGS_SHAREDLIB)
1098
1099 # Enable silent builds by default
1100 # Verbose builds can be enabled with "./configure
1101 # --enable-silent-rules ..." or "make V=1 ..."
1102 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
1103   [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
1104
1105 #
1106 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
1107 # "just Darwin" (as we don't currently support iOS, and as I don't
1108 # think you can build and run "just Darwin" as an OS for PCs), we
1109 # arrange to build some programs with Application Services so they
1110 # can launch Web browsers and Finder windows, arrange to build some
1111 # programs with System Configuration so they can get "friendly names"
1112 # and other information about interfaces, and build any programs that
1113 # use either of those frameworks or that report version information
1114 # with Core Foundation as the frameworks in question use it and as we
1115 # get version information from plists and thus need Core Foundation
1116 # to process those plists.
1117 #
1118 case "$host_os" in
1119
1120 darwin*)
1121         AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
1122         APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
1123         SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
1124         COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
1125
1126         #
1127         # OK, so we have the OS X frameworks; do they include
1128         # CFPropertyListCreateWithStream, or do we have
1129         # to fall back on CFPropertyListCreateFromStream?
1130         # (They only differ in the error return, which we
1131         # don't care about.  And, no, we shouldn't just
1132         # use CFPropertyListCreateFromStream, because it's
1133         # deprecated in newer releases.)
1134         #
1135         ac_save_LIBS="$LIBS"
1136         LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
1137         AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
1138         LIBS="$ac_save_LIBS"
1139         ;;
1140 esac
1141 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
1142 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
1143 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
1144
1145 #
1146 # On Solaris, check whether we have getexecname().
1147 #
1148 case "$host_os" in
1149 solaris*)
1150         AC_CHECK_FUNC(getexecname)
1151         ;;
1152 esac
1153
1154 dnl Look in /usr/local for header files and libraries ?
1155 dnl XXX FIXME don't include /usr/local if it is already in the system
1156 dnl search path as this causes gcc 3.2 on Linux to complain about a change
1157 dnl of the system search order for includes
1158 AC_ARG_ENABLE(usr-local,
1159   AC_HELP_STRING( [--enable-usr-local],
1160                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
1161     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
1162
1163 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
1164 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1165         if test -d "/usr/local"; then
1166                 AC_MSG_RESULT(yes)
1167                 #
1168                 # Arrange that we search for header files in the source directory
1169                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
1170                 # as various packages we use ("libpcap", "zlib", "adns")
1171                 # may have been installed under "/usr/local/include".
1172                 #
1173                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
1174
1175                 #
1176                 # Arrange that we search for libraries in "/usr/local/lib".
1177                 #
1178                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
1179         else
1180                 AC_MSG_RESULT(no)
1181         fi
1182 else
1183         AC_MSG_RESULT(no)
1184 fi
1185
1186 #
1187 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
1188 # link directory.
1189 #
1190 case "$host_os" in
1191   solaris*)
1192     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
1193     if test x$LD_LIBRARY_PATH != x ; then
1194       LIBS="$LIBS -R$LD_LIBRARY_PATH"
1195       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
1196     else
1197       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
1198     fi
1199   ;;
1200 esac
1201
1202 #
1203 # Check for versions of "sed" inadequate to handle, in libtool, a list
1204 # of object files as large as the list in Wireshark.
1205 #
1206 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
1207 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
1208 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
1209 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
1210 # is the only "sed" that comes with Solaris that can handle Wireshark.
1211 #
1212 # Add any checks here that are necessary for other OSes.
1213 #
1214 AC_WIRESHARK_GNU_SED_CHECK
1215 if test "$HAVE_GNU_SED" = no ; then
1216         case "$host_os" in
1217         solaris*)
1218                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
1219                 case `which sed` in
1220                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
1221                         AC_MSG_RESULT(yes)
1222                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
1223                         ;;
1224
1225                         *)
1226                         AC_MSG_RESULT(no)
1227                         ;;
1228                 esac
1229                 ;;
1230
1231         *)
1232                 :
1233                 ;;
1234         esac
1235 fi
1236
1237 # Enable/disable wireshark
1238 AC_ARG_ENABLE(wireshark,
1239   AC_HELP_STRING( [--enable-wireshark],
1240                   [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]),
1241     enable_wireshark=$enableval,enable_wireshark=yes)
1242
1243 AC_ARG_ENABLE(packet-editor,
1244   AC_HELP_STRING( [--enable-packet-editor],
1245                   [add support for packet editor in Wireshark @<:@default=no@:>@]),
1246     enable_packet_editor=$enableval,enable_packet_editor=no)
1247 if test x$enable_packet_editor = xyes; then
1248         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
1249 fi
1250
1251 AC_ARG_ENABLE(profile-build,
1252   AC_HELP_STRING( [--enable-profile-build],
1253                   [build profile-ready binaries @<:@default=no@:>@]),
1254     enable_profile_build=$enableval,enable_profile_build=no)
1255 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
1256 AC_MSG_CHECKING(if profile builds must be generated)
1257 if test "x$enable_profile_build" = "xyes" ; then
1258         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
1259                 AC_MSG_RESULT(yes)
1260                 CFLAGS=" -pg $CFLAGS"
1261                 CXXFLAGS=" -pg $CXXFLAGS"
1262         else
1263                 AC_MSG_RESULT(no)
1264                 echo "Building profile binaries currently only supported for GCC and clang."
1265         fi
1266 else
1267         AC_MSG_RESULT(no)
1268 fi
1269
1270 # Create DATAFILE_DIR #define for config.h
1271 datafiledir=$datadir/wireshark
1272 datafiledir=`(
1273     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1274     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1275     # Ugly hack, but I don't see how this problem can be solved
1276     # properly that DATAFILE_DIR had a value starting with
1277     # "${prefix}/" instead of e.g. "/usr/local/"
1278     eval eval echo "$datafiledir"
1279 )`
1280 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
1281
1282 # Create DOC_DIR #define for config.h
1283 docdir=`(
1284     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1285     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1286     # Ugly hack, but I don't see how this problem can be solved
1287     # properly that DOC_DIR had a value starting with
1288     # "${prefix}/" instead of e.g. "/usr/local/"
1289     eval eval echo "$docdir"
1290 )`
1291 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
1292
1293 GTK2_MIN_VERSION=2.12.0
1294 AC_SUBST(GTK2_MIN_VERSION)
1295 GTK3_MIN_VERSION=3.0.0
1296 AC_SUBST(GTK3_MIN_VERSION)
1297 QT_MIN_VERSION=4.6.0
1298 AC_SUBST(QT_MIN_VERSION)
1299 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1300 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1301 #
1302 # We only do those if we're going to be building Wireshark;
1303 # otherwise, we don't have any GUI to build, so we don't use
1304 # GTK+ or Qt.
1305 #
1306 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1307 # force all programs to be built with GTK+ or Qt.
1308 #
1309 # Release dates for GTK+ versions:
1310 # 2.12.0: 14 Sep 2007
1311 # 2.14.0: 04 Sep 2008
1312 # 2.16.0: 13 Mar 2009
1313 # 2.18.0: 23 Sep 2009
1314 # 2.20.0: 23 Mar 2010
1315 # 2.22.0: 23 Sep 2010
1316 # 2.24.0: 30 Jan 2011
1317 # 3.0.0:  10 Feb 2011
1318 # 3.2.0:  25 Sep 2011
1319 # 3.4.0:  26 Mar 2012
1320 # 3.6.0:  24 Sep 2012
1321 # 3.8.0:  25 Mar 2013
1322
1323 have_qt=no
1324 have_gtk=no
1325 if test "x$enable_wireshark" = "xyes"; then
1326         if test "x$with_gtk2" = "xunspecified" -a \
1327                 "x$with_gtk3" = "xunspecified" -a \
1328                 "x$with_qt" = "xunspecified"; then
1329                 #
1330                 # No GUI toolkit was explicitly specified; pick Qt and GTK+ 3.
1331                 #
1332                 with_qt=yes
1333                 with_gtk3=yes
1334         fi
1335         if test "x$with_qt" = "xyes"; then
1336                 #
1337                 # Qt was specified; Make sure we have a C++ compiler.
1338                 #
1339                 if test -z "$CXX"; then
1340                         AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1341                 fi
1342
1343                 #
1344                 # Now make sure we have Qt and, if so, add the flags
1345                 # for it to CFLAGS and CXXFLAGS.
1346                 #
1347                 AC_WIRESHARK_QT_CHECK($QT_MIN_VERSION,
1348                 [
1349                         CFLAGS="$CFLAGS $Qt_CFLAGS"
1350                         CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1351                         have_qt=yes
1352                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-qt"
1353                         OSX_APP_FLAGS="$OSX_APP_FLAGS -qt"
1354                         OSX_DMG_FLAGS="-qt"
1355                 ],
1356                 [AC_MSG_ERROR([Qt is not available])])
1357
1358                 #
1359                 # XXX - greasy hack to make ui/gtk/recent.c
1360                 # compile.
1361                 #
1362                 CPPFLAGS="-DQT_GUI_LIB"
1363         fi
1364
1365         if test "x$with_gtk3" = "xyes"; then
1366                 #
1367                 # GTK+ 3 was specified; make sure they didn't also
1368                 # specify GTK+ 2, as we don't support building both
1369                 # GTK+ 2 and GTK+ 3 versions at the same time.
1370                 #
1371                 if test "x$with_gtk2" = "xyes"; then
1372                         AC_MSG_ERROR([Both GTK+ 2 and GTK+ 3 were specified; choose one but not both])
1373                 fi
1374
1375                 #
1376                 # Make sure we have GTK+ 3.
1377                 #
1378                 AM_PATH_GTK_3_0(3.0.0,
1379                 [
1380                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1381                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1382                         have_gtk=yes
1383                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk3"
1384                 ],
1385                 [AC_MSG_ERROR([GTK+ 3 is not available])])
1386         elif test "x$with_gtk2" = "xyes"; then
1387                 #
1388                 # GTK+ 3 wasn't specified, and GTK+ 2 was specified;
1389                 # make sure we have GTK+ 2.
1390                 #
1391                 AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1392                 [
1393                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1394                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1395                         have_gtk=yes
1396                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk2"
1397                 ],
1398                 [AC_MSG_ERROR([GTK+ 2 is not available])])
1399         fi
1400 fi
1401 AC_SUBST(GUI_CONFIGURE_FLAGS)
1402
1403 GLIB_MIN_VERSION=2.16.0
1404 AC_SUBST(GLIB_MIN_VERSION)
1405 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1406 # support, as we need that for dynamically loading plugins.
1407 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1408 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1409 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1410 # GLIB_CFLAGS to CFLAGS.
1411 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1412 # set when generating the Makefile, so we can make programs that require
1413 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1414 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1415 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1416 # programs to be built with GLib.
1417 #
1418 # Release dates for GLib versions:
1419 # 2.14.0: 03 Aug 2007
1420 # 2.16.0: 10 Mar 2008
1421 # 2.18.0: 02 Sep 2008
1422 # 2.20.0: 13 Mar 2009
1423 # 2.22.0: 22 Sep 2009
1424 # 2.24.0: 28 Mar 2010
1425 # 2.26.0: 27 Sep 2010
1426 # 2.28.0: 08 Feb 2011
1427 # 2.30.0: 27 Sep 2011
1428 # 2.32.0: 24 Mar 2012
1429 # 2.34.0: 24 Sep 2012
1430 # 2.36.0: 25 Mar 2013
1431
1432 use_glib_cflags="true"
1433 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1434         # We have both GTK and Qt and thus will be building both wireshark
1435         # and wireshark-qt.
1436
1437         wireshark_bin="wireshark\$(EXEEXT) wireshark-qt\$(EXEEXT)"
1438         wireshark_man="wireshark.1"
1439         wireshark_SUBDIRS="codecs ui/qt ui/gtk"
1440 fi
1441 if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1442         # We don't have GTK+ but we have Qt.
1443
1444         wireshark_bin="wireshark-qt\$(EXEEXT)"
1445         wireshark_man="wireshark.1"
1446         wireshark_SUBDIRS="codecs ui/qt"
1447 fi
1448 if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1449         # We have GTK+ but not Qt.
1450
1451         wireshark_bin="wireshark\$(EXEEXT)"
1452         wireshark_man="wireshark.1"
1453         wireshark_SUBDIRS="codecs ui/gtk"
1454         use_glib_cflags="false"
1455 fi
1456 if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1457         # We have neither GTK+ nor Qt.
1458         #
1459         # If they didn't explicitly say "--disable-wireshark",
1460         # fail (so that, unless they explicitly indicated that
1461         # they don't want Wireshark, we stop so they know they
1462         # won't be getting Wireshark unless they fix the GTK+/Qt
1463         # problem).
1464         #
1465         if test "x$enable_wireshark" = "xyes"; then
1466                 if test "x$with_gtk3" = "xyes"; then
1467                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled])
1468                 else
1469                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1470                 fi
1471         fi
1472         wireshark_bin=""
1473         wireshark_man=""
1474 fi
1475
1476 if test "$have_gtk" = "yes" ; then
1477         # If we have GTK then add flags for it.
1478
1479         CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1480         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1481         CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1482         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1483         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1484                 # Enable GSEAL when building with GTK > 2.20
1485                 # (Versions prior to 2.22 lacked some necessary accessors.)
1486                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1487         fi
1488 fi
1489
1490 # XXX - Is this really necessary?  When we build with both Gtk+ and Qt it works...
1491 if test "$use_glib_cflags" = "true"; then
1492         # Use GLIB_CFLAGS
1493         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1494         [
1495                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1496                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1497         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1498 else
1499         # Don't use GLIB_CFLAGS
1500         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1501 fi
1502
1503 #
1504 # "make dist" requires that we have the Qt build tools.
1505 #
1506 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1507 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1508 # installed; if they're still doing that in current Fedora releases,
1509 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1510 #
1511 AC_PATH_PROG(UIC, uic)
1512 if test "x$UIC" = x
1513 then
1514         AC_PATH_PROG(UIC, uic-qt4)
1515         if test "x$UIC" = x
1516         then
1517                 if test "x$with_qt" = "xyes"; then
1518                         #
1519                         # If you want to build with Qt, you'd better
1520                         # have uic.
1521                         #
1522                         AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1523                 else
1524                         #
1525                         # We shouldn't fail here, as the user's not
1526                         # building with Qt, and we shouldn't force them
1527                         # to have Qt installed if they're not doing so.
1528                         # "make dist" will fail if they do that, but
1529                         # we don't know whether they'll be doing that,
1530                         # so this is the best we can do.
1531                         #
1532                         UIC=uic
1533                 fi
1534         fi
1535 fi
1536 AC_SUBST(UIC)
1537 AC_PATH_PROG(MOC, moc)
1538 if test "x$MOC" = x
1539 then
1540         AC_PATH_PROG(MOC, moc-qt4)
1541         if test "x$MOC" = x
1542         then
1543                 if test "x$with_qt" = "xyes"; then
1544                         #
1545                         # If you want to build with Qt, you'd better
1546                         # have moc.
1547                         #
1548                         AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1549                 else
1550                         #
1551                         # We shouldn't fail here, as the user's not
1552                         # building with Qt, and we shouldn't force them
1553                         # to have Qt installed if they're not doing so.
1554                         # "make dist" will fail if they do that, but
1555                         # we don't know whether they'll be doing that,
1556                         # so this is the best we can do.
1557                         #
1558                         MIC=moc
1559                 fi
1560         fi
1561 fi
1562 AC_SUBST(MOC)
1563
1564 # Error out if a glib header other than a "top level" header
1565 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1566 #  is used.
1567 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1568
1569 # Error out on the usage of deprecated glib functions
1570 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1571
1572 #
1573 # Check whether GLib modules are supported, to determine whether we
1574 # can support plugins.
1575 #
1576 AC_MSG_CHECKING(whether GLib supports loadable modules)
1577 ac_save_CFLAGS="$CFLAGS"
1578 ac_save_LIBS="$LIBS"
1579 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1580 LIBS="$GLIB_LIBS $LIBS"
1581 AC_TRY_RUN([
1582 #include <glib.h>
1583 #include <gmodule.h>
1584 #include <stdio.h>
1585 #include <stdlib.h>
1586
1587 int
1588 main ()
1589 {
1590   if (g_module_supported())
1591     return 0;   /* success */
1592   else
1593     return 1;   /* failure */
1594 }
1595 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1596    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1597     ac_cv_glib_supports_modules=yes])
1598 CFLAGS="$ac_save_CFLAGS"
1599 LIBS="$ac_save_LIBS"
1600 if test "$ac_cv_glib_supports_modules" = yes ; then
1601   AC_MSG_RESULT(yes)
1602   have_plugins=yes
1603 else
1604   AC_MSG_RESULT(no)
1605   have_plugins=no
1606 fi
1607
1608 #
1609 # If we have <dlfcn.h>, check whether we have dladdr.
1610 #
1611 if test "$ac_cv_header_dlfcn_h" = "yes"
1612 then
1613         #
1614         # Use GLib compiler flags and linker flags; GLib's gmodule
1615         # stuff uses the dl APIs if available, so it might know
1616         # what flags are needed.
1617         #
1618         ac_save_CFLAGS="$CFLAGS"
1619         ac_save_LIBS="$LIBS"
1620         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1621         LIBS="$GLIB_LIBS $LIBS"
1622         AC_CHECK_FUNCS(dladdr)
1623         if test x$ac_cv_func_dladdr = xno
1624         then
1625                 #
1626                 # OK, try it with -ldl, in case you need that to get
1627                 # dladdr().  For some reason, on Linux, that's not
1628                 # part of the GLib flags; perhaps GLib itself is
1629                 # linked with libdl, so that you can link with
1630                 # Glib and it'll pull libdl in itself.
1631                 #
1632                 LIBS="$LIBS -ldl"
1633                 AC_CHECK_FUNCS(dladdr)
1634         fi
1635         CFLAGS="$ac_save_CFLAGS"
1636         LIBS="$ac_save_LIBS"
1637 fi
1638
1639 #
1640 # Check whether GLib's printf supports thousands grouping. (This might
1641 # be different from the system's printf since GLib can optionally use
1642 # its own printf implementation.)
1643 #
1644 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1645 ac_save_CFLAGS="$CFLAGS"
1646 ac_save_LIBS="$LIBS"
1647 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1648 LIBS="$GLIB_LIBS $LIBS"
1649 AC_TRY_RUN([
1650 #include <glib.h>
1651 #include <locale.h>
1652 #include <stdio.h>
1653 #include <string.h>
1654
1655 int
1656 main ()
1657 {
1658   gchar *str;
1659   setlocale(LC_ALL, "en_US.UTF-8");
1660   str = g_strdup_printf("%'u", 123456);
1661   return (strcmp (str, "123,456") != 0);
1662 }
1663 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1664    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1665     ac_cv_glib_supports_printf_grouping=no])
1666 CFLAGS="$ac_save_CFLAGS"
1667 LIBS="$ac_save_LIBS"
1668 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1669   AC_MSG_RESULT(yes)
1670   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1671 else
1672   AC_MSG_RESULT(no)
1673 fi
1674
1675 if test "x$have_gtk" = "xyes"
1676 then
1677     #
1678     # We have GTK+; do we want the OS X integration functions and,
1679     # if so, do we have them and, if so, which versions do we have,
1680     # the old Carbon-based ones or the new Cocoa-based ones?
1681     #
1682     AC_MSG_CHECKING(whether to use OS X integration functions)
1683
1684     AC_ARG_WITH(osx-integration,
1685       AC_HELP_STRING( [--with-osx-integration],
1686                       [use OS X integration functions @<:@default=yes, if available@:>@]),
1687     [
1688         if test $withval = no
1689         then
1690             want_osx_integration=no
1691         else
1692             want_osx_integration=yes
1693         fi
1694     ],[
1695         want_osx_integration=yes
1696     ])
1697     if test "x$want_osx_integration" = "xno"; then
1698         AC_MSG_RESULT(no)
1699     else
1700         AC_MSG_RESULT(yes)
1701         AC_WIRESHARK_OSX_INTEGRATION_CHECK
1702     fi
1703 fi
1704
1705 AC_SUBST(wireshark_bin)
1706 AC_SUBST(wireshark_man)
1707 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1708 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
1709 AC_SUBST(OSX_APP_FLAGS)
1710 AC_SUBST(OSX_DMG_FLAGS)
1711
1712
1713 # Enable/disable tshark
1714
1715 AC_ARG_ENABLE(tshark,
1716   AC_HELP_STRING( [--enable-tshark],
1717                   [build TShark @<:@default=yes@:>@]),
1718     tshark=$enableval,enable_tshark=yes)
1719
1720 if test "x$enable_tshark" = "xyes" ; then
1721         tshark_bin="tshark\$(EXEEXT)"
1722         tshark_man="tshark.1"
1723         wiresharkfilter_man="wireshark-filter.4"
1724 else
1725         tshark_bin=""
1726         tshark_man=""
1727 fi
1728 AC_SUBST(tshark_bin)
1729 AC_SUBST(tshark_man)
1730 AC_SUBST(wiresharkfilter_man)
1731
1732
1733
1734 # Enable/disable editcap
1735
1736 AC_ARG_ENABLE(editcap,
1737   AC_HELP_STRING( [--enable-editcap],
1738                   [build editcap @<:@default=yes@:>@]),
1739     enable_editcap=$enableval,enable_editcap=yes)
1740
1741 if test "x$enable_editcap" = "xyes" ; then
1742         editcap_bin="editcap\$(EXEEXT)"
1743         editcap_man="editcap.1"
1744 else
1745         editcap_bin=""
1746         editcap_man=""
1747 fi
1748 AC_SUBST(editcap_bin)
1749 AC_SUBST(editcap_man)
1750
1751
1752
1753 # Enable/disable echld
1754
1755 AC_ARG_ENABLE(echld,
1756   AC_HELP_STRING( [--enable-echld],
1757                   [support echld]),
1758     have_echld=$enableval,have_echld=no)
1759
1760 AM_CONDITIONAL(HAVE_ECHLD, test "x$have_echld" = "xyes")
1761 if test "x$have_echld" = "xyes"
1762 then
1763   AC_DEFINE(HAVE_ECHLD, 1, [Define if echld is enabled])
1764   echld_test_bin="echld_test\$(EXEEXT)"
1765   echld_dir="echld"
1766 else
1767   have_echld="no"
1768   echld_test_bin=""
1769   echld_dir=""
1770 fi
1771 AC_SUBST(echld_test_bin)
1772 AC_SUBST(echld_dir)
1773
1774
1775 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1776 # or not)
1777
1778 # Enable/disable capinfos
1779
1780 AC_ARG_ENABLE(capinfos,
1781   AC_HELP_STRING( [--enable-capinfos],
1782                   [build capinfos @<:@default=yes@:>@]),
1783     enable_capinfos=$enableval,enable_capinfos=yes)
1784
1785 if test "x$enable_capinfos" = "xyes" ; then
1786         capinfos_bin="capinfos\$(EXEEXT)"
1787         capinfos_man="capinfos.1"
1788 else
1789         capinfos_bin=""
1790         capinfos_man=""
1791 fi
1792 AC_SUBST(capinfos_bin)
1793 AC_SUBST(capinfos_man)
1794
1795
1796 # Enable/disable mergecap
1797
1798 AC_ARG_ENABLE(mergecap,
1799   AC_HELP_STRING( [--enable-mergecap],
1800                   [build mergecap @<:@default=yes@:>@]),
1801     enable_mergecap=$enableval,enable_mergecap=yes)
1802
1803 if test "x$enable_mergecap" = "xyes" ; then
1804         mergecap_bin="mergecap\$(EXEEXT)"
1805         mergecap_man="mergecap.1"
1806 else
1807         mergecap_bin=""
1808         mergecap_man=""
1809 fi
1810 AC_SUBST(mergecap_bin)
1811 AC_SUBST(mergecap_man)
1812
1813
1814 # Enable/disable reordercap
1815
1816 AC_ARG_ENABLE(reordercap,
1817   AC_HELP_STRING( [--enable-reordercap],
1818                   [build reordercap @<:@default=yes@:>@]),
1819     enable_reordercap=$enableval,enable_reordercap=yes)
1820
1821 if test "x$enable_reordercap" = "xyes" ; then
1822         reordercap_bin="reordercap\$(EXEEXT)"
1823         reordercap_man="reordercap.1"
1824 else
1825         reordercap_bin=""
1826         reordercap_man=""
1827 fi
1828 AC_SUBST(reordercap_bin)
1829 AC_SUBST(reordercap_man)
1830
1831
1832 # Enable/disable text2pcap
1833
1834 AC_ARG_ENABLE(text2pcap,
1835   AC_HELP_STRING( [--enable-text2pcap],
1836                   [build text2pcap @<:@default=yes@:>@]),
1837     text2pcap=$enableval,enable_text2pcap=yes)
1838
1839 if test "x$enable_text2pcap" = "xyes" ; then
1840         text2pcap_bin="text2pcap\$(EXEEXT)"
1841         text2pcap_man="text2pcap.1"
1842 else
1843         text2pcap_bin=""
1844         text2pcap_man=""
1845 fi
1846 AC_SUBST(text2pcap_bin)
1847 AC_SUBST(text2pcap_man)
1848
1849
1850 # Enable/disable dftest
1851
1852 AC_ARG_ENABLE(dftest,
1853   AC_HELP_STRING( [--enable-dftest],
1854                   [build dftest @<:@default=yes@:>@]),
1855     enable_dftest=$enableval,enable_dftest=yes)
1856
1857 if test "x$enable_dftest" = "xyes" ; then
1858         dftest_bin="dftest\$(EXEEXT)"
1859         dftest_man="dftest.1"
1860 else
1861         dftest_bin=""
1862         dftest_man=""
1863 fi
1864 AC_SUBST(dftest_bin)
1865 AC_SUBST(dftest_man)
1866
1867
1868 # Enable/disable randpkt
1869
1870 AC_ARG_ENABLE(randpkt,
1871   AC_HELP_STRING( [--enable-randpkt],
1872                   [build randpkt @<:@default=yes@:>@]),
1873     enable_randpkt=$enableval,enable_randpkt=yes)
1874
1875 if test "x$enable_randpkt" = "xyes" ; then
1876         randpkt_bin="randpkt\$(EXEEXT)"
1877         randpkt_man="randpkt.1"
1878 else
1879         randpkt_bin=""
1880         randpkt_man=""
1881 fi
1882 AC_SUBST(randpkt_bin)
1883 AC_SUBST(randpkt_man)
1884
1885
1886
1887 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1888 dnl "gethostbyname()".
1889 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1890
1891 dnl Checks for "connect()", used as a proxy for "socket()" - and
1892 dnl "-lsocket", if we need it to get "connect()".
1893 AC_WIRESHARK_SOCKET_LIB_CHECK
1894
1895 dnl pcap check
1896 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1897
1898 AC_ARG_WITH(pcap,
1899   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1900                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1901 [
1902         if test $withval = no
1903         then
1904                 want_pcap=no
1905         elif test $withval = yes
1906         then
1907                 want_pcap=yes
1908         else
1909                 want_pcap=yes
1910                 pcap_dir=$withval
1911         fi
1912 ],[
1913         want_pcap=yes
1914         pcap_dir=
1915 ])
1916 if test "x$want_pcap" = "xno" ; then
1917         AC_MSG_RESULT(no)
1918 else
1919         AC_MSG_RESULT(yes)
1920         AC_WIRESHARK_PCAP_CHECK
1921 fi
1922
1923
1924 dnl Check for airpcap
1925 AC_MSG_CHECKING(whether to include airpcap support)
1926 AC_ARG_ENABLE(airpcap,
1927   AC_HELP_STRING( [--enable-airpcap],
1928                   [use AirPcap in Wireshark @<:@default=yes@:>@]),
1929   enable_airpcap=$enableval, enable_airpcap=yes)
1930
1931 if test x$enable_airpcap = xyes; then
1932         if test "x$want_pcap" = "xno" ; then
1933                 enable_airpcap=no
1934                 AC_MSG_RESULT(pcap not available - disabling airpcap)
1935         else
1936                 AC_MSG_RESULT(yes)
1937                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1938         fi
1939 else
1940         AC_MSG_RESULT(no)
1941 fi
1942
1943
1944 dnl dumpcap check
1945 AC_MSG_CHECKING(whether to build dumpcap)
1946
1947 AC_ARG_ENABLE(dumpcap,
1948   AC_HELP_STRING( [--enable-dumpcap],
1949                   [build dumpcap @<:@default=yes@:>@]),
1950     enable_dumpcap=$enableval,enable_dumpcap=yes)
1951
1952 if test "x$enable_dumpcap" = "xyes" ; then
1953         if test "x$want_pcap" = "xno" ; then
1954                 enable_dumpcap=no
1955                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1956         else
1957                 AC_MSG_RESULT(yes)
1958         fi
1959 else
1960         AC_MSG_RESULT(no)
1961 fi
1962
1963 if test "x$enable_dumpcap" = "xyes" ; then
1964         dumpcap_bin="dumpcap\$(EXEEXT)"
1965         dumpcap_man="dumpcap.1"
1966 else
1967         dumpcap_bin=""
1968         dumpcap_man=""
1969 fi
1970 AC_SUBST(dumpcap_bin)
1971 AC_SUBST(dumpcap_man)
1972
1973 # Enable/disable rawshark
1974
1975 dnl rawshark check
1976 AC_MSG_CHECKING(whether to build rawshark)
1977
1978 AC_ARG_ENABLE(rawshark,
1979   AC_HELP_STRING( [--enable-rawshark],
1980                   [build rawshark @<:@default=yes@:>@]),
1981     rawshark=$enableval,enable_rawshark=yes)
1982
1983 if test "x$enable_rawshark" = "xyes" ; then
1984         if test "x$want_pcap" = "xno" ; then
1985                 enable_rawshark=no
1986                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1987         else
1988                 AC_MSG_RESULT(yes)
1989         fi
1990 else
1991         AC_MSG_RESULT(no)
1992 fi
1993
1994 if test "x$enable_rawshark" = "xyes" ; then
1995         rawshark_bin="rawshark\$(EXEEXT)"
1996         rawshark_man="rawshark.1"
1997 else
1998         rawshark_bin=""
1999         rawshark_man=""
2000 fi
2001 AC_SUBST(rawshark_bin)
2002 AC_SUBST(rawshark_man)
2003
2004 dnl Use pcap-ng by default
2005 AC_ARG_ENABLE(pcap-ng-default,
2006   AC_HELP_STRING( [--enable-pcap-ng-default],
2007                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
2008     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
2009 if test x$enable_pcap_ng_default = xyes; then
2010         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
2011 fi
2012
2013 dnl pcap remote check
2014 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
2015
2016 AC_ARG_WITH(pcap-remote,
2017     AC_HELP_STRING([--with-pcap-remote],
2018                    [use libpcap remote capturing (requires libpcap)]),
2019 [
2020     if test $withval = no
2021     then
2022         want_pcap_remote=no
2023     else
2024         want_pcap_remote=yes
2025     fi
2026 ],[
2027     want_pcap_remote=no
2028 ])
2029 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
2030     AC_MSG_RESULT(no)
2031 else
2032     AC_MSG_RESULT(yes)
2033     AC_WIRESHARK_PCAP_REMOTE_CHECK
2034 fi
2035
2036 dnl zlib check
2037 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
2038
2039 AC_ARG_WITH(zlib,
2040   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
2041                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
2042 [
2043         if test "x$withval" = "xno"
2044         then
2045                 want_zlib=no
2046         elif test "x$withval" = "xyes"
2047         then
2048                 want_zlib=yes
2049         else
2050                 want_zlib=yes
2051                 zlib_dir="$withval"
2052         fi
2053 ],[
2054         #
2055         # Use zlib if it's present, otherwise don't.
2056         #
2057         want_zlib=ifavailable
2058         zlib_dir=
2059 ])
2060 if test "x$want_zlib" = "xno" ; then
2061         AC_MSG_RESULT(no)
2062 else
2063         AC_MSG_RESULT(yes)
2064         AC_WIRESHARK_ZLIB_CHECK
2065         if test "x$want_zlib" = "xno" ; then
2066                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
2067         else
2068                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
2069                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
2070                 fi
2071         fi
2072 fi
2073
2074 dnl Lua check
2075 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
2076
2077 AC_ARG_WITH(lua,
2078   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
2079                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
2080 [
2081         if test $withval = no
2082         then
2083                 want_lua=no
2084         elif test $withval = yes
2085         then
2086                 want_lua=yes
2087         else
2088                 want_lua=yes
2089                 lua_dir=$withval
2090         fi
2091 ],[
2092         #
2093         # Use liblua by default
2094         #
2095         want_lua=ifavailable
2096         lua_dir=
2097 ])
2098 if test "x$want_lua" = "xno" ; then
2099         AC_MSG_RESULT(no)
2100 else
2101         AC_MSG_RESULT(yes)
2102         AC_WIRESHARK_LIBLUA_CHECK
2103         if test "x$want_lua" = "xno" ; then
2104                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
2105         fi
2106 fi
2107 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
2108
2109
2110 dnl portaudio check
2111 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
2112
2113 AC_ARG_WITH(portaudio,
2114   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
2115                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
2116 [
2117         if test $withval = no
2118         then
2119                 want_portaudio=no
2120         elif test $withval = yes
2121         then
2122                 want_portaudio=yes
2123         else
2124                 want_portaudio=yes
2125                 portaudio_dir=$withval
2126         fi
2127 ],[
2128         #
2129         # Use libportaudio by default
2130         #
2131         want_portaudio=ifavailable
2132         portaudio_dir=
2133 ])
2134 if test "x$want_portaudio" = "xno" ; then
2135         AC_MSG_RESULT(no)
2136 else
2137         AC_MSG_RESULT(yes)
2138         AC_WIRESHARK_LIBPORTAUDIO_CHECK
2139         if test "x$want_portaudio" = "xno" ; then
2140                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
2141         fi
2142 fi
2143 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
2144
2145
2146 dnl ipv6 check
2147 AC_ARG_ENABLE(ipv6,
2148   AC_HELP_STRING( [--enable-ipv6],
2149                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
2150     enable_ipv6=$enableval,enable_ipv6=yes)
2151
2152 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
2153 if test "x$enable_ipv6" = "xno" ; then
2154         AC_MSG_RESULT(no)
2155 else
2156         AC_MSG_RESULT(yes)
2157         AC_WIRESHARK_IPV6_STACK
2158 fi
2159
2160
2161 dnl Check if dumpcap should be installed with filesystem capabilities
2162 AC_PATH_PROG(SETCAP, setcap)
2163 AC_ARG_ENABLE(setcap-install,
2164   AC_HELP_STRING( [--enable-setcap-install],
2165                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2166     enable_setcap_install=$enableval,enable_setcap_install=no)
2167
2168 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2169 if test "x$enable_setcap_install" = "xno" ; then
2170         AC_MSG_RESULT(no)
2171 else
2172         if test "x$SETCAP" = "x" ; then
2173                 AC_MSG_RESULT(no. Setcap not found)
2174         elif test "x$enable_dumpcap" = "xno" ; then
2175                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
2176         else
2177                 AC_MSG_RESULT(yes)
2178         fi
2179 fi
2180
2181 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2182
2183 dnl Check if dumpcap should be installed setuid
2184 AC_ARG_ENABLE(setuid-install,
2185   AC_HELP_STRING( [--enable-setuid-install],
2186                   [install dumpcap as setuid @<:@default=no@:>@]),
2187     enable_setuid_install=$enableval,enable_setuid_install=no)
2188
2189 AC_MSG_CHECKING(whether to install dumpcap setuid)
2190 if test "x$enable_setuid_install" = "xno" ; then
2191         AC_MSG_RESULT(no)
2192 else
2193         if test "x$enable_setcap_install" = "xyes" ; then
2194                 enable_setuid_install=no
2195                 AC_MSG_RESULT(no; using setcap instead)
2196         elif test "x$enable_dumpcap" = "xno" ; then
2197                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
2198         else
2199                 AC_MSG_RESULT(yes)
2200         fi
2201 fi
2202
2203 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2204 AC_CHECK_FUNCS(setresuid setresgid)
2205
2206 dnl ...but our Network Operations group is named "no"!
2207 DUMPCAP_GROUP=''
2208 AC_ARG_WITH(dumpcap-group,
2209   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2210                   [restrict dumpcap to GROUP]),
2211 [
2212   if test "x$withval" = "xyes"; then
2213       AC_MSG_ERROR([No dumpcap group specified.])
2214   elif test "x$withval" != "xno"; then
2215       if test "x$enable_dumpcap" = "xno" ; then
2216           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2217       fi
2218       AC_MSG_RESULT($withval)
2219       DUMPCAP_GROUP="$withval"
2220   fi
2221 ])
2222 AC_SUBST(DUMPCAP_GROUP)
2223 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2224
2225 dnl libcap (not libpcap) check
2226 LIBCAP_LIBS=''
2227 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2228
2229 AC_ARG_WITH(libcap,
2230   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2231                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2232 [
2233 if   test "x$withval" = "xno";  then
2234         want_libcap=no
2235 elif test "x$withval" = "xyes"; then
2236         want_libcap=yes
2237 elif test -d "$withval"; then
2238         want_libcap=yes
2239         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2240 fi
2241 ])
2242 if test "x$with_libcap" = "xno" ; then
2243         AC_MSG_RESULT(no)
2244 else
2245         AC_MSG_RESULT(yes)
2246         AC_WIRESHARK_LIBCAP_CHECK
2247 fi
2248 AC_SUBST(LIBCAP_LIBS)
2249
2250 dnl Checks for header files.
2251 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2252 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h getopt.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
2253 AC_CHECK_HEADERS(sys/ioctl.h sys/param.h sys/socket.h sys/sockio.h sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h)
2254 AC_CHECK_HEADERS(netinet/in.h)
2255 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2256
2257 dnl SSL Check
2258 SSL_LIBS=''
2259 AC_MSG_CHECKING(whether to use SSL library)
2260
2261 AC_ARG_WITH(ssl,
2262   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2263                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2264 [
2265 if test "x$withval" = "xno";  then
2266         want_ssl=no
2267 elif test "x$withval" = "xyes"; then
2268         want_ssl=yes
2269 elif test -d "$withval"; then
2270         want_ssl=yes
2271         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2272 fi
2273 ],[
2274         want_ssl=no
2275 ])
2276 if test "x$want_ssl" = "xyes"; then
2277         AC_MSG_RESULT(yes)
2278         AC_CHECK_LIB(crypto,EVP_md5,
2279             [
2280                 SSL_LIBS=-lcrypto
2281             ],
2282             [
2283                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2284             ])
2285 else
2286         AC_MSG_RESULT(no)
2287 fi
2288 AC_SUBST(SSL_LIBS)
2289
2290 dnl kerberos check
2291 AC_MSG_CHECKING(whether to use Kerberos library)
2292
2293 AC_ARG_WITH(krb5,
2294   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2295                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2296 [
2297         if test $withval = no
2298         then
2299                 want_krb5=no
2300         elif test $withval = yes
2301         then
2302                 want_krb5=yes
2303         else
2304                 want_krb5=yes
2305                 krb5_dir=$withval
2306         fi
2307 ],[
2308         #
2309         # Use Kerberos library if available, otherwise don't.
2310         #
2311         want_krb5=ifavailable
2312         krb5_dir=
2313 ])
2314 if test "x$want_krb5" = "xno" ; then
2315         AC_MSG_RESULT(no)
2316 else
2317         AC_MSG_RESULT(yes)
2318         AC_WIRESHARK_KRB5_CHECK
2319 fi
2320
2321
2322 dnl c-ares Check
2323 C_ARES_LIBS=''
2324 AC_MSG_CHECKING(whether to use the c-ares library if available)
2325
2326 AC_ARG_WITH(c-ares,
2327   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2328                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2329 [
2330 if   test "x$withval" = "xno";  then
2331         want_c_ares=no
2332 elif test "x$withval" = "xyes"; then
2333         want_c_ares=yes
2334 elif test -d "$withval"; then
2335         want_c_ares=yes
2336         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2337 fi
2338 ])
2339 if test "x$want_c_ares" = "xno" ; then
2340         AC_MSG_RESULT(no)
2341 else
2342         AC_MSG_RESULT(yes)
2343         AC_WIRESHARK_C_ARES_CHECK
2344 fi
2345 AC_SUBST(C_ARES_LIBS)
2346
2347 dnl ADNS Check
2348 ADNS_LIBS=''
2349 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2350
2351 AC_ARG_WITH(adns,
2352   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2353                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2354 [
2355 if   test "x$withval" = "xno";  then
2356         want_adns=no
2357 elif test "x$withval" = "xyes"; then
2358         want_adns=yes
2359 elif test -d "$withval"; then
2360         want_adns=yes
2361         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2362 fi
2363 ])
2364 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2365         AC_MSG_RESULT(no)
2366 else
2367         AC_MSG_RESULT(yes)
2368         AC_WIRESHARK_ADNS_CHECK
2369 fi
2370 AC_SUBST(ADNS_LIBS)
2371
2372 dnl GEOIP Check
2373 GEOIP_LIBS=''
2374 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2375
2376 AC_ARG_WITH(geoip,
2377   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2378                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2379 [
2380 if   test "x$withval" = "xno";  then
2381         want_geoip=no
2382 elif test "x$withval" = "xyes"; then
2383         want_geoip=yes
2384 elif test -d "$withval"; then
2385         want_geoip=yes
2386         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2387 fi
2388 ])
2389 if test "x$want_geoip" = "xno"; then
2390         AC_MSG_RESULT(no)
2391 else
2392         AC_MSG_RESULT(yes)
2393         AC_WIRESHARK_GEOIP_CHECK
2394 fi
2395 AC_SUBST(GEOIP_LIBS)
2396
2397 # Warning: this Python scripting appears to be broken (does not work at all).
2398 # Running it also causes Valgrind to complain about all sorts of memory errors.
2399 # Suggestion: do not enable it unless you are working on fixing it.
2400 #
2401 # An alternative might be https://code.google.com/p/pyreshark/
2402 #
2403 dnl Python devel Check
2404 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2405
2406 AC_ARG_WITH(broken-python,
2407     AC_HELP_STRING( [--with-broken-python@<:@=DIR@:>@],
2408                     [use the (BROKEN) Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@]),
2409 [
2410         pythondir='${libdir}/wireshark/python/${VERSION}'
2411         if test "x$withval" = "xno"
2412         then
2413                 want_python=no
2414         elif test "x$withval" = "xyes"
2415         then
2416                 want_python=yes
2417         else
2418                 want_python=yes
2419                 pythondir="$withval"
2420         fi
2421 ],[
2422         # By default (user didn't explicitly enable Python), don't enable
2423         # Python support.
2424         #
2425         want_python=no
2426         #pythondir='${libdir}/wireshark/python/${VERSION}'
2427 ])
2428 if test "x$want_python" = "xno" ; then
2429         AC_MSG_RESULT(no)
2430 else
2431         AC_MSG_RESULT(yes)
2432         AC_WIRESHARK_PYTHON_CHECK
2433 fi
2434 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2435 AC_SUBST(pythondir)
2436
2437 #
2438 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2439 # never return (just like Charlie on the MTA).
2440 #
2441 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2442 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2443 # follow the function name, so we need two different flavors of
2444 # noreturn tag.
2445 #
2446 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2447
2448 dnl Checks for typedefs, structures, and compiler characteristics.
2449 # AC_C_CONST
2450
2451 # Check how we can get the time zone abbreviation
2452 AC_WIRESHARK_TIMEZONE_ABBREV
2453
2454 # We need to know whether "struct stat" has an "st_flags" member
2455 # for file_user_immutable().
2456
2457 AC_WIRESHARK_STRUCT_ST_FLAGS
2458
2459 # We need to know whether "struct sockaddr" has an "sa_len" member
2460 # for get_interface_list().
2461
2462 AC_WIRESHARK_STRUCT_SA_LEN
2463
2464 # We must know our byte order
2465 AC_C_BIGENDIAN
2466
2467 # Checks whether "-traditional" is needed when using "ioctl".
2468 # XXX - do we need this?
2469 AC_PROG_GCC_TRADITIONAL
2470
2471 GETOPT_LO=""
2472 AC_CHECK_FUNC(getopt,
2473   [GETOPT_LO=""
2474    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2475   ],
2476   GETOPT_LO="wsgetopt.lo"
2477 )
2478 if test "$ac_cv_func_getopt" = no ; then
2479   GETOPT_LO="wsgetopt.lo"
2480 fi
2481 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2482 AC_SUBST(GETOPT_LO)
2483
2484 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2485   STRNCASECMP_LO="strncasecmp.lo")
2486 if test "$ac_cv_func_strncasecmp" = no ; then
2487   STRNCASECMP_LO="strncasecmp.lo"
2488 fi
2489 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2490 AC_SUBST(STRNCASECMP_LO)
2491
2492 AC_CHECK_FUNCS(mkstemp mkdtemp)
2493
2494 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2495     have_inet_aton=no)
2496 if test "$have_inet_aton" = no; then
2497   INET_ATON_LO="inet_aton.lo"
2498   AC_DEFINE(HAVE_INET_ATON_H, 0, [Define unless inet/aton.h needs to be included])
2499 else
2500   INET_ATON_LO=""
2501 fi
2502 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2503 AC_SUBST(INET_ATON_LO)
2504
2505 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2506   dnl check for pre-BIND82 inet_pton() bug.
2507   AC_MSG_CHECKING(for broken inet_pton)
2508   AC_TRY_RUN([#include <sys/types.h>
2509 #include <sys/socket.h>
2510 #include <netinet/in.h>
2511 #include <arpa/inet.h>
2512 int main()
2513 {
2514 #ifdef AF_INET6
2515   char buf[16];
2516   /* this should return 0 (error) */
2517   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2518 #else
2519   return 1;
2520 #endif
2521 }], [AC_MSG_RESULT(ok);
2522 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2523 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2524 have_inet_pton=no])],
2525 have_inet_pton=no)
2526 if test "$have_inet_pton" = no; then
2527   INET_PTON_LO="inet_pton.lo"
2528 else
2529   INET_PTON_LO=""
2530 fi
2531 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2532 AC_SUBST(INET_PTON_LO)
2533
2534 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2535   AC_MSG_CHECKING([for inet_ntop prototype])
2536   AC_TRY_COMPILE([#include <stdio.h>
2537 #include <sys/types.h>
2538 #include <sys/socket.h>
2539 #include <netinet/in.h>
2540 #include <arpa/inet.h>
2541
2542 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2543     AC_MSG_RESULT(yes)
2544     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2545     [Define if inet_ntop() prototype exists])], [
2546     AC_TRY_COMPILE([#include <stdio.h>
2547 #include <sys/types.h>
2548 #include <sys/socket.h>
2549 #include <netinet/in.h>
2550 #include <arpa/inet.h>
2551
2552 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2553       AC_MSG_RESULT(yes)
2554       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2555       [Define if inet_ntop() prototype exists])], [
2556       AC_MSG_RESULT(no)])])
2557   INET_NTOP_LO=""], [
2558   INET_NTOP_LO="inet_ntop.lo"
2559   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2560   [Define if inet/v6defs.h needs to be included])])
2561 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2562 AC_SUBST(INET_NTOP_LO)
2563
2564 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2565   [STRPTIME_LO="strptime.lo"
2566    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2567 ])
2568 if test "$ac_cv_func_strptime" = no ; then
2569   STRPTIME_LO="strptime.lo"
2570 fi
2571 AC_SUBST(STRPTIME_C)
2572 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2573 AC_SUBST(STRPTIME_LO)
2574
2575 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2576 AC_CHECK_FUNCS(issetugid)
2577 AC_CHECK_FUNCS(mmap mprotect sysconf)
2578
2579 dnl blank for now, but will be used in future
2580 AC_SUBST(wireshark_SUBDIRS)
2581
2582 dnl
2583 dnl check whether plugins should be enabled and, if they should be,
2584 dnl check for plugins directory - stolen from Amanda's configure.ac
2585 dnl
2586 dnl we don't wish to expand ${libdir} yet
2587 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2588 AC_ARG_WITH(plugins,
2589   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2590                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2591 [
2592   if test "x$withval" = "xno"; then
2593     have_plugins=no
2594   elif test "x$have_plugins" = "xno"; then
2595       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2596   elif test "x$withval" != "xyes"; then
2597       plugindir="$withval"
2598   fi
2599 ])
2600 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2601 if test x$have_plugins = xyes
2602 then
2603   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2604 fi
2605 AC_SUBST(plugindir)
2606 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2607
2608 #
2609 # The plugin dissectors reside in ./plugins/PROTO/
2610 #
2611 PLUGIN_LIBS=""
2612 AC_SUBST(PLUGIN_LIBS)
2613
2614 #
2615 # Check if (emem) memory allocations must be 8-byte aligned.
2616 # I haven't been able to write C code that reliably makes that determination
2617 # (different versions of GCC with or without optimization give different
2618 # results) so just assume everything except (32-bit) x86 needs 8-byte
2619 # alignment (64-bit platforms either require 8-byte alignment for pointers
2620 # and 64-bit integral data types or may get better performance from that;
2621 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2622 # platforms would only require it, or get better performance from it,
2623 # for 64-bit floating-point values.).
2624 #
2625 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2626 case $host_cpu in
2627         i386|i486|i586|i686)
2628                 AC_MSG_RESULT(no)
2629                 ;;
2630         *)
2631                 AC_MSG_RESULT(yes)
2632                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2633                 ;;
2634 esac
2635
2636 dnl libtool defs
2637 #
2638 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2639 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2640 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2641 #
2642 # With older version(s) of those tool(s), however, it's not just an
2643 # alias, and the configure scripts don't work without it.
2644 #
2645 AM_PROG_LIBTOOL
2646 AC_SUBST(LIBTOOL_DEPS)
2647
2648 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2649 if test x$enable_static = xyes -a x$have_plugins = xyes
2650 then
2651   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2652 fi
2653 AC_SUBST(ENABLE_STATIC)
2654
2655 dnl Save the cacheable configure results to config.cache before recursing
2656 AC_CACHE_SAVE
2657
2658 sinclude(plugins/Custom.m4) dnl
2659 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2660
2661 sinclude(asn1/Custom.m4) dnl
2662 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2663
2664 AC_CONFIG_HEADERS(config.h)
2665 AC_OUTPUT(
2666   Makefile
2667   doxygen.cfg
2668   asn1/Makefile
2669   _CUSTOM_ASN1_AC_OUTPUT_
2670   asn1/acp133/Makefile
2671   asn1/acse/Makefile
2672   asn1/ansi_map/Makefile
2673   asn1/ansi_tcap/Makefile
2674   asn1/atn-cm/Makefile
2675   asn1/atn-cpdlc/Makefile
2676   asn1/atn-ulcs/Makefile
2677   asn1/c1222/Makefile
2678   asn1/camel/Makefile
2679   asn1/cdt/Makefile
2680   asn1/charging_ase/Makefile
2681   asn1/cmip/Makefile
2682   asn1/cmp/Makefile
2683   asn1/crmf/Makefile
2684   asn1/cms/Makefile
2685   asn1/credssp/Makefile
2686   asn1/dap/Makefile
2687   asn1/disp/Makefile
2688   asn1/dop/Makefile
2689   asn1/dsp/Makefile
2690   asn1/ess/Makefile
2691   asn1/ftam/Makefile
2692   asn1/gnm/Makefile
2693   asn1/goose/Makefile
2694   asn1/gprscdr/Makefile
2695   asn1/gsm_map/Makefile
2696   asn1/h225/Makefile
2697   asn1/h235/Makefile
2698   asn1/h245/Makefile
2699   asn1/h248/Makefile
2700   asn1/h282/Makefile
2701   asn1/h283/Makefile
2702   asn1/h323/Makefile
2703   asn1/h450/Makefile
2704   asn1/h450-ros/Makefile
2705   asn1/h460/Makefile
2706   asn1/h501/Makefile
2707   asn1/HI2Operations/Makefile
2708   asn1/hnbap/Makefile
2709   asn1/idmp/Makefile
2710   asn1/ilp/Makefile
2711   asn1/inap/Makefile
2712   asn1/isdn-sup/Makefile
2713   asn1/kerberos/Makefile
2714   asn1/lcsap/Makefile
2715   asn1/ldap/Makefile
2716   asn1/logotypecertextn/Makefile
2717   asn1/lpp/Makefile
2718   asn1/lppa/Makefile
2719   asn1/lppe/Makefile
2720   asn1/lte-rrc/Makefile
2721   asn1/m3ap/Makefile
2722   asn1/mms/Makefile
2723   asn1/mpeg-audio/Makefile
2724   asn1/mpeg-pes/Makefile
2725   asn1/nbap/Makefile
2726   asn1/ns_cert_exts/Makefile
2727   asn1/ocsp/Makefile
2728   asn1/p1/Makefile
2729   asn1/p22/Makefile
2730   asn1/p7/Makefile
2731   asn1/p772/Makefile
2732   asn1/pcap/Makefile
2733   asn1/pkcs1/Makefile
2734   asn1/pkcs12/Makefile
2735   asn1/pkinit/Makefile
2736   asn1/pkixac/Makefile
2737   asn1/pkix1explicit/Makefile
2738   asn1/pkix1implicit/Makefile
2739   asn1/pkixproxy/Makefile
2740   asn1/pkixqualified/Makefile
2741   asn1/pkixtsp/Makefile
2742   asn1/pres/Makefile
2743   asn1/q932/Makefile
2744   asn1/q932-ros/Makefile
2745   asn1/qsig/Makefile
2746   asn1/ranap/Makefile
2747   asn1/rnsap/Makefile
2748   asn1/ros/Makefile
2749   asn1/rrc/Makefile
2750   asn1/rrlp/Makefile
2751   asn1/rtse/Makefile
2752   asn1/rua/Makefile
2753   asn1/s1ap/Makefile
2754   asn1/sabp/Makefile
2755   asn1/sbc-ap/Makefile
2756   asn1/smrse/Makefile
2757   asn1/snmp/Makefile
2758   asn1/spnego/Makefile
2759   asn1/sv/Makefile
2760   asn1/t124/Makefile
2761   asn1/t125/Makefile
2762   asn1/t38/Makefile
2763   asn1/tcap/Makefile
2764   asn1/tetra/Makefile
2765   asn1/ulp/Makefile
2766   asn1/wlancertextn/Makefile
2767   asn1/x2ap/Makefile
2768   asn1/x509af/Makefile
2769   asn1/x509ce/Makefile
2770   asn1/x509if/Makefile
2771   asn1/x509sat/Makefile
2772   asn1/x721/Makefile
2773   doc/Makefile
2774   docbook/Makefile
2775   epan/Makefile
2776   epan/crypt/Makefile
2777   epan/doxygen.cfg
2778   epan/dfilter/Makefile
2779   epan/dissectors/Makefile
2780   epan/dissectors/dcerpc/Makefile
2781   epan/dissectors/pidl/Makefile
2782   epan/ftypes/Makefile
2783   epan/wmem/Makefile
2784   epan/wslua/Makefile
2785   epan/wspython/Makefile
2786   codecs/Makefile
2787   ui/Makefile
2788   ui/doxygen.cfg
2789   ui/gtk/Makefile
2790   ui/gtk/doxygen.cfg
2791   ui/cli/Makefile
2792   ui/qt/Makefile
2793   ui/qt/doxygen.cfg
2794   help/Makefile
2795   packaging/Makefile
2796   packaging/macosx/Info.plist
2797   packaging/macosx/Makefile
2798   packaging/macosx/osx-dmg.sh
2799   packaging/macosx/Wireshark_package.pmdoc/index.xml
2800   packaging/nsis/Makefile
2801   packaging/rpm/Makefile
2802   packaging/rpm/SPECS/Makefile
2803   packaging/rpm/SPECS/wireshark.spec
2804   packaging/svr4/Makefile
2805   packaging/svr4/checkinstall
2806   packaging/svr4/pkginfo
2807   plugins/Makefile
2808   plugins/asn1/Makefile
2809   plugins/docsis/Makefile
2810   plugins/ethercat/Makefile
2811   plugins/gryphon/Makefile
2812   plugins/irda/Makefile
2813   plugins/m2m/Makefile
2814   plugins/mate/Makefile
2815   plugins/opcua/Makefile
2816   plugins/profinet/Makefile
2817   plugins/stats_tree/Makefile
2818   plugins/unistim/Makefile
2819   plugins/wimax/Makefile
2820   plugins/wimaxasncp/Makefile
2821   plugins/wimaxmacphy/Makefile
2822   tools/Makefile
2823   tools/lemon/Makefile
2824   wiretap/Makefile
2825   wsutil/Makefile
2826   echld/Makefile
2827   _CUSTOM_AC_OUTPUT_
2828   ,)
2829 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2830
2831
2832 # Pretty messages
2833
2834 if test "x$have_gtk" = "xyes"; then
2835         if test "x$with_gtk3" = "xyes"; then
2836                 gtk_lib_message=" (with GTK+ 3"
2837         else
2838                 gtk_lib_message=" (with GTK+ 2"
2839         fi
2840         if test "x$have_ige_mac" = "xyes"; then
2841                 gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
2842         else
2843                 gtk_lib_message="$gtk_lib_message)"
2844         fi
2845 fi
2846
2847 if test "x$have_qt" = "xyes" ; then
2848         enable_qtshark="yes"
2849 else
2850         enable_qtshark="no"
2851 fi
2852
2853 if test "x$enable_setcap_install" = "xyes" ; then
2854         setcap_message="yes"
2855 else
2856         setcap_message="no"
2857 fi
2858
2859 if test "x$enable_setuid_install" = "xyes" ; then
2860         setuid_message="yes"
2861 else
2862         setuid_message="no"
2863 fi
2864
2865 if test "x$DUMPCAP_GROUP" = "x" ; then
2866         dumpcap_group_message="(none)"
2867 else
2868         dumpcap_group_message="$DUMPCAP_GROUP"
2869 fi
2870
2871 if test "x$want_zlib" = "xno" ; then
2872         zlib_message="no"
2873 else
2874         zlib_message="yes"
2875 fi
2876
2877 if test "x$want_lua" = "xyes" ; then
2878         lua_message="yes"
2879 else
2880         lua_message="no"
2881 fi
2882
2883 if test "x$want_python" = "xno"; then
2884         python_message="no"
2885 else
2886         python_message="yes"
2887 fi
2888
2889 if test "x$want_portaudio" = "xyes" ; then
2890         portaudio_message="yes"
2891 else
2892         portaudio_message="no"
2893 fi
2894
2895 if test "x$want_ssl" = "xno" ; then
2896         ssl_message="no"
2897 else
2898         ssl_message="yes"
2899 fi
2900
2901 if test "x$want_krb5" = "xno" ; then
2902         krb5_message="no"
2903 else
2904         krb5_message="yes ($ac_krb5_version)"
2905 fi
2906
2907 if test "x$have_good_c_ares" = "xyes" ; then
2908         c_ares_message="yes"
2909 else
2910         c_ares_message="no"
2911 fi
2912
2913 if test "x$have_good_adns" = "xyes" ; then
2914         adns_message="yes"
2915 else
2916         if test "x$have_good_c_ares" = "xyes" ; then
2917                 adns_message="no (using c-ares instead)"
2918         else
2919                 adns_message="no"
2920         fi
2921 fi
2922
2923 if test "x$have_good_libcap" = "xyes" ; then
2924         libcap_message="yes"
2925 else
2926         libcap_message="no"
2927 fi
2928
2929 if test "x$have_good_geoip" = "xyes" ; then
2930         geoip_message="yes"
2931 else
2932         geoip_message="no"
2933 fi
2934
2935 echo ""
2936 echo "The Wireshark package has been configured with the following options."
2937 echo "             Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message"
2938 echo "                 Build wireshark-qt : $enable_qtshark"
2939 echo "                       Build tshark : $enable_tshark"
2940 echo "                     Build capinfos : $enable_capinfos"
2941 echo "                      Build editcap : $enable_editcap"
2942 echo "                      Build dumpcap : $enable_dumpcap"
2943 echo "                     Build mergecap : $enable_mergecap"
2944 echo "                   Build reordercap : $enable_reordercap"
2945 echo "                    Build text2pcap : $enable_text2pcap"
2946 echo "                      Build randpkt : $enable_randpkt"
2947 echo "                       Build dftest : $enable_dftest"
2948 echo "                     Build rawshark : $enable_rawshark"
2949 echo "                        Build echld : $have_echld"
2950 echo ""
2951 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2952 echo "  Install dumpcap with capabilities : $setcap_message"
2953 echo "             Install dumpcap setuid : $setuid_message"
2954 echo "                  Use dumpcap group : $dumpcap_group_message"
2955 echo "                        Use plugins : $have_plugins"
2956 echo "                    Use Lua library : $lua_message"
2957 echo "                 Use Python binding : $python_message"
2958 echo "                   Build rtp_player : $portaudio_message"
2959 echo "             Build profile binaries : $enable_profile_build"
2960 echo "                   Use pcap library : $want_pcap"
2961 echo "                   Use zlib library : $zlib_message"
2962 echo "               Use kerberos library : $krb5_message"
2963 echo "                 Use c-ares library : $c_ares_message"
2964 echo "               Use GNU ADNS library : $adns_message"
2965 echo "                Use SMI MIB library : $libsmi_message"
2966 echo "             Use GNU crypto library : $gcrypt_message"
2967 echo "             Use SSL crypto library : $ssl_message"
2968 echo "           Use IPv6 name resolution : $enable_ipv6"
2969 echo "                 Use gnutls library : $tls_message"
2970 echo "     Use POSIX capabilities library : $libcap_message"
2971 echo "                  Use GeoIP library : $geoip_message"
2972 echo "                     Use nl library : $libnl_message"