If -fvisibility=hidden isn't supported, try -xldscope=hidden.
[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(no. Setcap not found)
2269         elif test "x$enable_dumpcap" = "xno" ; then
2270                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
2271         else
2272                 AC_MSG_RESULT(yes)
2273         fi
2274 fi
2275
2276 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2277
2278 dnl Check if dumpcap should be installed setuid
2279 AC_ARG_ENABLE(setuid-install,
2280   AC_HELP_STRING( [--enable-setuid-install],
2281                   [install dumpcap as setuid @<:@default=no@:>@]),
2282     enable_setuid_install=$enableval,enable_setuid_install=no)
2283
2284 AC_MSG_CHECKING(whether to install dumpcap setuid)
2285 if test "x$enable_setuid_install" = "xno" ; then
2286         AC_MSG_RESULT(no)
2287 else
2288         if test "x$enable_setcap_install" = "xyes" ; then
2289                 enable_setuid_install=no
2290                 AC_MSG_RESULT(no; using setcap instead)
2291         elif test "x$enable_dumpcap" = "xno" ; then
2292                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
2293         else
2294                 AC_MSG_RESULT(yes)
2295         fi
2296 fi
2297
2298 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2299 AC_CHECK_FUNCS(setresuid setresgid)
2300
2301 dnl ...but our Network Operations group is named "no"!
2302 DUMPCAP_GROUP=''
2303 AC_ARG_WITH(dumpcap-group,
2304   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2305                   [restrict dumpcap to GROUP]),
2306 [
2307   if test "x$withval" = "xyes"; then
2308       AC_MSG_ERROR([No dumpcap group specified.])
2309   elif test "x$withval" != "xno"; then
2310       if test "x$enable_dumpcap" = "xno" ; then
2311           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2312       fi
2313       AC_MSG_RESULT($withval)
2314       DUMPCAP_GROUP="$withval"
2315   fi
2316 ])
2317 AC_SUBST(DUMPCAP_GROUP)
2318 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2319
2320 dnl libcap (not libpcap) check
2321 LIBCAP_LIBS=''
2322 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2323
2324 AC_ARG_WITH(libcap,
2325   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2326                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2327 [
2328 if   test "x$withval" = "xno";  then
2329         want_libcap=no
2330 elif test "x$withval" = "xyes"; then
2331         want_libcap=yes
2332 elif test -d "$withval"; then
2333         want_libcap=yes
2334         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2335 fi
2336 ])
2337 if test "x$with_libcap" = "xno" ; then
2338         AC_MSG_RESULT(no)
2339 else
2340         AC_MSG_RESULT(yes)
2341         AC_WIRESHARK_LIBCAP_CHECK
2342 fi
2343 AC_SUBST(LIBCAP_LIBS)
2344
2345 dnl Checks for header files.
2346 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2347 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)
2348 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)
2349 AC_CHECK_HEADERS(netinet/in.h)
2350 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2351
2352 dnl SSL Check
2353 SSL_LIBS=''
2354 AC_MSG_CHECKING(whether to use SSL library)
2355
2356 AC_ARG_WITH(ssl,
2357   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2358                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2359 [
2360 if test "x$withval" = "xno";  then
2361         want_ssl=no
2362 elif test "x$withval" = "xyes"; then
2363         want_ssl=yes
2364 elif test -d "$withval"; then
2365         want_ssl=yes
2366         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2367 fi
2368 ],[
2369         want_ssl=no
2370 ])
2371 if test "x$want_ssl" = "xyes"; then
2372         AC_MSG_RESULT(yes)
2373         AC_CHECK_LIB(crypto,EVP_md5,
2374             [
2375                 SSL_LIBS=-lcrypto
2376             ],
2377             [
2378                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2379             ])
2380 else
2381         AC_MSG_RESULT(no)
2382 fi
2383 AC_SUBST(SSL_LIBS)
2384
2385 dnl kerberos check
2386 AC_MSG_CHECKING(whether to use Kerberos library)
2387
2388 AC_ARG_WITH(krb5,
2389   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2390                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2391 [
2392         if test $withval = no
2393         then
2394                 want_krb5=no
2395         elif test $withval = yes
2396         then
2397                 want_krb5=yes
2398         else
2399                 want_krb5=yes
2400                 krb5_dir=$withval
2401         fi
2402 ],[
2403         #
2404         # Use Kerberos library if available, otherwise don't.
2405         #
2406         want_krb5=ifavailable
2407         krb5_dir=
2408 ])
2409 if test "x$want_krb5" = "xno" ; then
2410         AC_MSG_RESULT(no)
2411 else
2412         AC_MSG_RESULT(yes)
2413         AC_WIRESHARK_KRB5_CHECK
2414 fi
2415
2416
2417 dnl c-ares Check
2418 C_ARES_LIBS=''
2419 AC_MSG_CHECKING(whether to use the c-ares library if available)
2420
2421 AC_ARG_WITH(c-ares,
2422   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2423                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2424 [
2425 if   test "x$withval" = "xno";  then
2426         want_c_ares=no
2427 elif test "x$withval" = "xyes"; then
2428         want_c_ares=yes
2429 elif test -d "$withval"; then
2430         want_c_ares=yes
2431         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2432 fi
2433 ])
2434 if test "x$want_c_ares" = "xno" ; then
2435         AC_MSG_RESULT(no)
2436 else
2437         AC_MSG_RESULT(yes)
2438         AC_WIRESHARK_C_ARES_CHECK
2439 fi
2440 AC_SUBST(C_ARES_LIBS)
2441
2442 dnl ADNS Check
2443 ADNS_LIBS=''
2444 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2445
2446 AC_ARG_WITH(adns,
2447   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2448                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2449 [
2450 if   test "x$withval" = "xno";  then
2451         want_adns=no
2452 elif test "x$withval" = "xyes"; then
2453         want_adns=yes
2454 elif test -d "$withval"; then
2455         want_adns=yes
2456         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2457 fi
2458 ])
2459 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2460         AC_MSG_RESULT(no)
2461 else
2462         AC_MSG_RESULT(yes)
2463         AC_WIRESHARK_ADNS_CHECK
2464 fi
2465 AC_SUBST(ADNS_LIBS)
2466
2467 dnl GEOIP Check
2468 GEOIP_LIBS=''
2469 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2470
2471 AC_ARG_WITH(geoip,
2472   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2473                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2474 [
2475 if   test "x$withval" = "xno";  then
2476         want_geoip=no
2477 elif test "x$withval" = "xyes"; then
2478         want_geoip=yes
2479 elif test -d "$withval"; then
2480         want_geoip=yes
2481         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2482 fi
2483 ])
2484 if test "x$want_geoip" = "xno"; then
2485         AC_MSG_RESULT(no)
2486 else
2487         AC_MSG_RESULT(yes)
2488         AC_WIRESHARK_GEOIP_CHECK
2489 fi
2490 AC_SUBST(GEOIP_LIBS)
2491
2492 #
2493 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2494 # never return (just like Charlie on the MTA).
2495 #
2496 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2497 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2498 # follow the function name, so we need two different flavors of
2499 # noreturn tag.
2500 #
2501 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2502
2503 dnl Checks for typedefs, structures, and compiler characteristics.
2504 # AC_C_CONST
2505
2506 # Check how we can get the time zone abbreviation
2507 AC_WIRESHARK_TIMEZONE_ABBREV
2508
2509 # We need to know whether "struct stat" has an "st_flags" member
2510 # for file_user_immutable().
2511
2512 AC_WIRESHARK_STRUCT_ST_FLAGS
2513
2514 # We need to know whether "struct sockaddr" has an "sa_len" member
2515 # for get_interface_list().
2516
2517 AC_WIRESHARK_STRUCT_SA_LEN
2518
2519 # We must know our byte order
2520 AC_C_BIGENDIAN
2521
2522 # Checks whether "-traditional" is needed when using "ioctl".
2523 # XXX - do we need this?
2524 AC_PROG_GCC_TRADITIONAL
2525
2526 GETOPT_LO=""
2527 AC_CHECK_FUNC(getopt,
2528   [GETOPT_LO=""
2529    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2530   ],
2531   GETOPT_LO="wsgetopt.lo"
2532 )
2533 if test "$ac_cv_func_getopt" = no ; then
2534   GETOPT_LO="wsgetopt.lo"
2535 fi
2536 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2537 AC_SUBST(GETOPT_LO)
2538
2539 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2540   STRNCASECMP_LO="strncasecmp.lo")
2541 if test "$ac_cv_func_strncasecmp" = no ; then
2542   STRNCASECMP_LO="strncasecmp.lo"
2543 fi
2544 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2545 AC_SUBST(STRNCASECMP_LO)
2546
2547 AC_CHECK_FUNCS(mkstemp mkdtemp)
2548
2549 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2550     have_inet_aton=no)
2551 if test "$have_inet_aton" = no; then
2552   INET_ATON_LO="inet_aton.lo"
2553   AC_DEFINE(HAVE_INET_ATON_H, 0, [Define unless inet/aton.h needs to be included])
2554 else
2555   INET_ATON_LO=""
2556 fi
2557 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2558 AC_SUBST(INET_ATON_LO)
2559
2560 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2561   dnl check for pre-BIND82 inet_pton() bug.
2562   AC_MSG_CHECKING(for broken inet_pton)
2563   AC_TRY_RUN([#include <sys/types.h>
2564 #include <sys/socket.h>
2565 #include <netinet/in.h>
2566 #include <arpa/inet.h>
2567 int main()
2568 {
2569 #ifdef AF_INET6
2570   char buf[16];
2571   /* this should return 0 (error) */
2572   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2573 #else
2574   return 1;
2575 #endif
2576 }], [AC_MSG_RESULT(ok);
2577 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2578 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2579 have_inet_pton=no])],
2580 have_inet_pton=no)
2581 if test "$have_inet_pton" = no; then
2582   INET_PTON_LO="inet_pton.lo"
2583 else
2584   INET_PTON_LO=""
2585 fi
2586 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2587 AC_SUBST(INET_PTON_LO)
2588
2589 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2590   AC_MSG_CHECKING([for inet_ntop prototype])
2591   AC_TRY_COMPILE([#include <stdio.h>
2592 #include <sys/types.h>
2593 #include <sys/socket.h>
2594 #include <netinet/in.h>
2595 #include <arpa/inet.h>
2596
2597 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2598     AC_MSG_RESULT(yes)
2599     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2600     [Define if inet_ntop() prototype exists])], [
2601     AC_TRY_COMPILE([#include <stdio.h>
2602 #include <sys/types.h>
2603 #include <sys/socket.h>
2604 #include <netinet/in.h>
2605 #include <arpa/inet.h>
2606
2607 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2608       AC_MSG_RESULT(yes)
2609       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2610       [Define if inet_ntop() prototype exists])], [
2611       AC_MSG_RESULT(no)])])
2612   INET_NTOP_LO=""], [
2613   INET_NTOP_LO="inet_ntop.lo"
2614   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2615   [Define if inet/v6defs.h needs to be included])])
2616 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2617 AC_SUBST(INET_NTOP_LO)
2618
2619 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2620   [STRPTIME_LO="strptime.lo"
2621    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2622 ])
2623 if test "$ac_cv_func_strptime" = no ; then
2624   STRPTIME_LO="strptime.lo"
2625 fi
2626 AC_SUBST(STRPTIME_C)
2627 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2628 AC_SUBST(STRPTIME_LO)
2629
2630 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2631 AC_CHECK_FUNCS(issetugid)
2632 AC_CHECK_FUNCS(mmap mprotect sysconf)
2633
2634 dnl blank for now, but will be used in future
2635 AC_SUBST(wireshark_SUBDIRS)
2636
2637 # Check Bluetooth SBC codec for RTP Player
2638 # git://git.kernel.org/pub/scm/bluetooth/sbc.git
2639 PKG_CHECK_MODULES(SBC, sbc >= 1.0, [have_sbc=yes], [have_sbc=no])
2640 if (test "${have_sbc}" = "yes"); then
2641     AC_DEFINE(HAVE_SBC, 1, [Define to support playing SBC by standalone BlueZ SBC library])
2642     CFLAGS="$CFLAGS $(pkg-config sbc --cflags)"
2643     LIBS="$LIBS $(pkg-config sbc --libs)"
2644 fi
2645
2646 dnl
2647 dnl check whether plugins should be enabled and, if they should be,
2648 dnl check for plugins directory - stolen from Amanda's configure.ac
2649 dnl
2650 dnl we don't wish to expand ${libdir} yet
2651 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2652 AC_ARG_WITH(plugins,
2653   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2654                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2655 [
2656   if test "x$withval" = "xno"; then
2657     have_plugins=no
2658   elif test "x$have_plugins" = "xno"; then
2659       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2660   elif test "x$withval" != "xyes"; then
2661       plugindir="$withval"
2662   fi
2663 ])
2664 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2665 if test x$have_plugins = xyes
2666 then
2667   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2668 fi
2669 AC_SUBST(plugindir)
2670 CPPFLAGS="$CPPFLAGS '-DPLUGIN_INSTALL_DIR=\"\$(plugindir)\"'"
2671
2672 #
2673 # The plugin dissectors reside in ./plugins/PROTO/
2674 #
2675 PLUGIN_LIBS=""
2676 AC_SUBST(PLUGIN_LIBS)
2677
2678 #
2679 # Check if (emem) memory allocations must be 8-byte aligned.
2680 # I haven't been able to write C code that reliably makes that determination
2681 # (different versions of GCC with or without optimization give different
2682 # results) so just assume everything except (32-bit) x86 needs 8-byte
2683 # alignment (64-bit platforms either require 8-byte alignment for pointers
2684 # and 64-bit integral data types or may get better performance from that;
2685 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2686 # platforms would only require it, or get better performance from it,
2687 # for 64-bit floating-point values.).
2688 #
2689 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2690 case $host_cpu in
2691         i386|i486|i586|i686)
2692                 AC_MSG_RESULT(no)
2693                 ;;
2694         *)
2695                 AC_MSG_RESULT(yes)
2696                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2697                 ;;
2698 esac
2699
2700 # Gather only the "--with*" arguments and also a list of --with arguments for rpmbuild
2701 for f in $CONFIG_ARGS
2702 do
2703         case $f in
2704         --with-gtk2*)
2705                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2706                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with gtk2"
2707                 ;;
2708         --without-gtk2*)
2709                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2710                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without gtk2"
2711                 ;;
2712         --with-gtk3*)
2713                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2714                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with gtk3"
2715                 ;;
2716         --without-gtk3*)
2717                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2718                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without gtk3"
2719                 ;;
2720         --with-qt*)
2721                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2722                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with qt"
2723                 ;;
2724         --without-qt*)
2725                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2726                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without qt"
2727                 ;;
2728         --with*)
2729                 CONFIG_WITH_ARGS="$CONFIG_WITH_ARGS $f"
2730                 ;;
2731         esac
2732
2733 done
2734 AC_SUBST(CONFIG_WITH_ARGS)
2735 AC_SUBST(RPMBUILD_WITH_ARGS)
2736
2737 dnl libtool defs
2738 #
2739 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2740 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2741 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2742 #
2743 # With older version(s) of those tool(s), however, it's not just an
2744 # alias, and the configure scripts don't work without it.
2745 #
2746 AM_PROG_LIBTOOL
2747 AC_SUBST(LIBTOOL_DEPS)
2748
2749 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2750 if test x$enable_static = xyes -a x$have_plugins = xyes
2751 then
2752   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2753 fi
2754 AC_SUBST(ENABLE_STATIC)
2755
2756 dnl Save the cacheable configure results to config.cache before recursing
2757 AC_CACHE_SAVE
2758
2759 sinclude(plugins/Custom.m4) dnl
2760 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2761
2762 sinclude(asn1/Custom.m4) dnl
2763 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2764
2765 AC_CONFIG_HEADERS(config.h)
2766 AC_OUTPUT(
2767   Makefile
2768   doxygen.cfg
2769   asn1/Makefile
2770   _CUSTOM_ASN1_AC_OUTPUT_
2771   asn1/acp133/Makefile
2772   asn1/acse/Makefile
2773   asn1/ansi_map/Makefile
2774   asn1/ansi_tcap/Makefile
2775   asn1/atn-cm/Makefile
2776   asn1/atn-cpdlc/Makefile
2777   asn1/atn-ulcs/Makefile
2778   asn1/c1222/Makefile
2779   asn1/camel/Makefile
2780   asn1/cdt/Makefile
2781   asn1/charging_ase/Makefile
2782   asn1/cmip/Makefile
2783   asn1/cmp/Makefile
2784   asn1/crmf/Makefile
2785   asn1/cms/Makefile
2786   asn1/credssp/Makefile
2787   asn1/dap/Makefile
2788   asn1/disp/Makefile
2789   asn1/dop/Makefile
2790   asn1/dsp/Makefile
2791   asn1/ess/Makefile
2792   asn1/ftam/Makefile
2793   asn1/goose/Makefile
2794   asn1/gprscdr/Makefile
2795   asn1/gsm_map/Makefile
2796   asn1/h225/Makefile
2797   asn1/h235/Makefile
2798   asn1/h245/Makefile
2799   asn1/h248/Makefile
2800   asn1/h282/Makefile
2801   asn1/h283/Makefile
2802   asn1/h323/Makefile
2803   asn1/h450/Makefile
2804   asn1/h450-ros/Makefile
2805   asn1/h460/Makefile
2806   asn1/h501/Makefile
2807   asn1/HI2Operations/Makefile
2808   asn1/hnbap/Makefile
2809   asn1/idmp/Makefile
2810   asn1/ilp/Makefile
2811   asn1/inap/Makefile
2812   asn1/isdn-sup/Makefile
2813   asn1/kerberos/Makefile
2814   asn1/lcsap/Makefile
2815   asn1/ldap/Makefile
2816   asn1/logotypecertextn/Makefile
2817   asn1/lpp/Makefile
2818   asn1/lppa/Makefile
2819   asn1/lppe/Makefile
2820   asn1/lte-rrc/Makefile
2821   asn1/m3ap/Makefile
2822   asn1/mms/Makefile
2823   asn1/mpeg-audio/Makefile
2824   asn1/mpeg-pes/Makefile
2825   asn1/nbap/Makefile
2826   asn1/ns_cert_exts/Makefile
2827   asn1/novell_pkis/Makefile
2828   asn1/ocsp/Makefile
2829   asn1/p1/Makefile
2830   asn1/p22/Makefile
2831   asn1/p7/Makefile
2832   asn1/p772/Makefile
2833   asn1/pcap/Makefile
2834   asn1/pkcs1/Makefile
2835   asn1/pkcs12/Makefile
2836   asn1/pkinit/Makefile
2837   asn1/pkixac/Makefile
2838   asn1/pkix1explicit/Makefile
2839   asn1/pkix1implicit/Makefile
2840   asn1/pkixproxy/Makefile
2841   asn1/pkixqualified/Makefile
2842   asn1/pkixtsp/Makefile
2843   asn1/pres/Makefile
2844   asn1/q932/Makefile
2845   asn1/q932-ros/Makefile
2846   asn1/qsig/Makefile
2847   asn1/ranap/Makefile
2848   asn1/rnsap/Makefile
2849   asn1/ros/Makefile
2850   asn1/rrc/Makefile
2851   asn1/rrlp/Makefile
2852   asn1/rtse/Makefile
2853   asn1/rua/Makefile
2854   asn1/s1ap/Makefile
2855   asn1/sabp/Makefile
2856   asn1/sbc-ap/Makefile
2857   asn1/smrse/Makefile
2858   asn1/snmp/Makefile
2859   asn1/spnego/Makefile
2860   asn1/sv/Makefile
2861   asn1/t124/Makefile
2862   asn1/t125/Makefile
2863   asn1/t38/Makefile
2864   asn1/tcap/Makefile
2865   asn1/tetra/Makefile
2866   asn1/ulp/Makefile
2867   asn1/wlancertextn/Makefile
2868   asn1/x2ap/Makefile
2869   asn1/x509af/Makefile
2870   asn1/x509ce/Makefile
2871   asn1/x509if/Makefile
2872   asn1/x509sat/Makefile
2873   asn1/x721/Makefile
2874   capchild/Makefile
2875   capchild/doxygen.cfg
2876   doc/Makefile
2877   docbook/Makefile
2878   epan/Makefile
2879   epan/crypt/Makefile
2880   epan/doxygen.cfg
2881   epan/dfilter/Makefile
2882   epan/dissectors/Makefile
2883   epan/dissectors/dcerpc/Makefile
2884   epan/dissectors/pidl/Makefile
2885   epan/ftypes/Makefile
2886   epan/wmem/Makefile
2887   epan/wslua/Makefile
2888   filetap/Makefile
2889   codecs/Makefile
2890   ui/Makefile
2891   ui/doxygen.cfg
2892   ui/gtk/Makefile
2893   ui/gtk/doxygen.cfg
2894   ui/cli/Makefile
2895   ui/qt/Makefile
2896   ui/qt/doxygen.cfg
2897   help/Makefile
2898   packaging/Makefile
2899   packaging/macosx/Info.plist
2900   packaging/macosx/Makefile
2901   packaging/macosx/osx-dmg.sh
2902   packaging/macosx/Wireshark_package.pmdoc/index.xml
2903   packaging/nsis/Makefile
2904   packaging/rpm/Makefile
2905   packaging/rpm/SPECS/Makefile
2906   packaging/rpm/SPECS/wireshark.spec
2907   packaging/svr4/Makefile
2908   packaging/svr4/checkinstall
2909   packaging/svr4/pkginfo
2910   plugins/Makefile
2911   plugins/docsis/Makefile
2912   plugins/ethercat/Makefile
2913   plugins/gryphon/Makefile
2914   plugins/irda/Makefile
2915   plugins/m2m/Makefile
2916   plugins/mate/Makefile
2917   plugins/opcua/Makefile
2918   plugins/profinet/Makefile
2919   plugins/stats_tree/Makefile
2920   plugins/unistim/Makefile
2921   plugins/wimax/Makefile
2922   plugins/wimaxasncp/Makefile
2923   plugins/wimaxmacphy/Makefile
2924   tools/Makefile
2925   tools/lemon/Makefile
2926   wiretap/Makefile
2927   wsutil/Makefile
2928   wsutil/nghttp2/Makefile
2929   echld/Makefile
2930   _CUSTOM_AC_OUTPUT_
2931   ,)
2932 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2933
2934
2935 # Pretty messages
2936
2937 if test "x$have_gtk" = "xyes"; then
2938         if test "x$with_gtk3" = "xyes"; then
2939                 gtk_lib_message=" (with GTK+ 3"
2940         else
2941                 gtk_lib_message=" (with GTK+ 2"
2942         fi
2943         if test "x$have_ige_mac" = "xyes"; then
2944                 gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
2945         else
2946                 gtk_lib_message="$gtk_lib_message)"
2947         fi
2948 fi
2949
2950 if test "x$have_qt" = "xyes" ; then
2951         enable_qtshark="yes"
2952 else
2953         enable_qtshark="no"
2954 fi
2955
2956 if test "x$enable_setcap_install" = "xyes" ; then
2957         setcap_message="yes"
2958 else
2959         setcap_message="no"
2960 fi
2961
2962 if test "x$enable_setuid_install" = "xyes" ; then
2963         setuid_message="yes"
2964 else
2965         setuid_message="no"
2966 fi
2967
2968 if test "x$DUMPCAP_GROUP" = "x" ; then
2969         dumpcap_group_message="(none)"
2970 else
2971         dumpcap_group_message="$DUMPCAP_GROUP"
2972 fi
2973
2974 if test "x$want_zlib" = "xno" ; then
2975         zlib_message="no"
2976 else
2977         zlib_message="yes"
2978 fi
2979
2980 if test "x$want_lua" = "xyes" ; then
2981         lua_message="yes"
2982 else
2983         lua_message="no"
2984 fi
2985
2986 if test "x$want_portaudio" = "xyes" ; then
2987         portaudio_message="yes"
2988 else
2989         portaudio_message="no"
2990 fi
2991
2992 if test "x$want_ssl" = "xno" ; then
2993         ssl_message="no"
2994 else
2995         ssl_message="yes"
2996 fi
2997
2998 if test "x$want_krb5" = "xno" ; then
2999         krb5_message="no"
3000 else
3001         krb5_message="yes ($ac_krb5_version)"
3002 fi
3003
3004 if test "x$have_good_c_ares" = "xyes" ; then
3005         c_ares_message="yes"
3006 else
3007         c_ares_message="no"
3008 fi
3009
3010 if test "x$have_good_adns" = "xyes" ; then
3011         adns_message="yes"
3012 else
3013         if test "x$have_good_c_ares" = "xyes" ; then
3014                 adns_message="no (using c-ares instead)"
3015         else
3016                 adns_message="no"
3017         fi
3018 fi
3019
3020 if test "x$have_good_libcap" = "xyes" ; then
3021         libcap_message="yes"
3022 else
3023         libcap_message="no"
3024 fi
3025
3026 if test "x$have_good_geoip" = "xyes" ; then
3027         geoip_message="yes"
3028 else
3029         geoip_message="no"
3030 fi
3031
3032 echo ""
3033 echo "The Wireshark package has been configured with the following options."
3034 echo "             Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message"
3035 echo "                 Build wireshark-qt : $enable_qtshark"
3036 echo "                       Build tshark : $enable_tshark"
3037 echo "                      Build tfshark : $enable_tfshark"
3038 echo "                     Build capinfos : $enable_capinfos"
3039 echo "                      Build captype : $enable_captype"
3040 echo "                      Build editcap : $enable_editcap"
3041 echo "                      Build dumpcap : $enable_dumpcap"
3042 echo "                     Build mergecap : $enable_mergecap"
3043 echo "                   Build reordercap : $enable_reordercap"
3044 echo "                    Build text2pcap : $enable_text2pcap"
3045 echo "                      Build randpkt : $enable_randpkt"
3046 echo "                       Build dftest : $enable_dftest"
3047 echo "                     Build rawshark : $enable_rawshark"
3048 echo "                        Build echld : $have_echld"
3049 echo ""
3050 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
3051 echo "  Install dumpcap with capabilities : $setcap_message"
3052 echo "             Install dumpcap setuid : $setuid_message"
3053 echo "                  Use dumpcap group : $dumpcap_group_message"
3054 echo "                        Use plugins : $have_plugins"
3055 echo "                    Use Lua library : $lua_message"
3056 echo "                   Build rtp_player : $portaudio_message"
3057 echo "             Build profile binaries : $enable_profile_build"
3058 echo "                   Use pcap library : $want_pcap"
3059 echo "                   Use zlib library : $zlib_message"
3060 echo "               Use kerberos library : $krb5_message"
3061 echo "                 Use c-ares library : $c_ares_message"
3062 echo "               Use GNU ADNS library : $adns_message"
3063 echo "                Use SMI MIB library : $libsmi_message"
3064 echo "             Use GNU crypto library : $gcrypt_message"
3065 echo "             Use SSL crypto library : $ssl_message"
3066 echo "           Use IPv6 name resolution : $enable_ipv6"
3067 echo "                 Use gnutls library : $tls_message"
3068 echo "     Use POSIX capabilities library : $libcap_message"
3069 echo "                  Use GeoIP library : $geoip_message"
3070 echo "                     Use nl library : $libnl_message"
3071 echo "              Use SBC codec library : $have_sbc"