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