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