4 m4_define([version_major], [1])
5 m4_define([version_minor], [11])
6 m4_define([version_micro], [0])
7 m4_define([version_micro_extra], version_micro)
8 m4_append([version_micro_extra], [])
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 dnl Work around libtool bug (fixed in the version 1.5a?)
55 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
58 if test ! -z "$CXX"; then
60 # OK, we found something AC_LANG_CXX thinks is a C++ compiler,
63 # Some UN*Xes have, by default, a case-insensitive file
64 # system, and AC_PROG_CXX looks for, among other things,
65 # "CC" as a C++ compiler, and, if you have a case-insensitive
66 # file system and a C compiler named "cc" (both true, by
67 # default, on OS X), AC_PROG_CXX may end up thinking it's
70 # So we check by feeding the purported C++ compiler a
71 # program using C++ features (iostream).
73 # We do this after AC_PROG_LIBTOOL; if we did so before, and
74 # cleared CXX if what we had isn't a C++ compiler, that'd
75 # get undone by AC_PROG_LIBTOOL for some reason.
77 AC_MSG_CHECKING(whether $CXX is a C++ compiler)
79 AC_LINK_IFELSE([AC_LANG_PROGRAM(
84 std::cout << "Hello World! ";
94 AC_PATH_PROG(PERL, perl)
97 AC_PATH_PROG(PYTHON, python)
98 if test ! -z "$PYTHON"; then
100 # OK, we found Python; is it Python 2.x?
101 # Note: we don't use named components for sys.version_info to get
102 # the major version number, as named components for version_info
103 # were apparently introduced in Python 2.7.
105 AC_MSG_CHECKING([whether $PYTHON is Python 2])
106 python_major_version=`$PYTHON -c 'import sys; print sys.version_info[[0]]'`
107 if test "$python_major_version" = 2; then
116 # Try looking for python2; if we find it, we assume it's
119 AC_PATH_PROG(PYTHON, python2)
124 # XXX - should autogen.sh check for YACC/Bison and Flex? A user building
125 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
126 # as the tarball should contain the results of running YACC/Bison on .y
127 # files and running Flex on .l files, but a user building from SVN
128 # will have to run YACC/Bison and Flex to process those files.
130 # On the other hand, what about users who use a distribution tarball to
131 # do development? They *shouldn't* - that's what the SVN repository is
132 # for - but they might. They'd get errors if they modify a .y or .l
133 # file and try to do a build - but the error should tell them that they
134 # need to get YACC/Bison and/or Flex.
136 # Then again, getting them shouldn't be too big of a burden.
138 # XXX - is the same true of pod2man and pod2html, or are they needed
139 # even when building from a distribution tarball?
143 AC_PATH_PROG(YACCDUMMY, $YACC)
144 if test "x$YACCDUMMY" = x
146 AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
149 AC_PATH_PROG(LEX, flex)
152 AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
154 AC_PATH_PROG(POD2MAN, pod2man)
155 if test "x$POD2MAN" = x
158 # The alternative is not to build the man pages....
160 AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
162 AC_PATH_PROG(POD2HTML, pod2html)
163 if test "x$POD2HTML" = x
166 # The alternative is not to build the HTML man pages....
168 AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
172 # Checks for programs used by Wireshark/TShark/etc.
176 # XXX - this looks for various HTML viewers on the host, not the target;
177 # we really want to know what's available on the target, for cross-builds.
178 # That would probably require us to, at run time, look for xdg-open and,
179 # if we don't find it, look for mozilla, htmlview, etc.
181 AC_PATH_PROG(HTML_VIEWER, xdg-open)
182 if test "x$HTML_VIEWER" != x
185 # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
186 # Define some variable to be that, so we just run that?
188 AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
191 # XXX - we have to define HTML_VIEWER for the prefs.c code that
192 # sets the default value of the Web browser preference, even
193 # though that preference won't be offered.
195 AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
197 AC_PATH_PROG(HTML_VIEWER, htmlview)
198 if test "x$HTML_VIEWER" = x
200 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
202 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
207 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
208 # flags such as -pedantic, -W warning flags and -f feature flags. Currently,
209 # we assume GCC and clang do; other compilers should be added here.
211 # This is done to avoid getting tripped up by compilers that support
212 # those flags but give them a different meaning.
214 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
215 ac_supports_gcc_flags=yes
219 # Set "ac_supports_W_linker_passthrough" if the compiler is known to
220 # support "-Wl,{options}" to pass options through to the linker.
221 # Currently, we assume GCC, xlc, and clang do; other compilers should
224 if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then
225 ac_supports_W_linker_passthrough=yes
229 # Set "ac_supports_attribute_unused" if the compiler is known to
230 # support "__attribute__(unused)".
231 # Currently, we assume GCC and clang do; other compilers should
234 # XXX - do this with a compiler test?
236 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
237 ac_supports_W_linker_passthrough=yes
240 if test "x$CC_FOR_BUILD" = x
244 AC_SUBST(CC_FOR_BUILD)
245 AC_SUBST(CFLAGS_FOR_BUILD)
248 AC_PATH_PROG(DOXYGEN, doxygen)
249 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
250 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
253 # Check for pkg-config and set PKG_CONFIG accordingly.
255 # This is referenced via AC_REQUIRE([PKG_PROG_PKG_CONFIG] in some macros
256 # like PKG_CHECK_MODULES. If the first call to such a macro is under an
257 # "if" statement, it's safer to call PKG_PROG_PKG_CONFIG directly, see
258 # the comments in acolocal.m4
263 # Check for an OS X deployment target early, so that as many
264 # tests using the compiler are done using the flags that
265 # we'll be using when building.
270 # Get the OS X major version number.
271 # (We quote the command so that we can use autoconf's M4
272 # quoting characters, [ and ], in the sed expression.)
274 [os_version=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
276 AC_ARG_ENABLE(osx-deploy-target,
277 AC_HELP_STRING( [--enable-osx-deploy-target],
278 [choose an OS X deployment target @<:@default=none@:>@]),
280 if test $enableval = no
283 elif test $enableval = yes
285 deploy_target=$os_version
287 deploy_target="$enableval"
292 AC_MSG_CHECKING([what deployment target to use])
293 if test -z "$deploy_target"
298 AC_MSG_RESULT($deploy_target)
300 case $deploy_target in
304 # I'm not sure this would even work.
306 AC_ERROR([$deploy_target not supported as a deployment target])
311 # XXX - never tested.
313 SDKPATH="/Developer/SDKs/MacOSX10.3.9.sdk"
318 # XXX - for 10.4, do we need 10.4u? We're
319 # not currently doing fat builds (we'd need
320 # fat versions of the support libraries for
321 # that to be useful), but, if we do, we'd
324 for i in /Developer/SDKs \
325 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
326 /Library/Developer/CommandLineTools/SDKs
328 if test -d "$i"/"MacOSX$deploy_target.sdk"
330 SDKPATH="$i"/"MacOSX$deploy_target.sdk"
334 if test -z "$SDKPATH"
336 AC_MSG_ERROR([couldn't find the SDK for OS X $deploy_target])
342 # Add a -mmacosx-version-min flag to force tests that
343 # use the compiler, as well as the build itself, not to,
344 # for example, use compiler or linker features not supported
345 # by the minimum targeted version of the OS.
347 # Add an -isysroot flag to use the SDK.
349 CFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CFLAGS"
350 CPPFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CPPFLAGS"
351 LDFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $LDFLAGS"
354 # Add a -sdkroot flag to use with osx-app.sh.
356 OSX_APP_FLAGS="-sdkroot $SDKPATH"
359 # XXX - do we need this to build the Wireshark wrapper?
360 # XXX - is this still necessary with the -mmacosx-version-min
363 OSX_DEPLOY_TARGET="MACOSX_DEPLOYMENT_TARGET=$deploy_target"
368 # Try to arrange for large file support.
373 # GUI toolkit options
376 AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@],
377 [use Qt @<:@default=no@:>@]),
378 with_qt="$withval", with_qt="no")
381 AC_HELP_STRING( [--with-gtk2=@<:@yes/no@:>@],
382 [use GTK+ 2.0 @<:@default=yes@:>@]),
383 with_gtk2="$withval", with_gtk2="yes")
386 AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
387 [use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]),
388 with_gtk3="$withval", with_gtk3="no")
391 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+, then switched back to
392 # LGPLv2.1+ in version 3.1.10
394 AC_ARG_WITH([gnutls],
395 AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
396 [use GnuTLS library @<:@default=yes@:>@]),
397 with_gnutls="$withval", with_gnutls="yes")
398 if test "x$with_gnutls" = "xyes"; then
399 have_license_compatible_gnutls="no"
400 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.1.10 ],
401 [ have_license_compatible_gnutls="yes" ], [ echo "GnuTLS >= 3.1.10 not found " ]
404 if test "x$have_license_compatible_gnutls" != "xyes"; then
405 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0 gnutls < 3],
406 [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 1.2.0, < 3.0 not found " ]
410 if test "x$have_license_compatible_gnutls" = "xyes"; then
411 echo "GnuTLS found, enabling SSL decryption"
412 AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
415 echo "GnuTLS with compatible license not found, disabling SSL decryption"
422 AC_ARG_WITH([gcrypt],
423 AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
424 [use gcrypt library @<:@default=yes@:>@]),
425 with_gcrypt="$withval", with_gcrypt="yes")
426 if test "x$with_gcrypt" = "xyes"; then
427 AM_PATH_LIBGCRYPT(1.1.92,
429 echo "libgcrypt found, enabling ipsec decryption"
430 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
434 if test x$libgcrypt_config_prefix != x ; then
435 AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
437 echo "libgcrypt not found, disabling ipsec decryption"
445 AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
446 [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
448 if test "x$withval" = "xno"
451 elif test "x$withval" = "xyes"
455 elif test "x$withval" = "x1"
459 elif test "x$withval" = "x2"
463 elif test "x$withval" = "x3"
468 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
472 # Use libnl if it's present, otherwise don't.
474 want_libnl=ifavailable
478 # Libnl is Linux-specific.
483 AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
485 if test x$want_libnl = "xno"; then
490 # Test for specific libnl versions only if no version
491 # was specified by the user or if the version in question
492 # was requested by the user.
494 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
495 PKG_CHECK_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
497 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
498 PKG_CHECK_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
500 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
501 PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
503 if (test "${have_libnl3}" = "yes"); then
504 CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
505 LIBS="$LIBS $LIBNL3_LIBS"
506 AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
507 AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
508 libnl_message="yes (v3)"
510 elif (test "${have_libnl2}" = "yes"); then
511 CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
512 LIBS="$LIBS $LIBNL2_LIBS"
513 AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
514 AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
515 libnl_message="yes (v2)"
517 elif (test "${have_libnl1}" = "yes"); then
518 CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
519 LIBS="$LIBS $LIBNL1_LIBS"
520 AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
521 AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
522 libnl_message="yes (v1)"
525 if test x$want_libnl = "xyes"; then
526 case "$libnl_version" in
529 AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
533 AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
540 AC_MSG_CHECKING([if nl80211.h is new enough])
541 AC_TRY_COMPILE([#include <linux/nl80211.h>],
542 [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
543 x = NL80211_ATTR_SUPPORTED_IFTYPES;
544 x = NL80211_ATTR_SUPPORTED_COMMANDS;
545 x = NL80211_ATTR_WIPHY_FREQ;
546 x = NL80211_CHAN_NO_HT;],
547 [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
550 AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
551 AC_TRY_COMPILE([#include <linux/nl80211.h>],
552 [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
553 [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
558 if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
559 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
564 # FIXME: currently the path argument to with-libsmi is being ignored
568 # Check for programs used when building DocBook documentation.
571 # Check for a2x (convert asciidoc to another format)
572 AC_PATH_PROG(A2X, a2x)
573 AC_CHECK_PROG(HAVE_A2X, a2x, "yes", "no")
574 AM_CONDITIONAL(HAVE_A2X, test x$HAVE_A2X = xyes)
576 # Want to control a tape drive? Use mt. Want to convert HTML to text?
577 # Uhhhhh... elinks? lynx? w3m? pandoc? html2text?
578 AC_PATH_PROG(ELINKS, elinks)
579 AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no")
580 AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes)
582 # Check for fop (translate .fo to e.g. pdf)
583 AC_PATH_PROG(FOP, fop)
584 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
585 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
587 # Check for lynx (html -> text)
588 AC_PATH_PROG(LYNX, lynx)
589 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
590 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
592 # Check for w3m (html -> text)
593 AC_PATH_PROG(W3M, w3m)
594 AC_CHECK_PROG(HAVE_W3M, w3m, "yes", "no")
595 AM_CONDITIONAL(HAVE_W3M, test x$HAVE_W3M = xyes)
598 AC_PATH_PROG(XMLLINT, xmllint)
599 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
600 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
603 AC_PATH_PROG(XSLTPROC, xsltproc)
604 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
605 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
608 # Check for packaging utilities
609 # For now, we check to see if the various packaging utilites are in our
610 # path. I'm too lazy to write code to go hunt for them. - Gerald
614 # (Lets you install the desktop files.)
616 AC_PATH_PROG(DESKTOP_FILE_INSTALL, desktop-file-install)
619 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
620 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
621 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
623 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
624 -a x$HAVE_PKGTRANS = xyes ; then
625 HAVE_SVR4_PACKAGING=yes
627 HAVE_SVR4_PACKAGING=no
629 AC_SUBST(HAVE_SVR4_PACKAGING)
632 AC_WIRESHARK_RPM_CHECK
636 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
639 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
640 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
641 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
643 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
644 -a x$HAVE_BLESS = xyes ; then
645 HAVE_OSX_PACKAGING=yes
647 HAVE_OSX_PACKAGING=no
649 AC_SUBST(HAVE_OSX_PACKAGING)
652 # Some compilers have to be told to fail on unknown warning errors;
653 # make sure we do that.
655 AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR
658 # Try to add some additional gcc checks to CFLAGS
660 AC_ARG_ENABLE(extra-gcc-checks,
661 AC_HELP_STRING( [--enable-extra-gcc-checks],
662 [do additional -W checks in GCC @<:@default=no@:>@]),
664 wireshark_extra_gcc_flags=$enableval
665 if test $enableval != no
667 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-pedantic)
669 # Various code blocks this one.
671 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Woverflow)
672 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
674 # Some memset() calls to clear out structures
675 # on the stack are getting flagged as "will never
676 # be executed" by this, at least by Apple's
677 # i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on
678 # Apple Inc. build 5658) (LLVM build 2336.11.00), for
679 # some unknown reason.
681 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunreachable-code)
683 # Due to various places where APIs we don't control
684 # require us to cast away constness, we can probably
685 # never enable these ones with -Werror.
687 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-qual)
688 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wbad-function-cast, C)
690 # Some generated ASN.1 dissectors block this one;
691 # multiple function declarations for the same
692 # function are being generated.
694 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wredundant-decls)
696 # Some loops are safe, but it's hard to convince the
699 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunsafe-loop-optimizations)
701 # All the registration functions block these for now.
703 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-prototypes)
704 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-declarations)
706 # A bunch of "that might not work on SPARC" code blocks
709 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-align)
712 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
713 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wextra) # -W is now known as -Wextra
714 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdeclaration-after-statement, C)
715 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wendif-labels)
716 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpointer-arith)
717 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-pointer-sign, C)
718 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
719 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wformat-security)
720 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wold-style-definition, C)
721 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshorten-64-to-32)
722 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wstrict-prototypes, C)
723 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wjump-misses-init, C)
724 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wvla)
725 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Waddress)
726 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
727 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wattributes)
728 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
729 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
730 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpragmas)
731 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-overlength-strings)
732 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wwrite-strings)
733 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-long-long)
734 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wc++-compat, C)
739 # Make sure -Wshadow doesn't complain about variables in function and
740 # function pointer declarations shadowing other variables; if not, don't
741 # turn it on, as some versions of GCC (including the one in at least
742 # some Xcode versions that came with Mac OS X 10.5) complain about
745 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshadow, C,
747 extern int bar(int a);
753 int (*fptr)(int a) = bar;
758 [warns about variables in function declarations shadowing other variables])
760 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
761 # is given a constant string.
762 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
763 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wlogical-op, C,
767 int foo(const char *, int);
771 foo(const char *sep, int c)
773 if (strchr (sep, c) != NULL)
782 return foo("<", 'a');
785 [generates warnings from strchr()])
789 # On OS X, suppress warnings about deprecated declarations, because
790 # they apparently think everything on OS X is Shiny Happy Apple-
791 # Framework-Based Apps and are deprecating some perfectly OK
792 # multi-platform open-source libraries that we use in our multi-platform
793 # open-source application in favor of various frameworks that are
796 # Also, let the user to specify an OS X release to use as a deplayment
797 # target; if they specify that we should have a deployment target but
798 # don't specify the deployment target, pick the OS version on which
799 # the build is being done. This also causes the build to be done
800 # against an SDK rather than against the headers and libraries in
801 # /usr/include and /usr/lib.
805 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-deprecated-declarations)
810 # Use the faster pre gcc 4.5 floating point precision if available.
812 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
814 CFLAGS_before_fvhidden=$CFLAGS
815 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
816 if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden"
818 # TODO add other ways of hiding symbols
819 AC_MSG_WARN(Compiler will export all symbols from shared libraries)
822 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
823 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
824 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
825 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
826 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
827 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
830 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
831 # so that we can build dumpcap PIE - it may run with elevated
832 # privileges, and using PIE means the OS can run it at random locations
833 # in the address space to make attacks more difficult.
835 CFLAGS_before_pie=$CFLAGS
836 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
837 if test "x$CLFAGS" != "x$CFLAGS_before_pie"
840 CFLAGS=$CFLAGS_before_pie
842 LDFLAGS_before_pie=$LDFLAGS
843 AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
844 if test "x$LDFLAGS" != "x$LDFLAGS_before_pie"
851 LDFLAGS=$LDFLAGS_before_pie
856 AC_SUBST(PIE_LDFLAGS)
859 # If we're running GCC or clang define _U_ to be "__attribute__((unused))"
860 # so we can use _U_ to flag unused function parameters and not get warnings
861 # about them. Otherwise, define _U_ to be an empty string so that _U_ used
862 # to flag an unused function parameters will compile with other compilers.
864 # XXX - similar hints for other compilers?
866 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
867 AC_DEFINE(_U_, __attribute__((unused)), [Hint to the compiler that a function parameters is not used])
869 AC_DEFINE(_U_, , [Hint to the compiler that a function parameters is not used])
872 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
873 # (only if the GCC 'optimization level' > 0).
875 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
876 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
878 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
879 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
882 # If the compiler supports GCC-style flags, enable a barrier "stop on
884 # This barrier is set for a very large part of the code. However, it is
885 # typically not set for "generated" code (flex, ans2wrs, idl2wrs, ...)
887 warnings_as_errors_default="yes"
888 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
889 AC_ARG_ENABLE(warnings-as-errors,
890 AC_HELP_STRING( [--enable-warnings-as-errors],
891 [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra warnings are enabled@:>@]),
893 if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
894 with_warnings_as_errors="yes"
897 with_warnings_as_errors="no"
902 if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
903 with_warnings_as_errors="yes"
906 with_warnings_as_errors="no"
911 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
914 # Add any platform-specific compiler flags needed.
916 AC_MSG_CHECKING(for platform-specific compiler flags)
917 if test "x$GCC" = "xyes" ; then
919 # GCC - do any platform-specific tweaking necessary.
923 # the X11 headers don't automatically include prototype info
924 # and a lot don't include the return type
925 CPPFLAGS="$CPPFLAGS -DFUNCPROTO=15"
926 CFLAGS="$CFLAGS -Wno-return-type"
927 CXXFLAGS="$CXXFLAGS -Wno-return-type"
928 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
931 AC_MSG_RESULT(none needed)
936 # Not GCC - assume it's the vendor's compiler.
941 # HP's ANSI C compiler; flags suggested by Jost Martin.
942 # "-Ae" for ANSI C plus extensions such as "long long".
943 # "+O2", for optimization. XXX - works with "-g"?
945 # HP's ANSI C++ compiler doesn't support "-Ae", but
946 # does support "+O2", at least according to the
947 # documentation I can find online.
949 CFLAGS="-Ae +O2 $CFLAGS"
950 CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
951 CXXFLAGS="+O2 $CFLAGS"
952 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
955 AC_MSG_RESULT(none needed)
961 # Add any platform-specific linker flags needed.
963 AC_MSG_CHECKING(for platform-specific linker flags)
967 # Add -Wl,-single_module to the LDFLAGS used with shared
968 # libraries, to fix some error that show up in some cases;
969 # some Apple documentation recommends it for most shared
972 LDFLAGS_SHAREDLIB="-Wl,-single_module"
974 # Add -Wl,-search_paths_first to make sure that if we search
975 # directories A and B, in that order, for a given library, a
976 # non-shared version in directory A, rather than a shared
977 # version in directory B, is chosen (so we can use
978 # --with-pcap=/usr/local to force all programs to be linked
979 # with a static version installed in /usr/local/lib rather than
980 # the system version in /usr/lib).
982 LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
983 AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first])
987 # Shared libraries in cygwin/Win32 must never contain
990 LDFLAGS="$LDFLAGS -no-undefined"
991 AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
994 AC_MSG_RESULT(none needed)
997 AC_SUBST(LDFLAGS_SHAREDLIB)
999 # Enable silent builds by default
1000 # Verbose builds can be enabled with "./configure
1001 # --enable-silent-rules ..." or "make V=1 ..."
1002 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
1003 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
1006 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
1007 # "just Darwin" (as we don't currently support iOS, and as I don't
1008 # think you can build and run "just Darwin" as an OS for PCs), we
1009 # arrange to build some programs with Application Services so they
1010 # can launch Web browsers and Finder windows, arrange to build some
1011 # programs with System Configuration so they can get "friendly names"
1012 # and other information about interfaces, and build any programs that
1013 # use either of those frameworks or that report version information
1014 # with Core Foundation as the frameworks in question use it and as we
1015 # get version information from plists and thus need Core Foundation
1016 # to process those plists.
1021 AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
1022 APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
1023 SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
1024 COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
1027 # OK, so we have the OS X frameworks; do they include
1028 # CFPropertyListCreateWithStream, or do we have
1029 # to fall back on CFPropertyListCreateFromStream?
1030 # (They only differ in the error return, which we
1031 # don't care about. And, no, we shouldn't just
1032 # use CFPropertyListCreateFromStream, because it's
1033 # deprecated in newer releases.)
1035 ac_save_LIBS="$LIBS"
1036 LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
1037 AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
1038 LIBS="$ac_save_LIBS"
1041 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
1042 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
1043 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
1044 AC_SUBST(OSX_APP_FLAGS)
1046 dnl Look in /usr/local for header files and libraries ?
1047 dnl XXX FIXME don't include /usr/local if it is already in the system
1048 dnl search path as this causes gcc 3.2 on Linux to complain about a change
1049 dnl of the system search order for includes
1050 AC_ARG_ENABLE(usr-local,
1051 AC_HELP_STRING( [--enable-usr-local],
1052 [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
1053 ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
1055 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
1056 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1057 if test -d "/usr/local"; then
1060 # Arrange that we search for header files in the source directory
1061 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
1062 # as various packages we use ("libpcap", "zlib", "adns")
1063 # may have been installed under "/usr/local/include".
1065 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
1068 # Arrange that we search for libraries in "/usr/local/lib".
1070 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
1079 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
1084 AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
1085 if test x$LD_LIBRARY_PATH != x ; then
1086 LIBS="$LIBS -R$LD_LIBRARY_PATH"
1087 AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
1089 AC_MSG_RESULT(no -- this may be a problem in a few seconds)
1095 # Check for versions of "sed" inadequate to handle, in libtool, a list
1096 # of object files as large as the list in Wireshark.
1098 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
1099 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
1100 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
1101 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
1102 # is the only "sed" that comes with Solaris that can handle Wireshark.
1104 # Add any checks here that are necessary for other OSes.
1106 AC_WIRESHARK_GNU_SED_CHECK
1107 if test "$HAVE_GNU_SED" = no ; then
1110 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
1112 /bin/sed|/usr/bin/sed|/usr/ucb/sed)
1114 AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
1129 # Enable/disable wireshark
1130 AC_ARG_ENABLE(wireshark,
1131 AC_HELP_STRING( [--enable-wireshark],
1132 [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]),
1133 enable_wireshark=$enableval,enable_wireshark=yes)
1135 AC_ARG_ENABLE(packet-editor,
1136 AC_HELP_STRING( [--enable-packet-editor],
1137 [add support for packet editor in Wireshark @<:@default=no@:>@]),
1138 enable_packet_editor=$enableval,enable_packet_editor=no)
1139 if test x$enable_packet_editor = xyes; then
1140 AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
1143 AC_ARG_ENABLE(profile-build,
1144 AC_HELP_STRING( [--enable-profile-build],
1145 [build profile-ready binaries @<:@default=no@:>@]),
1146 enable_profile_build=$enableval,enable_profile_build=no)
1147 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
1148 AC_MSG_CHECKING(if profile builds must be generated)
1149 if test "x$enable_profile_build" = "xyes" ; then
1150 if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
1152 CFLAGS=" -pg $CFLAGS"
1153 CXXFLAGS=" -pg $CXXFLAGS"
1156 echo "Building profile binaries currently only supported for GCC and clang."
1162 # Create DATAFILE_DIR #define for config.h
1163 datafiledir=$datadir/wireshark
1165 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1166 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1167 # Ugly hack, but I don't see how this problem can be solved
1168 # properly that DATAFILE_DIR had a value starting with
1169 # "${prefix}/" instead of e.g. "/usr/local/"
1170 eval eval echo "$datafiledir"
1172 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
1174 # Create DOC_DIR #define for config.h
1176 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1177 test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1178 # Ugly hack, but I don't see how this problem can be solved
1179 # properly that DOC_DIR had a value starting with
1180 # "${prefix}/" instead of e.g. "/usr/local/"
1181 eval eval echo "$docdir"
1183 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
1185 GTK2_MIN_VERSION=2.12.0
1186 AC_SUBST(GTK2_MIN_VERSION)
1187 GTK3_MIN_VERSION=3.0.0
1188 AC_SUBST(GTK3_MIN_VERSION)
1189 QT_MIN_VERSION=4.6.0
1190 AC_SUBST(QT_MIN_VERSION)
1191 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1192 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1194 # We only do those if we're going to be building Wireshark;
1195 # otherwise, we don't have any GUI to build, so we don't use
1198 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1199 # force all programs to be built with GTK+ or Qt.
1201 # Release dates for GTK+ versions:
1202 # 2.12.0: 14 Sep 2007
1203 # 2.14.0: 04 Sep 2008
1204 # 2.16.0: 13 Mar 2009
1205 # 2.18.0: 23 Sep 2009
1206 # 2.20.0: 23 Mar 2010
1207 # 2.22.0: 23 Sep 2010
1208 # 2.24.0: 30 Jan 2011
1209 # 3.0.0: 10 Feb 2011
1210 # 3.2.0: 25 Sep 2011
1211 # 3.4.0: 26 Mar 2012
1212 # 3.6.0: 24 Sep 2012
1213 # 3.8.0: 25 Mar 2013
1217 if test "x$enable_wireshark" = "xyes"; then
1218 if test "x$with_qt" = "xyes"; then
1220 # Make sure we have a C++ compiler.
1222 if test -z "$CXX"; then
1223 AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1226 AM_PATH_QT($QT_MIN_VERSION,
1228 CFLAGS="$CFLAGS $Qt_CFLAGS"
1229 CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1232 , [AC_MSG_ERROR([Qt is not available])])
1235 # XXX - greasy hack to make ui/gtk/recent.c
1238 CPPFLAGS="-DQT_GUI_LIB"
1241 if test "x$with_gtk3" = "xyes" -a "x$with_gtk2" = "xyes" ; then
1242 # If the user gave us --with-gtk3, use gtk3 rather than gtk2
1246 if test "x$with_gtk3" = "xyes"; then
1247 AM_PATH_GTK_3_0(3.0.0,
1249 CFLAGS="$CFLAGS $GTK_CFLAGS"
1250 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1255 if test "x$with_gtk2" = "xyes"; then
1256 AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1258 CFLAGS="$CFLAGS $GTK_CFLAGS"
1259 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1265 GLIB_MIN_VERSION=2.16.0
1266 AC_SUBST(GLIB_MIN_VERSION)
1267 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1268 # support, as we need that for dynamically loading plugins.
1269 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1270 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1271 # superset of GLIB_CFLAGS. If we didn't find GTK+, it does add
1272 # GLIB_CFLAGS to CFLAGS.
1273 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1274 # set when generating the Makefile, so we can make programs that require
1275 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1276 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1277 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1278 # programs to be built with GLib.
1280 # Release dates for GLib versions:
1281 # 2.14.0: 03 Aug 2007
1282 # 2.16.0: 10 Mar 2008
1283 # 2.18.0: 02 Sep 2008
1284 # 2.20.0: 13 Mar 2009
1285 # 2.22.0: 22 Sep 2009
1286 # 2.24.0: 28 Mar 2010
1287 # 2.26.0: 27 Sep 2010
1288 # 2.28.0: 08 Feb 2011
1289 # 2.30.0: 27 Sep 2011
1290 # 2.32.0: 24 Mar 2012
1291 # 2.34.0: 24 Sep 2012
1292 # 2.36.0: 25 Mar 2013
1294 use_glib_cflags="true"
1295 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1296 # We have both GTK and Qt and thus will be building both wireshark
1299 wireshark_bin="wireshark\$(EXEEXT) wireshark-qt\$(EXEEXT)"
1300 wireshark_man="wireshark.1"
1301 wireshark_SUBDIRS="codecs ui/qt ui/gtk"
1303 if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1304 # We don't have GTK+ but we have Qt.
1306 wireshark_bin="wireshark-qt\$(EXEEXT)"
1307 wireshark_man="wireshark.1"
1308 wireshark_SUBDIRS="codecs ui/qt"
1310 if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1311 # We have GTK+ but not Qt.
1313 wireshark_bin="wireshark\$(EXEEXT)"
1314 wireshark_man="wireshark.1"
1315 wireshark_SUBDIRS="codecs ui/gtk"
1316 use_glib_cflags="false"
1318 if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1319 # We have neither GTK+ nor Qt.
1321 # If they didn't explicitly say "--disable-wireshark",
1322 # fail (so that, unless they explicitly indicated that
1323 # they don't want Wireshark, we stop so they know they
1324 # won't be getting Wireshark unless they fix the GTK+/Qt
1327 if test "x$enable_wireshark" = "xyes"; then
1328 if test "x$with_gtk3" = "xyes"; then
1329 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled])
1331 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1338 if test "$have_gtk" = "yes" ; then
1339 # If we have GTK then add flags for it.
1341 CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1342 CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1343 CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1344 CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1345 if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1346 # Enable GSEAL when building with GTK > 2.20
1347 # (Versions prior to 2.22 lacked some necessary accessors.)
1348 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1352 # XXX - Is this really necessary? When we build with both Gtk+ and Qt it works...
1353 if test "$use_glib_cflags" = "true"; then
1355 AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1357 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1358 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1359 ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1361 # Don't use GLIB_CFLAGS
1362 AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1366 # "make dist" requires that we have the Qt build tools.
1368 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1369 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1370 # installed; if they're still doing that in current Fedora releases,
1371 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1373 AC_PATH_PROG(UIC, uic-qt4)
1376 AC_PATH_PROG(UIC, uic)
1379 if test "x$with_qt" = "xyes"; then
1381 # If you want to build with Qt, you'd better
1384 AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1387 # We shouldn't fail here, as the user's not
1388 # building with Qt, and we shouldn't force them
1389 # to have Qt installed if they're not doing so.
1390 # "make dist" will fail if they do that, but
1391 # we don't know whether they'll be doing that,
1392 # so this is the best we can do.
1399 AC_PATH_PROG(MOC, moc-qt4)
1402 AC_PATH_PROG(MOC, moc)
1405 if test "x$with_qt" = "xyes"; then
1407 # If you want to build with Qt, you'd better
1410 AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1413 # We shouldn't fail here, as the user's not
1414 # building with Qt, and we shouldn't force them
1415 # to have Qt installed if they're not doing so.
1416 # "make dist" will fail if they do that, but
1417 # we don't know whether they'll be doing that,
1418 # so this is the best we can do.
1426 # Error out if a glib header other than a "top level" header
1427 # (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1429 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1431 # Error out on the usage of deprecated glib functions
1432 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1435 # Check whether GLib modules are supported, to determine whether we
1436 # can support plugins.
1438 AC_MSG_CHECKING(whether GLib supports loadable modules)
1439 ac_save_CFLAGS="$CFLAGS"
1440 ac_save_LIBS="$LIBS"
1441 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1442 LIBS="$GLIB_LIBS $LIBS"
1445 #include <gmodule.h>
1452 if (g_module_supported())
1453 return 0; /* success */
1455 return 1; /* failure */
1457 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1458 [echo $ac_n "cross compiling; assumed OK... $ac_c"
1459 ac_cv_glib_supports_modules=yes])
1460 CFLAGS="$ac_save_CFLAGS"
1461 LIBS="$ac_save_LIBS"
1462 if test "$ac_cv_glib_supports_modules" = yes ; then
1471 # If we have <dlfcn.h>, check whether we can use dladdr to find a
1472 # filename (hopefully, a full pathname, but no guarantees) for
1475 if test "$ac_cv_header_dlfcn_h" = "yes"
1477 AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
1478 ac_save_CFLAGS="$CFLAGS"
1479 ac_save_LIBS="$LIBS"
1480 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1481 LIBS="$GLIB_LIBS $LIBS"
1483 #define _GNU_SOURCE /* required on Linux, sigh */
1491 if (!dladdr((void *)main, &info))
1492 return 1; /* failure */
1493 return 0; /* assume success */
1495 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
1496 [echo $ac_n "cross compiling; assumed OK... $ac_c"
1497 ac_cv_dladdr_finds_executable_path=yes])
1498 CFLAGS="$ac_save_CFLAGS"
1499 LIBS="$ac_save_LIBS"
1500 if test x$ac_cv_dladdr_finds_executable_path = xyes
1502 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
1504 AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
1508 # Check whether GLib's printf supports thousands grouping. (This might
1509 # be different from the system's printf since GLib can optionally use
1510 # its own printf implementation.)
1512 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1513 ac_save_CFLAGS="$CFLAGS"
1514 ac_save_LIBS="$LIBS"
1515 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1516 LIBS="$GLIB_LIBS $LIBS"
1527 setlocale(LC_ALL, "en_US.UTF-8");
1528 str = g_strdup_printf("%'u", 123456);
1529 return (strcmp (str, "123,456") != 0);
1531 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1532 [echo $ac_n "cross compiling; playing it safe... $ac_c"
1533 ac_cv_glib_supports_printf_grouping=no])
1534 CFLAGS="$ac_save_CFLAGS"
1535 LIBS="$ac_save_LIBS"
1536 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1538 AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1543 if test "x$have_gtk" = "xyes"
1546 # We have GTK+; do we want the OS X integration functions and,
1547 # if so, do we have them and, if so, which versions do we have,
1548 # the old Carbon-based ones or the new Cocoa-based ones?
1550 AC_MSG_CHECKING(whether to use OS X integration functions)
1552 AC_ARG_WITH(osx-integration,
1553 AC_HELP_STRING( [--with-osx-integration],
1554 [use OS X integration functions @<:@default=yes, if available@:>@]),
1556 if test $withval = no
1558 want_osx_integration=no
1560 want_osx_integration=yes
1563 want_osx_integration=yes
1565 if test "x$want_osx_integration" = "xno"; then
1569 AC_WIRESHARK_OSX_INTEGRATION_CHECK
1573 AC_SUBST(wireshark_bin)
1574 AC_SUBST(wireshark_man)
1575 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1576 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
1579 # Enable/disable tshark
1581 AC_ARG_ENABLE(tshark,
1582 AC_HELP_STRING( [--enable-tshark],
1583 [build TShark @<:@default=yes@:>@]),
1584 tshark=$enableval,enable_tshark=yes)
1586 if test "x$enable_tshark" = "xyes" ; then
1587 tshark_bin="tshark\$(EXEEXT)"
1588 tshark_man="tshark.1"
1589 wiresharkfilter_man="wireshark-filter.4"
1594 AC_SUBST(tshark_bin)
1595 AC_SUBST(tshark_man)
1596 AC_SUBST(wiresharkfilter_man)
1600 # Enable/disable editcap
1602 AC_ARG_ENABLE(editcap,
1603 AC_HELP_STRING( [--enable-editcap],
1604 [build editcap @<:@default=yes@:>@]),
1605 enable_editcap=$enableval,enable_editcap=yes)
1607 if test "x$enable_editcap" = "xyes" ; then
1608 editcap_bin="editcap\$(EXEEXT)"
1609 editcap_man="editcap.1"
1614 AC_SUBST(editcap_bin)
1615 AC_SUBST(editcap_man)
1619 # Enable/disable echld
1621 AC_ARG_ENABLE(echld,
1622 AC_HELP_STRING( [--enable-echld],
1624 have_echld=$enableval,have_echld=no)
1626 AM_CONDITIONAL(HAVE_ECHLD, test "x$have_echld" = "xyes")
1627 if test "x$have_echld" = "xyes"
1629 AC_DEFINE(HAVE_ECHLD, 1, [Define if echld is enabled])
1630 echld_test_bin="echld_test\$(EXEEXT)"
1637 AC_SUBST(echld_test_bin)
1641 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1644 # Enable/disable capinfos
1646 AC_ARG_ENABLE(capinfos,
1647 AC_HELP_STRING( [--enable-capinfos],
1648 [build capinfos @<:@default=yes@:>@]),
1649 enable_capinfos=$enableval,enable_capinfos=yes)
1651 if test "x$enable_capinfos" = "xyes" ; then
1652 capinfos_bin="capinfos\$(EXEEXT)"
1653 capinfos_man="capinfos.1"
1658 AC_SUBST(capinfos_bin)
1659 AC_SUBST(capinfos_man)
1662 # Enable/disable mergecap
1664 AC_ARG_ENABLE(mergecap,
1665 AC_HELP_STRING( [--enable-mergecap],
1666 [build mergecap @<:@default=yes@:>@]),
1667 enable_mergecap=$enableval,enable_mergecap=yes)
1669 if test "x$enable_mergecap" = "xyes" ; then
1670 mergecap_bin="mergecap\$(EXEEXT)"
1671 mergecap_man="mergecap.1"
1676 AC_SUBST(mergecap_bin)
1677 AC_SUBST(mergecap_man)
1680 # Enable/disable reordercap
1682 AC_ARG_ENABLE(reordercap,
1683 AC_HELP_STRING( [--enable-reordercap],
1684 [build reordercap @<:@default=yes@:>@]),
1685 enable_reordercap=$enableval,enable_reordercap=yes)
1687 if test "x$enable_reordercap" = "xyes" ; then
1688 reordercap_bin="reordercap\$(EXEEXT)"
1689 reordercap_man="reordercap.1"
1694 AC_SUBST(reordercap_bin)
1695 AC_SUBST(reordercap_man)
1698 # Enable/disable text2pcap
1700 AC_ARG_ENABLE(text2pcap,
1701 AC_HELP_STRING( [--enable-text2pcap],
1702 [build text2pcap @<:@default=yes@:>@]),
1703 text2pcap=$enableval,enable_text2pcap=yes)
1705 if test "x$enable_text2pcap" = "xyes" ; then
1706 text2pcap_bin="text2pcap\$(EXEEXT)"
1707 text2pcap_man="text2pcap.1"
1712 AC_SUBST(text2pcap_bin)
1713 AC_SUBST(text2pcap_man)
1716 # Enable/disable dftest
1718 AC_ARG_ENABLE(dftest,
1719 AC_HELP_STRING( [--enable-dftest],
1720 [build dftest @<:@default=yes@:>@]),
1721 enable_dftest=$enableval,enable_dftest=yes)
1723 if test "x$enable_dftest" = "xyes" ; then
1724 dftest_bin="dftest\$(EXEEXT)"
1725 dftest_man="dftest.1"
1730 AC_SUBST(dftest_bin)
1731 AC_SUBST(dftest_man)
1734 # Enable/disable randpkt
1736 AC_ARG_ENABLE(randpkt,
1737 AC_HELP_STRING( [--enable-randpkt],
1738 [build randpkt @<:@default=yes@:>@]),
1739 enable_randpkt=$enableval,enable_randpkt=yes)
1741 if test "x$enable_randpkt" = "xyes" ; then
1742 randpkt_bin="randpkt\$(EXEEXT)"
1743 randpkt_man="randpkt.1"
1748 AC_SUBST(randpkt_bin)
1749 AC_SUBST(randpkt_man)
1753 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1754 dnl "gethostbyname()".
1755 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1757 dnl Checks for "connect()", used as a proxy for "socket()" - and
1758 dnl "-lsocket", if we need it to get "connect()".
1759 AC_WIRESHARK_SOCKET_LIB_CHECK
1762 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1765 AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1766 [use libpcap for packet capturing @<:@default=yes@:>@]),
1768 if test $withval = no
1771 elif test $withval = yes
1782 if test "x$want_pcap" = "xno" ; then
1786 AC_WIRESHARK_PCAP_CHECK
1790 dnl Check for airpcap
1791 AC_MSG_CHECKING(whether to include airpcap support)
1792 AC_ARG_ENABLE(airpcap,
1793 AC_HELP_STRING( [--enable-airpcap],
1794 [use AirPcap in Wireshark @<:@default=yes@:>@]),
1795 enable_airpcap=$enableval, enable_airpcap=yes)
1797 if test x$enable_airpcap = xyes; then
1798 if test "x$want_pcap" = "xno" ; then
1800 AC_MSG_RESULT(pcap not available - disabling airpcap)
1803 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1811 AC_MSG_CHECKING(whether to build dumpcap)
1813 AC_ARG_ENABLE(dumpcap,
1814 AC_HELP_STRING( [--enable-dumpcap],
1815 [build dumpcap @<:@default=yes@:>@]),
1816 enable_dumpcap=$enableval,enable_dumpcap=yes)
1818 if test "x$enable_dumpcap" = "xyes" ; then
1819 if test "x$want_pcap" = "xno" ; then
1821 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1829 if test "x$enable_dumpcap" = "xyes" ; then
1830 dumpcap_bin="dumpcap\$(EXEEXT)"
1831 dumpcap_man="dumpcap.1"
1836 AC_SUBST(dumpcap_bin)
1837 AC_SUBST(dumpcap_man)
1839 # Enable/disable rawshark
1842 AC_MSG_CHECKING(whether to build rawshark)
1844 AC_ARG_ENABLE(rawshark,
1845 AC_HELP_STRING( [--enable-rawshark],
1846 [build rawshark @<:@default=yes@:>@]),
1847 rawshark=$enableval,enable_rawshark=yes)
1849 if test "x$enable_rawshark" = "xyes" ; then
1850 if test "x$want_pcap" = "xno" ; then
1852 AC_MSG_RESULT(pcap not available - disabling rawshark)
1860 if test "x$enable_rawshark" = "xyes" ; then
1861 rawshark_bin="rawshark\$(EXEEXT)"
1862 rawshark_man="rawshark.1"
1867 AC_SUBST(rawshark_bin)
1868 AC_SUBST(rawshark_man)
1870 dnl Use pcap-ng by default
1871 AC_ARG_ENABLE(pcap-ng-default,
1872 AC_HELP_STRING( [--enable-pcap-ng-default],
1873 [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
1874 enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1875 if test x$enable_pcap_ng_default = xyes; then
1876 AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1879 dnl pcap remote check
1880 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1882 AC_ARG_WITH(pcap-remote,
1883 AC_HELP_STRING([--with-pcap-remote],
1884 [use libpcap remote capturing (requires libpcap)]),
1886 if test $withval = no
1890 want_pcap_remote=yes
1895 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1899 AC_WIRESHARK_PCAP_REMOTE_CHECK
1903 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1906 AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1907 [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1909 if test "x$withval" = "xno"
1912 elif test "x$withval" = "xyes"
1921 # Use zlib if it's present, otherwise don't.
1923 want_zlib=ifavailable
1926 if test "x$want_zlib" = "xno" ; then
1930 AC_WIRESHARK_ZLIB_CHECK
1931 if test "x$want_zlib" = "xno" ; then
1932 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1934 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1935 AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1941 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1944 AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1945 [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1947 if test $withval = no
1950 elif test $withval = yes
1959 # Use liblua by default
1961 want_lua=ifavailable
1964 if test "x$want_lua" = "xno" ; then
1968 AC_WIRESHARK_LIBLUA_CHECK
1969 if test "x$want_lua" = "xno" ; then
1970 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1973 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1977 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1979 AC_ARG_WITH(portaudio,
1980 AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1981 [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
1983 if test $withval = no
1986 elif test $withval = yes
1991 portaudio_dir=$withval
1995 # Use libportaudio by default
1997 want_portaudio=ifavailable
2000 if test "x$want_portaudio" = "xno" ; then
2004 AC_WIRESHARK_LIBPORTAUDIO_CHECK
2005 if test "x$want_portaudio" = "xno" ; then
2006 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
2009 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
2014 AC_HELP_STRING( [--enable-ipv6],
2015 [use IPv6 name resolution, if available @<:@default=yes@:>@]),
2016 enable_ipv6=$enableval,enable_ipv6=yes)
2018 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
2019 if test "x$enable_ipv6" = "xno" ; then
2023 AC_WIRESHARK_IPV6_STACK
2027 dnl Check if dumpcap should be installed with filesystem capabilities
2028 AC_PATH_PROG(SETCAP, setcap)
2029 AC_ARG_ENABLE(setcap-install,
2030 AC_HELP_STRING( [--enable-setcap-install],
2031 [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2032 enable_setcap_install=$enableval,enable_setcap_install=no)
2034 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2035 if test "x$enable_setcap_install" = "xno" ; then
2038 if test "x$SETCAP" = "x" ; then
2039 AC_MSG_RESULT(no. Setcap not found)
2040 elif test "x$enable_dumpcap" = "xno" ; then
2041 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
2047 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2049 dnl Check if dumpcap should be installed setuid
2050 AC_ARG_ENABLE(setuid-install,
2051 AC_HELP_STRING( [--enable-setuid-install],
2052 [install dumpcap as setuid @<:@default=no@:>@]),
2053 enable_setuid_install=$enableval,enable_setuid_install=no)
2055 AC_MSG_CHECKING(whether to install dumpcap setuid)
2056 if test "x$enable_setuid_install" = "xno" ; then
2059 if test "x$enable_setcap_install" = "xyes" ; then
2060 enable_setuid_install=no
2061 AC_MSG_RESULT(no; using setcap instead)
2062 elif test "x$enable_dumpcap" = "xno" ; then
2063 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
2069 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2070 AC_CHECK_FUNCS(setresuid setresgid)
2072 dnl ...but our Network Operations group is named "no"!
2074 AC_ARG_WITH(dumpcap-group,
2075 AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2076 [restrict dumpcap to GROUP]),
2078 if test "x$withval" = "xyes"; then
2079 AC_MSG_ERROR([No dumpcap group specified.])
2080 elif test "x$withval" != "xno"; then
2081 if test "x$enable_dumpcap" = "xno" ; then
2082 AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2084 AC_MSG_RESULT($withval)
2085 DUMPCAP_GROUP="$withval"
2088 AC_SUBST(DUMPCAP_GROUP)
2089 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2091 dnl libcap (not libpcap) check
2093 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2096 AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2097 [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2099 if test "x$withval" = "xno"; then
2101 elif test "x$withval" = "xyes"; then
2103 elif test -d "$withval"; then
2105 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2108 if test "x$with_libcap" = "xno" ; then
2112 AC_WIRESHARK_LIBCAP_CHECK
2114 AC_SUBST(LIBCAP_LIBS)
2116 dnl Checks for header files.
2117 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2118 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
2119 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)
2120 AC_CHECK_HEADERS(netinet/in.h)
2121 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2125 AC_MSG_CHECKING(whether to use SSL library)
2128 AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2129 [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2131 if test "x$withval" = "xno"; then
2133 elif test "x$withval" = "xyes"; then
2135 elif test -d "$withval"; then
2137 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2142 if test "x$want_ssl" = "xyes"; then
2144 AC_CHECK_LIB(crypto,EVP_md5,
2149 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2157 AC_MSG_CHECKING(whether to use Kerberos library)
2160 AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2161 [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2163 if test $withval = no
2166 elif test $withval = yes
2175 # Use Kerberos library if available, otherwise don't.
2177 want_krb5=ifavailable
2180 if test "x$want_krb5" = "xno" ; then
2184 AC_WIRESHARK_KRB5_CHECK
2190 AC_MSG_CHECKING(whether to use the c-ares library if available)
2193 AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2194 [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2196 if test "x$withval" = "xno"; then
2198 elif test "x$withval" = "xyes"; then
2200 elif test -d "$withval"; then
2202 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2205 if test "x$want_c_ares" = "xno" ; then
2209 AC_WIRESHARK_C_ARES_CHECK
2211 AC_SUBST(C_ARES_LIBS)
2215 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2218 AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2219 [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2221 if test "x$withval" = "xno"; then
2223 elif test "x$withval" = "xyes"; then
2225 elif test -d "$withval"; then
2227 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2230 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2234 AC_WIRESHARK_ADNS_CHECK
2240 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2243 AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2244 [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2246 if test "x$withval" = "xno"; then
2248 elif test "x$withval" = "xyes"; then
2250 elif test -d "$withval"; then
2252 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2255 if test "x$want_geoip" = "xno"; then
2259 AC_WIRESHARK_GEOIP_CHECK
2261 AC_SUBST(GEOIP_LIBS)
2263 # Warning: this Python scripting appears to be broken (does not work at all).
2264 # Running it also causes Valgrind to complain about all sorts of memory errors.
2265 # Suggestion: do not enable it unless you are working on fixing it.
2267 # An alternative might be https://code.google.com/p/pyreshark/
2269 dnl Python devel Check
2270 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2272 AC_ARG_WITH(broken-python,
2273 AC_HELP_STRING( [--with-broken-python@<:@=DIR@:>@],
2274 [use the (BROKEN) Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@]),
2276 pythondir='${libdir}/wireshark/python/${VERSION}'
2277 if test "x$withval" = "xno"
2280 elif test "x$withval" = "xyes"
2285 pythondir="$withval"
2288 # By default (user didn't explicitly enable Python), don't enable
2292 #pythondir='${libdir}/wireshark/python/${VERSION}'
2294 if test "x$want_python" = "xno" ; then
2298 AC_WIRESHARK_PYTHON_CHECK
2300 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2304 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2305 # never return (just like Charlie on the MTA).
2307 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2308 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2309 # follow the function name, so we need two different flavors of
2312 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2314 dnl Checks for typedefs, structures, and compiler characteristics.
2317 # Check how we can get the time zone abbreviation
2318 AC_WIRESHARK_TIMEZONE_ABBREV
2320 # We need to know whether "struct stat" has an "st_flags" member
2321 # for file_user_immutable().
2323 AC_WIRESHARK_STRUCT_ST_FLAGS
2325 # We need to know whether "struct sockaddr" has an "sa_len" member
2326 # for get_interface_list().
2328 AC_WIRESHARK_STRUCT_SA_LEN
2330 # We must know our byte order
2333 # Checks whether "-traditional" is needed when using "ioctl".
2334 # XXX - do we need this?
2335 AC_PROG_GCC_TRADITIONAL
2338 AC_CHECK_FUNC(getopt,
2340 AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2342 GETOPT_LO="wsgetopt.lo"
2344 if test "$ac_cv_func_getopt" = no ; then
2345 GETOPT_LO="wsgetopt.lo"
2347 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2350 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2351 STRNCASECMP_LO="strncasecmp.lo")
2352 if test "$ac_cv_func_strncasecmp" = no ; then
2353 STRNCASECMP_LO="strncasecmp.lo"
2355 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2356 AC_SUBST(STRNCASECMP_LO)
2358 AC_CHECK_FUNCS(mkstemp mkdtemp)
2360 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2362 if test "$have_inet_aton" = no; then
2363 INET_ATON_LO="inet_aton.lo"
2364 AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
2368 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2369 AC_SUBST(INET_ATON_LO)
2371 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2372 dnl check for pre-BIND82 inet_pton() bug.
2373 AC_MSG_CHECKING(for broken inet_pton)
2374 AC_TRY_RUN([#include <sys/types.h>
2375 #include <sys/socket.h>
2376 #include <netinet/in.h>
2377 #include <arpa/inet.h>
2382 /* this should return 0 (error) */
2383 return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2387 }], [AC_MSG_RESULT(ok);
2388 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2389 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2390 have_inet_pton=no])],
2392 if test "$have_inet_pton" = no; then
2393 INET_PTON_LO="inet_pton.lo"
2397 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2398 AC_SUBST(INET_PTON_LO)
2400 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2401 AC_MSG_CHECKING([for inet_ntop prototype])
2402 AC_TRY_COMPILE([#include <stdio.h>
2403 #include <sys/types.h>
2404 #include <sys/socket.h>
2405 #include <netinet/in.h>
2406 #include <arpa/inet.h>
2408 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2410 AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2411 [Define if inet_ntop() prototype exists])], [
2412 AC_TRY_COMPILE([#include <stdio.h>
2413 #include <sys/types.h>
2414 #include <sys/socket.h>
2415 #include <netinet/in.h>
2416 #include <arpa/inet.h>
2418 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2420 AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2421 [Define if inet_ntop() prototype exists])], [
2422 AC_MSG_RESULT(no)])])
2424 INET_NTOP_LO="inet_ntop.lo"
2425 AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2426 [Define if inet/v6defs.h needs to be included])])
2427 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2428 AC_SUBST(INET_NTOP_LO)
2430 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2431 [STRPTIME_LO="strptime.lo"
2432 AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2434 if test "$ac_cv_func_strptime" = no ; then
2435 STRPTIME_LO="strptime.lo"
2437 AC_SUBST(STRPTIME_C)
2438 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2439 AC_SUBST(STRPTIME_LO)
2441 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2442 AC_CHECK_FUNCS(issetugid)
2443 AC_CHECK_FUNCS(mmap mprotect sysconf)
2444 AC_CHECK_FUNCS(strtoll)
2446 dnl blank for now, but will be used in future
2447 AC_SUBST(wireshark_SUBDIRS)
2450 dnl check whether plugins should be enabled and, if they should be,
2451 dnl check for plugins directory - stolen from Amanda's configure.ac
2453 dnl we don't wish to expand ${libdir} yet
2454 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2455 AC_ARG_WITH(plugins,
2456 AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2457 [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2459 if test "x$withval" = "xno"; then
2461 elif test "x$have_plugins" = "xno"; then
2462 AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2463 elif test "x$withval" != "xyes"; then
2464 plugindir="$withval"
2467 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2468 if test x$have_plugins = xyes
2470 AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2473 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2476 # The plugin dissectors reside in ./plugins/PROTO/
2479 AC_SUBST(PLUGIN_LIBS)
2482 # Check if (emem) memory allocations must be 8-byte aligned.
2483 # I haven't been able to write C code that reliably makes that determination
2484 # (different versions of GCC with or without optimization give different
2485 # results) so just assume everything except (32-bit) x86 needs 8-byte
2486 # alignment (64-bit platforms either require 8-byte alignment for pointers
2487 # and 64-bit integral data types or may get better performance from that;
2488 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway. 32-bit
2489 # platforms would only require it, or get better performance from it,
2490 # for 64-bit floating-point values.).
2492 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2494 i386|i486|i586|i686)
2499 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2505 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2506 # (autoconf? automake? libtool?) - with the newer version(s), it's
2507 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2509 # With older version(s) of those tool(s), however, it's not just an
2510 # alias, and the configure scripts don't work without it.
2513 AC_SUBST(LIBTOOL_DEPS)
2515 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2516 if test x$enable_static = xyes -a x$have_plugins = xyes
2518 AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2520 AC_SUBST(ENABLE_STATIC)
2522 dnl Save the cacheable configure results to config.cache before recursing
2525 sinclude(plugins/Custom.m4) dnl
2526 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2528 sinclude(asn1/Custom.m4) dnl
2529 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2531 AC_CONFIG_HEADERS(config.h)
2536 _CUSTOM_ASN1_AC_OUTPUT_
2537 asn1/acp133/Makefile
2539 asn1/ansi_map/Makefile
2540 asn1/ansi_tcap/Makefile
2544 asn1/charging_ase/Makefile
2549 asn1/credssp/Makefile
2558 asn1/gprscdr/Makefile
2559 asn1/gsm_map/Makefile
2568 asn1/h450-ros/Makefile
2571 asn1/HI2Operations/Makefile
2575 asn1/isdn-sup/Makefile
2576 asn1/kerberos/Makefile
2579 asn1/logotypecertextn/Makefile
2583 asn1/lte-rrc/Makefile
2586 asn1/mpeg-audio/Makefile
2587 asn1/mpeg-pes/Makefile
2589 asn1/ns_cert_exts/Makefile
2597 asn1/pkcs12/Makefile
2598 asn1/pkinit/Makefile
2599 asn1/pkixac/Makefile
2600 asn1/pkix1explicit/Makefile
2601 asn1/pkix1implicit/Makefile
2602 asn1/pkixproxy/Makefile
2603 asn1/pkixqualified/Makefile
2604 asn1/pkixtsp/Makefile
2607 asn1/q932-ros/Makefile
2618 asn1/sbc-ap/Makefile
2621 asn1/spnego/Makefile
2629 asn1/wlancertextn/Makefile
2631 asn1/x509af/Makefile
2632 asn1/x509ce/Makefile
2633 asn1/x509if/Makefile
2634 asn1/x509sat/Makefile
2641 epan/dfilter/Makefile
2642 epan/dissectors/Makefile
2643 epan/dissectors/dcerpc/Makefile
2644 epan/dissectors/pidl/Makefile
2645 epan/ftypes/Makefile
2648 epan/wspython/Makefile
2659 packaging/macosx/Info.plist
2660 packaging/macosx/Makefile
2661 packaging/macosx/osx-dmg.sh
2662 packaging/nsis/Makefile
2663 packaging/rpm/Makefile
2664 packaging/rpm/SPECS/Makefile
2665 packaging/rpm/SPECS/wireshark.spec
2666 packaging/svr4/Makefile
2667 packaging/svr4/checkinstall
2668 packaging/svr4/pkginfo
2670 plugins/asn1/Makefile
2671 plugins/docsis/Makefile
2672 plugins/ethercat/Makefile
2673 plugins/gryphon/Makefile
2674 plugins/irda/Makefile
2675 plugins/m2m/Makefile
2676 plugins/mate/Makefile
2677 plugins/opcua/Makefile
2678 plugins/profinet/Makefile
2679 plugins/stats_tree/Makefile
2680 plugins/unistim/Makefile
2681 plugins/wimax/Makefile
2682 plugins/wimaxasncp/Makefile
2683 plugins/wimaxmacphy/Makefile
2685 tools/lemon/Makefile
2691 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2696 if test "x$have_gtk" = "xyes"; then
2697 if test "x$with_gtk3" = "xyes"; then
2698 gtk_lib_message=" (with GTK+ 3"
2700 gtk_lib_message=" (with GTK+ 2"
2702 if test "x$have_ige_mac" = "xyes"; then
2703 gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
2705 gtk_lib_message="$gtk_lib_message)"
2709 if test "x$have_qt" = "xyes" ; then
2710 enable_qtshark="yes"
2715 if test "x$enable_setcap_install" = "xyes" ; then
2716 setcap_message="yes"
2721 if test "x$enable_setuid_install" = "xyes" ; then
2722 setuid_message="yes"
2727 if test "x$DUMPCAP_GROUP" = "x" ; then
2728 dumpcap_group_message="(none)"
2730 dumpcap_group_message="$DUMPCAP_GROUP"
2733 if test "x$want_zlib" = "xno" ; then
2739 if test "x$want_lua" = "xyes" ; then
2745 if test "x$want_python" = "xno"; then
2748 python_message="yes"
2751 if test "x$want_portaudio" = "xyes" ; then
2752 portaudio_message="yes"
2754 portaudio_message="no"
2757 if test "x$want_ssl" = "xno" ; then
2763 if test "x$want_krb5" = "xno" ; then
2766 krb5_message="yes ($ac_krb5_version)"
2769 if test "x$have_good_c_ares" = "xyes" ; then
2770 c_ares_message="yes"
2775 if test "x$have_good_adns" = "xyes" ; then
2778 if test "x$have_good_c_ares" = "xyes" ; then
2779 adns_message="no (using c-ares instead)"
2785 if test "x$have_good_libcap" = "xyes" ; then
2786 libcap_message="yes"
2791 if test "x$have_good_geoip" = "xyes" ; then
2798 echo "The Wireshark package has been configured with the following options."
2799 echo " Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message"
2800 echo " Build wireshark-qt : $enable_qtshark"
2801 echo " Build tshark : $enable_tshark"
2802 echo " Build capinfos : $enable_capinfos"
2803 echo " Build editcap : $enable_editcap"
2804 echo " Build dumpcap : $enable_dumpcap"
2805 echo " Build mergecap : $enable_mergecap"
2806 echo " Build reordercap : $enable_reordercap"
2807 echo " Build text2pcap : $enable_text2pcap"
2808 echo " Build randpkt : $enable_randpkt"
2809 echo " Build dftest : $enable_dftest"
2810 echo " Build rawshark : $enable_rawshark"
2811 echo " Build echld : $have_echld"
2813 echo " Save files as pcap-ng by default : $enable_pcap_ng_default"
2814 echo " Install dumpcap with capabilities : $setcap_message"
2815 echo " Install dumpcap setuid : $setuid_message"
2816 echo " Use dumpcap group : $dumpcap_group_message"
2817 echo " Use plugins : $have_plugins"
2818 echo " Use Lua library : $lua_message"
2819 echo " Use Python binding : $python_message"
2820 echo " Build rtp_player : $portaudio_message"
2821 echo " Build profile binaries : $enable_profile_build"
2822 echo " Use pcap library : $want_pcap"
2823 echo " Use zlib library : $zlib_message"
2824 echo " Use kerberos library : $krb5_message"
2825 echo " Use c-ares library : $c_ares_message"
2826 echo " Use GNU ADNS library : $adns_message"
2827 echo " Use SMI MIB library : $libsmi_message"
2828 echo " Use GNU crypto library : $gcrypt_message"
2829 echo " Use SSL crypto library : $ssl_message"
2830 echo " Use IPv6 name resolution : $enable_ipv6"
2831 echo " Use gnutls library : $tls_message"
2832 echo " Use POSIX capabilities library : $libcap_message"
2833 echo " Use GeoIP library : $geoip_message"
2834 echo " Use nl library : $libnl_message"