WSDG: More CMake updates.
[metze/wireshark/wip.git] / configure.ac
1 #
2 # Autoconf script for Wireshark
3 #
4
5 #
6 # Define variables for the components of the Wireshark version number.
7 #
8 m4_define([version_major], [2])
9 m4_define([version_minor], [5])
10 m4_define([version_micro], [2])
11 dnl Updated by make-version.pl
12 m4_define([version_extra], [])
13 m4_define([version_micro_extra], m4_join([], version_micro, version_extra))
14
15 AC_INIT(Wireshark, [version_major.version_minor.version_micro_extra], http://bugs.wireshark.org/, , http://www.wireshark.org/)
16 CONFIG_ARGS="$*"
17 AC_SUBST(CONFIG_ARGS)
18
19 VERSION_RELEASE="version_major.version_minor"
20 AC_SUBST(VERSION_RELEASE)
21 AC_DEFINE_UNQUOTED([VERSION_RELEASE], ["$VERSION_RELEASE"], [Wireshark feature release version (X.Y)])
22
23 # Minimum autoconf version we require.
24 AC_PREREQ(2.64)
25 # Variable expansion doesn't work in AC_PREREQ()
26 AC_MIN_VERSION=2.64
27 AC_SUBST(AC_MIN_VERSION)
28
29 dnl Make sure to keep ACLOCAL_AMFLAGS in Makefile.am and AC_CONFIG_MACRO_DIRS
30 dnl in configure.ac in sync, otherwise there will be an error running autogen.sh.
31 m4_ifdef([AC_CONFIG_MACRO_DIRS],[AC_CONFIG_MACRO_DIRS([m4])])
32
33 dnl Check for CPU / vendor / OS
34 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
35 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
36 dnl needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
37 dnl macros.
38 dnl
39 dnl As nothing in the Wireshark is itself a build tool (we are not,
40 dnl for example, a compiler that generates machine code), we probably
41 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
42 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
43 dnl AC_CANONICAL_HOST - instead.  Note that we do have tools, such as
44 dnl lemon, that need to be built for the build machine, not for the
45 dnl host machine, so we might need both.
46 dnl
47 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
48
49 dnl AC_CANONICAL_BUILD
50 dnl AC_CANONICAL_HOST
51 AC_CANONICAL_TARGET
52
53 AM_INIT_AUTOMAKE([1.11 tar-ustar dist-xz no-dist-gzip subdir-objects foreign])
54
55 # Enable silent builds by default. Verbose builds can be enabled with "./configure
56 # --enable-silent-rules ..." or "make V=1 ..."
57 AM_SILENT_RULES([yes])
58
59 # Make Wireshark's version available in config.h
60 AC_DEFINE(VERSION_MAJOR, version_major, [Wireshark's major version])
61 AC_DEFINE(VERSION_MINOR, version_minor, [Wireshark's minor version])
62 AC_DEFINE(VERSION_MICRO, version_micro, [Wireshark's micro version])
63
64 AC_DEFINE_UNQUOTED(VERSION_FLAVOR,
65         ["${WIRESHARK_VERSION_FLAVOR:-"Development Build"}"], [Wireshark's package flavor])
66
67 LT_PREREQ([2.2.2])
68 LT_INIT([disable-static])
69 AC_SUBST([LIBTOOL_DEPS])
70
71 AC_CONFIG_LIBOBJ_DIR([wsutil])
72
73 #
74 # Checks for programs used in the main build process.
75 #
76 # See doc/README.developer for allowed C99 features
77 #
78 AC_PROG_CC_C99
79 if test "$ac_cv_prog_cc_c99" = "no"
80 then
81         AC_MSG_ERROR([The C compiler does not support C99])
82 fi
83 AC_PROG_CPP
84
85 AC_PROG_CXX
86 if test ! -z "$CXX"; then
87         #
88         # OK, we found something AC_LANG_CXX thinks is a C++ compiler,
89         # but is it one?
90         #
91         # Some UN*Xes have, by default, a case-insensitive file
92         # system, and AC_PROG_CXX looks for, among other things,
93         # "CC" as a C++ compiler, and, if you have a case-insensitive
94         # file system and a C compiler named "cc" (both true, by
95         # default, on macOS), AC_PROG_CXX may end up thinking it's
96         # the C++ compiler.
97         #
98         # So we check by feeding the purported C++ compiler a
99         # program using C++ features (iostream).
100         #
101         AC_MSG_CHECKING(whether $CXX is a C++ compiler)
102         AC_LANG_PUSH([C++])
103         AC_LINK_IFELSE([AC_LANG_PROGRAM(
104         [
105 #include <iostream>
106         ],
107         [
108         std::cout << "Hello World! ";
109         return 0;
110         ])],
111                 [AC_MSG_RESULT(yes)],
112                 [
113                         AC_MSG_RESULT(no)
114                         CXX=""
115                 ])
116         AC_LANG_POP([C++])
117 fi
118
119 # Qt 5.7 or later requires C++11
120 AS_IF([test -n "$CXX"],
121         [AX_CXX_COMPILE_STDCXX([11], [noext], [optional])])
122
123 # Set CC_FOR_BUILD (the *local* gcc to use for building e.g. lemon)
124 if test "x$cross_compiling" = xno -a -z "$CC_FOR_BUILD"; then
125         CC_FOR_BUILD="$CC"
126 fi
127 AX_PROG_CC_FOR_BUILD
128
129 #
130 # Check for versions of "sed" inadequate to handle, in libtool, a list
131 # of object files as large as the list in Wireshark.
132 #
133 AC_PROG_SED
134
135 AC_PROG_LN_S
136 AC_PROG_MKDIR_P
137
138 AC_PATH_PROG(PERL, perl)
139
140 # Check for Python.
141 AC_PATH_PROGS(PYTHON, python python3)
142 if test ! -z "$PYTHON"; then
143         #
144         # OK, we found Python; is it Python 2.5 or later?
145         # Note: we don't use named components for sys.version_info to get
146         # the major version number, as named components for version_info
147         # were apparently introduced in Python 2.7.
148         #
149         AC_MSG_CHECKING([whether $PYTHON is Python 2.5 or later])
150         python_major_version=`$PYTHON -c 'import sys; print (sys.version_info[[0]])'`
151         python_minor_version=`$PYTHON -c 'import sys; print (sys.version_info[[1]])'`
152         if test "$python_major_version" -eq 2 -a "$python_minor_version" -lt 5 ; then
153                 AC_MSG_RESULT(no)
154                 AC_MSG_WARN([Building with Python $python_major_version.$python_minor_version may not work])
155         else
156                 AC_MSG_RESULT(yes)
157         fi
158 else
159         AC_MSG_ERROR(I couldn't find python; make sure it's installed and in your path)
160 fi
161
162 dnl
163 dnl Check for yacc/lex. Distribution tarballs include generated source,
164 dnl in which case these tools are not a mandatory requirement to build.
165 dnl
166 AC_PROG_YACC
167 AS_IF([test "x$YACC" = xyacc], [AS_UNSET(YACC)])
168 AS_IF([test -z "$YACC" -a ! -f $srcdir/wiretap/ascend.c],
169         [AC_MSG_ERROR([I couldn't find bison or byacc; make sure it's installed and in your path])])
170 AM_MISSING_PROG(YACC, bison)
171 AC_PROG_LEX
172 AS_IF([test "x$LEX" != xflex], [AS_UNSET(LEX)])
173 AS_IF([test -z "$LEX" -a ! -f $srcdir/wiretap/ascend_scanner.c],
174         [AC_MSG_ERROR([I couldn't find flex; make sure it's installed and in your path])])
175 AM_MISSING_PROG(LEX, flex)
176
177 AC_PATH_PROG(POD2MAN, pod2man)
178 if test "x$POD2MAN" = x
179 then
180         #
181         # The alternative is not to build the man pages....
182         #
183         AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
184 fi
185 AC_PATH_PROG(POD2HTML, pod2html)
186 if test "x$POD2HTML" = x
187 then
188         #
189         # The alternative is not to build the HTML man pages....
190         #
191         AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
192 fi
193
194 #
195 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
196 # flags such as -pedantic, -W warning flags and -f feature flags.  Currently,
197 # we assume GCC and clang do; other compilers should be added here.
198 #
199 # This is done to avoid getting tripped up by compilers that support
200 # those flags but give them a different meaning.
201 #
202 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
203         ac_supports_gcc_flags=yes
204 fi
205
206 # Check for doxygen
207 AC_PATH_PROG(DOXYGEN, doxygen)
208 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
209 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
210
211 #
212 # Check for pkg-config and set PKG_CONFIG accordingly.
213 #
214 # This is referenced via AC_REQUIRE([PKG_PROG_PKG_CONFIG] in some macros
215 # like PKG_CHECK_MODULES. If the first call to such a macro is under an
216 # "if" statement, it's safer to call PKG_PROG_PKG_CONFIG directly, see
217 # the comments in acolocal.m4
218 #
219 # We want version 0.7 or better.  (XXX - explain why. Is that just
220 # because our Qt tests were originally based on AM_PATH_GTK, and *it*
221 # requires 0.7 or better?)
222 #
223 PKG_PROG_PKG_CONFIG(0.7)
224 if test -z "$PKG_CONFIG"; then
225         AC_MSG_ERROR(I couldn't find pkg-config; make sure it's installed and in your path)
226 fi
227
228 #
229 # Try to arrange for large file support.
230 #
231 AC_SYS_LARGEFILE
232
233 #
234 # Check if we need to link with libm
235 #
236 AC_SEARCH_LIBS([cos], [m])
237
238 #
239 # Check for C99 math functions.
240 #
241 AC_CHECK_FUNCS([floorl lrint])
242
243 #
244 # Check if we need to link with -lnsl and -lsocket
245 #
246 AX_LIB_SOCKET_NSL
247
248 #
249 # GUI toolkit options
250 #
251 AC_ARG_WITH([qt],
252   AC_HELP_STRING( [--with-qt=@<:@yes/no/4/5@:>@],
253                   [use Qt @<:@default=yes, if available@:>@]),
254   with_qt="$withval", with_qt="unspecified")
255
256 AC_ARG_WITH([gtk],
257   AC_HELP_STRING( [--with-gtk=@<:@yes/no/2/3@:>@],
258         [use GTK+ @<:@default=no@:>@]),
259         AS_CASE([$withval],
260           [yes], [with_gtk="3 2 fail"],
261           [no],  [with_gtk="no"],
262           [3],   [with_gtk="3 fail3"],
263           [2],   [with_gtk="2 fail2"],
264           [AC_MSG_ERROR([--with-gtk must be one of yes/no/2/3])]),
265         with_gtk="no")
266
267 # GnuTLS
268 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+, then switched back to
269 # LGPLv2.1+ in version 3.1.10.
270 # GnuTLS depends on GMP which switched from LGPLv2.1+ to LGPLv3+ in
271 # version 4.2.2, the switched to LGPLv3+ / GPLv2+ in version 6.0.0.
272
273 tls_message="no"
274 want_gnutls="if_available"
275 AC_ARG_WITH([gnutls],
276   AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
277                   [use GnuTLS library @<:@default=yes, if available@:>@]),
278   [ with_gnutls="$withval"; want_gnutls="yes" ], with_gnutls="yes")
279
280 if test "x$with_gnutls" = "xyes"; then
281   have_license_compatible_gnutls="no"
282   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.1.10 ],
283     [ have_license_compatible_gnutls="yes" ], [ echo "GnuTLS >= 3.1.10 not found " ]
284   )
285
286   if test "x$have_license_compatible_gnutls" != "xyes"; then
287     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.0 gnutls < 3],
288       [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 2.12.0, < 3.0 not found " ]
289     )
290   fi
291
292   if test "x$have_license_compatible_gnutls" != "xyes"; then
293     if test "x$want_gnutls" = "xyes"; then
294       AC_MSG_ERROR([GnuTLS crypto library was requested, but is not installed for development])
295     else
296       AS_ECHO(["GnuTLS with compatible license not found, disabling SSL decryption"])
297     fi
298   else
299     AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
300     tls_message="yes"
301   fi
302 fi
303
304 # libgrypt (for decryption, MAC, etc. functionality).
305 AM_PATH_LIBGCRYPT(1.4.2, [ ] , [
306   AC_MSG_ERROR([[libgcrypt not installed for development; install libgcrypt, including any development package, for your system]])
307 ])
308
309 AC_ARG_WITH(libnl,
310   AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
311                  [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
312 [
313         if test "x$withval" = "xno"
314         then
315                 want_libnl=no
316         elif test "x$withval" = "xyes"
317         then
318                 want_libnl=yes
319                 libnl_version=any
320         elif test "x$withval" = "x1"
321         then
322                 want_libnl=yes
323                 libnl_version=1
324         elif test "x$withval" = "x2"
325         then
326                 want_libnl=yes
327                 libnl_version=2
328         elif test "x$withval" = "x3"
329         then
330                 want_libnl=yes
331                 libnl_version=3
332         else
333                 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
334         fi
335 ],[
336         #
337         # Use libnl if it's present, otherwise don't.
338         #
339         want_libnl=ifavailable
340         libnl_version=any
341 ])
342 #
343 # Libnl is Linux-specific.
344 #
345 libnl_message="no"
346 case "$host_os" in
347 linux*)
348         AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
349
350         if test x$want_libnl = "xno"; then
351                 AC_MSG_RESULT(no)
352         else
353                 AC_MSG_RESULT(yes)
354                 #
355                 # Test for specific libnl versions only if no version
356                 # was specified by the user or if the version in question
357                 # was requested by the user.
358                 #
359                 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
360                         PKG_CHECK_EXISTS([libnl-3.0 libnl-route-3.0 libnl-genl-3.0], [have_libnl3=yes], [have_libnl3=no])
361                 fi
362                 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
363                         PKG_CHECK_EXISTS([libnl-2.0], [have_libnl2=yes], [have_libnl2=no])
364                 fi
365                 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
366                         PKG_CHECK_EXISTS([libnl-1], [have_libnl1=yes], [have_libnl1=no])
367                 fi
368                 if (test "${have_libnl3}" = "yes"); then
369                         PKG_WIRESHARK_CHECK_SYSTEM_MODULES([LIBNL], [libnl-3.0 libnl-route-3.0 libnl-genl-3.0])
370                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
371                         AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
372                         libnl_message="yes (v3)"
373                 elif (test "${have_libnl2}" = "yes"); then
374                         PKG_WIRESHARK_CHECK_SYSTEM_MODULES([LIBNL], [libnl-2.0])
375                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
376                         AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
377                         libnl_message="yes (v2)"
378                 elif (test "${have_libnl1}" = "yes"); then
379                         PKG_WIRESHARK_CHECK_SYSTEM_MODULES([LIBNL], [libnl-1])
380                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
381                         AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
382                         libnl_message="yes (v1)"
383                 else
384                         if test x$want_libnl = "xyes"; then
385                                 case "$libnl_version" in
386
387                                 any)
388                                         AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
389                                         ;;
390
391                                 *)
392                                         AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
393                                         ;;
394                                 esac
395                         fi
396                 fi
397         fi
398
399         AC_MSG_CHECKING([if nl80211.h is new enough])
400           AC_TRY_COMPILE([#include <linux/nl80211.h>],
401             [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
402              x |= NL80211_ATTR_SUPPORTED_IFTYPES;
403              x |= NL80211_ATTR_SUPPORTED_COMMANDS;
404              x |= NL80211_ATTR_WIPHY_FREQ;
405              x |= NL80211_CHAN_NO_HT;
406              (void)x;],
407             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
408             [AC_MSG_RESULT(no)])
409
410         AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
411           AC_TRY_COMPILE([#include <linux/nl80211.h>],
412             [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
413             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
414             [AC_MSG_RESULT(no)])
415
416         AC_MSG_CHECKING([for NL80211_SPLIT_WIPHY_DUMP])
417           AC_TRY_COMPILE([#include <linux/nl80211.h>],
418             [enum nl80211_protocol_features x = NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP;],
419             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_SPLIT_WIPHY_DUMP, 1, [SPLIT_WIPHY_DUMP is supported])],
420             [AC_MSG_RESULT(no)])
421
422         AC_MSG_CHECKING([for NL80211_VHT_CAPABILITY])
423           AC_TRY_COMPILE([#include <linux/nl80211.h>],
424             [enum nl80211_attrs x = NL80211_ATTR_VHT_CAPABILITY;],
425             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_VHT_CAPABILITY, 1, [VHT_CAPABILITY is supported])],
426             [AC_MSG_RESULT(no)])
427         ;;
428
429 *)
430         if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
431                 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
432         fi
433 esac
434
435 #
436 # Check if we should build the Wireshark User's Guide
437 #
438 AC_ARG_ENABLE(guides,
439   AC_HELP_STRING( [--disable-guides],
440                   [Don't build the Wireshark User's Guide]),
441                   [want_wsug=$enableval], [want_wsug=if_available])
442
443 #
444 # Check for programs used when building DocBook documentation.
445 #
446 have_wsug=yes
447 AC_PATH_PROGS(ASCIIDOCTOR, [asciidoctorj asciidoctor])
448 AC_CHECK_PROGS(HAVE_ASCIIDOCTOR, [asciidoctorj asciidoctor], "yes", "no")
449 AM_CONDITIONAL(HAVE_ASCIIDOCTOR, test x$HAVE_ASCIIDOCTOR = xyes)
450 AS_IF([test ! -x "$ASCIIDOCTOR"],
451         [
452           AS_IF([test "x$want_wsug" = xyes],
453                 [AC_MSG_ERROR([Asciidoctor not found. This is required to build the release notes and guides])])
454           have_wsug=no
455         ])
456 AC_PATH_PROG(XSLTPROC, xsltproc, xsltproc)
457 AS_IF([test ! -x "$XSLTPROC"],
458         [
459           AS_IF([test "x$want_wsug" = xyes],
460                 [AC_MSG_ERROR([xlstproc not found but required to build the Wireshark User's Guide])])
461           have_wsug=no
462         ])
463
464 AM_CONDITIONAL(BUILD_USER_GUIDE, [test "x$have_wsug" = xyes -a "x$want_wsug" != xno])
465
466 # RPM
467 AC_CHECK_PROGS(RPMBUILD, [rpmbuild], [rpmbuild])
468
469 # Shellcheck
470 AC_CHECK_PROG(SHELLCHECK, shellcheck)
471
472 #
473 # Check compiler vendor. For GCC this will be 'gnu' and for Clang 'clang'.
474 #
475 AX_COMPILER_VENDOR
476 if test "x$CXX" != "x" ; then
477         AC_LANG_PUSH(C++)
478         AX_COMPILER_VENDOR
479         AC_LANG_POP
480 fi
481
482 #
483 # Some compilers have to be told to fail when passed an unknown -W flag;
484 # make sure we do that.
485 #
486 AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR
487
488 #
489 # Some C++ compilers have to be told to fail when passed a -W flag that
490 # they don't think should apply to C++; make sure we do that.
491 #
492 AC_WIRESHARK_CHECK_NON_CXX_WARNING_OPTION_ERROR
493
494 #
495 # The following are for C and C++
496 #
497 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wall)
498 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wextra)
499 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wendif-labels)
500 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpointer-arith)
501 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wformat-security)
502 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fwrapv)
503 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fno-strict-overflow)
504 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fno-delete-null-pointer-checks)
505 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wvla)
506 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Waddress)
507 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wattributes)
508 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
509 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
510 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpragmas)
511 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-overlength-strings)
512 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-long-long)
513 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wheader-guard)
514 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcomma)
515
516 #
517 # The following are C only, not C++
518 #
519 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wc++-compat, C)
520 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunused-const-variable, C)
521
522 #
523 # XXX - OK for C++?
524 #
525 # Make sure -Wshadow doesn't complain about variables in function and
526 # function pointer declarations shadowing other variables; if not, don't
527 # turn it on, as some versions of GCC (including the one in at least
528 # some Xcode versions that came with Mac OS X 10.5) complain about
529 # that.
530 #
531 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshadow, C,
532   [
533 extern int bar(int a);
534 extern int foo(int);
535
536 int
537 foo(int a)
538 {
539         int (*fptr)(int a) = bar;
540
541         return fptr(a) * 2;
542 }
543   ],
544   [warns about variables in function declarations shadowing other variables])
545
546 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-pointer-sign, C)
547 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wold-style-definition, C)
548 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wstrict-prototypes, C)
549
550 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
551 # is given a constant string.
552 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
553 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wlogical-op, C,
554   [
555 #include <string.h>
556
557 int foo(const char *, int);
558 int bar(void);
559
560 int
561 foo(const char *sep, int c)
562 {
563         if (strchr (sep, c) != NULL)
564                 return 1;
565         else
566                 return 0;
567 }
568
569 int
570 bar(void)
571 {
572         return foo("<", 'a');
573 }
574   ],
575   [generates warnings from strchr()])
576
577 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wjump-misses-init, C)
578 # The Qt headers generate a ton of shortening errors on 64-bit systems
579 # so only enable this for C for now.
580 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshorten-64-to-32, C)
581
582 #
583 # Implicit function declarations are an error in C++ and most
584 # likely a programming error in C. Turn -Wimplicit-int and
585 # -Wimplicit-function-declaration into an error by default.
586 #
587 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Werror=implicit, C)
588
589 # Clang only. Avoid "argument unused during compilation" warnings
590 # (for example, when getting the -gsplit-dwarf option or
591 # when combining -fwrapv with -fno-strict-overflow)
592 if test x"$ax_cv_c_compiler_vendor" = xclang; then
593         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Qunused-arguments, C)
594 fi
595 if test x"$ax_cv_cxx_compiler_vendor" = xclang; then
596         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Qunused-arguments, CXX)
597 fi
598
599 #
600 # Use the faster pre gcc 4.5 floating point precision if available.
601 #
602 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
603
604 #
605 # Try to have the compiler default to hiding symbols, so that only
606 # symbols explicitly exported with WS_DLL_PUBLIC will be visible
607 # outside (shared) libraries; that way, more UN*X builds will catch
608 # failures to export symbols, rather than having that fail only on
609 # Windows.
610 #
611 # GCC and GCC-compatible compilers
612 #
613 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
614 if test "x$can_add_to_cflags" = "xno"
615 then
616         #
617         # Sun^WOracle C.
618         #
619         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xldscope=hidden)
620         if test "x$can_add_to_cflags" = "xno"
621         then
622                 # TODO add other ways of hiding symbols
623                 AC_MSG_WARN(Compiler will export all symbols from shared libraries)
624         fi
625 fi
626
627 #
628 # Try to add some additional checks to CFLAGS.
629 # These are not enabled by default, because the warnings they produce
630 # are very hard or impossible to eliminate.
631 #
632 AC_ARG_ENABLE(extra-compiler-warnings,
633   AC_HELP_STRING( [--enable-extra-compiler-warnings],
634                   [do additional compiler warnings @<:@default=no@:>@]),
635 [
636         wireshark_extra_flags=$enableval
637         if test $enableval != no
638         then
639                 #
640                 # The following are for C and C++
641                 #
642                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpedantic)
643                 #
644                 # As we use variadic macros, we don't want warnings
645                 # about them, even with -Wpedantic.
646                 #
647                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-variadic-macros)
648                 #
649                 # Various code blocks this one.
650                 #
651                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Woverflow)
652                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
653                 #
654                 # Due to various places where APIs we don't control
655                 # require us to cast away constness, we can probably
656                 # never enable this one with -Werror.
657                 #
658                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-qual)
659                 #
660                 # Some generated ASN.1 dissectors block this one;
661                 # multiple function declarations for the same
662                 # function are being generated.
663                 #
664                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wredundant-decls)
665                 #
666                 # Some loops are safe, but it's hard to convince the
667                 # compiler of that.
668                 #
669                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunsafe-loop-optimizations)
670                 #
671                 # All the registration functions block these for now.
672                 #
673                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-prototypes)
674                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-declarations)
675                 #
676                 # A bunch of "that might not work on SPARC" code blocks
677                 # this one for now; some of it is code that *will* work
678                 # on SPARC, such as casts of "struct sockaddr *" to
679                 # "struct sockaddr_in *", which are required by some
680                 # APIs such as getifaddrs().
681                 #
682                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-align)
683                 #
684                 # Works only with Clang
685                 #
686                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunreachable-code)
687                 #
688                 # Works only with Clang but generates a lot of warnings
689                 # (about glib library not using Doxygen)
690                 #
691                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdocumentation)
692                 #
693                 # Works only with GCC 7
694                 #
695                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wduplicated-branches)
696
697                 #
698                 # The following are C only, not C++
699                 #
700                 # Due to various places where APIs we don't control
701                 # require us to cast away constness, we can probably
702                 # never enable this one with -Werror.
703                 #
704                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wbad-function-cast, C)
705         fi
706 ])
707
708 # Try to add ASAN address analyze.
709 # Only needed for analyse
710 #
711 AC_ARG_ENABLE(asan,
712   AC_HELP_STRING( [--enable-asan],
713                   [Enable AddressSanitizer (ASAN) for debugging (degrades performance)@<:@default=no@:>@]),
714 [
715         #
716         # With Clang >= 3.5 Leak detection is enable by default
717         # and no yet all leak is fixed...
718         # use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
719         #
720         # XXX shouldn't this also be added to LDFLAGS?
721         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=address)
722
723         # Disable ASAN for build-time tools, e.g. lemon
724         WS_CFLAGS_saved="$WS_CFLAGS"
725         WS_LDFLAGS_saved="$WS_LDFLAGS"
726         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fno-sanitize=all, C)
727         if test "x$can_add_to_cflags" = "xyes"
728         then
729                 NO_SANITIZE_CFLAGS="-fno-sanitize=all"
730                 NO_SANITIZE_LDFLAGS="-fno-sanitize=all"
731         fi
732         WS_CFLAGS="$WS_CFLAGS_saved"
733         WS_LDFLAGS="$WS_LDFLAGS_saved"
734
735 ])
736 AC_SUBST(NO_SANITIZE_CFLAGS)
737 AC_SUBST(NO_SANITIZE_LDFLAGS)
738
739 # Try to enable ThreadSanitizer.
740 #
741 AC_ARG_ENABLE(tsan,
742   AC_HELP_STRING( [--enable-tsan],
743                   [Enable ThreadSanitizer (TSan) for debugging@<:@default=no@:>@]),
744 [
745         #
746         # Available since Clang >= 3.2 and GCC >= 4.8
747         #
748         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=thread)
749         AC_WIRESHARK_LDFLAGS_CHECK(-fsanitize=thread)
750
751 ])
752
753 # Try to enable UndefinedBehaviorSanitizer.
754 #
755 AC_ARG_ENABLE(ubsan,
756   AC_HELP_STRING( [--enable-ubsan],
757                   [Enable UndefinedBehaviorSanitizer (UBSan) for debugging@<:@default=no@:>@]),
758 [
759         #
760         # Available since Clang >= 3.3 and GCC >= 4.9
761         #
762         # XXX shouldn't this also be added to LDFLAGS?
763         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=undefined)
764
765 ])
766
767 # Add check hf conflict..
768 #
769 AC_ARG_ENABLE(checkhf-conflict,
770   AC_HELP_STRING( [--enable-checkhf-conflict],
771                   [Enable hf conflict check for debugging (start-up may be slower)@<:@default=no@:>@]),
772 [
773         AC_DEFINE(ENABLE_CHECK_FILTER, 1, [Enable hf conflict check])
774 ])
775
776 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
777 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
778 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
779 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
780 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
781 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
782
783 #
784 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
785 # so that we can build dumpcap PIE - it may run with elevated
786 # privileges, and using PIE means the OS can run it at random locations
787 # in the address space to make attacks more difficult.
788 #
789
790 WS_CFLAGS_saved="$WS_CFLAGS"
791 WS_LDFLAGS_saved="$WS_LDFLAGS"
792 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
793 if test "x$can_add_to_cflags" = "xyes"
794 then
795         AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
796         if test "x$can_add_to_ldflags" = "xyes"
797         then
798                 # We can use PIE
799                 PIE_CFLAGS="-fPIE"
800                 PIE_LDFLAGS="-pie"
801         fi
802 fi
803 WS_CFLAGS="$WS_CFLAGS_saved"
804 WS_LDFLAGS="$WS_LDFLAGS_saved"
805 AC_SUBST(PIE_CFLAGS)
806 AC_SUBST(PIE_LDFLAGS)
807
808 WS_CFLAGS_saved="$WS_CFLAGS"
809 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-msse4.2, C)
810 if test "x$can_add_to_cflags" = "xyes"
811 then
812         #
813         # The compiler supports -msse4.2; use that to enable SSE 4.2.
814         #
815         # We only want to apply -msse4.2 to
816         # wsutil/ws_mempbrk_sse42.c, as the SSE4.2 code there
817         # is run only if the hardware supports it, but other
818         # code would do no such checks.
819         #
820         ac_sse4_2_flag=-msse4.2
821 else
822         #
823         # Try -xarch=sse4_2; that's the flag for Sun's compiler.
824         #
825         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xarch=sse4_2, C)
826         if test "x$can_add_to_cflags" = "xyes"
827         then
828                 #
829                 # The compiler supports -xarch=sse4_2; use that to
830                 # enable SSE 4.2.
831                 ac_sse4_2_flag=-xarch=sse4_2
832         fi
833 fi
834 WS_CFLAGS="$WS_CFLAGS_saved"
835
836 if test "x$ac_sse4_2_flag" != x; then
837         #
838         # OK, we have a compiler flag to enable SSE 4.2.
839         #
840         # Make sure we have the necessary headers for the SSE4.2 intrinsics
841         # and that we can use them.
842         #
843         # First, check whether we have emmintrin.h and can use it
844         # *without* the SSE 4.2 flag.
845         #
846         AC_MSG_CHECKING([whether there is emmintrin.h header and we can use it])
847         AC_TRY_COMPILE(
848                 [#include <emmintrin.h>],
849                 [return 0;],
850                 [
851                         emmintrin_h_works=yes
852                         AC_MSG_RESULT([yes])
853                 ],
854                 [
855                         emmintrin_h_works=no
856                         AC_MSG_RESULT([no])
857                 ]
858         )
859
860         #
861         # OK, if that works, see whether we have nmmintrin.h and
862         # can use it *with* the SSE 4.2 flag.
863         #
864         if test "x$emmintrin_h_works" = "xyes"; then
865                 #
866                 # Add the SSE4.2 flags to the beginning of CFLAGS,
867                 # in case the user explicitly specified -mno-sse4.2
868                 # (or in case Gentoo's build tools did so); if they
869                 # did so, we only want this to work if we can use
870                 # the #pragma to override that for ws_mempbrk_sse42.c,
871                 # and putting it at the beginning means that the
872                 # CFLAGS setting in the environment will come later
873                 # and override it.
874                 #
875                 AC_MSG_CHECKING([whether there is nmmintrin.h header and we can use it])
876                 saved_CFLAGS="$CFLAGS"
877                 CFLAGS="$ac_sse4_2_flag $WS_CFLAGS $CFLAGS"
878                 AC_TRY_COMPILE(
879                         [#include <nmmintrin.h>],
880                         [return 0;],
881                         [
882                                 have_sse42=yes
883                                 AC_DEFINE(HAVE_SSE4_2, 1, [Support SSSE4.2 (Streaming SIMD Extensions 4.2) instructions])
884                                 CFLAGS_SSE42="$ac_sse4_2_flag"
885                                 AC_MSG_RESULT([yes])
886                         ],
887                         [
888                                 have_sse42=no
889                                 AC_MSG_RESULT([no])
890                         ]
891                 )
892                 CFLAGS="$saved_CFLAGS"
893         else
894                 have_sse42=no
895         fi
896 else
897         have_sse42=no
898 fi
899 dnl build libwsutil_sse42 only if there is SSE4.2
900 AM_CONDITIONAL(SSE42_SUPPORTED, test "x$have_sse42" = "xyes")
901 AC_SUBST(CFLAGS_SSE42)
902
903 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
904 #  (only if the GCC 'optimization level' > 0).
905 #
906 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
907 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
908 #
909 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
910 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
911
912 #
913 # If the compiler supports GCC-style flags, enable a barrier "stop on
914 # warning".
915 # This barrier is set for a very large part of the code. However, it is
916 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
917 #
918 warnings_as_errors_default="yes"
919 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
920 AC_ARG_ENABLE(warnings-as-errors,
921   AC_HELP_STRING( [--enable-warnings-as-errors],
922                   [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra compiler warnings are enabled@:>@]),
923 [
924   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
925     with_warnings_as_errors="yes"
926     AC_MSG_RESULT(yes)
927   else
928     with_warnings_as_errors="no"
929     AC_MSG_RESULT(no)
930   fi
931 ],
932 [
933   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
934     with_warnings_as_errors="yes"
935     AC_MSG_RESULT(yes)
936   else
937     with_warnings_as_errors="no"
938     AC_MSG_RESULT(no)
939   fi
940 ])
941
942 AS_IF([test "x$with_warnings_as_errors" = "xyes"], [WERROR="-Werror"], [WERROR=""])
943 AC_SUBST(WERROR)
944 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, [test "x$with_warnings_as_errors" = "xyes"])
945
946 #
947 # Add any platform-specific compiler flags needed.
948 #
949 AC_MSG_CHECKING(for platform-specific compiler flags)
950 if test "x$GCC" = "xyes" ; then
951         #
952         # GCC - do any platform-specific tweaking necessary.
953         #
954         case "$host_os" in
955         solaris*)
956                 # the X11 headers don't automatically include prototype info
957                 # and a lot don't include the return type
958                 WS_CPPFLAGS="$WS_CPPFLAGS -DFUNCPROTO=15"
959                 WS_CFLAGS="$WS_CFLAGS -Wno-return-type"
960                 WS_CXXFLAGS="$WS_CXXFLAGS -Wno-return-type"
961                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
962                 ;;
963         *)
964                 AC_MSG_RESULT(none needed)
965                 ;;
966         esac
967 else
968         #
969         # Not GCC - assume it's the vendor's compiler.
970         #
971         case "$host_os" in
972         hpux*)
973                 #
974                 # AC_PROG_CC_STDC should already have added whatever
975                 # flags are necessary for ISO C - C99 if available,
976                 # otherwise C89 - with extensions.
977                 #
978                 # Add +O2, for optimization, as suggested by Jost Martin.
979                 # XXX - works with "-g"?
980                 #
981                 # +O2 is supported both by the C and C++ compiler.
982                 #
983                 WS_CFLAGS="+O2 $WS_CFLAGS"
984                 if test "$CC" = "$CC_FOR_BUILD"; then
985                         #
986                         # We're building the build tools with the same
987                         # compiler as the one with which we're building
988                         # Wireshark, so add the flags to the flags for
989                         # that compiler as well.
990                         #
991                         CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
992                 fi
993                 WS_CXXFLAGS="+O2 $WS_CXXFLAGS"
994                 AC_MSG_RESULT(HP C/C++ compiler - added +O2)
995                 ;;
996         solaris*)
997                 #
998                 # Crank up the warning level.
999                 #
1000                 WS_CFLAGS="$WS_CFLAGS -v"
1001                 WS_CXXFLAGS="$WS_CXXFLAGS +w2"
1002                 ;;
1003         *)
1004                 AC_MSG_RESULT(none needed)
1005                 ;;
1006         esac
1007 fi
1008
1009 #
1010 # Add any platform-specific linker flags needed.
1011 #
1012 AC_MSG_CHECKING(for platform-specific linker flags)
1013 case "$host_os" in
1014 aix*)
1015         #
1016         # If this is GCC or Clang, Add -Wl,-bbigtoc for big libraries.
1017         # XXX - what if we're using xlc?  Is that necessary?  The
1018         # xlc 7.0 manual says "Specifying -qpic=large has the same
1019         # effect as passing -bbigtoc to ld"; do we need to tell xlc,
1020         # when it's compiling, to generate different code for a large
1021         # TOC, or is that just a linker flag?  For that matter, do we
1022         # have to tell GCC or Clang to generate different code for a
1023         # large TOC?
1024         #
1025         if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
1026                 LDFLAGS_BIGSHAREDLIB="-Wl,-bbigtoc"
1027                 AC_MSG_RESULT([AIX linker with GCC or Clang - added -Wl,-bbigtoc to large shared library linker flags and -Wl,-headerpad_max_install_names -Wl,-search_paths_first and -Wl,-headerpad_max_install_names to all linker flags])
1028         fi
1029         ;;
1030 darwin*)
1031         #
1032         # Add -Wl,-single_module to the LDFLAGS used with shared
1033         # libraries, to fix some error that show up in some cases;
1034         # some Apple documentation recommends it for most shared
1035         # libraries.
1036         #
1037         LDFLAGS_SHAREDLIB="-Wl,-single_module"
1038         #
1039         # Add -Wl,-headerpad_max_install_names to the LDFLAGS, as
1040         # code-signing issues is running out of padding space.
1041         #
1042         # Add -Wl,-search_paths_first to make sure that if we search
1043         # directories A and B, in that order, for a given library, a
1044         # non-shared version in directory A, rather than a shared
1045         # version in directory B, is chosen (so we can use
1046         # --with-pcap=/usr/local to force all programs to be linked
1047         # with a static version installed in /usr/local/lib rather than
1048         # the system version in /usr/lib).
1049         #
1050         WS_LDFLAGS="-Wl,-headerpad_max_install_names -Wl,-search_paths_first $WS_LDFLAGS"
1051         AC_MSG_RESULT([Apple linker - added -Wl,-single_module to shared library linker flags and -Wl,-headerpad_max_install_names -Wl,-search_paths_first and -Wl,-headerpad_max_install_names to all linker flags])
1052         ;;
1053 cygwin*)
1054         #
1055         # Shared libraries in cygwin/Win32 must never contain
1056         # undefined symbols.
1057         #
1058         WS_LDFLAGS="$WS_LDFLAGS -no-undefined"
1059         AC_MSG_RESULT(Cygwin GNU ld - added -no-undefined)
1060         ;;
1061 *)
1062         AC_MSG_RESULT(none needed)
1063         ;;
1064 esac
1065 AC_SUBST(LDFLAGS_BIGSHAREDLIB)
1066 AC_SUBST(LDFLAGS_SHAREDLIB)
1067
1068 #
1069 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
1070 # link directory.
1071 #
1072 case "$host_os" in
1073   solaris*)
1074     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
1075     if test x$LD_LIBRARY_PATH != x ; then
1076       LIBS="$LIBS -R$LD_LIBRARY_PATH"
1077       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
1078     else
1079       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
1080     fi
1081   ;;
1082 esac
1083
1084 # Enable/disable wireshark
1085 AC_ARG_ENABLE(wireshark,
1086   AC_HELP_STRING( [--enable-wireshark],
1087                   [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]),
1088     enable_wireshark=$enableval,enable_wireshark=yes)
1089 AM_CONDITIONAL(BUILDING_WIRESHARK, test x$enable_wireshark = xyes)
1090
1091 GLIB_MIN_VERSION=2.22.0
1092 AC_SUBST(GLIB_MIN_VERSION)
1093 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1094 # support, as we need that for dynamically loading plugins.
1095 #
1096 # Release dates for GLib versions:
1097 # 2.14.0: 03 Aug 2007
1098 # 2.16.0: 10 Mar 2008
1099 # 2.18.0: 02 Sep 2008
1100 # 2.20.0: 13 Mar 2009
1101 # 2.22.0: 22 Sep 2009
1102 # 2.24.0: 28 Mar 2010
1103 # 2.26.0: 27 Sep 2010
1104 # 2.28.0: 08 Feb 2011
1105 # 2.30.0: 27 Sep 2011
1106 # 2.32.0: 24 Mar 2012
1107 # 2.34.0: 24 Sep 2012
1108 # 2.36.0: 25 Mar 2013
1109 # 2.38.0: 23 Sep 2013
1110 # 2.40.0: 24 Mar 2014
1111 # 2.42.0: 22 Sep 2014
1112 # 2.44.0: 23 Mar 2014
1113 # 2.46.0: 25 Sep 2015
1114
1115 PKG_WIRESHARK_CHECK_SYSTEM_MODULES([GLIB],
1116         [glib-2.0 >= $GLIB_MIN_VERSION gthread-2.0 >= $GLIB_MIN_VERSION gmodule-2.0 >= $GLIB_MIN_VERSION],
1117         [GLIB_VERSION=`$PKG_CONFIG --modversion glib-2.0`],
1118         [AC_MSG_ERROR([GLib $GLIB_MIN_VERSION or later not found.])])
1119
1120 # Error out if a glib header other than a "top level" header
1121 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1122 #  is used.
1123 AX_APPEND_FLAG([-DG_DISABLE_SINGLE_INCLUDES], [GLIB_CONFIG])
1124
1125 # Error out on the usage of deprecated glib functions
1126 AX_APPEND_FLAG([-DG_DISABLE_DEPRECATED], [GLIB_CONFIG])
1127
1128 GLIB_CFLAGS="$GLIB_CONFIG $GLIB_CFLAGS"
1129 AC_SUBST(GLIB_CFLAGS)
1130 AC_SUBST(GLIB_LIBS)
1131
1132 GTK2_MIN_VERSION=2.12.0
1133 AC_SUBST(GTK2_MIN_VERSION)
1134 GTK3_MIN_VERSION=3.0.0
1135 AC_SUBST(GTK3_MIN_VERSION)
1136 QT_MIN_VERSION=4.8.0
1137 AC_SUBST(QT_MIN_VERSION)
1138 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1139 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1140 #
1141 # We only do those if we're going to be building Wireshark;
1142 # otherwise, we don't have any GUI to build, so we don't use
1143 # GTK+ or Qt.
1144 #
1145 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1146 # force all programs to be built with GTK+ or Qt.
1147 #
1148 # For a list of library versions and their support across different platforms,
1149 # see https://wiki.wireshark.org/Development/Support_library_version_tracking
1150
1151 have_qt=no
1152 have_gtk=no
1153 if test "x$enable_wireshark" = "xyes"; then
1154         if test "x$with_qt" != "xno"; then
1155                 #
1156                 # Qt was specified; make sure we have a C++ compiler.
1157                 #
1158                 if test -z "$CXX"; then
1159                         AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1160                 fi
1161
1162                 #
1163                 # Now make sure we have Qt and, if so, add the flags
1164                 # for it to CFLAGS and CXXFLAGS.
1165                 #
1166                 AC_WIRESHARK_QT_CHECK($QT_MIN_VERSION, "$with_qt",
1167                 [
1168                         AC_SUBST(Qt_CFLAGS)
1169                         AC_SUBST(Qt_LIBS)
1170                         have_qt=yes
1171                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-qt"
1172
1173                         #
1174                         # We're building with Qt, so we need the Qt build
1175                         # tools in order to build the Wireshark GUI.
1176                         # We've found a particular major version of Qt,
1177                         # and we want that version's build tools; for
1178                         # example, the Qt 4 version of uic produces files
1179                         # that include Qt headers with paths that work
1180                         # with Qt 4 but not Qt 5, so we can't use the
1181                         # Qt 4 version of uic if we're building with Qt 5.
1182                         AC_WIRESHARK_QT_TOOL_CHECK(UIC, uic, "$qt_version")
1183                         AC_SUBST(UIC)
1184                         AC_WIRESHARK_QT_TOOL_CHECK(MOC, moc, "$qt_version")
1185                         AC_SUBST(MOC)
1186                         AC_WIRESHARK_QT_TOOL_CHECK(RCC, rcc, "$qt_version")
1187                         AC_SUBST(RCC)
1188                         AC_WIRESHARK_QT_TOOL_CHECK_LRELEASE("$qt_version")
1189                         AC_SUBST(LRELEASE)
1190
1191                         #
1192                         # On Darwin, make sure we're using Qt5 or later.
1193                         # If so, find where the Qt frameworks are located
1194                         # and add that to the rpath, just in case this is
1195                         # Qt 5.5 or later and the frameworks have an
1196                         # install name that begins with @rpath and aren't
1197                         # installed in a frameworks directory that's
1198                         # searched by default.
1199                         #
1200                         case "$host_os" in
1201                         darwin*)
1202                                 if test $qt_version -le 4
1203                                 then
1204                                         AC_MSG_ERROR([macOS builds should use Qt5])
1205                                 else
1206                                         Qt_LDFLAGS="-Wl,-rpath,"`$PKG_CONFIG --libs Qt${qt_version}Core | sed -e 's/-F//' -e 's/ -framework.*//'`
1207                                 fi
1208                                 ;;
1209                         esac
1210                         AC_SUBST(Qt_LDFLAGS)
1211
1212                         if test -z "${MOC_OPTIONS+1}"
1213                         then
1214                                 # Squelch moc verbose "nothing to do" output
1215                                 if test $QT_VERSION_MAJOR -eq 5
1216                                 then
1217                                         MOC_OPTIONS="-nn"
1218                                 elif test $QT_VERSION_MAJOR -eq 4 -a $QT_VERSION_MINOR -ge 8
1219                                 then
1220                                         MOC_OPTIONS="-nn"
1221                                 fi
1222                         fi
1223                         AC_SUBST(MOC_OPTIONS)
1224                 ],
1225                 [
1226                         case "$with_qt" in
1227
1228                         unspecified)
1229                                 #
1230                                 # They didn't explicitly ask for Qt,
1231                                 # so just don't build with it.
1232                                 #
1233                                 ;;
1234
1235                         yes)
1236                                 case "$host_os" in
1237                                 darwin*)
1238                                         #
1239                                         # This is probably macOS, and the
1240                                         # problem could be that this is a
1241                                         # later version of Qt that doesn't
1242                                         # install .pc files on macOS, so
1243                                         # pkg-config can't find it.
1244                                         #
1245                                         AC_MSG_ERROR([Qt is not installed or may not work with the configure script; try using CMake, instead])
1246                                         ;;
1247
1248                                 *)
1249                                         #
1250                                         # Qt might be installed, but only
1251                                         # for use by applications, not
1252                                         # for development.
1253                                         #
1254                                         AC_MSG_ERROR([Qt is not installed for development])
1255                                         ;;
1256                                 esac
1257                                 ;;
1258
1259                         4)
1260                                 case "$host_os" in
1261                                 darwin*)
1262                                         #
1263                                         # See above.
1264                                         #
1265                                         AC_MSG_ERROR([Qt 4 is not installed or may not work with the configure script; try using CMake, instead])
1266                                         ;;
1267
1268                                 *)
1269                                         #
1270                                         # See above.
1271                                         #
1272                                         AC_MSG_ERROR([Qt 4 is not installed for development])
1273                                         ;;
1274                                 esac
1275                                 ;;
1276
1277                         5)
1278                                 case "$host_os" in
1279                                 darwin*)
1280                                         #
1281                                         # See above.
1282                                         #
1283                                         AC_MSG_ERROR([Qt 5 is not installed or may not work with the configure script; try using CMake, instead])
1284                                         ;;
1285
1286                                 *)
1287                                         #
1288                                         # See above.
1289                                         #
1290                                         AC_MSG_ERROR([Qt 5 is not installed for development])
1291                                         ;;
1292                                 esac
1293                                 ;;
1294                         esac
1295                 ])
1296         fi
1297
1298         for want_gtk_version in $with_gtk; do
1299                 AS_CASE([$want_gtk_version],
1300                   [3], [PKG_WIRESHARK_CHECK_SYSTEM_MODULES([GTK],
1301                         [gtk+-3.0 >= $GTK3_MIN_VERSION glib-2.0 >= $GLIB_MIN_VERSION gthread-2.0 >= $GLIB_MIN_VERSION gmodule-2.0 >= $GLIB_MIN_VERSION],
1302                         [
1303                           have_gtk=yes
1304                           GTK_VERSION=`$PKG_CONFIG --modversion gtk+-3.0`
1305                           GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk=3"
1306                         ],
1307                         [
1308                           :
1309                         ])],
1310                   [2], [PKG_WIRESHARK_CHECK_SYSTEM_MODULES([GTK],
1311                         [gtk+-2.0 >= $GTK2_MIN_VERSION glib-2.0 >= $GLIB_MIN_VERSION gthread-2.0 >= $GLIB_MIN_VERSION gmodule-2.0 >= $GLIB_MIN_VERSION],
1312                         [
1313                           have_gtk=yes
1314                           GTK_VERSION=`$PKG_CONFIG --modversion gtk+-2.0`
1315                           GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk=2"
1316                         ],
1317                         [
1318                           :
1319                         ])],
1320                   [fail3], [AC_MSG_ERROR([GTK+ 3 was requested but is not installed for development])],
1321                   [fail2], [AC_MSG_ERROR([GTK+ 2 was requested but is not installed for development])],
1322                   [fail],  [AC_MSG_ERROR([GTK+ was requested but is not installed for development])])
1323
1324                 AS_IF([test "x$have_gtk" = xyes], [break])
1325         done
1326
1327         if test "$have_gtk" = "yes" ; then
1328                 # If we're building with GTK, complain and then add flags for it
1329                 #
1330                 AC_MSG_WARN([The GTK+ UI is deprecated and will be removed in a future release.])
1331
1332                 # GLib flags
1333                 #
1334                 GTK_CONFIG="$GLIB_CONFIG"
1335
1336                 gtk_major_version=`echo $GTK_VERSION | cut -d. -f1`
1337                 gtk_minor_version=`echo $GTK_VERSION | cut -d. -f2`
1338
1339                 AX_APPEND_FLAG([-DGDK_DISABLE_DEPRECATED], [GTK_CONFIG])
1340                 if test \( $gtk_major_version -eq 3 -a $gtk_minor_version -ge 10 \) ; then
1341                         ## Allow use of deprecated & disable deprecated warnings if Gtk >= 3.10;
1342                         ##  The deprecations in Gtk 3.10 will not be fixed ...
1343                         AX_APPEND_FLAG([-DGDK_DISABLE_DEPRECATION_WARNINGS], [GTK_CONFIG])
1344                 else
1345                         AX_APPEND_FLAG([-DGTK_DISABLE_DEPRECATED], [GTK_CONFIG])
1346                 fi
1347                 AX_APPEND_FLAG([-DGTK_DISABLE_SINGLE_INCLUDES], [GTK_CONFIG])
1348                 if test ! \( $gtk_major_version -eq 2 -a $gtk_minor_version -lt 20 \) ; then
1349                         # Enable GSEAL when building with GTK > 2.20
1350                         # (Versions prior to 2.22 lacked some necessary accessors.)
1351                         AX_APPEND_FLAG([-DGSEAL_ENABLE], [GTK_CONFIG])
1352                 fi
1353
1354                 GTK_CFLAGS="$GTK_CONFIG $GTK_CFLAGS"
1355         fi
1356 fi
1357
1358 AC_SUBST(GTK_CFLAGS)
1359 AC_SUBST(GTK_LIBS)
1360 AC_SUBST(GUI_CONFIGURE_FLAGS)
1361
1362 # Check for GTK GUI support for GResource pixbufs
1363 have_gresource_pixbuf=no
1364 if test "x$have_gtk" = "xyes"; then
1365         AC_MSG_CHECKING(whether GDK-Pixbuf can load data using GResource)
1366         PKG_CHECK_EXISTS([gio-2.0 >= 2.32 gdk-pixbuf-2.0 >= 2.26],
1367           [
1368            AC_MSG_RESULT(yes)
1369            AC_DEFINE(HAVE_GDK_GRESOURCE, 1, [Defined if GResource is supported])
1370            have_gresource_pixbuf=yes
1371           ],
1372           [AC_MSG_RESULT(no)])
1373 fi
1374 AM_CONDITIONAL(HAVE_GRESOURCE_PIXBUF, test "x$have_gresource_pixbuf" = "xyes")
1375
1376 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1377         # We have both GTK and Qt and thus will be building both wireshark
1378         # and wireshark-gtk.
1379
1380         wireshark_bin="wireshark\$(EXEEXT) wireshark-gtk\$(EXEEXT)"
1381         wireshark_man="wireshark.1"
1382         wireshark_SUBDIRS="ui/qt ui/gtk"
1383 elif test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1384         # We don't have GTK+ but we have Qt.
1385
1386         wireshark_bin="wireshark\$(EXEEXT)"
1387         wireshark_man="wireshark.1"
1388         wireshark_SUBDIRS="ui/qt"
1389 elif test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1390         # We have GTK+ but not Qt.
1391
1392         wireshark_bin="wireshark-gtk\$(EXEEXT)"
1393         wireshark_man="wireshark.1"
1394         wireshark_SUBDIRS="ui/gtk"
1395 elif test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1396         # We have neither GTK+ nor Qt.
1397         #
1398         # If they didn't explicitly say "--disable-wireshark",
1399         # fail (so that, unless they explicitly indicated that
1400         # they don't want Wireshark, we stop so they know they
1401         # won't be getting Wireshark unless they fix the GTK+/Qt
1402         # problem).
1403         #
1404         if test "x$enable_wireshark" = "xyes"; then
1405                 if test "$with_qt" != "no" -a "$with_gtk" != "no" ; then
1406                         case "$host_os" in
1407                         darwin*)
1408                                 #
1409                                 # This is probably macOS, and the
1410                                 # problem could be that this is a
1411                                 # later version of Qt that doesn't
1412                                 # install .pc files on macOS, so
1413                                 # pkg-config can't find it.
1414                                 #
1415                                 AC_MSG_ERROR([Neither Qt nor GTK+ are installed for development, or Qt is installed but doesn't work with the configure script, so Wireshark can't be compiled; try using CMake, instead])
1416                                 ;;
1417
1418                         *)
1419                                 #
1420                                 # Qt might be installed, but only
1421                                 # for use by applications, not
1422                                 # for development.
1423                                 #
1424                                 AC_MSG_ERROR([Neither Qt nor GTK+ are installed for development, so Wireshark can't be compiled])
1425                                 ;;
1426                         esac
1427                 elif test "$with_qt" != "no" -a "$with_gtk" = "no" ; then
1428                         case "$host_os" in
1429                         darwin*)
1430                                 #
1431                                 # This is probably macOS, and the
1432                                 # problem could be that this is a
1433                                 # later version of Qt that doesn't
1434                                 # install .pc files on macOS, so
1435                                 # pkg-config can't find it.
1436                                 #
1437                                 AC_MSG_ERROR([Qt is not installed or may not work with the configure script, and GTK+ was not requested, so Wireshark cannot be compiled; try using CMake, instead])
1438                                 ;;
1439
1440                         *)
1441                                 #
1442                                 # Qt might be installed, but only
1443                                 # for use by applications, not
1444                                 # for development.
1445                                 #
1446                                 AC_MSG_ERROR([Qt is not installed for development and GTK+ was not requested, so Wireshark can't be compiled])
1447                                 ;;
1448                         esac
1449                 elif test "$with_qt" = "no" -a "$with_gtk" != "no" ; then
1450                         AC_MSG_ERROR([Qt was not requested and GTK+ is not installed for development, so Wireshark can't be compiled])
1451                 elif test "$with_qt" = "no" -a "$with_gtk" = "no" ; then
1452                         AC_MSG_ERROR([Neither Qt nor GTK+ were requested, so Wireshark can't be compiled])
1453                 fi
1454         fi
1455         wireshark_bin=""
1456         wireshark_man=""
1457         wireshark_SUBDIRS=""
1458 fi
1459
1460 #
1461 # If we have <dlfcn.h>, check whether we have dladdr.
1462 #
1463 if test "$ac_cv_header_dlfcn_h" = "yes"
1464 then
1465         #
1466         # Use GLib compiler flags and linker flags; GLib's gmodule
1467         # stuff uses the dl APIs if available, so it might know
1468         # what flags are needed.
1469         #
1470         ac_save_CFLAGS="$CFLAGS"
1471         ac_save_LIBS="$LIBS"
1472         CFLAGS="$WS_CFLAGS $GLIB_CFLAGS $CFLAGS"
1473         LIBS="$LIBS $GLIB_LIBS"
1474         AC_CHECK_FUNCS(dladdr)
1475         if test x$ac_cv_func_dladdr = xno
1476         then
1477                 #
1478                 # OK, try it with -ldl, in case you need that to get
1479                 # dladdr().  For some reason, on Linux, that's not
1480                 # part of the GLib flags; perhaps GLib itself is
1481                 # linked with libdl, so that you can link with
1482                 # Glib and it'll pull libdl in itself.
1483                 #
1484                 LIBS="$LIBS -ldl"
1485                 AC_CHECK_FUNCS(dladdr)
1486         fi
1487         CFLAGS="$ac_save_CFLAGS"
1488         LIBS="$ac_save_LIBS"
1489 fi
1490
1491 AC_SUBST(wireshark_bin)
1492 AC_SUBST(wireshark_man)
1493 AC_SUBST(wireshark_SUBDIRS)
1494 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1495 AM_CONDITIONAL(HAVE_QT_VERSION_4, [test $qt_version -eq 4])
1496 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
1497
1498 # Enable/disable tshark
1499 AC_ARG_ENABLE(tshark,
1500   AC_HELP_STRING( [--enable-tshark],
1501                   [build tshark @<:@default=yes@:>@]),
1502     tshark=$enableval,enable_tshark=yes)
1503
1504 if test "x$enable_tshark" = "xyes" ; then
1505         tshark_bin="tshark\$(EXEEXT)"
1506         tshark_man="tshark.1"
1507         wiresharkfilter_man="wireshark-filter.4"
1508 else
1509         tshark_bin=""
1510         tshark_man=""
1511 fi
1512 AC_SUBST(tshark_bin)
1513 AC_SUBST(tshark_man)
1514
1515 # Enable/disable editcap
1516
1517 AC_ARG_ENABLE(editcap,
1518   AC_HELP_STRING( [--enable-editcap],
1519                   [build editcap @<:@default=yes@:>@]),
1520     enable_editcap=$enableval,enable_editcap=yes)
1521
1522 if test "x$enable_editcap" = "xyes" ; then
1523         editcap_bin="editcap\$(EXEEXT)"
1524         editcap_man="editcap.1"
1525 else
1526         editcap_bin=""
1527         editcap_man=""
1528 fi
1529 AC_SUBST(editcap_bin)
1530 AC_SUBST(editcap_man)
1531
1532
1533 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1534 # or not)
1535
1536 # Enable/disable capinfos
1537
1538 AC_ARG_ENABLE(capinfos,
1539   AC_HELP_STRING( [--enable-capinfos],
1540                   [build capinfos @<:@default=yes@:>@]),
1541     enable_capinfos=$enableval,enable_capinfos=yes)
1542
1543 if test "x$enable_capinfos" = "xyes" ; then
1544         capinfos_bin="capinfos\$(EXEEXT)"
1545         capinfos_man="capinfos.1"
1546 else
1547         capinfos_bin=""
1548         capinfos_man=""
1549 fi
1550 AC_SUBST(capinfos_bin)
1551 AC_SUBST(capinfos_man)
1552
1553 # Enable/disable captype
1554
1555 AC_ARG_ENABLE(captype,
1556   AC_HELP_STRING( [--enable-captype],
1557                   [build captype @<:@default=yes@:>@]),
1558     enable_captype=$enableval,enable_captype=yes)
1559
1560 if test "x$enable_captype" = "xyes" ; then
1561         captype_bin="captype\$(EXEEXT)"
1562         captype_man="captype.1"
1563 else
1564         captype_bin=""
1565         captype_man=""
1566 fi
1567 AC_SUBST(captype_bin)
1568 AC_SUBST(captype_man)
1569
1570 # Enable/disable mergecap
1571
1572 AC_ARG_ENABLE(mergecap,
1573   AC_HELP_STRING( [--enable-mergecap],
1574                   [build mergecap @<:@default=yes@:>@]),
1575     enable_mergecap=$enableval,enable_mergecap=yes)
1576
1577 if test "x$enable_mergecap" = "xyes" ; then
1578         mergecap_bin="mergecap\$(EXEEXT)"
1579         mergecap_man="mergecap.1"
1580 else
1581         mergecap_bin=""
1582         mergecap_man=""
1583 fi
1584 AC_SUBST(mergecap_bin)
1585 AC_SUBST(mergecap_man)
1586
1587 # Enable/disable reordercap
1588
1589 AC_ARG_ENABLE(reordercap,
1590   AC_HELP_STRING( [--enable-reordercap],
1591                   [build reordercap @<:@default=yes@:>@]),
1592     enable_reordercap=$enableval,enable_reordercap=yes)
1593
1594 if test "x$enable_reordercap" = "xyes" ; then
1595         reordercap_bin="reordercap\$(EXEEXT)"
1596         reordercap_man="reordercap.1"
1597 else
1598         reordercap_bin=""
1599         reordercap_man=""
1600 fi
1601 AC_SUBST(reordercap_bin)
1602 AC_SUBST(reordercap_man)
1603
1604 # Enable/disable text2pcap
1605
1606 AC_ARG_ENABLE(text2pcap,
1607   AC_HELP_STRING( [--enable-text2pcap],
1608                   [build text2pcap @<:@default=yes@:>@]),
1609     text2pcap=$enableval,enable_text2pcap=yes)
1610
1611 if test "x$enable_text2pcap" = "xyes" ; then
1612         text2pcap_bin="text2pcap\$(EXEEXT)"
1613         text2pcap_man="text2pcap.1"
1614 else
1615         text2pcap_bin=""
1616         text2pcap_man=""
1617 fi
1618 AC_SUBST(text2pcap_bin)
1619 AC_SUBST(text2pcap_man)
1620
1621 # Enable/disable dftest
1622
1623 AC_ARG_ENABLE(dftest,
1624   AC_HELP_STRING( [--enable-dftest],
1625                   [build dftest @<:@default=yes@:>@]),
1626     enable_dftest=$enableval,enable_dftest=yes)
1627
1628 if test "x$enable_dftest" = "xyes" ; then
1629         dftest_bin="dftest\$(EXEEXT)"
1630         dftest_man="dftest.1"
1631 else
1632         dftest_bin=""
1633         dftest_man=""
1634 fi
1635 AC_SUBST(dftest_bin)
1636 AC_SUBST(dftest_man)
1637
1638 # Enable/disable randpkt
1639
1640 AC_ARG_ENABLE(randpkt,
1641   AC_HELP_STRING( [--enable-randpkt],
1642                   [build randpkt @<:@default=yes@:>@]),
1643     enable_randpkt=$enableval,enable_randpkt=yes)
1644
1645 if test "x$enable_randpkt" = "xyes" ; then
1646         randpkt_bin="randpkt\$(EXEEXT)"
1647         randpkt_man="randpkt.1"
1648 else
1649         randpkt_bin=""
1650         randpkt_man=""
1651 fi
1652 AC_SUBST(randpkt_bin)
1653 AC_SUBST(randpkt_man)
1654
1655 AC_SUBST(wiresharkfilter_man)
1656
1657 dnl pcap check
1658 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1659
1660 AC_ARG_WITH(pcap,
1661   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1662                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1663 [
1664         if test $withval = no
1665         then
1666                 want_pcap=no
1667         elif test $withval = yes
1668         then
1669                 want_pcap=yes
1670         else
1671                 want_pcap=yes
1672                 pcap_dir=$withval
1673         fi
1674 ],[
1675         want_pcap=yes
1676         pcap_dir=
1677 ])
1678 if test "x$want_pcap" = "xno" ; then
1679         AC_MSG_RESULT(no)
1680 else
1681         AC_MSG_RESULT(yes)
1682         AC_WIRESHARK_PCAP_CHECK
1683 fi
1684
1685 dnl dumpcap check
1686 AC_MSG_CHECKING(whether to build dumpcap)
1687
1688 AC_ARG_ENABLE(dumpcap,
1689   AC_HELP_STRING( [--enable-dumpcap],
1690                   [build dumpcap @<:@default=yes@:>@]),
1691     enable_dumpcap=$enableval,enable_dumpcap=yes)
1692
1693 if test "x$enable_dumpcap" = "xyes" ; then
1694         if test "x$want_pcap" = "xno" ; then
1695                 enable_dumpcap=no
1696                 AC_MSG_RESULT(pcap not installed for development - disabling dumpcap)
1697         else
1698                 AC_MSG_RESULT(yes)
1699         fi
1700 else
1701         AC_MSG_RESULT(no)
1702 fi
1703
1704 if test "x$enable_dumpcap" = "xyes" ; then
1705         dumpcap_bin="dumpcap\$(EXEEXT)"
1706         dumpcap_man="dumpcap.1"
1707 else
1708         dumpcap_bin=""
1709         dumpcap_man=""
1710 fi
1711 AC_SUBST(dumpcap_bin)
1712 AC_SUBST(dumpcap_man)
1713
1714 # Enable/disable rawshark
1715
1716 dnl rawshark check
1717 AC_MSG_CHECKING(whether to build rawshark)
1718
1719 AC_ARG_ENABLE(rawshark,
1720   AC_HELP_STRING( [--enable-rawshark],
1721                   [build rawshark @<:@default=yes@:>@]),
1722     rawshark=$enableval,enable_rawshark=yes)
1723
1724 if test "x$enable_rawshark" = "xyes" ; then
1725         if test "x$want_pcap" = "xno" ; then
1726                 enable_rawshark=no
1727                 AC_MSG_RESULT(pcap not installed for development - disabling rawshark)
1728         else
1729                 AC_MSG_RESULT(yes)
1730         fi
1731 else
1732         AC_MSG_RESULT(no)
1733 fi
1734
1735 if test "x$enable_rawshark" = "xyes" ; then
1736         rawshark_bin="rawshark\$(EXEEXT)"
1737         rawshark_man="rawshark.1"
1738 else
1739         rawshark_bin=""
1740         rawshark_man=""
1741 fi
1742 AC_SUBST(rawshark_bin)
1743 AC_SUBST(rawshark_man)
1744
1745 # Enable/disable sharkd
1746 AC_ARG_ENABLE(sharkd,
1747   AC_HELP_STRING( [--enable-sharkd],
1748                   [build sharkd @<:@default=yes@:>@]),
1749     sharkd=$enableval,enable_sharkd=yes)
1750
1751 if test "x$enable_sharkd" = "xyes" ; then
1752         sharkd_bin="sharkd\$(EXEEXT)"
1753 else
1754         sharkd_bin=""
1755 fi
1756 AC_SUBST(sharkd_bin)
1757
1758 # Enable/disable tfshark
1759 AC_ARG_ENABLE(tfshark,
1760   AC_HELP_STRING( [--enable-tfshark],
1761                   [build tfshark (Experimental) @<:@default=no@:>@]),
1762     tfshark=$enableval,enable_tfshark=no)
1763
1764 if test "x$enable_tfshark" = "xyes" ; then
1765         tfshark_bin="tfshark\$(EXEEXT)"
1766         tfshark_man="tfshark.1"
1767         wiresharkfilter_man="wireshark-filter.4"
1768 else
1769         tfshark_bin=""
1770         tfshark_man=""
1771 fi
1772 AC_SUBST(tfshark_bin)
1773 AC_SUBST(tfshark_man)
1774
1775 # Enable/disable fuzzshark
1776 AC_ARG_ENABLE(fuzzshark,
1777   AC_HELP_STRING( [--enable-fuzzshark],
1778                   [build fuzzshark @<:@default=yes@:>@]),
1779     fuzzshark=$enableval,enable_fuzzshark=yes)
1780
1781 if test "x$enable_fuzzshark" = "xyes" ; then
1782         fuzzshark_bin="fuzzshark\$(EXEEXT)"
1783 else
1784         fuzzshark_bin=""
1785 fi
1786 AC_SUBST(fuzzshark_bin)
1787
1788
1789 dnl Use pcapng by default
1790 AC_ARG_ENABLE(pcap-ng-default,
1791   AC_HELP_STRING( [--enable-pcap-ng-default],
1792                   [use the pcapng file format by default instead of pcap @<:@default=yes@:>@]),
1793     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1794 if test x$enable_pcap_ng_default = xyes; then
1795         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcapng])
1796 fi
1797
1798 dnl zlib check
1799 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1800
1801 AC_ARG_WITH(zlib,
1802   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1803                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1804 [
1805         if test "x$withval" = "xno"
1806         then
1807                 want_zlib=no
1808         elif test "x$withval" = "xyes"
1809         then
1810                 want_zlib=yes
1811         else
1812                 want_zlib=yes
1813                 zlib_dir="$withval"
1814         fi
1815 ],[
1816         #
1817         # Use zlib if it's present, otherwise don't.
1818         #
1819         want_zlib=ifavailable
1820         zlib_dir=
1821 ])
1822 if test "x$want_zlib" = "xno" ; then
1823         AC_MSG_RESULT(no)
1824 else
1825         AC_MSG_RESULT(yes)
1826         AC_WIRESHARK_ZLIB_CHECK
1827         if test "x$want_zlib" = "xno" ; then
1828                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1829         else
1830                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1831                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1832                 fi
1833         fi
1834 fi
1835
1836 dnl lz4 check
1837 LZ4_LIBS=''
1838 AC_MSG_CHECKING(whether to use lz4 compression and decompression)
1839
1840 AC_ARG_WITH(lz4,
1841   AC_HELP_STRING([--with-lz4@<:@=DIR@:>@],
1842                  [use lz4 (located in directory DIR, if supplied) for lz4 compression and decompression @<:@default=yes, if available@:>@]),
1843 [
1844         if test "x$withval" = "xno"
1845         then
1846                 want_lz4=no
1847         elif test "x$withval" = "xyes"
1848         then
1849                 want_lz4=yes
1850         else
1851                 want_lz4=yes
1852                 lz4_dir="$withval"
1853         fi
1854 ],[
1855         #
1856         # Use lz4 if it's present, otherwise don't.
1857         #
1858         want_lz4=ifavailable
1859         lz4_dir=
1860 ])
1861 have_lz4=no
1862 if test "x$want_lz4" = "xno" ; then
1863         AC_MSG_RESULT(no)
1864 else
1865         AC_MSG_RESULT(yes)
1866         AC_WIRESHARK_LZ4_CHECK
1867         if test "x$want_lz4" = "xno" ; then
1868                 AC_MSG_RESULT(lz4 not found - disabling lz4 compression and decompression)
1869         else
1870                 if test "x$ac_cv_func_LZ4_decompress_safe" = "xno" ; then
1871                         AC_MSG_RESULT(LZ4_decompress_safe not found in lz4 - disabling cql lz4 decompression)
1872                 else
1873                         have_lz4=yes
1874                 fi
1875         fi
1876 fi
1877 AC_SUBST(LZ4_LIBS)
1878
1879 dnl snappy check
1880 SNAPPY_LIBS=''
1881 AC_MSG_CHECKING(whether to use snappy compression and decompression)
1882
1883 AC_ARG_WITH(snappy,
1884   AC_HELP_STRING([--with-snappy@<:@=DIR@:>@],
1885                  [use snappy (located in directory DIR, if supplied) for snappy compression and decompression @<:@default=yes, if available@:>@]),
1886 [
1887         if test "x$withval" = "xno"
1888         then
1889                 want_snappy=no
1890         elif test "x$withval" = "xyes"
1891         then
1892                 want_snappy=yes
1893         else
1894                 want_snappy=yes
1895                 snappy_dir="$withval"
1896         fi
1897 ],[
1898         #
1899         # Use snappy if it's present, otherwise don't.
1900         #
1901         want_snappy=ifavailable
1902         snappy_dir=
1903 ])
1904 have_snappy=no
1905 if test "x$want_snappy" = "xno" ; then
1906         AC_MSG_RESULT(no)
1907 else
1908         AC_MSG_RESULT(yes)
1909         AC_WIRESHARK_SNAPPY_CHECK
1910         if test "x$want_snappy" = "xno" ; then
1911                 AC_MSG_RESULT(snappy not found - disabling snappy compression and decompression)
1912         else
1913                 if test "x$ac_cv_func_snappy_uncompress" = "xno" ; then
1914                         AC_MSG_RESULT(snappy_uncompress not found in snappy - disabling cql snappy decompression)
1915                 else
1916                         have_snappy=yes
1917                 fi
1918         fi
1919 fi
1920 AC_SUBST(SNAPPY_LIBS)
1921
1922 dnl Lua check
1923 AC_ARG_WITH(lua,
1924   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1925                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1926 [
1927         if test $withval = no
1928         then
1929                 want_lua=no
1930         elif test $withval = yes
1931         then
1932                 want_lua=yes
1933         else
1934                 want_lua=yes
1935                 want_lua_dir=$withval
1936         fi
1937 ],[
1938         # By default use Lua if we can find it
1939         want_lua=ifavailable
1940         lua_dir=
1941 ])
1942 if test "x$want_lua" != "xno" ; then
1943         AC_WIRESHARK_LIBLUA_CHECK
1944
1945         if test "x$want_lua" = "xyes" -a "x$have_lua" = "xno"
1946         then
1947                 AC_MSG_ERROR([Lua support was requested, but is not installed for development])
1948         fi
1949 fi
1950 if test "x$have_lua" = "xyes"
1951 then
1952         AC_DEFINE(HAVE_LUA, 1, [Define to use Lua])
1953 fi
1954 AM_CONDITIONAL(HAVE_LIBLUA, test x$have_lua = xyes)
1955 AC_SUBST(LUA_LIBS)
1956 AC_SUBST(LUA_CFLAGS)
1957
1958
1959 dnl portaudio check
1960 AC_MSG_CHECKING(whether to use libportaudio for the GTK+ RTP player)
1961
1962 AC_ARG_WITH(portaudio,
1963   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1964                   [use libportaudio (located in directory DIR, if supplied) for the GTK+ RTP player @<:@default=yes, if available@:>@]),
1965 [
1966         if test $withval = no
1967         then
1968                 want_portaudio=no
1969         elif test $withval = yes
1970         then
1971                 want_portaudio=yes
1972         else
1973                 want_portaudio=yes
1974                 portaudio_dir=$withval
1975         fi
1976 ],[
1977         #
1978         # Use libportaudio by default
1979         #
1980         want_portaudio=ifavailable
1981         portaudio_dir=
1982 ])
1983 if test "x$want_portaudio" = "xno" ; then
1984         AC_MSG_RESULT(no)
1985 else
1986         AC_MSG_RESULT(yes)
1987         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1988         if test "x$want_portaudio" = "xno" ; then
1989                 AC_MSG_RESULT(libportaudio not found - disabling support for the GTK+ RTP player)
1990         fi
1991 fi
1992 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1993
1994
1995 dnl Check if dumpcap should be installed with filesystem capabilities
1996 AC_PATH_PROG(SETCAP, setcap)
1997 AC_ARG_ENABLE(setcap-install,
1998   AC_HELP_STRING( [--enable-setcap-install],
1999                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2000     enable_setcap_install=$enableval,enable_setcap_install=no)
2001
2002 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2003 if test "x$enable_setcap_install" = "xno" ; then
2004         AC_MSG_RESULT(no)
2005 else
2006         if test "x$SETCAP" = "x" ; then
2007                 AC_MSG_RESULT(setcap not found)
2008                 AC_MSG_ERROR([Setcap install was requested, but setcap was not found])
2009         elif test "x$enable_dumpcap" = "xno" ; then
2010                 AC_MSG_RESULT(dumpcap disabled)
2011                 AC_MSG_ERROR([Setcap install works only with dumpcap, but dumpcap is disabled])
2012         else
2013                 AC_MSG_RESULT(yes)
2014         fi
2015 fi
2016
2017 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2018
2019 dnl Check if dumpcap should be installed setuid
2020 AC_ARG_ENABLE(setuid-install,
2021   AC_HELP_STRING( [--enable-setuid-install],
2022                   [install dumpcap as setuid @<:@default=no@:>@]),
2023     enable_setuid_install=$enableval,enable_setuid_install=no)
2024
2025 AC_MSG_CHECKING(whether to install dumpcap setuid)
2026 if test "x$enable_setuid_install" = "xno" ; then
2027         AC_MSG_RESULT(no)
2028 else
2029         if test "x$enable_setcap_install" = "xyes" ; then
2030                 enable_setuid_install=no
2031                 AC_MSG_RESULT(setcap and setuid both selected)
2032                 AC_MSG_ERROR(You must choose one of setcap install and setuid install)
2033         elif test "x$enable_dumpcap" = "xno" ; then
2034                 AC_MSG_RESULT(dumpcap disabled)
2035                 AC_MSG_ERROR([Setuid install works only with dumpcap, but dumpcap is disabled])
2036         else
2037                 AC_MSG_RESULT(yes)
2038         fi
2039 fi
2040
2041 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2042 AC_CHECK_FUNCS(setresuid setresgid)
2043
2044 dnl ...but our Network Operations group is named "no"!
2045 DUMPCAP_GROUP=''
2046 AC_ARG_WITH(dumpcap-group,
2047   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2048                   [restrict dumpcap to GROUP]),
2049 [
2050   if test "x$withval" = "xyes"; then
2051       AC_MSG_ERROR([No dumpcap group specified.])
2052   elif test "x$withval" != "xno"; then
2053       if test "x$enable_dumpcap" = "xno" ; then
2054           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2055       fi
2056       AC_MSG_RESULT($withval)
2057       DUMPCAP_GROUP="$withval"
2058   fi
2059 ])
2060 AC_SUBST(DUMPCAP_GROUP)
2061 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2062
2063 dnl libcap (not libpcap) check
2064 LIBCAP_LIBS=''
2065 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2066
2067 AC_ARG_WITH(libcap,
2068   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2069                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2070 [
2071 if   test "x$withval" = "xno";  then
2072         want_libcap=no
2073 elif test "x$withval" = "xyes"; then
2074         want_libcap=yes
2075 elif test -d "$withval"; then
2076         want_libcap=yes
2077         AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, ${withval}/lib)
2078 fi
2079 ])
2080 if test "x$with_libcap" = "xno" ; then
2081         AC_MSG_RESULT(no)
2082 else
2083         AC_MSG_RESULT(yes)
2084         AC_WIRESHARK_LIBCAP_CHECK
2085 fi
2086 AC_SUBST(LIBCAP_LIBS)
2087
2088 dnl Checks for header files.
2089 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2090 dnl Note, however, that, whilst this script is generally run only on UN*Xes:
2091 dnl
2092 dnl     1) we also support building on and for Windows and not all of those
2093 dnl        headers are present on Windows, so the code has to check a
2094 dnl        #define *anyway* to determine whether to include the header
2095 dnl        file
2096 dnl
2097 dnl and
2098 dnl
2099 dnl     2) this might also be run on Windows with a sufficiently UNIXy
2100 dnl        environment such as Cygwin (although Wireshark should be built
2101 dnl        natively rather than using Cygwin).
2102 dnl
2103 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h inttypes.h netdb.h pwd.h unistd.h)
2104 AC_CHECK_HEADERS(sys/ioctl.h sys/param.h sys/select.h sys/socket.h sys/sockio.h sys/stat.h sys/time.h sys/types.h sys/utsname.h sys/wait.h)
2105 AC_CHECK_HEADERS(netinet/in.h)
2106 AC_CHECK_HEADERS(arpa/inet.h)
2107 AC_CHECK_HEADERS(ifaddrs.h)
2108
2109 #
2110 # On Linux, check for some additional headers, which we need as a
2111 # workaround for a bonding driver bug and for libpcap's current lack
2112 # of its own workaround for that bug.
2113 #
2114 case "$host_os" in
2115 linux*)
2116         AC_CHECK_HEADERS(linux/sockios.h linux/if_bonding.h,,,[#include <sys/socket.h>])
2117         ;;
2118 esac
2119
2120 dnl kerberos check
2121 AC_MSG_CHECKING(whether to use Kerberos library)
2122
2123 AC_ARG_WITH(krb5,
2124   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2125                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2126 [
2127         if test $withval = no
2128         then
2129                 want_krb5=no
2130         elif test $withval = yes
2131         then
2132                 want_krb5=yes
2133         else
2134                 want_krb5=yes
2135                 krb5_dir=$withval
2136         fi
2137 ],[
2138         #
2139         # Use Kerberos library if available, otherwise don't.
2140         #
2141         want_krb5=ifavailable
2142         krb5_dir=
2143 ])
2144 if test "x$want_krb5" = "xno" ; then
2145         AC_MSG_RESULT(no)
2146 else
2147         AC_MSG_RESULT(yes)
2148         AC_WIRESHARK_KRB5_CHECK
2149 fi
2150
2151 dnl
2152 dnl We use GnuTLS for SSL decryption but some builds of Kerberos require
2153 dnl linking with OpenSSL. We don't want to build with it by default due to
2154 dnl annoying license incompatibilities between the OpenSSL license and the GPL,
2155 dnl so we require an explicit option to configure.
2156 dnl
2157 AC_ARG_WITH(krb5-crypto-openssl,
2158   AC_HELP_STRING( [--with-krb5-crypto-openssl],
2159                   [Allow linking with OpenSSL for Kerberos crypto backend @<:@default=no@:>@]))
2160
2161 dnl c-ares Check
2162 C_ARES_LIBS=''
2163 AC_MSG_CHECKING(whether to use the c-ares library if available)
2164
2165 AC_ARG_WITH(c-ares,
2166   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2167                   [use c-ares (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2168 [
2169 if   test "x$withval" = "xno";  then
2170         want_c_ares=no
2171 elif test "x$withval" = "xyes"; then
2172         want_c_ares=yes
2173 elif test -d "$withval"; then
2174         want_c_ares=yes
2175         AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, ${withval}/lib)
2176 fi
2177 ])
2178 if test "x$want_c_ares" = "xno" ; then
2179         AC_MSG_RESULT(no)
2180 else
2181         AC_MSG_RESULT(yes)
2182         AC_WIRESHARK_C_ARES_CHECK
2183 fi
2184 AC_SUBST(C_ARES_LIBS)
2185
2186 dnl MaxMind DB Check
2187 MAXMINDDB_LIBS=''
2188 AC_MSG_CHECKING(whether to use the MaxMind DB IP address mapping library if available)
2189
2190 AC_ARG_WITH(maxminddb,
2191   AC_HELP_STRING( [--with-maxminddb@<:@=DIR@:>@],
2192                   [use MaxMind DB (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2193 [
2194 if   test "x$withval" = "xno";  then
2195         want_maxminddb=no
2196 elif test "x$withval" = "xyes"; then
2197         want_maxminddb=yes
2198 elif test -d "$withval"; then
2199         want_maxminddb=yes
2200         AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, ${withval}/lib)
2201 fi
2202 ])
2203 if test "x$want_maxminddb" = "xno"; then
2204         AC_MSG_RESULT(no)
2205 else
2206         AC_MSG_RESULT(yes)
2207         AC_WIRESHARK_MAXMINDDB_CHECK
2208 fi
2209 AC_SUBST(MAXMINDDB_LIBS)
2210
2211 if test "x$have_good_maxminddb" = "xyes" ; then
2212         mmdbresolve_bin="mmdbresolve\$(EXEEXT)"
2213         mmdbresolve_man="mmdbresolve.1"
2214 else
2215         mmdbresolve_bin=""
2216         mmdbresolve_man=""
2217 fi
2218 AC_SUBST(mmdbresolve_bin)
2219 AC_SUBST(mmdbresolve_man)
2220
2221 dnl LIBSSH Check
2222 LIBSSH=''
2223 AC_MSG_CHECKING(whether to use the libssh library if available)
2224
2225 AC_ARG_WITH(libssh,
2226   AC_HELP_STRING( [--with-libssh@<:@=DIR@:>@],
2227                   [use libssh (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2228 [
2229 if   test "x$withval" = "xno";  then
2230         want_libssh=no
2231 elif test "x$withval" = "xyes"; then
2232         want_libssh=yes
2233 elif test -d "$withval"; then
2234         want_libssh=yes
2235         AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, ${withval}/lib)
2236 fi
2237 ])
2238 if test "x$want_libssh" = "xno"; then
2239         AC_MSG_RESULT(no)
2240 else
2241         AC_MSG_RESULT(yes)
2242         AC_WIRESHARK_LIBSSH_CHECK
2243 fi
2244 AC_SUBST(LIBSSH_LIBS)
2245
2246 dnl nghttp2 Check
2247 NGHTTP2_LIBS=''
2248 AC_MSG_CHECKING(whether to use the nghttp2 HPACK library if available)
2249
2250 AC_ARG_WITH(nghttp2,
2251   AC_HELP_STRING( [--with-nghttp2@<:@=DIR@:>@],
2252                   [use nghttp2 (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2253 [
2254 if   test "x$withval" = "xno";  then
2255         want_nghttp2=no
2256 elif test "x$withval" = "xyes"; then
2257         want_nghttp2=yes
2258 elif test -d "$withval"; then
2259         want_nghttp2=yes
2260         AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, ${withval}/lib)
2261 fi
2262 ])
2263 if test "x$want_nghttp2" = "xno"; then
2264         AC_MSG_RESULT(no)
2265 else
2266         AC_MSG_RESULT(yes)
2267         AC_WIRESHARK_NGHTTP2_CHECK
2268 fi
2269 AC_SUBST(NGHTTP2_LIBS)
2270
2271 dnl Checks for typedefs, structures, and compiler characteristics.
2272 # AC_C_CONST
2273
2274 # Check how we can get the time zone abbreviation
2275 AC_STRUCT_TIMEZONE
2276
2277 # We need to know whether "struct stat" has an "st_flags" member
2278 # for file_user_immutable().
2279
2280 AC_CHECK_MEMBERS([struct stat.st_flags])
2281
2282 # We need to know whether "struct stat" has an "st_birthtime" member
2283 # or an "__st_birthtime" member for the file set dialog.
2284
2285 AC_CHECK_MEMBERS([struct stat.st_birthtime])
2286 AC_CHECK_MEMBERS([struct stat.__st_birthtime])
2287
2288 # We need to know whether "struct sockaddr" has an "sa_len" member
2289 # for get_interface_list().
2290
2291 AC_CHECK_MEMBERS([struct sockaddr.sa_len],,,
2292                  [#ifdef HAVE_SYS_TYPES_H
2293                   #include <sys/types.h>
2294                   #endif
2295                   #ifdef HAVE_SYS_SOCKET_H
2296                   #include <sys/socket.h>
2297                   #endif])
2298
2299 AC_REPLACE_FUNCS(getopt_long)
2300 dnl
2301 dnl Do we have optreset?
2302 dnl
2303 if test "x$ac_cv_func_getopt_long" = xyes; then
2304   AC_CACHE_CHECK([whether optreset is defined], ac_cv_have_optreset,
2305     AC_LINK_IFELSE([AC_LANG_SOURCE([[extern int optreset;return optreset;]])],
2306         ac_cv_have_optreset=yes, ac_cv_have_optreset=no))
2307   if test "$ac_cv_have_optreset" = yes ; then
2308     AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if you have the optreset variable])
2309   fi
2310 fi
2311
2312 AC_REPLACE_FUNCS(strptime)
2313
2314 AC_CHECK_FUNCS(mkstemps)
2315 AC_CHECK_FUNCS(issetugid)
2316 AC_CHECK_FUNCS(sysconf)
2317 AC_CHECK_FUNCS(getifaddrs)
2318 AC_CHECK_FUNC(getexecname)
2319
2320 #
2321 # Check for SpeexDSP (http://www.speex.org)
2322 #
2323 AS_IF([test "x$have_qt_multimedia_lib" = xyes],
2324         [PKG_CHECK_MODULES(SPEEXDSP, speexdsp, [have_speexdsp=yes], [have_speexdsp=no])])
2325 AS_IF([test "x$have_speexdsp" = xyes],
2326         [AC_DEFINE(HAVE_SPEEXDSP, 1, [Define to 1 if you have SpeexDSP])])
2327 AM_CONDITIONAL(HAVE_SPEEXDSP, [test "x$have_speexdsp" = "xyes"])
2328
2329 # Check Bluetooth SBC codec for RTP Player
2330 # git://git.kernel.org/pub/scm/bluetooth/sbc.git
2331 AC_ARG_WITH([sbc],
2332   AC_HELP_STRING( [--with-sbc=@<:@yes/no@:>@],
2333                   [use SBC codec to play Bluetooth A2DP stream @<:@default=yes, if available@:>@]),
2334   with_sbc="$withval"; want_sbc="yes", with_sbc="yes")
2335
2336 PKG_CHECK_MODULES(SBC, sbc >= 1.0, [have_sbc=yes], [have_sbc=no])
2337 if test "x$with_sbc" != "xno"; then
2338     if (test "${have_sbc}" = "yes"); then
2339         AC_DEFINE(HAVE_SBC, 1, [Define to support playing SBC by standalone BlueZ SBC library])
2340     elif test "x$want_sbc" = "xyes"; then
2341         # Error out if the user explicitly requested the sbc library
2342         AC_MSG_ERROR([SBC codec library was requested, but is not installed for development])
2343     fi
2344 else
2345     have_sbc=no
2346 fi
2347 AM_CONDITIONAL(HAVE_SBC, test "x$have_sbc" = "xyes")
2348
2349 #`
2350 # Check SpanDSP library for RTP Player
2351 # http://www.soft-switch.org/
2352 AC_ARG_WITH([spandsp],
2353   AC_HELP_STRING( [--with-spandsp=@<:@yes/no@:>@],
2354                  [use SpanDSP to play G.722/G.726 codecs @<:@default=yes, if available@:>@]),
2355   with_spandsp="$withval"; want_spandsp="yes", with_spandsp="yes")
2356
2357 PKG_CHECK_MODULES(SPANDSP, spandsp, [have_spandsp=yes], [have_spandsp=no])
2358 if test "x$with_spandsp" != "xno"; then
2359     if (test "${have_spandsp}" = "yes"); then
2360         AC_DEFINE(HAVE_SPANDSP, 1, [Define if you have the SpanDSP library])
2361     elif test "x$want_spandsp" = "xyes"; then
2362         # Error out if the user explicitly requested the SpanDSP library
2363         AC_MSG_ERROR([SpanDSP library was requested, but is not installed for development])
2364     fi
2365 else
2366     have_spandsp=no
2367 fi
2368 AM_CONDITIONAL(HAVE_SPANDSP, test "x$have_spandsp" = "xyes")
2369
2370 #`
2371 # Check bcg729 library for RTP Player
2372 # https://www.linphone.org/technical-corner/bcg729/overview
2373 dnl bcg729 Check
2374 BCG729_LIBS=''
2375 AC_MSG_CHECKING(whether to use the bcg729 library if available)
2376
2377 AC_ARG_WITH([bcg729],
2378   AC_HELP_STRING( [--with-bcg729=@<:@=DIR@:>@],
2379                  [use bcg729 to play G.729 codec(located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2380 [
2381 if   test "x$withval" = "xno";  then
2382         want_bcg729=no
2383 elif test "x$withval" = "xyes"; then
2384         want_bcg729=yes
2385 elif test -d "$withval"; then
2386         want_bcg729=yes
2387         AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, ${withval}/lib)
2388 fi
2389 ])
2390 if test "x$want_bcg729" = "xno"; then
2391         AC_MSG_RESULT(no)
2392 else
2393         AC_MSG_RESULT(yes)
2394         AC_WIRESHARK_BCG729_CHECK
2395 fi
2396 AC_SUBST(BCG729_LIBS)
2397 AM_CONDITIONAL(HAVE_BCG729, test "x$have_good_bcg729" = "xyes")
2398
2399 #`
2400 # Libxml2 check
2401 AC_ARG_WITH(libxml2,
2402   AC_HELP_STRING([--with-libxml2=@<:@yes/no@:>@],
2403                  [Libxml2 is a XML C parser, which can be used for handling XML configuration in dissectors @<:@default=yes, if available@:>@]),
2404   with_libxml2="$withval"; want_libxml2="yes", with_libxml2="yes")
2405
2406 PKG_CHECK_MODULES(LIBXML2, libxml-2.0, [have_libxml2=yes], [have_libxml2=no])
2407 if test "x$with_libxml2" != "xno"; then
2408     if (test "${have_libxml2}" = "yes"); then
2409         AC_DEFINE(HAVE_LIBXML2, 1, [Define if you have libxml2])
2410     elif test "x$want_libxml2" = "xyes"; then
2411         # Error out if the user explicitly requested libxml2
2412         AC_MSG_ERROR([Libxml2 was requested, but is not installed for development])
2413     fi
2414 else
2415     have_libxml2=no
2416 fi
2417 AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes")
2418
2419 #
2420 # Libsmi check
2421 #
2422 AC_ARG_WITH(libsmi,
2423   AC_HELP_STRING([--with-libsmi=@<:@yes/no@:>@],
2424                  [use libsmi MIB/PIB library @<:@default=yes, if available@:>@]),
2425                  [], [with_libsmi="if_available"])
2426
2427 have_libsmi=no
2428 if test "x$with_libsmi" != "xno"; then
2429         PKG_CHECK_MODULES(LIBSMI, libsmi,
2430                 [have_libsmi=yes
2431                  AC_DEFINE(HAVE_LIBSMI, 1, [Define if you have libsmi])
2432                 ],
2433                 [if test "x$with_libsmi" = "xyes"; then
2434                         # Error out if the user explicitly requested libsmi
2435                         AC_MSG_ERROR([Libsmi was requested, but is not installed for development])
2436                  fi
2437                 ]
2438         )
2439 fi
2440
2441 dnl
2442 dnl check whether plugins should be enabled
2443 dnl
2444 AC_ARG_ENABLE(plugins,
2445   AC_HELP_STRING( [--enable-plugins],
2446                   [support plugins (if available on your platform) @<:@default=yes@:>@]),
2447                   [have_plugins=$enableval], [have_plugins=yes])
2448
2449 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2450 if test x$have_plugins = xyes
2451 then
2452   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2453 fi
2454 dnl we don't wish to expand ${libdir} yet
2455 plugindir="\${libdir}/wireshark/plugins/$VERSION_RELEASE"
2456 AC_SUBST(plugindir)
2457
2458 #
2459 # The plugin dissectors reside in ./plugins/PROTO/
2460 #
2461 PLUGIN_LIBS=""
2462 AC_SUBST(PLUGIN_LIBS)
2463
2464 dnl
2465 dnl check whether extcap programs should be enabled and, if they should be,
2466 dnl check for extcap directory - stolen from Amanda's configure.ac
2467 dnl
2468 dnl we don't wish to expand ${libdir} yet
2469 extcapdir="\${libdir}/wireshark/extcap"
2470 extcap_man="extcap.4"
2471
2472 AC_SUBST(extcap_man)
2473 AC_SUBST(extcapdir)
2474
2475 dnl androiddump check
2476 AC_MSG_CHECKING(whether to build androiddump)
2477
2478 AC_ARG_ENABLE(androiddump,
2479   AC_HELP_STRING( [--enable-androiddump],
2480                   [build androiddump @<:@default=yes@:>@]),
2481     androiddump=$enableval,enable_androiddump=yes)
2482
2483 if test "x$enable_androiddump" = "xyes" ; then
2484         AC_MSG_RESULT(yes)
2485 else
2486         AC_MSG_RESULT(no)
2487 fi
2488
2489 AC_ARG_ENABLE(androiddump_use_libpcap,
2490   AC_HELP_STRING( [--enable-androiddump-use-libpcap],
2491                   [build androiddump using libpcap @<:@default=no@:>@]),
2492     androiddump_use_libpcap=$enableval,enable_androiddump_use_libpcap=no)
2493
2494 if test "x$enable_androiddump" = "xyes" -a "x$enable_androiddump_use_libpcap" = "xyes" ; then
2495         AC_DEFINE(ANDROIDDUMP_USE_LIBPCAP, 1, [Androiddump will use Libpcap])
2496 fi
2497
2498 if test "x$enable_androiddump" = "xyes" ; then
2499         androiddump_bin="androiddump\$(EXEEXT)"
2500         androiddump_man="androiddump.1"
2501 else
2502         androiddump_bin=""
2503         androiddump_man=""
2504 fi
2505 AC_SUBST(androiddump_bin)
2506 AC_SUBST(androiddump_man)
2507
2508 dnl sshdump check
2509 AC_MSG_CHECKING(whether to build sshdump)
2510
2511 AC_ARG_ENABLE(sshdump,
2512         AC_HELP_STRING( [--enable-sshdump],
2513                 [build sshdump @<:@default=yes@:>@]),
2514         [],[enable_sshdump=yes])
2515
2516 if test "x$have_libssh_pointsix" != xyes; then
2517         AC_MSG_RESULT([no, libssh >= 0.6.0 not installed for development])
2518         enable_sshdump=no
2519 elif test "x$enable_sshdump" = "xyes" ; then
2520         AC_MSG_RESULT(yes)
2521 else
2522         AC_MSG_RESULT(no)
2523 fi
2524
2525 if test "x$enable_sshdump" = "xyes" ; then
2526         sshdump_bin="sshdump\$(EXEEXT)"
2527         sshdump_man="sshdump.1"
2528 else
2529         sshdump_bin=""
2530         sshdump_man=""
2531 fi
2532 AC_SUBST(sshdump_bin)
2533 AC_SUBST(sshdump_man)
2534
2535 dnl ciscodump check
2536 AC_MSG_CHECKING(whether to build ciscodump)
2537
2538 AC_ARG_ENABLE(ciscodump,
2539         AC_HELP_STRING( [--enable-ciscodump],
2540                 [build ciscodump @<:@default=yes@:>@]),
2541         [],[enable_ciscodump=yes])
2542
2543 if test "x$have_libssh_pointsix" != xyes; then
2544         AC_MSG_RESULT([no, libssh >= 0.6.0 not installed for development])
2545         enable_ciscodump=no
2546 elif test "x$enable_ciscodump" = "xyes" ; then
2547         AC_MSG_RESULT(yes)
2548 else
2549         AC_MSG_RESULT(no)
2550 fi
2551
2552 if test "x$enable_ciscodump" = "xyes" ; then
2553         ciscodump_bin="ciscodump\$(EXEEXT)"
2554         ciscodump_man="ciscodump.1"
2555 else
2556         ciscodump_bin=""
2557         ciscodump_man=""
2558 fi
2559 AC_SUBST(ciscodump_bin)
2560 AC_SUBST(ciscodump_man)
2561
2562 dnl randpktdump check
2563 AC_MSG_CHECKING(whether to build randpktdump)
2564
2565 AC_ARG_ENABLE(randpktdump,
2566         AC_HELP_STRING( [--enable-randpktdump],
2567                 [build randpktdump @<:@default=yes@:>@]),
2568         randpktdump=$enableval,enable_randpktdump=yes)
2569
2570 if test "x$enable_randpktdump" = "xyes" ; then
2571         AC_MSG_RESULT(yes)
2572 else
2573         AC_MSG_RESULT(no)
2574 fi
2575
2576 if test "x$enable_randpktdump" = "xyes" ; then
2577         randpktdump_bin="randpktdump\$(EXEEXT)"
2578         randpktdump_man="randpktdump.1"
2579 else
2580         randpktdump_bin=""
2581         randpktdump_man=""
2582 fi
2583 AC_SUBST(randpktdump_bin)
2584 AC_SUBST(randpktdump_man)
2585
2586 dnl udpdump check
2587 AC_MSG_CHECKING(whether to build udpdump)
2588
2589 AC_ARG_ENABLE(udpdump,
2590         AC_HELP_STRING( [--enable-udpdump],
2591                 [build udpdump @<:@default=yes@:>@]),
2592         [],[enable_udpdump=yes])
2593
2594 if test "x$enable_udpdump" = "xyes" ; then
2595         AC_MSG_RESULT(yes)
2596 else
2597         AC_MSG_RESULT(no)
2598 fi
2599
2600 if test "x$enable_udpdump" = "xyes" ; then
2601         udpdump_bin="udpdump\$(EXEEXT)"
2602         udpdump_man="udpdump.1"
2603 else
2604         udpdump_bin=""
2605         udpdump_man=""
2606 fi
2607 AC_SUBST(udpdump_bin)
2608 AC_SUBST(udpdump_man)
2609
2610 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2611 if test x$enable_static = xyes
2612 then
2613   AC_DEFINE(ENABLE_STATIC, 1, [Link Wireshark libraries statically])
2614 fi
2615
2616 # Gather which GUI we're building for rpmbuild
2617 if test "x$have_gtk" = "xyes"; then
2618         if test "x$gtk_major_version" = "x3"; then
2619                 RPMBUILD_WITH_ARGS="--with gtk3 --without gtk2"
2620         else
2621                 RPMBUILD_WITH_ARGS="--without gtk3 --with gtk2"
2622         fi
2623 else
2624         RPMBUILD_WITH_ARGS="--without gtk2 --without gtk3"
2625 fi
2626 if test "x$have_qt" = "xyes" ; then
2627         if test "$qt_version" -eq "5"; then
2628                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with qt5"
2629         else
2630                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with qt"
2631         fi
2632 else
2633         RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without qt --without qt5"
2634 fi
2635 if test "x$have_lua" = "xyes" ; then
2636         RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with lua"
2637 else
2638         RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without lua"
2639 fi
2640 AC_SUBST(RPMBUILD_WITH_ARGS)
2641 AC_SUBST(RPM_VERSION, version_major.version_minor.version_micro)
2642
2643 AC_SUBST(WS_CPPFLAGS)
2644 AC_SUBST(WS_CFLAGS)
2645 AC_SUBST(WS_CXXFLAGS)
2646 AC_SUBST(WS_LDFLAGS)
2647
2648 AC_SUBST(WS_CFLAGS_FOR_BUILD)
2649
2650 AH_BOTTOM([#include <ws_diag_control.h>])
2651
2652 dnl Save the cacheable configure results to config.cache before recursing
2653 AC_CACHE_SAVE
2654
2655 m4_sinclude(plugins/Custom.m4) dnl
2656 m4_ifndef(_CUSTOM_PLUGIN_CONFIG_FILES_, m4_define(_CUSTOM_PLUGIN_CONFIG_FILES_)) dnl
2657
2658 sinclude(epan/dissectors/asn1/Custom.m4) dnl
2659 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2660
2661 AC_CONFIG_HEADERS([config.h])
2662
2663 AC_CONFIG_FILES(
2664   Makefile
2665   doxygen.cfg
2666   epan/dissectors/asn1/Makefile
2667   wireshark.pc
2668   _CUSTOM_ASN1_AC_OUTPUT_
2669   epan/dissectors/asn1/acp133/Makefile
2670   epan/dissectors/asn1/acse/Makefile
2671   epan/dissectors/asn1/ansi_map/Makefile
2672   epan/dissectors/asn1/ansi_tcap/Makefile
2673   epan/dissectors/asn1/atn-cm/Makefile
2674   epan/dissectors/asn1/atn-cpdlc/Makefile
2675   epan/dissectors/asn1/atn-ulcs/Makefile
2676   epan/dissectors/asn1/c1222/Makefile
2677   epan/dissectors/asn1/camel/Makefile
2678   epan/dissectors/asn1/cdt/Makefile
2679   epan/dissectors/asn1/charging_ase/Makefile
2680   epan/dissectors/asn1/cmip/Makefile
2681   epan/dissectors/asn1/cmp/Makefile
2682   epan/dissectors/asn1/crmf/Makefile
2683   epan/dissectors/asn1/cms/Makefile
2684   epan/dissectors/asn1/credssp/Makefile
2685   epan/dissectors/asn1/dap/Makefile
2686   epan/dissectors/asn1/disp/Makefile
2687   epan/dissectors/asn1/dop/Makefile
2688   epan/dissectors/asn1/dsp/Makefile
2689   epan/dissectors/asn1/ess/Makefile
2690   epan/dissectors/asn1/f1ap/Makefile
2691   epan/dissectors/asn1/ftam/Makefile
2692   epan/dissectors/asn1/goose/Makefile
2693   epan/dissectors/asn1/gprscdr/Makefile
2694   epan/dissectors/asn1/gsm_map/Makefile
2695   epan/dissectors/asn1/h225/Makefile
2696   epan/dissectors/asn1/h235/Makefile
2697   epan/dissectors/asn1/h245/Makefile
2698   epan/dissectors/asn1/h248/Makefile
2699   epan/dissectors/asn1/h282/Makefile
2700   epan/dissectors/asn1/h283/Makefile
2701   epan/dissectors/asn1/h323/Makefile
2702   epan/dissectors/asn1/h450/Makefile
2703   epan/dissectors/asn1/h450-ros/Makefile
2704   epan/dissectors/asn1/h460/Makefile
2705   epan/dissectors/asn1/h501/Makefile
2706   epan/dissectors/asn1/HI2Operations/Makefile
2707   epan/dissectors/asn1/hnbap/Makefile
2708   epan/dissectors/asn1/idmp/Makefile
2709   epan/dissectors/asn1/ilp/Makefile
2710   epan/dissectors/asn1/inap/Makefile
2711   epan/dissectors/asn1/isdn-sup/Makefile
2712   epan/dissectors/asn1/kerberos/Makefile
2713   epan/dissectors/asn1/lcsap/Makefile
2714   epan/dissectors/asn1/ldap/Makefile
2715   epan/dissectors/asn1/logotypecertextn/Makefile
2716   epan/dissectors/asn1/lpp/Makefile
2717   epan/dissectors/asn1/lppa/Makefile
2718   epan/dissectors/asn1/lppe/Makefile
2719   epan/dissectors/asn1/lte-rrc/Makefile
2720   epan/dissectors/asn1/m2ap/Makefile
2721   epan/dissectors/asn1/m3ap/Makefile
2722   epan/dissectors/asn1/mms/Makefile
2723   epan/dissectors/asn1/mpeg-audio/Makefile
2724   epan/dissectors/asn1/mpeg-pes/Makefile
2725   epan/dissectors/asn1/mudurl/Makefile
2726   epan/dissectors/asn1/nbap/Makefile
2727   epan/dissectors/asn1/nr-rrc/Makefile
2728   epan/dissectors/asn1/ns_cert_exts/Makefile
2729   epan/dissectors/asn1/novell_pkis/Makefile
2730   epan/dissectors/asn1/ocsp/Makefile
2731   epan/dissectors/asn1/p1/Makefile
2732   epan/dissectors/asn1/p22/Makefile
2733   epan/dissectors/asn1/p7/Makefile
2734   epan/dissectors/asn1/p772/Makefile
2735   epan/dissectors/asn1/pcap/Makefile
2736   epan/dissectors/asn1/pkcs1/Makefile
2737   epan/dissectors/asn1/pkcs12/Makefile
2738   epan/dissectors/asn1/pkinit/Makefile
2739   epan/dissectors/asn1/pkixac/Makefile
2740   epan/dissectors/asn1/pkix1explicit/Makefile
2741   epan/dissectors/asn1/pkix1implicit/Makefile
2742   epan/dissectors/asn1/pkixproxy/Makefile
2743   epan/dissectors/asn1/pkixqualified/Makefile
2744   epan/dissectors/asn1/pkixtsp/Makefile
2745   epan/dissectors/asn1/pres/Makefile
2746   epan/dissectors/asn1/q932/Makefile
2747   epan/dissectors/asn1/q932-ros/Makefile
2748   epan/dissectors/asn1/qsig/Makefile
2749   epan/dissectors/asn1/ranap/Makefile
2750   epan/dissectors/asn1/rnsap/Makefile
2751   epan/dissectors/asn1/ros/Makefile
2752   epan/dissectors/asn1/rrc/Makefile
2753   epan/dissectors/asn1/rrlp/Makefile
2754   epan/dissectors/asn1/rtse/Makefile
2755   epan/dissectors/asn1/rua/Makefile
2756   epan/dissectors/asn1/s1ap/Makefile
2757   epan/dissectors/asn1/sabp/Makefile
2758   epan/dissectors/asn1/sbc-ap/Makefile
2759   epan/dissectors/asn1/smrse/Makefile
2760   epan/dissectors/asn1/snmp/Makefile
2761   epan/dissectors/asn1/spnego/Makefile
2762   epan/dissectors/asn1/sv/Makefile
2763   epan/dissectors/asn1/t124/Makefile
2764   epan/dissectors/asn1/t125/Makefile
2765   epan/dissectors/asn1/t38/Makefile
2766   epan/dissectors/asn1/tcap/Makefile
2767   epan/dissectors/asn1/tetra/Makefile
2768   epan/dissectors/asn1/ulp/Makefile
2769   epan/dissectors/asn1/wlancertextn/Makefile
2770   epan/dissectors/asn1/x2ap/Makefile
2771   epan/dissectors/asn1/x509af/Makefile
2772   epan/dissectors/asn1/x509ce/Makefile
2773   epan/dissectors/asn1/x509if/Makefile
2774   epan/dissectors/asn1/x509sat/Makefile
2775   capchild/Makefile
2776   capchild/doxygen.cfg
2777   caputils/Makefile
2778   caputils/doxygen.cfg
2779   doc/Makefile
2780   docbook/Makefile
2781   epan/Makefile
2782   epan/crypt/Makefile
2783   epan/doxygen.cfg
2784   epan/dfilter/Makefile
2785   epan/dissectors/Makefile
2786   epan/dissectors/dcerpc/Makefile
2787   epan/ftypes/Makefile
2788   epan/wmem/Makefile
2789   epan/wslua/Makefile
2790   extcap/Makefile
2791   codecs/Makefile
2792   ui/Makefile
2793   ui/doxygen.cfg
2794   ui/gtk/Makefile
2795   ui/gtk/doxygen.cfg
2796   ui/cli/Makefile
2797   ui/qt/Makefile
2798   ui/qt/doxygen.cfg
2799   help/Makefile
2800   packaging/Makefile
2801   packaging/macosx/Info.plist
2802   packaging/macosx/Makefile
2803   packaging/macosx/Wireshark_package.pmdoc/index.xml
2804   packaging/nsis/Makefile
2805   packaging/rpm/Makefile
2806   packaging/rpm/SPECS/Makefile
2807   packaging/rpm/SPECS/wireshark.spec
2808   packaging/wix/Makefile
2809   plugins/Makefile
2810   plugins/epan/ethercat/Makefile
2811   plugins/epan/gryphon/Makefile
2812   plugins/epan/irda/Makefile
2813   plugins/epan/mate/Makefile
2814   plugins/epan/opcua/Makefile
2815   plugins/epan/profinet/Makefile
2816   plugins/epan/stats_tree/Makefile
2817   plugins/epan/transum/Makefile
2818   plugins/epan/unistim/Makefile
2819   plugins/epan/wimax/Makefile
2820   plugins/epan/wimaxasncp/Makefile
2821   plugins/epan/wimaxmacphy/Makefile
2822   plugins/wiretap/usbdump/Makefile
2823   plugins/codecs/l16_mono/Makefile
2824   _CUSTOM_PLUGIN_CONFIG_FILES_
2825   randpkt_core/doxygen.cfg
2826   randpkt_core/Makefile
2827   tools/Makefile
2828   tools/lemon/Makefile
2829   wiretap/Makefile
2830   writecap/Makefile
2831   writecap/doxygen.cfg
2832   wsutil/Makefile
2833 )
2834
2835 AC_OUTPUT
2836
2837
2838 # Pretty messages
2839
2840 if test "x$have_gtk" = "xyes"; then
2841         gtk_lib_message=" (with GTK+ v$GTK_VERSION)"
2842 fi
2843
2844 if test "x$have_qt" = "xyes" ; then
2845         enable_wireshark_qt="yes"
2846         qt_lib_message=" (with Qt$qt_version v$QT_VERSION)"
2847 else
2848         enable_wireshark_qt="no"
2849 fi
2850
2851 if test "x$enable_setcap_install" = "xyes" ; then
2852         setcap_message="yes"
2853 else
2854         setcap_message="no"
2855 fi
2856
2857 if test "x$enable_setuid_install" = "xyes" ; then
2858         setuid_message="yes"
2859 else
2860         setuid_message="no"
2861 fi
2862
2863 if test "x$DUMPCAP_GROUP" = "x" ; then
2864         dumpcap_group_message="(none)"
2865 else
2866         dumpcap_group_message="$DUMPCAP_GROUP"
2867 fi
2868
2869 if test "x$want_zlib" = "xno" ; then
2870         zlib_message="no"
2871 else
2872         zlib_message="yes"
2873 fi
2874
2875 if test "x$have_lua" = "xyes" ; then
2876         lua_message="yes"
2877 else
2878         lua_message="no"
2879 fi
2880
2881 if test "x$have_qt_multimedia_lib" = "xyes" ; then
2882         qt_multimedia_message="yes"
2883 else
2884         qt_multimedia_message="no"
2885 fi
2886
2887 if test "x$want_portaudio" = "xyes" ; then
2888         portaudio_message="yes"
2889 else
2890         portaudio_message="no"
2891 fi
2892
2893 if test "x$want_krb5" = "xno" ; then
2894         krb5_message="no"
2895 else
2896         krb5_message="yes ($ac_krb5_version)"
2897 fi
2898
2899 if test "x$have_good_c_ares" = "xyes" ; then
2900         c_ares_message="yes"
2901 else
2902         c_ares_message="no (name resolution will be disabled)"
2903 fi
2904
2905 if test "x$have_good_libcap" = "xyes" ; then
2906         libcap_message="yes"
2907 else
2908         libcap_message="no"
2909 fi
2910
2911 if test "x$have_good_maxminddb" = "xyes" ; then
2912         maxminddb_message="yes"
2913 else
2914         maxminddb_message="no"
2915 fi
2916
2917 if test "x$have_good_libssh" = "xyes" ; then
2918         libssh_message="yes"
2919         if test "x$have_ssh_userauth_agent" = "xno" ; then
2920                 ssh_userauth_agent_message=" (without ssh_userauth_agent)"
2921         fi
2922 else
2923         libssh_message="no"
2924 fi
2925
2926 if test "x$have_good_nghttp2" = "xyes" ; then
2927         nghttp2_message="yes"
2928 else
2929         nghttp2_message="no"
2930 fi
2931
2932 if test "x$have_good_bcg729" = "xyes" ; then
2933         bcg729_message="yes"
2934 else
2935         bcg729_message="no"
2936 fi
2937
2938 if test "x$have_wsug" = xyes -a "x$want_wsug" != xno; then
2939         wsug_message="yes"
2940 else
2941         wsug_message="no"
2942 fi
2943
2944 echo ""
2945 echo "  CPPFLAGS: $WS_CPPFLAGS $CPPFLAGS"
2946 echo ""
2947 echo "  CFLAGS: $WS_CFLAGS $CFLAGS"
2948 echo ""
2949 echo "  CXXFLAGS: $WS_CXXFLAGS $CXXFLAGS"
2950 echo ""
2951 echo "  LDFLAGS: $WS_LDFLAGS $LDFLAGS"
2952 echo ""
2953 echo "  LIBS: $LIBS"
2954
2955 echo ""
2956 echo "The Wireshark package has been configured with the following options:"
2957 echo "                       GLib version : v$GLIB_VERSION"
2958 echo "                    Build wireshark : $enable_wireshark_qt$qt_lib_message"
2959 echo "                Build wireshark-gtk : $have_gtk""$gtk_lib_message"
2960 echo "                       Build tshark : $enable_tshark"
2961 echo "                      Build tfshark : $enable_tfshark"
2962 echo "                     Build capinfos : $enable_capinfos"
2963 echo "                      Build captype : $enable_captype"
2964 echo "                      Build editcap : $enable_editcap"
2965 echo "                      Build dumpcap : $enable_dumpcap"
2966 echo "                     Build mergecap : $enable_mergecap"
2967 echo "                   Build reordercap : $enable_reordercap"
2968 echo "                    Build text2pcap : $enable_text2pcap"
2969 echo "                      Build randpkt : $enable_randpkt"
2970 echo "                       Build dftest : $enable_dftest"
2971 echo "                     Build rawshark : $enable_rawshark"
2972 echo "                       Build sharkd : $enable_sharkd"
2973 echo "                    Build fuzzshark : $enable_fuzzshark"
2974 echo "                  Build androiddump : $enable_androiddump"
2975 echo "                      Build sshdump : $enable_sshdump"
2976 echo "                    Build ciscodump : $enable_ciscodump"
2977 echo "                  Build randpktdump : $enable_randpktdump"
2978 echo "                      Build udpdump : $enable_udpdump"
2979 echo "          Build MaxMind DB resolver : $maxminddb_message"
2980 echo "                 Build User's Guide : $wsug_message"
2981 echo ""
2982 echo "    Save files as pcapng by default : $enable_pcap_ng_default"
2983 echo "  Install dumpcap with capabilities : $setcap_message"
2984 echo "             Install dumpcap setuid : $setuid_message"
2985 echo "                  Use dumpcap group : $dumpcap_group_message"
2986 echo "                        Use plugins : $have_plugins"
2987 echo "                    Use Lua library : $lua_message"
2988 echo "                Build Qt RTP player : $qt_multimedia_message"
2989 echo "              Build GTK+ RTP player : $portaudio_message"
2990 echo "                   Use pcap library : $want_pcap"
2991 echo "                   Use zlib library : $zlib_message"
2992 echo "               Use kerberos library : $krb5_message"
2993 echo "                 Use c-ares library : $c_ares_message"
2994 echo "                Use SMI MIB library : $have_libsmi"
2995 echo "             Use GNU gcrypt library : yes"
2996 echo "                 Use GnuTLS library : $tls_message"
2997 echo "     Use POSIX capabilities library : $libcap_message"
2998 echo "                 Use libssh library : ${libssh_message}${ssh_userauth_agent_message}"
2999 echo "                     Use nl library : $libnl_message"
3000 echo "              Use SBC codec library : $have_sbc"
3001 echo "                Use SpanDSP library : $have_spandsp"
3002 echo "                 Use bcg729 library : $bcg729_message"
3003 echo "                Use libxml2 library : $have_libxml2"
3004 echo "                Use nghttp2 library : $nghttp2_message"
3005 echo "                    Use LZ4 library : $have_lz4"
3006 echo "                 Use Snappy library : $have_snappy"
3007 #echo "       Use GDK-Pixbuf with GResource: $have_gresource_pixbuf"
3008
3009 # We're slowly migrating to CMake. The following still use or refer
3010 # to Autotools:
3011 # - .travis.yml
3012 # - INSTALL and INSTALL.configure
3013 # - README.bsd
3014 # - README.md
3015 # - doc/README.packaging
3016 # - doc/README.idl2wrs
3017 # - doc/README.plugins
3018 # - docbook/wsdg_src/WSDG_chapter_dissection.asciidoc
3019 # - docbook/wsdg_src/WSDG_chapter_sources.asciidoc
3020 # - docbook/wsug_src/WSUG_chapter_build_install.asciidoc
3021 # - packaging/rpm/SPECS/wireshark.spec.in
3022 # - tools/git-compare-abis.sh
3023 echo ""
3024 AC_MSG_NOTICE([Builds using Autotools might be removed in the future.])