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