4 m4_define([version_major], [1])
5 m4_define([version_minor], [11])
6 m4_define([version_micro], [1])
7 m4_define([version_micro_extra], version_micro)
8 m4_append([version_micro_extra], [])
10 AC_INIT(wireshark, [version_major.version_minor.version_micro_extra], http://bugs.wireshark.org/, , http://www.wireshark.org/)
12 # Minimum autoconf version we require.
14 # Variable expansion doesn't work in AC_PREREQ()
16 AC_SUBST(AC_MIN_VERSION)
18 dnl Check for CPU / vendor / OS
19 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
20 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
21 dnl needs. Using `AC_CANONICAL_TARGET' is enough to run the two other
24 dnl As nothing in the Wireshark is itself a build tool (we are not,
25 dnl for example, a compiler that generates machine code), we probably
26 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
27 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
28 dnl AC_CANONICAL_HOST - instead. Note that we do have tools, such as
29 dnl lemon, that need to be built for the build machine, not for the
30 dnl host machine, so we might need both.
32 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
34 dnl AC_CANONICAL_BUILD
38 AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip])
40 # Make Wireshark's version available in config.h
41 AC_DEFINE(VERSION_MAJOR, version_major, [Wireshark's major version])
42 AC_DEFINE(VERSION_MINOR, version_minor, [Wireshark's minor version])
43 AC_DEFINE(VERSION_MICRO, version_micro, [Wireshark's micro version])
48 # Checks for programs used in the main build process.
54 AC_WIRESHARK_CLANG_CHECK
56 dnl Work around libtool bug (fixed in the version 1.5a?)
57 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
60 if test ! -z "$CXX"; then
62 # OK, we found something AC_LANG_CXX thinks is a C++ compiler,
65 # Some UN*Xes have, by default, a case-insensitive file
66 # system, and AC_PROG_CXX looks for, among other things,
67 # "CC" as a C++ compiler, and, if you have a case-insensitive
68 # file system and a C compiler named "cc" (both true, by
69 # default, on OS X), AC_PROG_CXX may end up thinking it's
72 # So we check by feeding the purported C++ compiler a
73 # program using C++ features (iostream).
75 # We do this after AC_PROG_LIBTOOL; if we did so before, and
76 # cleared CXX if what we had isn't a C++ compiler, that'd
77 # get undone by AC_PROG_LIBTOOL for some reason.
79 AC_MSG_CHECKING(whether $CXX is a C++ compiler)
81 AC_LINK_IFELSE([AC_LANG_PROGRAM(
86 std::cout << "Hello World! ";
96 AC_PATH_PROG(PERL, perl)
99 AC_PATH_PROG(PYTHON, python)
100 if test ! -z "$PYTHON"; then
102 # OK, we found Python; is it Python 2.5 or later?
103 # Note: we don't use named components for sys.version_info to get
104 # the major version number, as named components for version_info
105 # were apparently introduced in Python 2.7.
107 AC_MSG_CHECKING([whether $PYTHON is Python 2.5 or later])
108 python_major_version=`$PYTHON -c 'import sys; print (sys.version_info[[0]])'`
109 python_minor_version=`$PYTHON -c 'import sys; print (sys.version_info[[1]])'`
110 if test "$python_major_version" -eq 2 -a "$python_minor_version" -lt 5 ; then
112 AC_MSG_WARN([Building with Python $python_major_version.$python_minor_version may not work])
119 # XXX - should autogen.sh check for YACC/Bison and Flex? A user building
120 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
121 # as the tarball should contain the results of running YACC/Bison on .y
122 # files and running Flex on .l files, but a user building from SVN
123 # will have to run YACC/Bison and Flex to process those files.
125 # On the other hand, what about users who use a distribution tarball to
126 # do development? They *shouldn't* - that's what the SVN repository is
127 # for - but they might. They'd get errors if they modify a .y or .l
128 # file and try to do a build - but the error should tell them that they
129 # need to get YACC/Bison and/or Flex.
131 # Then again, getting them shouldn't be too big of a burden.
133 # XXX - is the same true of pod2man and pod2html, or are they needed
134 # even when building from a distribution tarball?
138 AC_PATH_PROG(YACCDUMMY, $YACC)
139 if test "x$YACCDUMMY" = x
141 AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
144 AC_PATH_PROG(LEX, flex)
147 AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
149 AC_PATH_PROG(POD2MAN, pod2man)
150 if test "x$POD2MAN" = x
153 # The alternative is not to build the man pages....
155 AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
157 AC_PATH_PROG(POD2HTML, pod2html)
158 if test "x$POD2HTML" = x
161 # The alternative is not to build the HTML man pages....
163 AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
167 # Checks for programs used by Wireshark/TShark/etc.
171 # XXX - this looks for various HTML viewers on the host, not the target;
172 # we really want to know what's available on the target, for cross-builds.
173 # That would probably require us to, at run time, look for xdg-open and,
174 # if we don't find it, look for mozilla, htmlview, etc.
176 AC_PATH_PROG(HTML_VIEWER, xdg-open)
177 if test "x$HTML_VIEWER" != x
180 # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
181 # Define some variable to be that, so we just run that?
183 AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
186 # XXX - we have to define HTML_VIEWER for the prefs.c code that
187 # sets the default value of the Web browser preference, even
188 # though that preference won't be offered.
190 AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
192 AC_PATH_PROG(HTML_VIEWER, htmlview)
193 if test "x$HTML_VIEWER" = x
195 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
197 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
202 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
203 # flags such as -pedantic, -W warning flags and -f feature flags. Currently,
204 # we assume GCC and clang do; other compilers should be added here.
206 # This is done to avoid getting tripped up by compilers that support
207 # those flags but give them a different meaning.
209 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
210 ac_supports_gcc_flags=yes
214 # Set "ac_supports_W_linker_passthrough" if the compiler is known to
215 # support "-Wl,{options}" to pass options through to the linker.
216 # Currently, we assume GCC, xlc, and clang do; other compilers should
219 if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then
220 ac_supports_W_linker_passthrough=yes
224 # Set "ac_supports_attribute_unused" if the compiler is known to
225 # support "__attribute__(unused)".
226 # Currently, we assume GCC and clang do; other compilers should
229 # XXX - do this with a compiler test?
231 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
232 ac_supports_W_linker_passthrough=yes
235 if test "x$CC_FOR_BUILD" = x
239 AC_SUBST(CC_FOR_BUILD)
240 AC_SUBST(CFLAGS_FOR_BUILD)
243 AC_PATH_PROG(DOXYGEN, doxygen)
244 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
245 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
248 # Check for pkg-config and set PKG_CONFIG accordingly.
250 # This is referenced via AC_REQUIRE([PKG_PROG_PKG_CONFIG] in some macros
251 # like PKG_CHECK_MODULES. If the first call to such a macro is under an
252 # "if" statement, it's safer to call PKG_PROG_PKG_CONFIG directly, see
253 # the comments in acolocal.m4
257 AC_ARG_ENABLE(osx-deploy-target,
258 AC_HELP_STRING( [--enable-osx-deploy-target],
259 [choose an OS X deployment target @<:@default=major release on which you're building@:>@]),
269 # Let the user specify an OS X release to use as a
270 # deplayment target; if they specify that we should
271 # have a deployment target but don't specify the
272 # deployment target, then, if we have SDKs available,
273 # pick the OS version on which the build is being done.
274 # This also causes the build to be done against an SDK
275 # rather than against the headers and libraries in
276 # /usr/include and /usr/lib.
278 # Check for an OS X deployment target early, so that
279 # as many tests using the compiler are done using the
280 # flags that we'll be using when building.
282 if test $enableval = no
285 # The user explicitly said
286 # --disable-osx-deploy-target, so don't build
290 elif test $enableval = yes
293 # The user said --enable-osx-deploy-target, but
294 # didn't say what version to target; target the
295 # major version number of the version of OS X on
296 # which we're running.
298 # (We quote the command so that we can use
299 # autoconf's M4 quoting characters, [ and ], in
300 # the sed expression.)
302 [deploy_target=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
304 deploy_target="$enableval"
310 # No. Fail, because whatever the user intended for us to
311 # do, we can't do it.
313 AC_MSG_ERROR([--enable-osx-deploy-target specified on an OS other than OS X])
325 # If we have SDKs available, default to targeting the major
326 # version number of the version of OS X on which we're
329 # (We quote the command so that we can use autoconf's
330 # M4 quoting characters, [ and ], in the sed expression.)
332 for i in /Developer/SDKs \
333 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
334 /Library/Developer/CommandLineTools/SDKs
338 [deploy_target=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
346 # No. There's nothing to do.
352 if test ! -z "$deploy_target"
354 AC_MSG_CHECKING([whether we can build for OS X $deploy_target])
355 case $deploy_target in
359 # I'm not sure this would even work.
362 AC_ERROR([We don't support building for OS X $deploy_target])
367 # XXX - never tested.
370 SDKPATH="/Developer/SDKs/MacOSX10.3.9.sdk"
375 # XXX - for 10.4, do we need 10.4u? We're
376 # not currently doing fat builds (we'd need
377 # fat versions of the support libraries for
378 # that to be useful), but, if we do, we'd
381 for i in /Developer/SDKs \
382 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
383 /Library/Developer/CommandLineTools/SDKs
385 if test -d "$i"/"MacOSX$deploy_target.sdk"
387 SDKPATH="$i"/"MacOSX$deploy_target.sdk"
391 if test -z "$SDKPATH"
394 AC_MSG_ERROR([We couldn't find the SDK for OS X $deploy_target])
401 # Add a -mmacosx-version-min flag to force tests that
402 # use the compiler, as well as the build itself, not to,
403 # for example, use compiler or linker features not supported
404 # by the minimum targeted version of the OS.
406 # Add an -isysroot flag to use the SDK.
408 CFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CFLAGS"
409 CXXFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CXXFLAGS"
410 LDFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $LDFLAGS"
413 # Add a -sdkroot flag to use with osx-app.sh.
415 OSX_APP_FLAGS="-sdkroot $SDKPATH"
418 # XXX - do we need this to build the Wireshark wrapper?
419 # XXX - is this still necessary with the -mmacosx-version-min
422 OSX_DEPLOY_TARGET="MACOSX_DEPLOYMENT_TARGET=$deploy_target"
425 # In the installer package XML file, give the deployment target
426 # as the minimum version.
428 OSX_MIN_VERSION="$deploy_target"
430 case $deploy_target in
434 # Only 32-bit builds are supported. 10.5
435 # (and 10.4?) had a bug that causes some BPF
436 # functions not to work with 64-bit userland
437 # code, so capturing won't work.
439 CFLAGS="-m32 $CFLAGS"
440 CXXFLAGS="-m32 $CXXFLAGS"
441 LDFLAGS="-m32 $LDFLAGS"
453 # In the installer package XML file, give the current OS
454 # version, minor version and all, as the minimum version.
455 # We can't guarantee that the resulting binary will work
456 # on older OS versions, not even older minor versions
457 # (original release or earlier software updates).
459 OSX_MIN_VERSION=`sw_vers -productVersion`
463 AC_SUBST(OSX_MIN_VERSION)
466 # Try to arrange for large file support.
471 # GUI toolkit options
474 AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@],
475 [use Qt @<:@default=yes@:>@]),
476 with_qt="$withval", with_qt="unspecified")
479 AC_HELP_STRING( [--with-gtk2=@<:@yes/no@:>@],
480 [use GTK+ 2.0 @<:@default=no@:>@]),
481 with_gtk2="$withval", with_gtk2="unspecified")
484 AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
485 [use GTK+ 3.0 instead of 2.0 @<:@default=yes@:>@]),
486 with_gtk3="$withval", with_gtk3="unspecified")
489 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+, then switched back to
490 # LGPLv2.1+ in version 3.1.10
492 AC_ARG_WITH([gnutls],
493 AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
494 [use GnuTLS library @<:@default=yes@:>@]),
495 with_gnutls="$withval", with_gnutls="yes")
496 if test "x$with_gnutls" = "xyes"; then
497 have_license_compatible_gnutls="no"
498 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.1.10 ],
499 [ have_license_compatible_gnutls="yes" ], [ echo "GnuTLS >= 3.1.10 not found " ]
502 if test "x$have_license_compatible_gnutls" != "xyes"; then
503 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0 gnutls < 3],
504 [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 1.2.0, < 3.0 not found " ]
508 if test "x$have_license_compatible_gnutls" = "xyes"; then
509 echo "GnuTLS found, enabling SSL decryption"
510 AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
513 echo "GnuTLS with compatible license not found, disabling SSL decryption"
520 AC_ARG_WITH([gcrypt],
521 AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
522 [use gcrypt library @<:@default=yes@:>@]),
523 with_gcrypt="$withval", with_gcrypt="yes")
524 if test "x$with_gcrypt" = "xyes"; then
525 AM_PATH_LIBGCRYPT(1.1.92,
527 echo "libgcrypt found, enabling ipsec decryption"
528 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
532 if test x$libgcrypt_config_prefix != x ; then
533 AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
535 echo "libgcrypt not found, disabling ipsec decryption"
543 AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
544 [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
546 if test "x$withval" = "xno"
549 elif test "x$withval" = "xyes"
553 elif test "x$withval" = "x1"
557 elif test "x$withval" = "x2"
561 elif test "x$withval" = "x3"
566 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
570 # Use libnl if it's present, otherwise don't.
572 want_libnl=ifavailable
576 # Libnl is Linux-specific.
581 AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
583 if test x$want_libnl = "xno"; then
588 # Test for specific libnl versions only if no version
589 # was specified by the user or if the version in question
590 # was requested by the user.
592 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
593 PKG_CHECK_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
595 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
596 PKG_CHECK_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
598 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
599 PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
601 if (test "${have_libnl3}" = "yes"); then
602 CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
603 LIBS="$LIBS $LIBNL3_LIBS"
604 AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
605 AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
606 libnl_message="yes (v3)"
608 elif (test "${have_libnl2}" = "yes"); then
609 CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
610 LIBS="$LIBS $LIBNL2_LIBS"
611 AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
612 AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
613 libnl_message="yes (v2)"
615 elif (test "${have_libnl1}" = "yes"); then
616 CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
617 LIBS="$LIBS $LIBNL1_LIBS"
618 AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
619 AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
620 libnl_message="yes (v1)"
623 if test x$want_libnl = "xyes"; then
624 case "$libnl_version" in
627 AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
631 AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
638 AC_MSG_CHECKING([if nl80211.h is new enough])
639 AC_TRY_COMPILE([#include <linux/nl80211.h>],
640 [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
641 x = NL80211_ATTR_SUPPORTED_IFTYPES;
642 x = NL80211_ATTR_SUPPORTED_COMMANDS;
643 x = NL80211_ATTR_WIPHY_FREQ;
644 x = NL80211_CHAN_NO_HT;],
645 [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
648 AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
649 AC_TRY_COMPILE([#include <linux/nl80211.h>],
650 [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
651 [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
656 if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
657 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
662 # FIXME: currently the path argument to with-libsmi is being ignored
666 # Check for programs used when building DocBook documentation.
669 # Check for a2x (convert asciidoc to another format)
670 AC_PATH_PROG(A2X, a2x)
671 AC_CHECK_PROG(HAVE_A2X, a2x, "yes", "no")
672 AM_CONDITIONAL(HAVE_A2X, test x$HAVE_A2X = xyes)
674 # Want to control a tape drive? Use mt. Want to convert HTML to text?
675 # Uhhhhh... elinks? lynx? w3m? pandoc? html2text?
676 AC_PATH_PROG(ELINKS, elinks)
677 AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no")
678 AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes)
680 # Check for fop (translate .fo to e.g. pdf)
681 AC_PATH_PROG(FOP, fop)
682 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
683 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
685 # Check for lynx (html -> text)
686 AC_PATH_PROG(LYNX, lynx)
687 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
688 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
690 # Check for w3m (html -> text)
691 AC_PATH_PROG(W3M, w3m)
692 AC_CHECK_PROG(HAVE_W3M, w3m, "yes", "no")
693 AM_CONDITIONAL(HAVE_W3M, test x$HAVE_W3M = xyes)
696 AC_PATH_PROG(XMLLINT, xmllint)
697 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
698 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
701 AC_PATH_PROG(XSLTPROC, xsltproc)
702 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
703 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
706 # Check for packaging utilities
707 # For now, we check to see if the various packaging utilites are in our
708 # path. I'm too lazy to write code to go hunt for them. - Gerald
712 # (Lets you install the desktop files.)
714 AC_PATH_PROG(DESKTOP_FILE_INSTALL, desktop-file-install)
717 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
718 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
719 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
721 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
722 -a x$HAVE_PKGTRANS = xyes ; then
723 HAVE_SVR4_PACKAGING=yes
725 HAVE_SVR4_PACKAGING=no
727 AC_SUBST(HAVE_SVR4_PACKAGING)
730 AC_WIRESHARK_RPM_CHECK
734 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
737 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
738 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
739 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
741 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
742 -a x$HAVE_BLESS = xyes ; then
743 HAVE_OSX_PACKAGING=yes
745 HAVE_OSX_PACKAGING=no
747 AC_SUBST(HAVE_OSX_PACKAGING)
750 # Some compilers have to be told to fail on unknown warning errors;
751 # make sure we do that.
753 AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR
756 # Try to add some additional gcc checks to CFLAGS
758 AC_ARG_ENABLE(extra-gcc-checks,
759 AC_HELP_STRING( [--enable-extra-gcc-checks],
760 [do additional -W checks in GCC @<:@default=no@:>@]),
762 wireshark_extra_gcc_flags=$enableval
763 if test $enableval != no
765 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-pedantic)
767 # Various code blocks this one.
769 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Woverflow)
770 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
772 # Some memset() calls to clear out structures
773 # on the stack are getting flagged as "will never
774 # be executed" by this, at least by Apple's
775 # i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on
776 # Apple Inc. build 5658) (LLVM build 2336.11.00), for
777 # some unknown reason.
779 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunreachable-code)
781 # Due to various places where APIs we don't control
782 # require us to cast away constness, we can probably
783 # never enable these ones with -Werror.
785 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-qual)
786 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wbad-function-cast, C)
788 # Some generated ASN.1 dissectors block this one;
789 # multiple function declarations for the same
790 # function are being generated.
792 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wredundant-decls)
794 # Some loops are safe, but it's hard to convince the
797 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunsafe-loop-optimizations)
799 # All the registration functions block these for now.
801 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-prototypes)
802 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-declarations)
804 # A bunch of "that might not work on SPARC" code blocks
807 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-align)
810 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
811 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wextra) # -W is now known as -Wextra
812 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdeclaration-after-statement, C)
813 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wendif-labels)
814 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpointer-arith)
815 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-pointer-sign, C)
816 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
817 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wformat-security)
818 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wold-style-definition, C)
819 # The Qt headers generate a ton of shortening errors on 64-bit systems
820 # so only enable this for C for now.
821 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshorten-64-to-32, C)
822 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wstrict-prototypes, C)
823 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wjump-misses-init, C)
824 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wvla)
825 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Waddress)
826 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
827 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wattributes)
828 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
829 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
830 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpragmas)
831 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-overlength-strings)
832 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wwrite-strings)
833 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-long-long)
834 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wc++-compat, C)
839 # Make sure -Wshadow doesn't complain about variables in function and
840 # function pointer declarations shadowing other variables; if not, don't
841 # turn it on, as some versions of GCC (including the one in at least
842 # some Xcode versions that came with Mac OS X 10.5) complain about
845 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshadow, C,
847 extern int bar(int a);
853 int (*fptr)(int a) = bar;
858 [warns about variables in function declarations shadowing other variables])
860 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
861 # is given a constant string.
862 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
863 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wlogical-op, C,
867 int foo(const char *, int);
871 foo(const char *sep, int c)
873 if (strchr (sep, c) != NULL)
882 return foo("<", 'a');
885 [generates warnings from strchr()])
889 # On OS X, suppress warnings about deprecated declarations, because
890 # they apparently think everything on OS X is Shiny Happy Apple-
891 # Framework-Based Apps and are deprecating some perfectly OK
892 # multi-platform open-source libraries that we use in our multi-platform
893 # open-source application in favor of various frameworks that are
898 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-deprecated-declarations)
903 # Use the faster pre gcc 4.5 floating point precision if available.
905 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
907 CFLAGS_before_fvhidden=$CFLAGS
908 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
909 if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden"
911 # TODO add other ways of hiding symbols
912 AC_MSG_WARN(Compiler will export all symbols from shared libraries)
915 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
916 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
917 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
918 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
919 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
920 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
923 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
924 # so that we can build dumpcap PIE - it may run with elevated
925 # privileges, and using PIE means the OS can run it at random locations
926 # in the address space to make attacks more difficult.
928 CFLAGS_before_pie=$CFLAGS
929 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
930 if test "x$CLFAGS" != "x$CFLAGS_before_pie"
933 CFLAGS=$CFLAGS_before_pie
935 LDFLAGS_before_pie=$LDFLAGS
936 AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
937 if test "x$LDFLAGS" != "x$LDFLAGS_before_pie"
944 LDFLAGS=$LDFLAGS_before_pie
949 AC_SUBST(PIE_LDFLAGS)
952 # If we're running GCC or clang define _U_ to be "__attribute__((unused))"
953 # so we can use _U_ to flag unused function parameters and not get warnings
954 # about them. Otherwise, define _U_ to be an empty string so that _U_ used
955 # to flag an unused function parameters will compile with other compilers.
957 # XXX - similar hints for other compilers?
959 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
960 AC_DEFINE(_U_, __attribute__((unused)), [Hint to the compiler that a function parameters is not used])
962 AC_DEFINE(_U_, , [Hint to the compiler that a function parameters is not used])
965 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
966 # (only if the GCC 'optimization level' > 0).
968 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
969 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
971 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
972 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
975 # If the compiler supports GCC-style flags, enable a barrier "stop on
977 # This barrier is set for a very large part of the code. However, it is
978 # typically not set for "generated" code (flex, ans2wrs, idl2wrs, ...)
980 warnings_as_errors_default="yes"
981 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
982 AC_ARG_ENABLE(warnings-as-errors,
983 AC_HELP_STRING( [--enable-warnings-as-errors],
984 [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra warnings are enabled@:>@]),
986 if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
987 with_warnings_as_errors="yes"
990 with_warnings_as_errors="no"
995 if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
996 with_warnings_as_errors="yes"
999 with_warnings_as_errors="no"
1004 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
1007 # Add any platform-specific compiler flags needed.
1009 AC_MSG_CHECKING(for platform-specific compiler flags)
1010 if test "x$GCC" = "xyes" ; then
1012 # GCC - do any platform-specific tweaking necessary.
1016 # the X11 headers don't automatically include prototype info
1017 # and a lot don't include the return type
1018 CPPFLAGS="$CPPFLAGS -DFUNCPROTO=15"
1019 CFLAGS="$CFLAGS -Wno-return-type"
1020 CXXFLAGS="$CXXFLAGS -Wno-return-type"
1021 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
1024 AC_MSG_RESULT(none needed)
1029 # Not GCC - assume it's the vendor's compiler.
1034 # HP's ANSI C compiler; flags suggested by Jost Martin.
1035 # "-Ae" for ANSI C plus extensions such as "long long".
1036 # "+O2", for optimization. XXX - works with "-g"?
1038 # HP's ANSI C++ compiler doesn't support "-Ae", but
1039 # does support "+O2", at least according to the
1040 # documentation I can find online.
1042 CFLAGS="-Ae +O2 $CFLAGS"
1043 CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
1044 CXXFLAGS="+O2 $CFLAGS"
1045 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
1048 AC_MSG_RESULT(none needed)
1054 # Add any platform-specific linker flags needed.
1056 AC_MSG_CHECKING(for platform-specific linker flags)
1060 # Add -Wl,-single_module to the LDFLAGS used with shared
1061 # libraries, to fix some error that show up in some cases;
1062 # some Apple documentation recommends it for most shared
1065 LDFLAGS_SHAREDLIB="-Wl,-single_module"
1067 # Add -Wl,-search_paths_first to make sure that if we search
1068 # directories A and B, in that order, for a given library, a
1069 # non-shared version in directory A, rather than a shared
1070 # version in directory B, is chosen (so we can use
1071 # --with-pcap=/usr/local to force all programs to be linked
1072 # with a static version installed in /usr/local/lib rather than
1073 # the system version in /usr/lib).
1075 # Also add -Wl,-rpath,@executable_path/../lib and
1076 # -Wl,-rpath,/usr/local/lib, so that, if we build an app
1077 # bundle, we can tweak all the executable images, shared
1078 # libraries, and plugins in the bundle to look for non-system
1079 # libraries in the rpath, rather than having a script tweak
1080 # DYLD_LIBRARY_PATH.
1082 LDFLAGS="-Wl,-search_paths_first -Wl,-rpath,@executable_path/../lib -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/usr/local/lib $LDFLAGS"
1083 AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first, and rpaths])
1087 # Shared libraries in cygwin/Win32 must never contain
1088 # undefined symbols.
1090 LDFLAGS="$LDFLAGS -no-undefined"
1091 AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
1094 AC_MSG_RESULT(none needed)
1097 AC_SUBST(LDFLAGS_SHAREDLIB)
1099 # Enable silent builds by default
1100 # Verbose builds can be enabled with "./configure
1101 # --enable-silent-rules ..." or "make V=1 ..."
1102 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
1103 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
1106 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
1107 # "just Darwin" (as we don't currently support iOS, and as I don't
1108 # think you can build and run "just Darwin" as an OS for PCs), we
1109 # arrange to build some programs with Application Services so they
1110 # can launch Web browsers and Finder windows, arrange to build some
1111 # programs with System Configuration so they can get "friendly names"
1112 # and other information about interfaces, and build any programs that
1113 # use either of those frameworks or that report version information
1114 # with Core Foundation as the frameworks in question use it and as we
1115 # get version information from plists and thus need Core Foundation
1116 # to process those plists.
1121 AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
1122 APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
1123 SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
1124 COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
1127 # OK, so we have the OS X frameworks; do they include
1128 # CFPropertyListCreateWithStream, or do we have
1129 # to fall back on CFPropertyListCreateFromStream?
1130 # (They only differ in the error return, which we
1131 # don't care about. And, no, we shouldn't just
1132 # use CFPropertyListCreateFromStream, because it's
1133 # deprecated in newer releases.)
1135 ac_save_LIBS="$LIBS"
1136 LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
1137 AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
1138 LIBS="$ac_save_LIBS"
1141 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
1142 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
1143 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
1146 # On Solaris, check whether we have getexecname().
1150 AC_CHECK_FUNC(getexecname)
1154 dnl Look in /usr/local for header files and libraries ?
1155 dnl XXX FIXME don't include /usr/local if it is already in the system
1156 dnl search path as this causes gcc 3.2 on Linux to complain about a change
1157 dnl of the system search order for includes
1158 AC_ARG_ENABLE(usr-local,
1159 AC_HELP_STRING( [--enable-usr-local],
1160 [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
1161 ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
1163 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
1164 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1165 if test -d "/usr/local"; then
1168 # Arrange that we search for header files in the source directory
1169 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
1170 # as various packages we use ("libpcap", "zlib", "adns")
1171 # may have been installed under "/usr/local/include".
1173 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
1176 # Arrange that we search for libraries in "/usr/local/lib".
1178 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
1187 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
1192 AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
1193 if test x$LD_LIBRARY_PATH != x ; then
1194 LIBS="$LIBS -R$LD_LIBRARY_PATH"
1195 AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
1197 AC_MSG_RESULT(no -- this may be a problem in a few seconds)
1203 # Check for versions of "sed" inadequate to handle, in libtool, a list
1204 # of object files as large as the list in Wireshark.
1206 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
1207 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
1208 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
1209 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
1210 # is the only "sed" that comes with Solaris that can handle Wireshark.
1212 # Add any checks here that are necessary for other OSes.
1214 AC_WIRESHARK_GNU_SED_CHECK
1215 if test "$HAVE_GNU_SED" = no ; then
1218 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
1220 /bin/sed|/usr/bin/sed|/usr/ucb/sed)
1222 AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
1237 # Enable/disable wireshark
1238 AC_ARG_ENABLE(wireshark,
1239 AC_HELP_STRING( [--enable-wireshark],
1240 [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]),
1241 enable_wireshark=$enableval,enable_wireshark=yes)
1243 AC_ARG_ENABLE(packet-editor,
1244 AC_HELP_STRING( [--enable-packet-editor],
1245 [add support for packet editor in Wireshark @<:@default=no@:>@]),
1246 enable_packet_editor=$enableval,enable_packet_editor=no)
1247 if test x$enable_packet_editor = xyes; then
1248 AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
1251 AC_ARG_ENABLE(profile-build,
1252 AC_HELP_STRING( [--enable-profile-build],
1253 [build profile-ready binaries @<:@default=no@:>@]),
1254 enable_profile_build=$enableval,enable_profile_build=no)
1255 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
1256 AC_MSG_CHECKING(if profile builds must be generated)
1257 if test "x$enable_profile_build" = "xyes" ; then
1258 if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
1260 CFLAGS=" -pg $CFLAGS"
1261 CXXFLAGS=" -pg $CXXFLAGS"
1264 echo "Building profile binaries currently only supported for GCC and clang."
1270 # Create DATAFILE_DIR #define for config.h
1271 datafiledir=$datadir/wireshark
1273 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1274 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1275 # Ugly hack, but I don't see how this problem can be solved
1276 # properly that DATAFILE_DIR had a value starting with
1277 # "${prefix}/" instead of e.g. "/usr/local/"
1278 eval eval echo "$datafiledir"
1280 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
1282 # Create DOC_DIR #define for config.h
1284 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1285 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1286 # Ugly hack, but I don't see how this problem can be solved
1287 # properly that DOC_DIR had a value starting with
1288 # "${prefix}/" instead of e.g. "/usr/local/"
1289 eval eval echo "$docdir"
1291 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
1293 GTK2_MIN_VERSION=2.12.0
1294 AC_SUBST(GTK2_MIN_VERSION)
1295 GTK3_MIN_VERSION=3.0.0
1296 AC_SUBST(GTK3_MIN_VERSION)
1297 QT_MIN_VERSION=4.6.0
1298 AC_SUBST(QT_MIN_VERSION)
1299 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1300 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1302 # We only do those if we're going to be building Wireshark;
1303 # otherwise, we don't have any GUI to build, so we don't use
1306 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1307 # force all programs to be built with GTK+ or Qt.
1309 # Release dates for GTK+ versions:
1310 # 2.12.0: 14 Sep 2007
1311 # 2.14.0: 04 Sep 2008
1312 # 2.16.0: 13 Mar 2009
1313 # 2.18.0: 23 Sep 2009
1314 # 2.20.0: 23 Mar 2010
1315 # 2.22.0: 23 Sep 2010
1316 # 2.24.0: 30 Jan 2011
1317 # 3.0.0: 10 Feb 2011
1318 # 3.2.0: 25 Sep 2011
1319 # 3.4.0: 26 Mar 2012
1320 # 3.6.0: 24 Sep 2012
1321 # 3.8.0: 25 Mar 2013
1325 if test "x$enable_wireshark" = "xyes"; then
1326 if test "x$with_gtk2" = "xunspecified" -a \
1327 "x$with_gtk3" = "xunspecified" -a \
1328 "x$with_qt" = "xunspecified"; then
1330 # No GUI toolkit was explicitly specified; pick Qt and GTK+ 3.
1335 if test "x$with_qt" = "xyes"; then
1337 # Qt was specified; Make sure we have a C++ compiler.
1339 if test -z "$CXX"; then
1340 AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1344 # Now make sure we have Qt and, if so, add the flags
1345 # for it to CFLAGS and CXXFLAGS.
1347 AC_WIRESHARK_QT_CHECK($QT_MIN_VERSION,
1349 CFLAGS="$CFLAGS $Qt_CFLAGS"
1350 CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1352 GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-qt"
1353 OSX_APP_FLAGS="$OSX_APP_FLAGS -qt"
1356 [AC_MSG_ERROR([Qt is not available])])
1359 # XXX - greasy hack to make ui/gtk/recent.c
1362 CPPFLAGS="-DQT_GUI_LIB"
1365 if test "x$with_gtk3" = "xyes"; then
1367 # GTK+ 3 was specified; make sure they didn't also
1368 # specify GTK+ 2, as we don't support building both
1369 # GTK+ 2 and GTK+ 3 versions at the same time.
1371 if test "x$with_gtk2" = "xyes"; then
1372 AC_MSG_ERROR([Both GTK+ 2 and GTK+ 3 were specified; choose one but not both])
1376 # Make sure we have GTK+ 3.
1378 AM_PATH_GTK_3_0(3.0.0,
1380 CFLAGS="$CFLAGS $GTK_CFLAGS"
1381 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1383 GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk3"
1385 [AC_MSG_ERROR([GTK+ 3 is not available])])
1386 elif test "x$with_gtk2" = "xyes"; then
1388 # GTK+ 3 wasn't specified, and GTK+ 2 was specified;
1389 # make sure we have GTK+ 2.
1391 AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1393 CFLAGS="$CFLAGS $GTK_CFLAGS"
1394 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1396 GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk2"
1398 [AC_MSG_ERROR([GTK+ 2 is not available])])
1401 AC_SUBST(GUI_CONFIGURE_FLAGS)
1403 GLIB_MIN_VERSION=2.16.0
1404 AC_SUBST(GLIB_MIN_VERSION)
1405 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1406 # support, as we need that for dynamically loading plugins.
1407 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1408 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1409 # superset of GLIB_CFLAGS. If we didn't find GTK+, it does add
1410 # GLIB_CFLAGS to CFLAGS.
1411 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1412 # set when generating the Makefile, so we can make programs that require
1413 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1414 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1415 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1416 # programs to be built with GLib.
1418 # Release dates for GLib versions:
1419 # 2.14.0: 03 Aug 2007
1420 # 2.16.0: 10 Mar 2008
1421 # 2.18.0: 02 Sep 2008
1422 # 2.20.0: 13 Mar 2009
1423 # 2.22.0: 22 Sep 2009
1424 # 2.24.0: 28 Mar 2010
1425 # 2.26.0: 27 Sep 2010
1426 # 2.28.0: 08 Feb 2011
1427 # 2.30.0: 27 Sep 2011
1428 # 2.32.0: 24 Mar 2012
1429 # 2.34.0: 24 Sep 2012
1430 # 2.36.0: 25 Mar 2013
1432 use_glib_cflags="true"
1433 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1434 # We have both GTK and Qt and thus will be building both wireshark
1437 wireshark_bin="wireshark\$(EXEEXT) wireshark-qt\$(EXEEXT)"
1438 wireshark_man="wireshark.1"
1439 wireshark_SUBDIRS="codecs ui/qt ui/gtk"
1441 if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1442 # We don't have GTK+ but we have Qt.
1444 wireshark_bin="wireshark-qt\$(EXEEXT)"
1445 wireshark_man="wireshark.1"
1446 wireshark_SUBDIRS="codecs ui/qt"
1448 if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1449 # We have GTK+ but not Qt.
1451 wireshark_bin="wireshark\$(EXEEXT)"
1452 wireshark_man="wireshark.1"
1453 wireshark_SUBDIRS="codecs ui/gtk"
1454 use_glib_cflags="false"
1456 if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1457 # We have neither GTK+ nor Qt.
1459 # If they didn't explicitly say "--disable-wireshark",
1460 # fail (so that, unless they explicitly indicated that
1461 # they don't want Wireshark, we stop so they know they
1462 # won't be getting Wireshark unless they fix the GTK+/Qt
1465 if test "x$enable_wireshark" = "xyes"; then
1466 if test "x$with_gtk3" = "xyes"; then
1467 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled])
1469 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1476 if test "$have_gtk" = "yes" ; then
1477 # If we have GTK then add flags for it.
1479 CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1480 CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1481 CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1482 CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1483 if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1484 # Enable GSEAL when building with GTK > 2.20
1485 # (Versions prior to 2.22 lacked some necessary accessors.)
1486 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1490 # XXX - Is this really necessary? When we build with both Gtk+ and Qt it works...
1491 if test "$use_glib_cflags" = "true"; then
1493 AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1495 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1496 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1497 ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1499 # Don't use GLIB_CFLAGS
1500 AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1504 # "make dist" requires that we have the Qt build tools.
1506 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1507 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1508 # installed; if they're still doing that in current Fedora releases,
1509 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1511 AC_PATH_PROG(UIC, uic)
1514 AC_PATH_PROG(UIC, uic-qt4)
1517 if test "x$with_qt" = "xyes"; then
1519 # If you want to build with Qt, you'd better
1522 AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1525 # We shouldn't fail here, as the user's not
1526 # building with Qt, and we shouldn't force them
1527 # to have Qt installed if they're not doing so.
1528 # "make dist" will fail if they do that, but
1529 # we don't know whether they'll be doing that,
1530 # so this is the best we can do.
1537 AC_PATH_PROG(MOC, moc)
1540 AC_PATH_PROG(MOC, moc-qt4)
1543 if test "x$with_qt" = "xyes"; then
1545 # If you want to build with Qt, you'd better
1548 AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1551 # We shouldn't fail here, as the user's not
1552 # building with Qt, and we shouldn't force them
1553 # to have Qt installed if they're not doing so.
1554 # "make dist" will fail if they do that, but
1555 # we don't know whether they'll be doing that,
1556 # so this is the best we can do.
1564 # Error out if a glib header other than a "top level" header
1565 # (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1567 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1569 # Error out on the usage of deprecated glib functions
1570 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1573 # Check whether GLib modules are supported, to determine whether we
1574 # can support plugins.
1576 AC_MSG_CHECKING(whether GLib supports loadable modules)
1577 ac_save_CFLAGS="$CFLAGS"
1578 ac_save_LIBS="$LIBS"
1579 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1580 LIBS="$GLIB_LIBS $LIBS"
1583 #include <gmodule.h>
1590 if (g_module_supported())
1591 return 0; /* success */
1593 return 1; /* failure */
1595 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1596 [echo $ac_n "cross compiling; assumed OK... $ac_c"
1597 ac_cv_glib_supports_modules=yes])
1598 CFLAGS="$ac_save_CFLAGS"
1599 LIBS="$ac_save_LIBS"
1600 if test "$ac_cv_glib_supports_modules" = yes ; then
1609 # If we have <dlfcn.h>, check whether we have dladdr.
1611 if test "$ac_cv_header_dlfcn_h" = "yes"
1614 # Use GLib compiler flags and linker flags; GLib's gmodule
1615 # stuff uses the dl APIs if available, so it might know
1616 # what flags are needed.
1618 ac_save_CFLAGS="$CFLAGS"
1619 ac_save_LIBS="$LIBS"
1620 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1621 LIBS="$GLIB_LIBS $LIBS"
1622 AC_CHECK_FUNCS(dladdr)
1623 if test x$ac_cv_func_dladdr = xno
1626 # OK, try it with -ldl, in case you need that to get
1627 # dladdr(). For some reason, on Linux, that's not
1628 # part of the GLib flags; perhaps GLib itself is
1629 # linked with libdl, so that you can link with
1630 # Glib and it'll pull libdl in itself.
1633 AC_CHECK_FUNCS(dladdr)
1635 CFLAGS="$ac_save_CFLAGS"
1636 LIBS="$ac_save_LIBS"
1640 # Check whether GLib's printf supports thousands grouping. (This might
1641 # be different from the system's printf since GLib can optionally use
1642 # its own printf implementation.)
1644 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1645 ac_save_CFLAGS="$CFLAGS"
1646 ac_save_LIBS="$LIBS"
1647 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1648 LIBS="$GLIB_LIBS $LIBS"
1659 setlocale(LC_ALL, "en_US.UTF-8");
1660 str = g_strdup_printf("%'u", 123456);
1661 return (strcmp (str, "123,456") != 0);
1663 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1664 [echo $ac_n "cross compiling; playing it safe... $ac_c"
1665 ac_cv_glib_supports_printf_grouping=no])
1666 CFLAGS="$ac_save_CFLAGS"
1667 LIBS="$ac_save_LIBS"
1668 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1670 AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1675 if test "x$have_gtk" = "xyes"
1678 # We have GTK+; do we want the OS X integration functions and,
1679 # if so, do we have them and, if so, which versions do we have,
1680 # the old Carbon-based ones or the new Cocoa-based ones?
1682 AC_MSG_CHECKING(whether to use OS X integration functions)
1684 AC_ARG_WITH(osx-integration,
1685 AC_HELP_STRING( [--with-osx-integration],
1686 [use OS X integration functions @<:@default=yes, if available@:>@]),
1688 if test $withval = no
1690 want_osx_integration=no
1692 want_osx_integration=yes
1695 want_osx_integration=yes
1697 if test "x$want_osx_integration" = "xno"; then
1701 AC_WIRESHARK_OSX_INTEGRATION_CHECK
1705 AC_SUBST(wireshark_bin)
1706 AC_SUBST(wireshark_man)
1707 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1708 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
1709 AC_SUBST(OSX_APP_FLAGS)
1710 AC_SUBST(OSX_DMG_FLAGS)
1713 # Enable/disable tshark
1715 AC_ARG_ENABLE(tshark,
1716 AC_HELP_STRING( [--enable-tshark],
1717 [build TShark @<:@default=yes@:>@]),
1718 tshark=$enableval,enable_tshark=yes)
1720 if test "x$enable_tshark" = "xyes" ; then
1721 tshark_bin="tshark\$(EXEEXT)"
1722 tshark_man="tshark.1"
1723 wiresharkfilter_man="wireshark-filter.4"
1728 AC_SUBST(tshark_bin)
1729 AC_SUBST(tshark_man)
1730 AC_SUBST(wiresharkfilter_man)
1734 # Enable/disable editcap
1736 AC_ARG_ENABLE(editcap,
1737 AC_HELP_STRING( [--enable-editcap],
1738 [build editcap @<:@default=yes@:>@]),
1739 enable_editcap=$enableval,enable_editcap=yes)
1741 if test "x$enable_editcap" = "xyes" ; then
1742 editcap_bin="editcap\$(EXEEXT)"
1743 editcap_man="editcap.1"
1748 AC_SUBST(editcap_bin)
1749 AC_SUBST(editcap_man)
1753 # Enable/disable echld
1755 AC_ARG_ENABLE(echld,
1756 AC_HELP_STRING( [--enable-echld],
1758 have_echld=$enableval,have_echld=no)
1760 AM_CONDITIONAL(HAVE_ECHLD, test "x$have_echld" = "xyes")
1761 if test "x$have_echld" = "xyes"
1763 AC_DEFINE(HAVE_ECHLD, 1, [Define if echld is enabled])
1764 echld_test_bin="echld_test\$(EXEEXT)"
1771 AC_SUBST(echld_test_bin)
1775 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1778 # Enable/disable capinfos
1780 AC_ARG_ENABLE(capinfos,
1781 AC_HELP_STRING( [--enable-capinfos],
1782 [build capinfos @<:@default=yes@:>@]),
1783 enable_capinfos=$enableval,enable_capinfos=yes)
1785 if test "x$enable_capinfos" = "xyes" ; then
1786 capinfos_bin="capinfos\$(EXEEXT)"
1787 capinfos_man="capinfos.1"
1792 AC_SUBST(capinfos_bin)
1793 AC_SUBST(capinfos_man)
1796 # Enable/disable mergecap
1798 AC_ARG_ENABLE(mergecap,
1799 AC_HELP_STRING( [--enable-mergecap],
1800 [build mergecap @<:@default=yes@:>@]),
1801 enable_mergecap=$enableval,enable_mergecap=yes)
1803 if test "x$enable_mergecap" = "xyes" ; then
1804 mergecap_bin="mergecap\$(EXEEXT)"
1805 mergecap_man="mergecap.1"
1810 AC_SUBST(mergecap_bin)
1811 AC_SUBST(mergecap_man)
1814 # Enable/disable reordercap
1816 AC_ARG_ENABLE(reordercap,
1817 AC_HELP_STRING( [--enable-reordercap],
1818 [build reordercap @<:@default=yes@:>@]),
1819 enable_reordercap=$enableval,enable_reordercap=yes)
1821 if test "x$enable_reordercap" = "xyes" ; then
1822 reordercap_bin="reordercap\$(EXEEXT)"
1823 reordercap_man="reordercap.1"
1828 AC_SUBST(reordercap_bin)
1829 AC_SUBST(reordercap_man)
1832 # Enable/disable text2pcap
1834 AC_ARG_ENABLE(text2pcap,
1835 AC_HELP_STRING( [--enable-text2pcap],
1836 [build text2pcap @<:@default=yes@:>@]),
1837 text2pcap=$enableval,enable_text2pcap=yes)
1839 if test "x$enable_text2pcap" = "xyes" ; then
1840 text2pcap_bin="text2pcap\$(EXEEXT)"
1841 text2pcap_man="text2pcap.1"
1846 AC_SUBST(text2pcap_bin)
1847 AC_SUBST(text2pcap_man)
1850 # Enable/disable dftest
1852 AC_ARG_ENABLE(dftest,
1853 AC_HELP_STRING( [--enable-dftest],
1854 [build dftest @<:@default=yes@:>@]),
1855 enable_dftest=$enableval,enable_dftest=yes)
1857 if test "x$enable_dftest" = "xyes" ; then
1858 dftest_bin="dftest\$(EXEEXT)"
1859 dftest_man="dftest.1"
1864 AC_SUBST(dftest_bin)
1865 AC_SUBST(dftest_man)
1868 # Enable/disable randpkt
1870 AC_ARG_ENABLE(randpkt,
1871 AC_HELP_STRING( [--enable-randpkt],
1872 [build randpkt @<:@default=yes@:>@]),
1873 enable_randpkt=$enableval,enable_randpkt=yes)
1875 if test "x$enable_randpkt" = "xyes" ; then
1876 randpkt_bin="randpkt\$(EXEEXT)"
1877 randpkt_man="randpkt.1"
1882 AC_SUBST(randpkt_bin)
1883 AC_SUBST(randpkt_man)
1887 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1888 dnl "gethostbyname()".
1889 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1891 dnl Checks for "connect()", used as a proxy for "socket()" - and
1892 dnl "-lsocket", if we need it to get "connect()".
1893 AC_WIRESHARK_SOCKET_LIB_CHECK
1896 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1899 AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1900 [use libpcap for packet capturing @<:@default=yes@:>@]),
1902 if test $withval = no
1905 elif test $withval = yes
1916 if test "x$want_pcap" = "xno" ; then
1920 AC_WIRESHARK_PCAP_CHECK
1924 dnl Check for airpcap
1925 AC_MSG_CHECKING(whether to include airpcap support)
1926 AC_ARG_ENABLE(airpcap,
1927 AC_HELP_STRING( [--enable-airpcap],
1928 [use AirPcap in Wireshark @<:@default=yes@:>@]),
1929 enable_airpcap=$enableval, enable_airpcap=yes)
1931 if test x$enable_airpcap = xyes; then
1932 if test "x$want_pcap" = "xno" ; then
1934 AC_MSG_RESULT(pcap not available - disabling airpcap)
1937 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1945 AC_MSG_CHECKING(whether to build dumpcap)
1947 AC_ARG_ENABLE(dumpcap,
1948 AC_HELP_STRING( [--enable-dumpcap],
1949 [build dumpcap @<:@default=yes@:>@]),
1950 enable_dumpcap=$enableval,enable_dumpcap=yes)
1952 if test "x$enable_dumpcap" = "xyes" ; then
1953 if test "x$want_pcap" = "xno" ; then
1955 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1963 if test "x$enable_dumpcap" = "xyes" ; then
1964 dumpcap_bin="dumpcap\$(EXEEXT)"
1965 dumpcap_man="dumpcap.1"
1970 AC_SUBST(dumpcap_bin)
1971 AC_SUBST(dumpcap_man)
1973 # Enable/disable rawshark
1976 AC_MSG_CHECKING(whether to build rawshark)
1978 AC_ARG_ENABLE(rawshark,
1979 AC_HELP_STRING( [--enable-rawshark],
1980 [build rawshark @<:@default=yes@:>@]),
1981 rawshark=$enableval,enable_rawshark=yes)
1983 if test "x$enable_rawshark" = "xyes" ; then
1984 if test "x$want_pcap" = "xno" ; then
1986 AC_MSG_RESULT(pcap not available - disabling rawshark)
1994 if test "x$enable_rawshark" = "xyes" ; then
1995 rawshark_bin="rawshark\$(EXEEXT)"
1996 rawshark_man="rawshark.1"
2001 AC_SUBST(rawshark_bin)
2002 AC_SUBST(rawshark_man)
2004 dnl Use pcap-ng by default
2005 AC_ARG_ENABLE(pcap-ng-default,
2006 AC_HELP_STRING( [--enable-pcap-ng-default],
2007 [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
2008 enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
2009 if test x$enable_pcap_ng_default = xyes; then
2010 AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
2013 dnl pcap remote check
2014 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
2016 AC_ARG_WITH(pcap-remote,
2017 AC_HELP_STRING([--with-pcap-remote],
2018 [use libpcap remote capturing (requires libpcap)]),
2020 if test $withval = no
2024 want_pcap_remote=yes
2029 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
2033 AC_WIRESHARK_PCAP_REMOTE_CHECK
2037 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
2040 AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
2041 [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
2043 if test "x$withval" = "xno"
2046 elif test "x$withval" = "xyes"
2055 # Use zlib if it's present, otherwise don't.
2057 want_zlib=ifavailable
2060 if test "x$want_zlib" = "xno" ; then
2064 AC_WIRESHARK_ZLIB_CHECK
2065 if test "x$want_zlib" = "xno" ; then
2066 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
2068 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
2069 AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
2075 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
2078 AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
2079 [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
2081 if test $withval = no
2084 elif test $withval = yes
2093 # Use liblua by default
2095 want_lua=ifavailable
2098 if test "x$want_lua" = "xno" ; then
2102 AC_WIRESHARK_LIBLUA_CHECK
2103 if test "x$want_lua" = "xno" ; then
2104 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
2107 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
2111 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
2113 AC_ARG_WITH(portaudio,
2114 AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
2115 [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
2117 if test $withval = no
2120 elif test $withval = yes
2125 portaudio_dir=$withval
2129 # Use libportaudio by default
2131 want_portaudio=ifavailable
2134 if test "x$want_portaudio" = "xno" ; then
2138 AC_WIRESHARK_LIBPORTAUDIO_CHECK
2139 if test "x$want_portaudio" = "xno" ; then
2140 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
2143 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
2148 AC_HELP_STRING( [--enable-ipv6],
2149 [use IPv6 name resolution, if available @<:@default=yes@:>@]),
2150 enable_ipv6=$enableval,enable_ipv6=yes)
2152 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
2153 if test "x$enable_ipv6" = "xno" ; then
2157 AC_WIRESHARK_IPV6_STACK
2161 dnl Check if dumpcap should be installed with filesystem capabilities
2162 AC_PATH_PROG(SETCAP, setcap)
2163 AC_ARG_ENABLE(setcap-install,
2164 AC_HELP_STRING( [--enable-setcap-install],
2165 [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2166 enable_setcap_install=$enableval,enable_setcap_install=no)
2168 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2169 if test "x$enable_setcap_install" = "xno" ; then
2172 if test "x$SETCAP" = "x" ; then
2173 AC_MSG_RESULT(no. Setcap not found)
2174 elif test "x$enable_dumpcap" = "xno" ; then
2175 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
2181 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2183 dnl Check if dumpcap should be installed setuid
2184 AC_ARG_ENABLE(setuid-install,
2185 AC_HELP_STRING( [--enable-setuid-install],
2186 [install dumpcap as setuid @<:@default=no@:>@]),
2187 enable_setuid_install=$enableval,enable_setuid_install=no)
2189 AC_MSG_CHECKING(whether to install dumpcap setuid)
2190 if test "x$enable_setuid_install" = "xno" ; then
2193 if test "x$enable_setcap_install" = "xyes" ; then
2194 enable_setuid_install=no
2195 AC_MSG_RESULT(no; using setcap instead)
2196 elif test "x$enable_dumpcap" = "xno" ; then
2197 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
2203 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2204 AC_CHECK_FUNCS(setresuid setresgid)
2206 dnl ...but our Network Operations group is named "no"!
2208 AC_ARG_WITH(dumpcap-group,
2209 AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2210 [restrict dumpcap to GROUP]),
2212 if test "x$withval" = "xyes"; then
2213 AC_MSG_ERROR([No dumpcap group specified.])
2214 elif test "x$withval" != "xno"; then
2215 if test "x$enable_dumpcap" = "xno" ; then
2216 AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2218 AC_MSG_RESULT($withval)
2219 DUMPCAP_GROUP="$withval"
2222 AC_SUBST(DUMPCAP_GROUP)
2223 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2225 dnl libcap (not libpcap) check
2227 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2230 AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2231 [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2233 if test "x$withval" = "xno"; then
2235 elif test "x$withval" = "xyes"; then
2237 elif test -d "$withval"; then
2239 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2242 if test "x$with_libcap" = "xno" ; then
2246 AC_WIRESHARK_LIBCAP_CHECK
2248 AC_SUBST(LIBCAP_LIBS)
2250 dnl Checks for header files.
2251 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2252 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h getopt.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
2253 AC_CHECK_HEADERS(sys/ioctl.h sys/param.h sys/socket.h sys/sockio.h sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h)
2254 AC_CHECK_HEADERS(netinet/in.h)
2255 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2259 AC_MSG_CHECKING(whether to use SSL library)
2262 AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2263 [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2265 if test "x$withval" = "xno"; then
2267 elif test "x$withval" = "xyes"; then
2269 elif test -d "$withval"; then
2271 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2276 if test "x$want_ssl" = "xyes"; then
2278 AC_CHECK_LIB(crypto,EVP_md5,
2283 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2291 AC_MSG_CHECKING(whether to use Kerberos library)
2294 AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2295 [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2297 if test $withval = no
2300 elif test $withval = yes
2309 # Use Kerberos library if available, otherwise don't.
2311 want_krb5=ifavailable
2314 if test "x$want_krb5" = "xno" ; then
2318 AC_WIRESHARK_KRB5_CHECK
2324 AC_MSG_CHECKING(whether to use the c-ares library if available)
2327 AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2328 [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2330 if test "x$withval" = "xno"; then
2332 elif test "x$withval" = "xyes"; then
2334 elif test -d "$withval"; then
2336 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2339 if test "x$want_c_ares" = "xno" ; then
2343 AC_WIRESHARK_C_ARES_CHECK
2345 AC_SUBST(C_ARES_LIBS)
2349 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2352 AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2353 [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2355 if test "x$withval" = "xno"; then
2357 elif test "x$withval" = "xyes"; then
2359 elif test -d "$withval"; then
2361 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2364 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2368 AC_WIRESHARK_ADNS_CHECK
2374 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2377 AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2378 [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2380 if test "x$withval" = "xno"; then
2382 elif test "x$withval" = "xyes"; then
2384 elif test -d "$withval"; then
2386 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2389 if test "x$want_geoip" = "xno"; then
2393 AC_WIRESHARK_GEOIP_CHECK
2395 AC_SUBST(GEOIP_LIBS)
2397 # Warning: this Python scripting appears to be broken (does not work at all).
2398 # Running it also causes Valgrind to complain about all sorts of memory errors.
2399 # Suggestion: do not enable it unless you are working on fixing it.
2401 # An alternative might be https://code.google.com/p/pyreshark/
2403 dnl Python devel Check
2404 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2406 AC_ARG_WITH(broken-python,
2407 AC_HELP_STRING( [--with-broken-python@<:@=DIR@:>@],
2408 [use the (BROKEN) Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@]),
2410 pythondir='${libdir}/wireshark/python/${VERSION}'
2411 if test "x$withval" = "xno"
2414 elif test "x$withval" = "xyes"
2419 pythondir="$withval"
2422 # By default (user didn't explicitly enable Python), don't enable
2426 #pythondir='${libdir}/wireshark/python/${VERSION}'
2428 if test "x$want_python" = "xno" ; then
2432 AC_WIRESHARK_PYTHON_CHECK
2434 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2438 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2439 # never return (just like Charlie on the MTA).
2441 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2442 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2443 # follow the function name, so we need two different flavors of
2446 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2448 dnl Checks for typedefs, structures, and compiler characteristics.
2451 # Check how we can get the time zone abbreviation
2452 AC_WIRESHARK_TIMEZONE_ABBREV
2454 # We need to know whether "struct stat" has an "st_flags" member
2455 # for file_user_immutable().
2457 AC_WIRESHARK_STRUCT_ST_FLAGS
2459 # We need to know whether "struct sockaddr" has an "sa_len" member
2460 # for get_interface_list().
2462 AC_WIRESHARK_STRUCT_SA_LEN
2464 # We must know our byte order
2467 # Checks whether "-traditional" is needed when using "ioctl".
2468 # XXX - do we need this?
2469 AC_PROG_GCC_TRADITIONAL
2472 AC_CHECK_FUNC(getopt,
2474 AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2476 GETOPT_LO="wsgetopt.lo"
2478 if test "$ac_cv_func_getopt" = no ; then
2479 GETOPT_LO="wsgetopt.lo"
2481 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2484 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2485 STRNCASECMP_LO="strncasecmp.lo")
2486 if test "$ac_cv_func_strncasecmp" = no ; then
2487 STRNCASECMP_LO="strncasecmp.lo"
2489 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2490 AC_SUBST(STRNCASECMP_LO)
2492 AC_CHECK_FUNCS(mkstemp mkdtemp)
2494 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2496 if test "$have_inet_aton" = no; then
2497 INET_ATON_LO="inet_aton.lo"
2498 AC_DEFINE(HAVE_INET_ATON_H, 0, [Define unless inet/aton.h needs to be included])
2502 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2503 AC_SUBST(INET_ATON_LO)
2505 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2506 dnl check for pre-BIND82 inet_pton() bug.
2507 AC_MSG_CHECKING(for broken inet_pton)
2508 AC_TRY_RUN([#include <sys/types.h>
2509 #include <sys/socket.h>
2510 #include <netinet/in.h>
2511 #include <arpa/inet.h>
2516 /* this should return 0 (error) */
2517 return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2521 }], [AC_MSG_RESULT(ok);
2522 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2523 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2524 have_inet_pton=no])],
2526 if test "$have_inet_pton" = no; then
2527 INET_PTON_LO="inet_pton.lo"
2531 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2532 AC_SUBST(INET_PTON_LO)
2534 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2535 AC_MSG_CHECKING([for inet_ntop prototype])
2536 AC_TRY_COMPILE([#include <stdio.h>
2537 #include <sys/types.h>
2538 #include <sys/socket.h>
2539 #include <netinet/in.h>
2540 #include <arpa/inet.h>
2542 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2544 AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2545 [Define if inet_ntop() prototype exists])], [
2546 AC_TRY_COMPILE([#include <stdio.h>
2547 #include <sys/types.h>
2548 #include <sys/socket.h>
2549 #include <netinet/in.h>
2550 #include <arpa/inet.h>
2552 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2554 AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2555 [Define if inet_ntop() prototype exists])], [
2556 AC_MSG_RESULT(no)])])
2558 INET_NTOP_LO="inet_ntop.lo"
2559 AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2560 [Define if inet/v6defs.h needs to be included])])
2561 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2562 AC_SUBST(INET_NTOP_LO)
2564 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2565 [STRPTIME_LO="strptime.lo"
2566 AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2568 if test "$ac_cv_func_strptime" = no ; then
2569 STRPTIME_LO="strptime.lo"
2571 AC_SUBST(STRPTIME_C)
2572 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2573 AC_SUBST(STRPTIME_LO)
2575 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2576 AC_CHECK_FUNCS(issetugid)
2577 AC_CHECK_FUNCS(mmap mprotect sysconf)
2579 dnl blank for now, but will be used in future
2580 AC_SUBST(wireshark_SUBDIRS)
2583 dnl check whether plugins should be enabled and, if they should be,
2584 dnl check for plugins directory - stolen from Amanda's configure.ac
2586 dnl we don't wish to expand ${libdir} yet
2587 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2588 AC_ARG_WITH(plugins,
2589 AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2590 [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2592 if test "x$withval" = "xno"; then
2594 elif test "x$have_plugins" = "xno"; then
2595 AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2596 elif test "x$withval" != "xyes"; then
2597 plugindir="$withval"
2600 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2601 if test x$have_plugins = xyes
2603 AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2606 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2609 # The plugin dissectors reside in ./plugins/PROTO/
2612 AC_SUBST(PLUGIN_LIBS)
2615 # Check if (emem) memory allocations must be 8-byte aligned.
2616 # I haven't been able to write C code that reliably makes that determination
2617 # (different versions of GCC with or without optimization give different
2618 # results) so just assume everything except (32-bit) x86 needs 8-byte
2619 # alignment (64-bit platforms either require 8-byte alignment for pointers
2620 # and 64-bit integral data types or may get better performance from that;
2621 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway. 32-bit
2622 # platforms would only require it, or get better performance from it,
2623 # for 64-bit floating-point values.).
2625 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2627 i386|i486|i586|i686)
2632 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2638 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2639 # (autoconf? automake? libtool?) - with the newer version(s), it's
2640 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2642 # With older version(s) of those tool(s), however, it's not just an
2643 # alias, and the configure scripts don't work without it.
2646 AC_SUBST(LIBTOOL_DEPS)
2648 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2649 if test x$enable_static = xyes -a x$have_plugins = xyes
2651 AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2653 AC_SUBST(ENABLE_STATIC)
2655 dnl Save the cacheable configure results to config.cache before recursing
2658 sinclude(plugins/Custom.m4) dnl
2659 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2661 sinclude(asn1/Custom.m4) dnl
2662 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2664 AC_CONFIG_HEADERS(config.h)
2669 _CUSTOM_ASN1_AC_OUTPUT_
2670 asn1/acp133/Makefile
2672 asn1/ansi_map/Makefile
2673 asn1/ansi_tcap/Makefile
2674 asn1/atn-cm/Makefile
2675 asn1/atn-cpdlc/Makefile
2676 asn1/atn-ulcs/Makefile
2680 asn1/charging_ase/Makefile
2685 asn1/credssp/Makefile
2694 asn1/gprscdr/Makefile
2695 asn1/gsm_map/Makefile
2704 asn1/h450-ros/Makefile
2707 asn1/HI2Operations/Makefile
2712 asn1/isdn-sup/Makefile
2713 asn1/kerberos/Makefile
2716 asn1/logotypecertextn/Makefile
2720 asn1/lte-rrc/Makefile
2723 asn1/mpeg-audio/Makefile
2724 asn1/mpeg-pes/Makefile
2726 asn1/ns_cert_exts/Makefile
2734 asn1/pkcs12/Makefile
2735 asn1/pkinit/Makefile
2736 asn1/pkixac/Makefile
2737 asn1/pkix1explicit/Makefile
2738 asn1/pkix1implicit/Makefile
2739 asn1/pkixproxy/Makefile
2740 asn1/pkixqualified/Makefile
2741 asn1/pkixtsp/Makefile
2744 asn1/q932-ros/Makefile
2755 asn1/sbc-ap/Makefile
2758 asn1/spnego/Makefile
2766 asn1/wlancertextn/Makefile
2768 asn1/x509af/Makefile
2769 asn1/x509ce/Makefile
2770 asn1/x509if/Makefile
2771 asn1/x509sat/Makefile
2778 epan/dfilter/Makefile
2779 epan/dissectors/Makefile
2780 epan/dissectors/dcerpc/Makefile
2781 epan/dissectors/pidl/Makefile
2782 epan/ftypes/Makefile
2785 epan/wspython/Makefile
2796 packaging/macosx/Info.plist
2797 packaging/macosx/Makefile
2798 packaging/macosx/osx-dmg.sh
2799 packaging/macosx/Wireshark_package.pmdoc/index.xml
2800 packaging/nsis/Makefile
2801 packaging/rpm/Makefile
2802 packaging/rpm/SPECS/Makefile
2803 packaging/rpm/SPECS/wireshark.spec
2804 packaging/svr4/Makefile
2805 packaging/svr4/checkinstall
2806 packaging/svr4/pkginfo
2808 plugins/asn1/Makefile
2809 plugins/docsis/Makefile
2810 plugins/ethercat/Makefile
2811 plugins/gryphon/Makefile
2812 plugins/irda/Makefile
2813 plugins/m2m/Makefile
2814 plugins/mate/Makefile
2815 plugins/opcua/Makefile
2816 plugins/profinet/Makefile
2817 plugins/stats_tree/Makefile
2818 plugins/unistim/Makefile
2819 plugins/wimax/Makefile
2820 plugins/wimaxasncp/Makefile
2821 plugins/wimaxmacphy/Makefile
2823 tools/lemon/Makefile
2829 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2834 if test "x$have_gtk" = "xyes"; then
2835 if test "x$with_gtk3" = "xyes"; then
2836 gtk_lib_message=" (with GTK+ 3"
2838 gtk_lib_message=" (with GTK+ 2"
2840 if test "x$have_ige_mac" = "xyes"; then
2841 gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
2843 gtk_lib_message="$gtk_lib_message)"
2847 if test "x$have_qt" = "xyes" ; then
2848 enable_qtshark="yes"
2853 if test "x$enable_setcap_install" = "xyes" ; then
2854 setcap_message="yes"
2859 if test "x$enable_setuid_install" = "xyes" ; then
2860 setuid_message="yes"
2865 if test "x$DUMPCAP_GROUP" = "x" ; then
2866 dumpcap_group_message="(none)"
2868 dumpcap_group_message="$DUMPCAP_GROUP"
2871 if test "x$want_zlib" = "xno" ; then
2877 if test "x$want_lua" = "xyes" ; then
2883 if test "x$want_python" = "xno"; then
2886 python_message="yes"
2889 if test "x$want_portaudio" = "xyes" ; then
2890 portaudio_message="yes"
2892 portaudio_message="no"
2895 if test "x$want_ssl" = "xno" ; then
2901 if test "x$want_krb5" = "xno" ; then
2904 krb5_message="yes ($ac_krb5_version)"
2907 if test "x$have_good_c_ares" = "xyes" ; then
2908 c_ares_message="yes"
2913 if test "x$have_good_adns" = "xyes" ; then
2916 if test "x$have_good_c_ares" = "xyes" ; then
2917 adns_message="no (using c-ares instead)"
2923 if test "x$have_good_libcap" = "xyes" ; then
2924 libcap_message="yes"
2929 if test "x$have_good_geoip" = "xyes" ; then
2936 echo "The Wireshark package has been configured with the following options."
2937 echo " Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message"
2938 echo " Build wireshark-qt : $enable_qtshark"
2939 echo " Build tshark : $enable_tshark"
2940 echo " Build capinfos : $enable_capinfos"
2941 echo " Build editcap : $enable_editcap"
2942 echo " Build dumpcap : $enable_dumpcap"
2943 echo " Build mergecap : $enable_mergecap"
2944 echo " Build reordercap : $enable_reordercap"
2945 echo " Build text2pcap : $enable_text2pcap"
2946 echo " Build randpkt : $enable_randpkt"
2947 echo " Build dftest : $enable_dftest"
2948 echo " Build rawshark : $enable_rawshark"
2949 echo " Build echld : $have_echld"
2951 echo " Save files as pcap-ng by default : $enable_pcap_ng_default"
2952 echo " Install dumpcap with capabilities : $setcap_message"
2953 echo " Install dumpcap setuid : $setuid_message"
2954 echo " Use dumpcap group : $dumpcap_group_message"
2955 echo " Use plugins : $have_plugins"
2956 echo " Use Lua library : $lua_message"
2957 echo " Use Python binding : $python_message"
2958 echo " Build rtp_player : $portaudio_message"
2959 echo " Build profile binaries : $enable_profile_build"
2960 echo " Use pcap library : $want_pcap"
2961 echo " Use zlib library : $zlib_message"
2962 echo " Use kerberos library : $krb5_message"
2963 echo " Use c-ares library : $c_ares_message"
2964 echo " Use GNU ADNS library : $adns_message"
2965 echo " Use SMI MIB library : $libsmi_message"
2966 echo " Use GNU crypto library : $gcrypt_message"
2967 echo " Use SSL crypto library : $ssl_message"
2968 echo " Use IPv6 name resolution : $enable_ipv6"
2969 echo " Use gnutls library : $tls_message"
2970 echo " Use POSIX capabilities library : $libcap_message"
2971 echo " Use GeoIP library : $geoip_message"
2972 echo " Use nl library : $libnl_message"