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