Use macdeployqt to add the Qt bits to our bundle. Put our libraries in
[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                 ],
1350                 [AC_MSG_ERROR([Qt is not available])])
1351
1352                 #
1353                 # XXX - greasy hack to make ui/gtk/recent.c
1354                 # compile.
1355                 #
1356                 CPPFLAGS="-DQT_GUI_LIB"
1357         fi
1358
1359         if test "x$with_gtk3" = "xyes"; then
1360                 #
1361                 # GTK+ 3 was specified; make sure they didn't also
1362                 # specify GTK+ 2, as we don't support building both
1363                 # GTK+ 2 and GTK+ 3 versions at the same time.
1364                 #
1365                 if test "x$with_gtk2" = "xyes"; then
1366                         AC_MSG_ERROR([Both GTK+ 2 and GTK+ 3 were specified; choose one but not both])
1367                 fi
1368
1369                 #
1370                 # Make sure we have GTK+ 3.
1371                 #
1372                 AM_PATH_GTK_3_0(3.0.0,
1373                 [
1374                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1375                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1376                         have_gtk=yes
1377                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk3"
1378                 ],
1379                 [AC_MSG_ERROR([GTK+ 3 is not available])])
1380         elif test "x$with_gtk2" = "xyes"; then
1381                 #
1382                 # GTK+ 3 wasn't specified, and GTK+ 2 was specified;
1383                 # make sure we have GTK+ 2.
1384                 #
1385                 AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1386                 [
1387                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1388                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1389                         have_gtk=yes
1390                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk2"
1391                 ],
1392                 [AC_MSG_ERROR([GTK+ 2 is not available])])
1393         fi
1394 fi
1395 AC_SUBST(GUI_CONFIGURE_FLAGS)
1396
1397 GLIB_MIN_VERSION=2.16.0
1398 AC_SUBST(GLIB_MIN_VERSION)
1399 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1400 # support, as we need that for dynamically loading plugins.
1401 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1402 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1403 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1404 # GLIB_CFLAGS to CFLAGS.
1405 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1406 # set when generating the Makefile, so we can make programs that require
1407 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1408 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1409 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1410 # programs to be built with GLib.
1411 #
1412 # Release dates for GLib versions:
1413 # 2.14.0: 03 Aug 2007
1414 # 2.16.0: 10 Mar 2008
1415 # 2.18.0: 02 Sep 2008
1416 # 2.20.0: 13 Mar 2009
1417 # 2.22.0: 22 Sep 2009
1418 # 2.24.0: 28 Mar 2010
1419 # 2.26.0: 27 Sep 2010
1420 # 2.28.0: 08 Feb 2011
1421 # 2.30.0: 27 Sep 2011
1422 # 2.32.0: 24 Mar 2012
1423 # 2.34.0: 24 Sep 2012
1424 # 2.36.0: 25 Mar 2013
1425
1426 use_glib_cflags="true"
1427 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1428         # We have both GTK and Qt and thus will be building both wireshark
1429         # and wireshark-qt.
1430
1431         wireshark_bin="wireshark\$(EXEEXT) wireshark-qt\$(EXEEXT)"
1432         wireshark_man="wireshark.1"
1433         wireshark_SUBDIRS="codecs ui/qt ui/gtk"
1434 fi
1435 if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1436         # We don't have GTK+ but we have Qt.
1437
1438         wireshark_bin="wireshark-qt\$(EXEEXT)"
1439         wireshark_man="wireshark.1"
1440         wireshark_SUBDIRS="codecs ui/qt"
1441 fi
1442 if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1443         # We have GTK+ but not Qt.
1444
1445         wireshark_bin="wireshark\$(EXEEXT)"
1446         wireshark_man="wireshark.1"
1447         wireshark_SUBDIRS="codecs ui/gtk"
1448         use_glib_cflags="false"
1449 fi
1450 if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1451         # We have neither GTK+ nor Qt.
1452         #
1453         # If they didn't explicitly say "--disable-wireshark",
1454         # fail (so that, unless they explicitly indicated that
1455         # they don't want Wireshark, we stop so they know they
1456         # won't be getting Wireshark unless they fix the GTK+/Qt
1457         # problem).
1458         #
1459         if test "x$enable_wireshark" = "xyes"; then
1460                 if test "x$with_gtk3" = "xyes"; then
1461                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled])
1462                 else
1463                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1464                 fi
1465         fi
1466         wireshark_bin=""
1467         wireshark_man=""
1468 fi
1469
1470 if test "$have_gtk" = "yes" ; then
1471         # If we have GTK then add flags for it.
1472
1473         CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1474         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1475         CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1476         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1477         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1478                 # Enable GSEAL when building with GTK > 2.20
1479                 # (Versions prior to 2.22 lacked some necessary accessors.)
1480                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1481         fi
1482 fi
1483
1484 # XXX - Is this really necessary?  When we build with both Gtk+ and Qt it works...
1485 if test "$use_glib_cflags" = "true"; then
1486         # Use GLIB_CFLAGS
1487         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1488         [
1489                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1490                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1491         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1492 else
1493         # Don't use GLIB_CFLAGS
1494         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1495 fi
1496
1497 #
1498 # "make dist" requires that we have the Qt build tools.
1499 #
1500 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1501 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1502 # installed; if they're still doing that in current Fedora releases,
1503 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1504 #
1505 AC_PATH_PROG(UIC, uic)
1506 if test "x$UIC" = x
1507 then
1508         AC_PATH_PROG(UIC, uic-qt4)
1509         if test "x$UIC" = x
1510         then
1511                 if test "x$with_qt" = "xyes"; then
1512                         #
1513                         # If you want to build with Qt, you'd better
1514                         # have uic.
1515                         #
1516                         AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1517                 else
1518                         #
1519                         # We shouldn't fail here, as the user's not
1520                         # building with Qt, and we shouldn't force them
1521                         # to have Qt installed if they're not doing so.
1522                         # "make dist" will fail if they do that, but
1523                         # we don't know whether they'll be doing that,
1524                         # so this is the best we can do.
1525                         #
1526                         UIC=uic
1527                 fi
1528         fi
1529 fi
1530 AC_SUBST(UIC)
1531 AC_PATH_PROG(MOC, moc)
1532 if test "x$MOC" = x
1533 then
1534         AC_PATH_PROG(MOC, moc-qt4)
1535         if test "x$MOC" = x
1536         then
1537                 if test "x$with_qt" = "xyes"; then
1538                         #
1539                         # If you want to build with Qt, you'd better
1540                         # have moc.
1541                         #
1542                         AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1543                 else
1544                         #
1545                         # We shouldn't fail here, as the user's not
1546                         # building with Qt, and we shouldn't force them
1547                         # to have Qt installed if they're not doing so.
1548                         # "make dist" will fail if they do that, but
1549                         # we don't know whether they'll be doing that,
1550                         # so this is the best we can do.
1551                         #
1552                         MIC=moc
1553                 fi
1554         fi
1555 fi
1556 AC_SUBST(MOC)
1557
1558 # Error out if a glib header other than a "top level" header
1559 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1560 #  is used.
1561 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1562
1563 # Error out on the usage of deprecated glib functions
1564 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1565
1566 #
1567 # Check whether GLib modules are supported, to determine whether we
1568 # can support plugins.
1569 #
1570 AC_MSG_CHECKING(whether GLib supports loadable modules)
1571 ac_save_CFLAGS="$CFLAGS"
1572 ac_save_LIBS="$LIBS"
1573 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1574 LIBS="$GLIB_LIBS $LIBS"
1575 AC_TRY_RUN([
1576 #include <glib.h>
1577 #include <gmodule.h>
1578 #include <stdio.h>
1579 #include <stdlib.h>
1580
1581 int
1582 main ()
1583 {
1584   if (g_module_supported())
1585     return 0;   /* success */
1586   else
1587     return 1;   /* failure */
1588 }
1589 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1590    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1591     ac_cv_glib_supports_modules=yes])
1592 CFLAGS="$ac_save_CFLAGS"
1593 LIBS="$ac_save_LIBS"
1594 if test "$ac_cv_glib_supports_modules" = yes ; then
1595   AC_MSG_RESULT(yes)
1596   have_plugins=yes
1597 else
1598   AC_MSG_RESULT(no)
1599   have_plugins=no
1600 fi
1601
1602 #
1603 # If we have <dlfcn.h>, check whether we have dladdr.
1604 #
1605 if test "$ac_cv_header_dlfcn_h" = "yes"
1606 then
1607         #
1608         # Use GLib compiler flags and linker flags; GLib's gmodule
1609         # stuff uses the dl APIs if available, so it might know
1610         # what flags are needed.
1611         #
1612         ac_save_CFLAGS="$CFLAGS"
1613         ac_save_LIBS="$LIBS"
1614         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1615         LIBS="$GLIB_LIBS $LIBS"
1616         AC_CHECK_FUNCS(dladdr)
1617         if test x$ac_cv_func_dladdr = xno
1618         then
1619                 #
1620                 # OK, try it with -ldl, in case you need that to get
1621                 # dladdr().  For some reason, on Linux, that's not
1622                 # part of the GLib flags; perhaps GLib itself is
1623                 # linked with libdl, so that you can link with
1624                 # Glib and it'll pull libdl in itself.
1625                 #
1626                 LIBS="$LIBS -ldl"
1627                 AC_CHECK_FUNCS(dladdr)
1628         fi
1629         CFLAGS="$ac_save_CFLAGS"
1630         LIBS="$ac_save_LIBS"
1631 fi
1632
1633 #
1634 # Check whether GLib's printf supports thousands grouping. (This might
1635 # be different from the system's printf since GLib can optionally use
1636 # its own printf implementation.)
1637 #
1638 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1639 ac_save_CFLAGS="$CFLAGS"
1640 ac_save_LIBS="$LIBS"
1641 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1642 LIBS="$GLIB_LIBS $LIBS"
1643 AC_TRY_RUN([
1644 #include <glib.h>
1645 #include <locale.h>
1646 #include <stdio.h>
1647 #include <string.h>
1648
1649 int
1650 main ()
1651 {
1652   gchar *str;
1653   setlocale(LC_ALL, "en_US.UTF-8");
1654   str = g_strdup_printf("%'u", 123456);
1655   return (strcmp (str, "123,456") != 0);
1656 }
1657 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1658    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1659     ac_cv_glib_supports_printf_grouping=no])
1660 CFLAGS="$ac_save_CFLAGS"
1661 LIBS="$ac_save_LIBS"
1662 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1663   AC_MSG_RESULT(yes)
1664   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1665 else
1666   AC_MSG_RESULT(no)
1667 fi
1668
1669 if test "x$have_gtk" = "xyes"
1670 then
1671     #
1672     # We have GTK+; do we want the OS X integration functions and,
1673     # if so, do we have them and, if so, which versions do we have,
1674     # the old Carbon-based ones or the new Cocoa-based ones?
1675     #
1676     AC_MSG_CHECKING(whether to use OS X integration functions)
1677
1678     AC_ARG_WITH(osx-integration,
1679       AC_HELP_STRING( [--with-osx-integration],
1680                       [use OS X integration functions @<:@default=yes, if available@:>@]),
1681     [
1682         if test $withval = no
1683         then
1684             want_osx_integration=no
1685         else
1686             want_osx_integration=yes
1687         fi
1688     ],[
1689         want_osx_integration=yes
1690     ])
1691     if test "x$want_osx_integration" = "xno"; then
1692         AC_MSG_RESULT(no)
1693     else
1694         AC_MSG_RESULT(yes)
1695         AC_WIRESHARK_OSX_INTEGRATION_CHECK
1696     fi
1697 fi
1698
1699 AC_SUBST(wireshark_bin)
1700 AC_SUBST(wireshark_man)
1701 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1702 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
1703 AC_SUBST(OSX_APP_FLAGS)
1704
1705
1706 # Enable/disable tshark
1707
1708 AC_ARG_ENABLE(tshark,
1709   AC_HELP_STRING( [--enable-tshark],
1710                   [build TShark @<:@default=yes@:>@]),
1711     tshark=$enableval,enable_tshark=yes)
1712
1713 if test "x$enable_tshark" = "xyes" ; then
1714         tshark_bin="tshark\$(EXEEXT)"
1715         tshark_man="tshark.1"
1716         wiresharkfilter_man="wireshark-filter.4"
1717 else
1718         tshark_bin=""
1719         tshark_man=""
1720 fi
1721 AC_SUBST(tshark_bin)
1722 AC_SUBST(tshark_man)
1723 AC_SUBST(wiresharkfilter_man)
1724
1725
1726
1727 # Enable/disable editcap
1728
1729 AC_ARG_ENABLE(editcap,
1730   AC_HELP_STRING( [--enable-editcap],
1731                   [build editcap @<:@default=yes@:>@]),
1732     enable_editcap=$enableval,enable_editcap=yes)
1733
1734 if test "x$enable_editcap" = "xyes" ; then
1735         editcap_bin="editcap\$(EXEEXT)"
1736         editcap_man="editcap.1"
1737 else
1738         editcap_bin=""
1739         editcap_man=""
1740 fi
1741 AC_SUBST(editcap_bin)
1742 AC_SUBST(editcap_man)
1743
1744
1745
1746 # Enable/disable echld
1747
1748 AC_ARG_ENABLE(echld,
1749   AC_HELP_STRING( [--enable-echld],
1750                   [support echld]),
1751     have_echld=$enableval,have_echld=no)
1752
1753 AM_CONDITIONAL(HAVE_ECHLD, test "x$have_echld" = "xyes")
1754 if test "x$have_echld" = "xyes"
1755 then
1756   AC_DEFINE(HAVE_ECHLD, 1, [Define if echld is enabled])
1757   echld_test_bin="echld_test\$(EXEEXT)"
1758   echld_dir="echld"
1759 else
1760   have_echld="no"
1761   echld_test_bin=""
1762   echld_dir=""
1763 fi
1764 AC_SUBST(echld_test_bin)
1765 AC_SUBST(echld_dir)
1766
1767
1768 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1769 # or not)
1770
1771 # Enable/disable capinfos
1772
1773 AC_ARG_ENABLE(capinfos,
1774   AC_HELP_STRING( [--enable-capinfos],
1775                   [build capinfos @<:@default=yes@:>@]),
1776     enable_capinfos=$enableval,enable_capinfos=yes)
1777
1778 if test "x$enable_capinfos" = "xyes" ; then
1779         capinfos_bin="capinfos\$(EXEEXT)"
1780         capinfos_man="capinfos.1"
1781 else
1782         capinfos_bin=""
1783         capinfos_man=""
1784 fi
1785 AC_SUBST(capinfos_bin)
1786 AC_SUBST(capinfos_man)
1787
1788
1789 # Enable/disable mergecap
1790
1791 AC_ARG_ENABLE(mergecap,
1792   AC_HELP_STRING( [--enable-mergecap],
1793                   [build mergecap @<:@default=yes@:>@]),
1794     enable_mergecap=$enableval,enable_mergecap=yes)
1795
1796 if test "x$enable_mergecap" = "xyes" ; then
1797         mergecap_bin="mergecap\$(EXEEXT)"
1798         mergecap_man="mergecap.1"
1799 else
1800         mergecap_bin=""
1801         mergecap_man=""
1802 fi
1803 AC_SUBST(mergecap_bin)
1804 AC_SUBST(mergecap_man)
1805
1806
1807 # Enable/disable reordercap
1808
1809 AC_ARG_ENABLE(reordercap,
1810   AC_HELP_STRING( [--enable-reordercap],
1811                   [build reordercap @<:@default=yes@:>@]),
1812     enable_reordercap=$enableval,enable_reordercap=yes)
1813
1814 if test "x$enable_reordercap" = "xyes" ; then
1815         reordercap_bin="reordercap\$(EXEEXT)"
1816         reordercap_man="reordercap.1"
1817 else
1818         reordercap_bin=""
1819         reordercap_man=""
1820 fi
1821 AC_SUBST(reordercap_bin)
1822 AC_SUBST(reordercap_man)
1823
1824
1825 # Enable/disable text2pcap
1826
1827 AC_ARG_ENABLE(text2pcap,
1828   AC_HELP_STRING( [--enable-text2pcap],
1829                   [build text2pcap @<:@default=yes@:>@]),
1830     text2pcap=$enableval,enable_text2pcap=yes)
1831
1832 if test "x$enable_text2pcap" = "xyes" ; then
1833         text2pcap_bin="text2pcap\$(EXEEXT)"
1834         text2pcap_man="text2pcap.1"
1835 else
1836         text2pcap_bin=""
1837         text2pcap_man=""
1838 fi
1839 AC_SUBST(text2pcap_bin)
1840 AC_SUBST(text2pcap_man)
1841
1842
1843 # Enable/disable dftest
1844
1845 AC_ARG_ENABLE(dftest,
1846   AC_HELP_STRING( [--enable-dftest],
1847                   [build dftest @<:@default=yes@:>@]),
1848     enable_dftest=$enableval,enable_dftest=yes)
1849
1850 if test "x$enable_dftest" = "xyes" ; then
1851         dftest_bin="dftest\$(EXEEXT)"
1852         dftest_man="dftest.1"
1853 else
1854         dftest_bin=""
1855         dftest_man=""
1856 fi
1857 AC_SUBST(dftest_bin)
1858 AC_SUBST(dftest_man)
1859
1860
1861 # Enable/disable randpkt
1862
1863 AC_ARG_ENABLE(randpkt,
1864   AC_HELP_STRING( [--enable-randpkt],
1865                   [build randpkt @<:@default=yes@:>@]),
1866     enable_randpkt=$enableval,enable_randpkt=yes)
1867
1868 if test "x$enable_randpkt" = "xyes" ; then
1869         randpkt_bin="randpkt\$(EXEEXT)"
1870         randpkt_man="randpkt.1"
1871 else
1872         randpkt_bin=""
1873         randpkt_man=""
1874 fi
1875 AC_SUBST(randpkt_bin)
1876 AC_SUBST(randpkt_man)
1877
1878
1879
1880 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1881 dnl "gethostbyname()".
1882 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1883
1884 dnl Checks for "connect()", used as a proxy for "socket()" - and
1885 dnl "-lsocket", if we need it to get "connect()".
1886 AC_WIRESHARK_SOCKET_LIB_CHECK
1887
1888 dnl pcap check
1889 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1890
1891 AC_ARG_WITH(pcap,
1892   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1893                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1894 [
1895         if test $withval = no
1896         then
1897                 want_pcap=no
1898         elif test $withval = yes
1899         then
1900                 want_pcap=yes
1901         else
1902                 want_pcap=yes
1903                 pcap_dir=$withval
1904         fi
1905 ],[
1906         want_pcap=yes
1907         pcap_dir=
1908 ])
1909 if test "x$want_pcap" = "xno" ; then
1910         AC_MSG_RESULT(no)
1911 else
1912         AC_MSG_RESULT(yes)
1913         AC_WIRESHARK_PCAP_CHECK
1914 fi
1915
1916
1917 dnl Check for airpcap
1918 AC_MSG_CHECKING(whether to include airpcap support)
1919 AC_ARG_ENABLE(airpcap,
1920   AC_HELP_STRING( [--enable-airpcap],
1921                   [use AirPcap in Wireshark @<:@default=yes@:>@]),
1922   enable_airpcap=$enableval, enable_airpcap=yes)
1923
1924 if test x$enable_airpcap = xyes; then
1925         if test "x$want_pcap" = "xno" ; then
1926                 enable_airpcap=no
1927                 AC_MSG_RESULT(pcap not available - disabling airpcap)
1928         else
1929                 AC_MSG_RESULT(yes)
1930                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1931         fi
1932 else
1933         AC_MSG_RESULT(no)
1934 fi
1935
1936
1937 dnl dumpcap check
1938 AC_MSG_CHECKING(whether to build dumpcap)
1939
1940 AC_ARG_ENABLE(dumpcap,
1941   AC_HELP_STRING( [--enable-dumpcap],
1942                   [build dumpcap @<:@default=yes@:>@]),
1943     enable_dumpcap=$enableval,enable_dumpcap=yes)
1944
1945 if test "x$enable_dumpcap" = "xyes" ; then
1946         if test "x$want_pcap" = "xno" ; then
1947                 enable_dumpcap=no
1948                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1949         else
1950                 AC_MSG_RESULT(yes)
1951         fi
1952 else
1953         AC_MSG_RESULT(no)
1954 fi
1955
1956 if test "x$enable_dumpcap" = "xyes" ; then
1957         dumpcap_bin="dumpcap\$(EXEEXT)"
1958         dumpcap_man="dumpcap.1"
1959 else
1960         dumpcap_bin=""
1961         dumpcap_man=""
1962 fi
1963 AC_SUBST(dumpcap_bin)
1964 AC_SUBST(dumpcap_man)
1965
1966 # Enable/disable rawshark
1967
1968 dnl rawshark check
1969 AC_MSG_CHECKING(whether to build rawshark)
1970
1971 AC_ARG_ENABLE(rawshark,
1972   AC_HELP_STRING( [--enable-rawshark],
1973                   [build rawshark @<:@default=yes@:>@]),
1974     rawshark=$enableval,enable_rawshark=yes)
1975
1976 if test "x$enable_rawshark" = "xyes" ; then
1977         if test "x$want_pcap" = "xno" ; then
1978                 enable_rawshark=no
1979                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1980         else
1981                 AC_MSG_RESULT(yes)
1982         fi
1983 else
1984         AC_MSG_RESULT(no)
1985 fi
1986
1987 if test "x$enable_rawshark" = "xyes" ; then
1988         rawshark_bin="rawshark\$(EXEEXT)"
1989         rawshark_man="rawshark.1"
1990 else
1991         rawshark_bin=""
1992         rawshark_man=""
1993 fi
1994 AC_SUBST(rawshark_bin)
1995 AC_SUBST(rawshark_man)
1996
1997 dnl Use pcap-ng by default
1998 AC_ARG_ENABLE(pcap-ng-default,
1999   AC_HELP_STRING( [--enable-pcap-ng-default],
2000                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
2001     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
2002 if test x$enable_pcap_ng_default = xyes; then
2003         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
2004 fi
2005
2006 dnl pcap remote check
2007 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
2008
2009 AC_ARG_WITH(pcap-remote,
2010     AC_HELP_STRING([--with-pcap-remote],
2011                    [use libpcap remote capturing (requires libpcap)]),
2012 [
2013     if test $withval = no
2014     then
2015         want_pcap_remote=no
2016     else
2017         want_pcap_remote=yes
2018     fi
2019 ],[
2020     want_pcap_remote=no
2021 ])
2022 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
2023     AC_MSG_RESULT(no)
2024 else
2025     AC_MSG_RESULT(yes)
2026     AC_WIRESHARK_PCAP_REMOTE_CHECK
2027 fi
2028
2029 dnl zlib check
2030 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
2031
2032 AC_ARG_WITH(zlib,
2033   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
2034                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
2035 [
2036         if test "x$withval" = "xno"
2037         then
2038                 want_zlib=no
2039         elif test "x$withval" = "xyes"
2040         then
2041                 want_zlib=yes
2042         else
2043                 want_zlib=yes
2044                 zlib_dir="$withval"
2045         fi
2046 ],[
2047         #
2048         # Use zlib if it's present, otherwise don't.
2049         #
2050         want_zlib=ifavailable
2051         zlib_dir=
2052 ])
2053 if test "x$want_zlib" = "xno" ; then
2054         AC_MSG_RESULT(no)
2055 else
2056         AC_MSG_RESULT(yes)
2057         AC_WIRESHARK_ZLIB_CHECK
2058         if test "x$want_zlib" = "xno" ; then
2059                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
2060         else
2061                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
2062                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
2063                 fi
2064         fi
2065 fi
2066
2067 dnl Lua check
2068 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
2069
2070 AC_ARG_WITH(lua,
2071   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
2072                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
2073 [
2074         if test $withval = no
2075         then
2076                 want_lua=no
2077         elif test $withval = yes
2078         then
2079                 want_lua=yes
2080         else
2081                 want_lua=yes
2082                 lua_dir=$withval
2083         fi
2084 ],[
2085         #
2086         # Use liblua by default
2087         #
2088         want_lua=ifavailable
2089         lua_dir=
2090 ])
2091 if test "x$want_lua" = "xno" ; then
2092         AC_MSG_RESULT(no)
2093 else
2094         AC_MSG_RESULT(yes)
2095         AC_WIRESHARK_LIBLUA_CHECK
2096         if test "x$want_lua" = "xno" ; then
2097                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
2098         fi
2099 fi
2100 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
2101
2102
2103 dnl portaudio check
2104 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
2105
2106 AC_ARG_WITH(portaudio,
2107   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
2108                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
2109 [
2110         if test $withval = no
2111         then
2112                 want_portaudio=no
2113         elif test $withval = yes
2114         then
2115                 want_portaudio=yes
2116         else
2117                 want_portaudio=yes
2118                 portaudio_dir=$withval
2119         fi
2120 ],[
2121         #
2122         # Use libportaudio by default
2123         #
2124         want_portaudio=ifavailable
2125         portaudio_dir=
2126 ])
2127 if test "x$want_portaudio" = "xno" ; then
2128         AC_MSG_RESULT(no)
2129 else
2130         AC_MSG_RESULT(yes)
2131         AC_WIRESHARK_LIBPORTAUDIO_CHECK
2132         if test "x$want_portaudio" = "xno" ; then
2133                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
2134         fi
2135 fi
2136 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
2137
2138
2139 dnl ipv6 check
2140 AC_ARG_ENABLE(ipv6,
2141   AC_HELP_STRING( [--enable-ipv6],
2142                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
2143     enable_ipv6=$enableval,enable_ipv6=yes)
2144
2145 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
2146 if test "x$enable_ipv6" = "xno" ; then
2147         AC_MSG_RESULT(no)
2148 else
2149         AC_MSG_RESULT(yes)
2150         AC_WIRESHARK_IPV6_STACK
2151 fi
2152
2153
2154 dnl Check if dumpcap should be installed with filesystem capabilities
2155 AC_PATH_PROG(SETCAP, setcap)
2156 AC_ARG_ENABLE(setcap-install,
2157   AC_HELP_STRING( [--enable-setcap-install],
2158                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2159     enable_setcap_install=$enableval,enable_setcap_install=no)
2160
2161 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2162 if test "x$enable_setcap_install" = "xno" ; then
2163         AC_MSG_RESULT(no)
2164 else
2165         if test "x$SETCAP" = "x" ; then
2166                 AC_MSG_RESULT(no. Setcap not found)
2167         elif test "x$enable_dumpcap" = "xno" ; then
2168                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
2169         else
2170                 AC_MSG_RESULT(yes)
2171         fi
2172 fi
2173
2174 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2175
2176 dnl Check if dumpcap should be installed setuid
2177 AC_ARG_ENABLE(setuid-install,
2178   AC_HELP_STRING( [--enable-setuid-install],
2179                   [install dumpcap as setuid @<:@default=no@:>@]),
2180     enable_setuid_install=$enableval,enable_setuid_install=no)
2181
2182 AC_MSG_CHECKING(whether to install dumpcap setuid)
2183 if test "x$enable_setuid_install" = "xno" ; then
2184         AC_MSG_RESULT(no)
2185 else
2186         if test "x$enable_setcap_install" = "xyes" ; then
2187                 enable_setuid_install=no
2188                 AC_MSG_RESULT(no; using setcap instead)
2189         elif test "x$enable_dumpcap" = "xno" ; then
2190                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
2191         else
2192                 AC_MSG_RESULT(yes)
2193         fi
2194 fi
2195
2196 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2197 AC_CHECK_FUNCS(setresuid setresgid)
2198
2199 dnl ...but our Network Operations group is named "no"!
2200 DUMPCAP_GROUP=''
2201 AC_ARG_WITH(dumpcap-group,
2202   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2203                   [restrict dumpcap to GROUP]),
2204 [
2205   if test "x$withval" = "xyes"; then
2206       AC_MSG_ERROR([No dumpcap group specified.])
2207   elif test "x$withval" != "xno"; then
2208       if test "x$enable_dumpcap" = "xno" ; then
2209           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2210       fi
2211       AC_MSG_RESULT($withval)
2212       DUMPCAP_GROUP="$withval"
2213   fi
2214 ])
2215 AC_SUBST(DUMPCAP_GROUP)
2216 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2217
2218 dnl libcap (not libpcap) check
2219 LIBCAP_LIBS=''
2220 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2221
2222 AC_ARG_WITH(libcap,
2223   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2224                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2225 [
2226 if   test "x$withval" = "xno";  then
2227         want_libcap=no
2228 elif test "x$withval" = "xyes"; then
2229         want_libcap=yes
2230 elif test -d "$withval"; then
2231         want_libcap=yes
2232         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2233 fi
2234 ])
2235 if test "x$with_libcap" = "xno" ; then
2236         AC_MSG_RESULT(no)
2237 else
2238         AC_MSG_RESULT(yes)
2239         AC_WIRESHARK_LIBCAP_CHECK
2240 fi
2241 AC_SUBST(LIBCAP_LIBS)
2242
2243 dnl Checks for header files.
2244 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2245 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)
2246 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)
2247 AC_CHECK_HEADERS(netinet/in.h)
2248 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2249
2250 dnl SSL Check
2251 SSL_LIBS=''
2252 AC_MSG_CHECKING(whether to use SSL library)
2253
2254 AC_ARG_WITH(ssl,
2255   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2256                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2257 [
2258 if test "x$withval" = "xno";  then
2259         want_ssl=no
2260 elif test "x$withval" = "xyes"; then
2261         want_ssl=yes
2262 elif test -d "$withval"; then
2263         want_ssl=yes
2264         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2265 fi
2266 ],[
2267         want_ssl=no
2268 ])
2269 if test "x$want_ssl" = "xyes"; then
2270         AC_MSG_RESULT(yes)
2271         AC_CHECK_LIB(crypto,EVP_md5,
2272             [
2273                 SSL_LIBS=-lcrypto
2274             ],
2275             [
2276                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2277             ])
2278 else
2279         AC_MSG_RESULT(no)
2280 fi
2281 AC_SUBST(SSL_LIBS)
2282
2283 dnl kerberos check
2284 AC_MSG_CHECKING(whether to use Kerberos library)
2285
2286 AC_ARG_WITH(krb5,
2287   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2288                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2289 [
2290         if test $withval = no
2291         then
2292                 want_krb5=no
2293         elif test $withval = yes
2294         then
2295                 want_krb5=yes
2296         else
2297                 want_krb5=yes
2298                 krb5_dir=$withval
2299         fi
2300 ],[
2301         #
2302         # Use Kerberos library if available, otherwise don't.
2303         #
2304         want_krb5=ifavailable
2305         krb5_dir=
2306 ])
2307 if test "x$want_krb5" = "xno" ; then
2308         AC_MSG_RESULT(no)
2309 else
2310         AC_MSG_RESULT(yes)
2311         AC_WIRESHARK_KRB5_CHECK
2312 fi
2313
2314
2315 dnl c-ares Check
2316 C_ARES_LIBS=''
2317 AC_MSG_CHECKING(whether to use the c-ares library if available)
2318
2319 AC_ARG_WITH(c-ares,
2320   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2321                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2322 [
2323 if   test "x$withval" = "xno";  then
2324         want_c_ares=no
2325 elif test "x$withval" = "xyes"; then
2326         want_c_ares=yes
2327 elif test -d "$withval"; then
2328         want_c_ares=yes
2329         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2330 fi
2331 ])
2332 if test "x$want_c_ares" = "xno" ; then
2333         AC_MSG_RESULT(no)
2334 else
2335         AC_MSG_RESULT(yes)
2336         AC_WIRESHARK_C_ARES_CHECK
2337 fi
2338 AC_SUBST(C_ARES_LIBS)
2339
2340 dnl ADNS Check
2341 ADNS_LIBS=''
2342 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2343
2344 AC_ARG_WITH(adns,
2345   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2346                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2347 [
2348 if   test "x$withval" = "xno";  then
2349         want_adns=no
2350 elif test "x$withval" = "xyes"; then
2351         want_adns=yes
2352 elif test -d "$withval"; then
2353         want_adns=yes
2354         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2355 fi
2356 ])
2357 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2358         AC_MSG_RESULT(no)
2359 else
2360         AC_MSG_RESULT(yes)
2361         AC_WIRESHARK_ADNS_CHECK
2362 fi
2363 AC_SUBST(ADNS_LIBS)
2364
2365 dnl GEOIP Check
2366 GEOIP_LIBS=''
2367 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2368
2369 AC_ARG_WITH(geoip,
2370   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2371                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2372 [
2373 if   test "x$withval" = "xno";  then
2374         want_geoip=no
2375 elif test "x$withval" = "xyes"; then
2376         want_geoip=yes
2377 elif test -d "$withval"; then
2378         want_geoip=yes
2379         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2380 fi
2381 ])
2382 if test "x$want_geoip" = "xno"; then
2383         AC_MSG_RESULT(no)
2384 else
2385         AC_MSG_RESULT(yes)
2386         AC_WIRESHARK_GEOIP_CHECK
2387 fi
2388 AC_SUBST(GEOIP_LIBS)
2389
2390 # Warning: this Python scripting appears to be broken (does not work at all).
2391 # Running it also causes Valgrind to complain about all sorts of memory errors.
2392 # Suggestion: do not enable it unless you are working on fixing it.
2393 #
2394 # An alternative might be https://code.google.com/p/pyreshark/
2395 #
2396 dnl Python devel Check
2397 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2398
2399 AC_ARG_WITH(broken-python,
2400     AC_HELP_STRING( [--with-broken-python@<:@=DIR@:>@],
2401                     [use the (BROKEN) Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@]),
2402 [
2403         pythondir='${libdir}/wireshark/python/${VERSION}'
2404         if test "x$withval" = "xno"
2405         then
2406                 want_python=no
2407         elif test "x$withval" = "xyes"
2408         then
2409                 want_python=yes
2410         else
2411                 want_python=yes
2412                 pythondir="$withval"
2413         fi
2414 ],[
2415         # By default (user didn't explicitly enable Python), don't enable
2416         # Python support.
2417         #
2418         want_python=no
2419         #pythondir='${libdir}/wireshark/python/${VERSION}'
2420 ])
2421 if test "x$want_python" = "xno" ; then
2422         AC_MSG_RESULT(no)
2423 else
2424         AC_MSG_RESULT(yes)
2425         AC_WIRESHARK_PYTHON_CHECK
2426 fi
2427 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2428 AC_SUBST(pythondir)
2429
2430 #
2431 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2432 # never return (just like Charlie on the MTA).
2433 #
2434 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2435 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2436 # follow the function name, so we need two different flavors of
2437 # noreturn tag.
2438 #
2439 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2440
2441 dnl Checks for typedefs, structures, and compiler characteristics.
2442 # AC_C_CONST
2443
2444 # Check how we can get the time zone abbreviation
2445 AC_WIRESHARK_TIMEZONE_ABBREV
2446
2447 # We need to know whether "struct stat" has an "st_flags" member
2448 # for file_user_immutable().
2449
2450 AC_WIRESHARK_STRUCT_ST_FLAGS
2451
2452 # We need to know whether "struct sockaddr" has an "sa_len" member
2453 # for get_interface_list().
2454
2455 AC_WIRESHARK_STRUCT_SA_LEN
2456
2457 # We must know our byte order
2458 AC_C_BIGENDIAN
2459
2460 # Checks whether "-traditional" is needed when using "ioctl".
2461 # XXX - do we need this?
2462 AC_PROG_GCC_TRADITIONAL
2463
2464 GETOPT_LO=""
2465 AC_CHECK_FUNC(getopt,
2466   [GETOPT_LO=""
2467    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2468   ],
2469   GETOPT_LO="wsgetopt.lo"
2470 )
2471 if test "$ac_cv_func_getopt" = no ; then
2472   GETOPT_LO="wsgetopt.lo"
2473 fi
2474 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2475 AC_SUBST(GETOPT_LO)
2476
2477 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2478   STRNCASECMP_LO="strncasecmp.lo")
2479 if test "$ac_cv_func_strncasecmp" = no ; then
2480   STRNCASECMP_LO="strncasecmp.lo"
2481 fi
2482 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2483 AC_SUBST(STRNCASECMP_LO)
2484
2485 AC_CHECK_FUNCS(mkstemp mkdtemp)
2486
2487 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2488     have_inet_aton=no)
2489 if test "$have_inet_aton" = no; then
2490   INET_ATON_LO="inet_aton.lo"
2491   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
2492 else
2493   INET_ATON_LO=""
2494 fi
2495 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2496 AC_SUBST(INET_ATON_LO)
2497
2498 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2499   dnl check for pre-BIND82 inet_pton() bug.
2500   AC_MSG_CHECKING(for broken inet_pton)
2501   AC_TRY_RUN([#include <sys/types.h>
2502 #include <sys/socket.h>
2503 #include <netinet/in.h>
2504 #include <arpa/inet.h>
2505 int main()
2506 {
2507 #ifdef AF_INET6
2508   char buf[16];
2509   /* this should return 0 (error) */
2510   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2511 #else
2512   return 1;
2513 #endif
2514 }], [AC_MSG_RESULT(ok);
2515 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2516 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2517 have_inet_pton=no])],
2518 have_inet_pton=no)
2519 if test "$have_inet_pton" = no; then
2520   INET_PTON_LO="inet_pton.lo"
2521 else
2522   INET_PTON_LO=""
2523 fi
2524 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2525 AC_SUBST(INET_PTON_LO)
2526
2527 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2528   AC_MSG_CHECKING([for inet_ntop prototype])
2529   AC_TRY_COMPILE([#include <stdio.h>
2530 #include <sys/types.h>
2531 #include <sys/socket.h>
2532 #include <netinet/in.h>
2533 #include <arpa/inet.h>
2534
2535 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2536     AC_MSG_RESULT(yes)
2537     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2538     [Define if inet_ntop() prototype exists])], [
2539     AC_TRY_COMPILE([#include <stdio.h>
2540 #include <sys/types.h>
2541 #include <sys/socket.h>
2542 #include <netinet/in.h>
2543 #include <arpa/inet.h>
2544
2545 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2546       AC_MSG_RESULT(yes)
2547       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2548       [Define if inet_ntop() prototype exists])], [
2549       AC_MSG_RESULT(no)])])
2550   INET_NTOP_LO=""], [
2551   INET_NTOP_LO="inet_ntop.lo"
2552   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2553   [Define if inet/v6defs.h needs to be included])])
2554 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2555 AC_SUBST(INET_NTOP_LO)
2556
2557 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2558   [STRPTIME_LO="strptime.lo"
2559    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2560 ])
2561 if test "$ac_cv_func_strptime" = no ; then
2562   STRPTIME_LO="strptime.lo"
2563 fi
2564 AC_SUBST(STRPTIME_C)
2565 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2566 AC_SUBST(STRPTIME_LO)
2567
2568 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2569 AC_CHECK_FUNCS(issetugid)
2570 AC_CHECK_FUNCS(mmap mprotect sysconf)
2571 AC_CHECK_FUNCS(strtoll)
2572
2573 dnl blank for now, but will be used in future
2574 AC_SUBST(wireshark_SUBDIRS)
2575
2576 dnl
2577 dnl check whether plugins should be enabled and, if they should be,
2578 dnl check for plugins directory - stolen from Amanda's configure.ac
2579 dnl
2580 dnl we don't wish to expand ${libdir} yet
2581 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2582 AC_ARG_WITH(plugins,
2583   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2584                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2585 [
2586   if test "x$withval" = "xno"; then
2587     have_plugins=no
2588   elif test "x$have_plugins" = "xno"; then
2589       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2590   elif test "x$withval" != "xyes"; then
2591       plugindir="$withval"
2592   fi
2593 ])
2594 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2595 if test x$have_plugins = xyes
2596 then
2597   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2598 fi
2599 AC_SUBST(plugindir)
2600 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2601
2602 #
2603 # The plugin dissectors reside in ./plugins/PROTO/
2604 #
2605 PLUGIN_LIBS=""
2606 AC_SUBST(PLUGIN_LIBS)
2607
2608 #
2609 # Check if (emem) memory allocations must be 8-byte aligned.
2610 # I haven't been able to write C code that reliably makes that determination
2611 # (different versions of GCC with or without optimization give different
2612 # results) so just assume everything except (32-bit) x86 needs 8-byte
2613 # alignment (64-bit platforms either require 8-byte alignment for pointers
2614 # and 64-bit integral data types or may get better performance from that;
2615 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2616 # platforms would only require it, or get better performance from it,
2617 # for 64-bit floating-point values.).
2618 #
2619 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2620 case $host_cpu in
2621         i386|i486|i586|i686)
2622                 AC_MSG_RESULT(no)
2623                 ;;
2624         *)
2625                 AC_MSG_RESULT(yes)
2626                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2627                 ;;
2628 esac
2629
2630 dnl libtool defs
2631 #
2632 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2633 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2634 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2635 #
2636 # With older version(s) of those tool(s), however, it's not just an
2637 # alias, and the configure scripts don't work without it.
2638 #
2639 AM_PROG_LIBTOOL
2640 AC_SUBST(LIBTOOL_DEPS)
2641
2642 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2643 if test x$enable_static = xyes -a x$have_plugins = xyes
2644 then
2645   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2646 fi
2647 AC_SUBST(ENABLE_STATIC)
2648
2649 dnl Save the cacheable configure results to config.cache before recursing
2650 AC_CACHE_SAVE
2651
2652 sinclude(plugins/Custom.m4) dnl
2653 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2654
2655 sinclude(asn1/Custom.m4) dnl
2656 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2657
2658 AC_CONFIG_HEADERS(config.h)
2659 AC_OUTPUT(
2660   Makefile
2661   doxygen.cfg
2662   asn1/Makefile
2663   _CUSTOM_ASN1_AC_OUTPUT_
2664   asn1/acp133/Makefile
2665   asn1/acse/Makefile
2666   asn1/ansi_map/Makefile
2667   asn1/ansi_tcap/Makefile
2668   asn1/atn-cm/Makefile
2669   asn1/atn-cpdlc/Makefile
2670   asn1/atn-ulcs/Makefile
2671   asn1/c1222/Makefile
2672   asn1/camel/Makefile
2673   asn1/cdt/Makefile
2674   asn1/charging_ase/Makefile
2675   asn1/cmip/Makefile
2676   asn1/cmp/Makefile
2677   asn1/crmf/Makefile
2678   asn1/cms/Makefile
2679   asn1/credssp/Makefile
2680   asn1/dap/Makefile
2681   asn1/disp/Makefile
2682   asn1/dop/Makefile
2683   asn1/dsp/Makefile
2684   asn1/ess/Makefile
2685   asn1/ftam/Makefile
2686   asn1/gnm/Makefile
2687   asn1/goose/Makefile
2688   asn1/gprscdr/Makefile
2689   asn1/gsm_map/Makefile
2690   asn1/h225/Makefile
2691   asn1/h235/Makefile
2692   asn1/h245/Makefile
2693   asn1/h248/Makefile
2694   asn1/h282/Makefile
2695   asn1/h283/Makefile
2696   asn1/h323/Makefile
2697   asn1/h450/Makefile
2698   asn1/h450-ros/Makefile
2699   asn1/h460/Makefile
2700   asn1/h501/Makefile
2701   asn1/HI2Operations/Makefile
2702   asn1/hnbap/Makefile
2703   asn1/idmp/Makefile
2704   asn1/inap/Makefile
2705   asn1/isdn-sup/Makefile
2706   asn1/kerberos/Makefile
2707   asn1/lcsap/Makefile
2708   asn1/ldap/Makefile
2709   asn1/logotypecertextn/Makefile
2710   asn1/lpp/Makefile
2711   asn1/lppa/Makefile
2712   asn1/lppe/Makefile
2713   asn1/lte-rrc/Makefile
2714   asn1/m3ap/Makefile
2715   asn1/mms/Makefile
2716   asn1/mpeg-audio/Makefile
2717   asn1/mpeg-pes/Makefile
2718   asn1/nbap/Makefile
2719   asn1/ns_cert_exts/Makefile
2720   asn1/ocsp/Makefile
2721   asn1/p1/Makefile
2722   asn1/p22/Makefile
2723   asn1/p7/Makefile
2724   asn1/p772/Makefile
2725   asn1/pcap/Makefile
2726   asn1/pkcs1/Makefile
2727   asn1/pkcs12/Makefile
2728   asn1/pkinit/Makefile
2729   asn1/pkixac/Makefile
2730   asn1/pkix1explicit/Makefile
2731   asn1/pkix1implicit/Makefile
2732   asn1/pkixproxy/Makefile
2733   asn1/pkixqualified/Makefile
2734   asn1/pkixtsp/Makefile
2735   asn1/pres/Makefile
2736   asn1/q932/Makefile
2737   asn1/q932-ros/Makefile
2738   asn1/qsig/Makefile
2739   asn1/ranap/Makefile
2740   asn1/rnsap/Makefile
2741   asn1/ros/Makefile
2742   asn1/rrc/Makefile
2743   asn1/rrlp/Makefile
2744   asn1/rtse/Makefile
2745   asn1/rua/Makefile
2746   asn1/s1ap/Makefile
2747   asn1/sabp/Makefile
2748   asn1/sbc-ap/Makefile
2749   asn1/smrse/Makefile
2750   asn1/snmp/Makefile
2751   asn1/spnego/Makefile
2752   asn1/sv/Makefile
2753   asn1/t124/Makefile
2754   asn1/t125/Makefile
2755   asn1/t38/Makefile
2756   asn1/tcap/Makefile
2757   asn1/tetra/Makefile
2758   asn1/ulp/Makefile
2759   asn1/wlancertextn/Makefile
2760   asn1/x2ap/Makefile
2761   asn1/x509af/Makefile
2762   asn1/x509ce/Makefile
2763   asn1/x509if/Makefile
2764   asn1/x509sat/Makefile
2765   asn1/x721/Makefile
2766   doc/Makefile
2767   docbook/Makefile
2768   epan/Makefile
2769   epan/crypt/Makefile
2770   epan/doxygen.cfg
2771   epan/dfilter/Makefile
2772   epan/dissectors/Makefile
2773   epan/dissectors/dcerpc/Makefile
2774   epan/dissectors/pidl/Makefile
2775   epan/ftypes/Makefile
2776   epan/wmem/Makefile
2777   epan/wslua/Makefile
2778   epan/wspython/Makefile
2779   codecs/Makefile
2780   ui/Makefile
2781   ui/doxygen.cfg
2782   ui/gtk/Makefile
2783   ui/gtk/doxygen.cfg
2784   ui/cli/Makefile
2785   ui/qt/Makefile
2786   ui/qt/doxygen.cfg
2787   help/Makefile
2788   packaging/Makefile
2789   packaging/macosx/Info.plist
2790   packaging/macosx/Makefile
2791   packaging/macosx/osx-dmg.sh
2792   packaging/macosx/Wireshark_package.pmdoc/index.xml
2793   packaging/nsis/Makefile
2794   packaging/rpm/Makefile
2795   packaging/rpm/SPECS/Makefile
2796   packaging/rpm/SPECS/wireshark.spec
2797   packaging/svr4/Makefile
2798   packaging/svr4/checkinstall
2799   packaging/svr4/pkginfo
2800   plugins/Makefile
2801   plugins/asn1/Makefile
2802   plugins/docsis/Makefile
2803   plugins/ethercat/Makefile
2804   plugins/gryphon/Makefile
2805   plugins/irda/Makefile
2806   plugins/m2m/Makefile
2807   plugins/mate/Makefile
2808   plugins/opcua/Makefile
2809   plugins/profinet/Makefile
2810   plugins/stats_tree/Makefile
2811   plugins/unistim/Makefile
2812   plugins/wimax/Makefile
2813   plugins/wimaxasncp/Makefile
2814   plugins/wimaxmacphy/Makefile
2815   tools/Makefile
2816   tools/lemon/Makefile
2817   wiretap/Makefile
2818   wsutil/Makefile
2819   echld/Makefile
2820   _CUSTOM_AC_OUTPUT_
2821   ,)
2822 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2823
2824
2825 # Pretty messages
2826
2827 if test "x$have_gtk" = "xyes"; then
2828         if test "x$with_gtk3" = "xyes"; then
2829                 gtk_lib_message=" (with GTK+ 3"
2830         else
2831                 gtk_lib_message=" (with GTK+ 2"
2832         fi
2833         if test "x$have_ige_mac" = "xyes"; then
2834                 gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
2835         else
2836                 gtk_lib_message="$gtk_lib_message)"
2837         fi
2838 fi
2839
2840 if test "x$have_qt" = "xyes" ; then
2841         enable_qtshark="yes"
2842 else
2843         enable_qtshark="no"
2844 fi
2845
2846 if test "x$enable_setcap_install" = "xyes" ; then
2847         setcap_message="yes"
2848 else
2849         setcap_message="no"
2850 fi
2851
2852 if test "x$enable_setuid_install" = "xyes" ; then
2853         setuid_message="yes"
2854 else
2855         setuid_message="no"
2856 fi
2857
2858 if test "x$DUMPCAP_GROUP" = "x" ; then
2859         dumpcap_group_message="(none)"
2860 else
2861         dumpcap_group_message="$DUMPCAP_GROUP"
2862 fi
2863
2864 if test "x$want_zlib" = "xno" ; then
2865         zlib_message="no"
2866 else
2867         zlib_message="yes"
2868 fi
2869
2870 if test "x$want_lua" = "xyes" ; then
2871         lua_message="yes"
2872 else
2873         lua_message="no"
2874 fi
2875
2876 if test "x$want_python" = "xno"; then
2877         python_message="no"
2878 else
2879         python_message="yes"
2880 fi
2881
2882 if test "x$want_portaudio" = "xyes" ; then
2883         portaudio_message="yes"
2884 else
2885         portaudio_message="no"
2886 fi
2887
2888 if test "x$want_ssl" = "xno" ; then
2889         ssl_message="no"
2890 else
2891         ssl_message="yes"
2892 fi
2893
2894 if test "x$want_krb5" = "xno" ; then
2895         krb5_message="no"
2896 else
2897         krb5_message="yes ($ac_krb5_version)"
2898 fi
2899
2900 if test "x$have_good_c_ares" = "xyes" ; then
2901         c_ares_message="yes"
2902 else
2903         c_ares_message="no"
2904 fi
2905
2906 if test "x$have_good_adns" = "xyes" ; then
2907         adns_message="yes"
2908 else
2909         if test "x$have_good_c_ares" = "xyes" ; then
2910                 adns_message="no (using c-ares instead)"
2911         else
2912                 adns_message="no"
2913         fi
2914 fi
2915
2916 if test "x$have_good_libcap" = "xyes" ; then
2917         libcap_message="yes"
2918 else
2919         libcap_message="no"
2920 fi
2921
2922 if test "x$have_good_geoip" = "xyes" ; then
2923         geoip_message="yes"
2924 else
2925         geoip_message="no"
2926 fi
2927
2928 echo ""
2929 echo "The Wireshark package has been configured with the following options."
2930 echo "             Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message"
2931 echo "                 Build wireshark-qt : $enable_qtshark"
2932 echo "                       Build tshark : $enable_tshark"
2933 echo "                     Build capinfos : $enable_capinfos"
2934 echo "                      Build editcap : $enable_editcap"
2935 echo "                      Build dumpcap : $enable_dumpcap"
2936 echo "                     Build mergecap : $enable_mergecap"
2937 echo "                   Build reordercap : $enable_reordercap"
2938 echo "                    Build text2pcap : $enable_text2pcap"
2939 echo "                      Build randpkt : $enable_randpkt"
2940 echo "                       Build dftest : $enable_dftest"
2941 echo "                     Build rawshark : $enable_rawshark"
2942 echo "                        Build echld : $have_echld"
2943 echo ""
2944 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2945 echo "  Install dumpcap with capabilities : $setcap_message"
2946 echo "             Install dumpcap setuid : $setuid_message"
2947 echo "                  Use dumpcap group : $dumpcap_group_message"
2948 echo "                        Use plugins : $have_plugins"
2949 echo "                    Use Lua library : $lua_message"
2950 echo "                 Use Python binding : $python_message"
2951 echo "                   Build rtp_player : $portaudio_message"
2952 echo "             Build profile binaries : $enable_profile_build"
2953 echo "                   Use pcap library : $want_pcap"
2954 echo "                   Use zlib library : $zlib_message"
2955 echo "               Use kerberos library : $krb5_message"
2956 echo "                 Use c-ares library : $c_ares_message"
2957 echo "               Use GNU ADNS library : $adns_message"
2958 echo "                Use SMI MIB library : $libsmi_message"
2959 echo "             Use GNU crypto library : $gcrypt_message"
2960 echo "             Use SSL crypto library : $ssl_message"
2961 echo "           Use IPv6 name resolution : $enable_ipv6"
2962 echo "                 Use gnutls library : $tls_message"
2963 echo "     Use POSIX capabilities library : $libcap_message"
2964 echo "                  Use GeoIP library : $geoip_message"
2965 echo "                     Use nl library : $libnl_message"