7a31fc71cf5d46210fff6c111078af1c3e7bf7f2
[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], [1])
10 m4_define([version_micro], [0])
11 m4_define([version_micro_extra], version_micro)
12 m4_append([version_micro_extra], [])
13
14 AC_INIT(wireshark, [version_major.version_minor.version_micro_extra], http://bugs.wireshark.org/, , http://www.wireshark.org/)
15 CONFIG_ARGS="$*"
16 AC_SUBST(CONFIG_ARGS)
17
18 # Minimum autoconf version we require.
19 AC_PREREQ(2.60)
20 # Variable expansion doesn't work in AC_PREREQ()
21 AC_MIN_VERSION=2.60
22 AC_SUBST(AC_MIN_VERSION)
23
24 dnl Make sure to keep ACLOCAL_AMFLAGS in Makefile.am and AC_CONFIG_MACRO_DIRS
25 dnl in configure.ac in sync, otherwise there will be an error running autogen.sh.
26 m4_ifdef([AC_CONFIG_MACRO_DIRS],AC_CONFIG_MACRO_DIRS([./aclocal-fallback]))
27
28 dnl Check for CPU / vendor / OS
29 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
30 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
31 dnl needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
32 dnl macros.
33 dnl
34 dnl As nothing in the Wireshark is itself a build tool (we are not,
35 dnl for example, a compiler that generates machine code), we probably
36 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
37 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
38 dnl AC_CANONICAL_HOST - instead.  Note that we do have tools, such as
39 dnl lemon, that need to be built for the build machine, not for the
40 dnl host machine, so we might need both.
41 dnl
42 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
43
44 dnl AC_CANONICAL_BUILD
45 dnl AC_CANONICAL_HOST
46 AC_CANONICAL_TARGET
47
48 AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip subdir-objects])
49
50 # Make Wireshark's version available in config.h
51 AC_DEFINE(VERSION_MAJOR, version_major, [Wireshark's major version])
52 AC_DEFINE(VERSION_MINOR, version_minor, [Wireshark's minor version])
53 AC_DEFINE(VERSION_MICRO, version_micro, [Wireshark's micro version])
54
55 AC_DEFINE(VERSION_FLAVOR, "Development Build", [Wireshark's package flavor])
56
57 AM_DISABLE_STATIC
58
59 #
60 # Checks for programs used in the main build process.
61 #
62 AC_PROG_CC_STDC
63 if test "$ac_cv_prog_cc_stdc" == "no"
64 then
65         AC_MSG_ERROR([The C compiler does not support standard C])
66 fi
67 AM_PROG_CC_C_O
68 AC_PROG_CXX
69 AC_PROG_CPP
70 AC_PROG_MKDIR_P
71
72 dnl Work around libtool bug (fixed in the version 1.5a?)
73 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
74 AC_LIBTOOL_DLOPEN
75 AC_PROG_LIBTOOL
76 if test ! -z "$CXX"; then
77         #
78         # OK, we found something AC_LANG_CXX thinks is a C++ compiler,
79         # but is it one?
80         #
81         # Some UN*Xes have, by default, a case-insensitive file
82         # system, and AC_PROG_CXX looks for, among other things,
83         # "CC" as a C++ compiler, and, if you have a case-insensitive
84         # file system and a C compiler named "cc" (both true, by
85         # default, on OS X), AC_PROG_CXX may end up thinking it's
86         # the C++ compiler.
87         #
88         # So we check by feeding the purported C++ compiler a
89         # program using C++ features (iostream).
90         #
91         # We do this after AC_PROG_LIBTOOL; if we did so before, and
92         # cleared CXX if what we had isn't a C++ compiler, that'd
93         # get undone by AC_PROG_LIBTOOL for some reason.
94         #
95         AC_MSG_CHECKING(whether $CXX is a C++ compiler)
96         AC_LANG_PUSH([C++])
97         AC_LINK_IFELSE([AC_LANG_PROGRAM(
98         [
99 #include <iostream>
100         ],
101         [
102         std::cout << "Hello World! ";
103         return 0;
104         ])],
105                 [AC_MSG_RESULT(yes)],
106                 [
107                         AC_MSG_RESULT(no)
108                         CXX=""
109                 ])
110         AC_LANG_POP([C++])
111 fi
112 AC_PATH_PROG(PERL, perl)
113
114 # Check for Python.
115 AC_PATH_PROGS(PYTHON, python python3)
116 if test ! -z "$PYTHON"; then
117         #
118         # OK, we found Python; is it Python 2.5 or later?
119         # Note: we don't use named components for sys.version_info to get
120         # the major version number, as named components for version_info
121         # were apparently introduced in Python 2.7.
122         #
123         AC_MSG_CHECKING([whether $PYTHON is Python 2.5 or later])
124         python_major_version=`$PYTHON -c 'import sys; print (sys.version_info[[0]])'`
125         python_minor_version=`$PYTHON -c 'import sys; print (sys.version_info[[1]])'`
126         if test "$python_major_version" -eq 2 -a "$python_minor_version" -lt 5 ; then
127                 AC_MSG_RESULT(no)
128                 AC_MSG_WARN([Building with Python $python_major_version.$python_minor_version may not work])
129         else
130                 AC_MSG_RESULT(yes)
131         fi
132 else
133         AC_MSG_ERROR(I couldn't find python; make sure it's installed and in your path)
134 fi
135
136 #
137 # XXX - should autogen.sh check for YACC/Bison and Flex?  A user building
138 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
139 # as the tarball should contain the results of running YACC/Bison on .y
140 # files and running Flex on .l files, but a user building from SVN
141 # will have to run YACC/Bison and Flex to process those files.
142 #
143 # On the other hand, what about users who use a distribution tarball to
144 # do development?  They *shouldn't* - that's what the SVN repository is
145 # for - but they might.  They'd get errors if they modify a .y or .l
146 # file and try to do a build - but the error should tell them that they
147 # need to get YACC/Bison and/or Flex.
148 #
149 # Then again, getting them shouldn't be too big of a burden.
150 #
151 # XXX - is the same true of pod2man and pod2html, or are they needed
152 # even when building from a distribution tarball?
153 #
154 #
155 AC_PROG_YACC
156 AC_PATH_PROG(YACCDUMMY, $YACC)
157 if test "x$YACCDUMMY" = x
158 then
159         AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
160 fi
161 AM_PROG_LEX
162 AC_PATH_PROG(LEX, flex)
163 if test "x$LEX" = x
164 then
165         AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
166 fi
167 AC_PATH_PROG(POD2MAN, pod2man)
168 if test "x$POD2MAN" = x
169 then
170         #
171         # The alternative is not to build the man pages....
172         #
173         AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
174 fi
175 AC_PATH_PROG(POD2HTML, pod2html)
176 if test "x$POD2HTML" = x
177 then
178         #
179         # The alternative is not to build the HTML man pages....
180         #
181         AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
182 fi
183
184 #
185 # Checks for programs used by Wireshark/TShark/etc.
186 #
187
188 #
189 # XXX - this looks for various HTML viewers on the host, not the target;
190 # we really want to know what's available on the target, for cross-builds.
191 # That would probably require us to, at run time, look for xdg-open and,
192 # if we don't find it, look for mozilla, htmlview, etc.
193 #
194 AC_PATH_PROG(HTML_VIEWER, xdg-open)
195 if test "x$HTML_VIEWER" != x
196 then
197         #
198         # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
199         # Define some variable to be that, so we just run that?
200         #
201         AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
202
203         #
204         # XXX - we have to define HTML_VIEWER for the prefs.c code that
205         # sets the default value of the Web browser preference, even
206         # though that preference won't be offered.
207         #
208         AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
209 else
210         AC_PATH_PROG(HTML_VIEWER, htmlview)
211         if test "x$HTML_VIEWER" = x
212         then
213                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
214         else
215                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
216         fi
217 fi
218
219 #
220 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
221 # flags such as -pedantic, -W warning flags and -f feature flags.  Currently,
222 # we assume GCC and clang do; other compilers should be added here.
223 #
224 # This is done to avoid getting tripped up by compilers that support
225 # those flags but give them a different meaning.
226 #
227 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
228         ac_supports_gcc_flags=yes
229 fi
230
231 if test "x$CC_FOR_BUILD" = x
232 then
233        CC_FOR_BUILD=$CC
234 fi
235 AC_SUBST(CC_FOR_BUILD)
236 AC_SUBST(CFLAGS_FOR_BUILD)
237
238 # Check for doxygen
239 AC_PATH_PROG(DOXYGEN, doxygen)
240 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
241 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
242
243 #
244 # Check for pkg-config and set PKG_CONFIG accordingly.
245 #
246 # This is referenced via AC_REQUIRE([PKG_PROG_PKG_CONFIG] in some macros
247 # like PKG_CHECK_MODULES. If the first call to such a macro is under an
248 # "if" statement, it's safer to call PKG_PROG_PKG_CONFIG directly, see
249 # the comments in acolocal.m4
250 #
251 # We want version 0.7 or better.  (XXX - explain why. Is that just
252 # because our Qt tests were originally based on AM_PATH_GTK, and *it*
253 # requires 0.7 or better?)
254 #
255 PKG_PROG_PKG_CONFIG(0.7)
256 if test -z "$PKG_CONFIG"; then
257         AC_MSG_ERROR(I couldn't find pkg-config; make sure it's installed and in your path)
258 fi
259
260 AC_ARG_ENABLE(osx-deploy-target,
261   AC_HELP_STRING( [--enable-osx-deploy-target],
262     [choose an OS X deployment target @<:@default=major release on which you're building@:>@]),
263 [
264         #
265         # Is this OS X?
266         #
267         case "$host_os" in
268         darwin*)
269                 #
270                 # Yes.
271                 #
272                 # Let the user specify an OS X release to use as a
273                 # deplayment target; if they specify that we should
274                 # have a deployment target but don't specify the
275                 # deployment target, then, if we have SDKs available,
276                 # pick the OS version on which the build is being done.
277                 # This also causes the build to be done against an SDK
278                 # rather than against the headers and libraries in
279                 # /usr/include and /usr/lib.
280                 #
281                 # Check for an OS X deployment target early, so that
282                 # as many tests using the compiler are done using the
283                 # flags that we'll be using when building.
284                 #
285                 if test $enableval = no
286                 then
287                         #
288                         # The user explicitly said
289                         # --disable-osx-deploy-target, so don't build
290                         # against an SDK.
291                         #
292                         deploy_target=
293                 elif test $enableval = yes
294                 then
295                         #
296                         # The user said --enable-osx-deploy-target, but
297                         # didn't say what version to target; target the
298                         # major version number of the version of OS X on
299                         # which we're running.
300                         #
301                         # (We quote the command so that we can use
302                         # autoconf's M4 quoting characters, [ and ], in
303                         # the sed expression.)
304                         #
305                         [deploy_target=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
306                 else
307                         deploy_target="$enableval"
308                 fi
309                 ;;
310
311         *)
312                 #
313                 # No.  Fail, because whatever the user intended for us to
314                 # do, we can't do it.
315                 #
316                 AC_MSG_ERROR([--enable-osx-deploy-target specified on an OS other than OS X])
317                 ;;
318         esac
319 ],[
320         #
321         # Is this OS X?
322         #
323         case "$host_os" in
324         darwin*)
325                 #
326                 # Yes.
327                 #
328                 # If we have SDKs available, default to targeting the major
329                 # version number of the version of OS X on which we're
330                 # running.
331                 #
332                 # (We quote the command so that we can use autoconf's
333                 # M4 quoting characters, [ and ], in the sed expression.)
334                 #
335                 for i in /Developer/SDKs \
336                     /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
337                     /Library/Developer/CommandLineTools/SDKs
338                 do
339                         if test -d "$i"
340                         then
341                                 [deploy_target=`sw_vers -productVersion | sed 's/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.[0-9]*/\1.\2/'`]
342                                 break
343                         fi
344                 done
345                 ;;
346
347         *)
348                 #
349                 # No.  There's nothing to do.
350                 #
351                 ;;
352         esac
353 ])
354
355 if test ! -z "$deploy_target"
356 then
357         AC_MSG_CHECKING([whether we can build for OS X $deploy_target])
358         case $deploy_target in
359
360         10.0|10.1|10.2)
361                 #
362                 # I'm not sure this would even work.
363                 #
364                 AC_MSG_RESULT(no)
365                 AC_ERROR([We don't support building for OS X $deploy_target])
366                 ;;
367
368         10.3)
369                 #
370                 # XXX - never tested.
371                 #
372                 AC_MSG_RESULT(yes)
373                 SDKPATH="/Developer/SDKs/MacOSX10.3.9.sdk"
374                 ;;
375
376         *)
377                 #
378                 # Look for the oldest SDK we can find that's
379                 # for an OS equal to or later than this one.
380                 #
381                 # XXX - for 10.4, do we need 10.4u?  We're
382                 # not currently doing fat builds (we'd need
383                 # fat versions of the support libraries for
384                 # that to be useful), but, if we do, we'd
385                 # need to use 10.4u.
386                 #
387
388                 #
389                 # Get the real version - strip off the "10.".
390                 # We'll worry about that if, as, and when there's ever
391                 # an OS XI.
392                 #
393                 deploy_real_version=`echo "$deploy_target" | sed -n 's/10\.\(.*\)/\1/p'`
394
395                 #
396                 # Search each directory that might contain SDKs.
397                 #
398                 sdkpath=""
399                 for sdksdir in /Developer/SDKs \
400                     /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
401                     /Library/Developer/CommandLineTools/SDKs
402                 do
403                         #
404                         # Get a list of all the SDKs.
405                         #
406                         if ! test -d "$sdksdir"
407                         then
408                                 #
409                                 # There is no directory with that name.
410                                 # Move on to the next one in the list,
411                                 # if any.
412                                 #
413                                 continue
414                         fi
415
416                         #
417                         # Get a list of all the SDKs in that directory,
418                         # if any.
419                         #
420                         # We have to use @<:@ for [ and @:>@ for ] to
421                         # avoid m4 removing the square brackets.
422                         #
423                         sdklist=`(cd "$sdksdir"; ls -d MacOSX10.@<:@0-9@:>@*.sdk 2>/dev/null)`
424
425                         for sdk in $sdklist
426                         do
427                                 #
428                                 # Get the real version for this SDK.
429                                 #
430                                 sdk_real_version=`echo "$sdk" | sed -n 's/MacOSX10\.\(.*\)\.sdk/\1/p'`
431
432                                 #
433                                 # Is it for the deployment target or
434                                 # some later release?
435                                 #
436                                 if test "$sdk_real_version" -ge "$deploy_real_version"
437                                 then
438                                         #
439                                         # Yes, use it.
440                                         #
441                                         sdkpath="$sdksdir/$sdk"
442                                         break 2
443                                 fi
444                         done
445                 done
446                 if test -z "$sdkpath"
447                 then
448                         AC_MSG_RESULT(no)
449                         AC_MSG_ERROR([We couldn't find an SDK for OS X $deploy_target or later])
450                 fi
451                 SDKPATH="$sdkpath"
452                 AC_MSG_RESULT([yes, with the 10.$sdk_real_version SDK])
453                 ;;
454         esac
455
456         #
457         # Add a -mmacosx-version-min flag to force tests that
458         # use the compiler, as well as the build itself, not to,
459         # for example, use compiler or linker features not supported
460         # by the minimum targeted version of the OS.
461         #
462         # Add an -isysroot flag to use the SDK.
463         #
464         CFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CFLAGS"
465         CXXFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $CXXFLAGS"
466         LDFLAGS="-mmacosx-version-min=$deploy_target -isysroot $SDKPATH $LDFLAGS"
467
468         #
469         # Add a -sdkroot flag to use with osx-app.sh.
470         #
471         OSX_APP_FLAGS="-sdkroot $SDKPATH"
472
473         #
474         # XXX - do we need this to build the Wireshark wrapper?
475         # XXX - is this still necessary with the -mmacosx-version-min
476         # flag being set?
477         #
478         OSX_DEPLOY_TARGET="MACOSX_DEPLOYMENT_TARGET=$deploy_target"
479
480         #
481         # In the installer package XML file, give the deployment target
482         # as the minimum version.
483         #
484         OSX_MIN_VERSION="$deploy_target"
485
486         case $deploy_target in
487
488         10.4|10.5)
489                 #
490                 # Only 32-bit builds are supported.  10.5
491                 # (and 10.4?) had a bug that causes some BPF
492                 # functions not to work with 64-bit userland
493                 # code, so capturing won't work.
494                 #
495                 CFLAGS="-m32 $CFLAGS"
496                 CXXFLAGS="-m32 $CXXFLAGS"
497                 LDFLAGS="-m32 $LDFLAGS"
498                 ;;
499         esac
500 else
501         #
502         # Is this OS X?
503         #
504         case "$host_os" in
505         darwin*)
506                 #
507                 # Yes.
508                 #
509                 # In the installer package XML file, give the current OS
510                 # version, minor version and all, as the minimum version.
511                 # We can't guarantee that the resulting binary will work
512                 # on older OS versions, not even older minor versions
513                 # (original release or earlier software updates).
514                 #
515                 OSX_MIN_VERSION=`sw_vers -productVersion`
516                 ;;
517         esac
518 fi
519 AC_SUBST(OSX_MIN_VERSION)
520
521 #
522 # Try to arrange for large file support.
523 #
524 AC_SYS_LARGEFILE
525
526 #
527 # Look for math functions; use libm if necessary.
528 #
529 AC_SEARCH_LIBS(floor, m)
530 AC_SEARCH_LIBS(ceil, m)
531 AC_SEARCH_LIBS(exp, m)
532 AC_SEARCH_LIBS(log, m)
533 AC_SEARCH_LIBS(log10, m)
534 AC_SEARCH_LIBS(floorl, m,
535   [
536     FLOORL_LO=""
537     AC_DEFINE(HAVE_FLOORL, 1, [Define if you have the floorl function.])
538   ],
539   FLOORL_LO="floorl.lo")
540 AC_SUBST(FLOORL_LO)
541
542
543 #
544 # GUI toolkit options
545 #
546 AC_ARG_WITH([qt],
547   AC_HELP_STRING( [--with-qt=@<:@yes/no/4/5@:>@],
548                   [use Qt @<:@default=yes@:>@]),
549   with_qt="$withval", with_qt="unspecified")
550
551 AC_ARG_WITH([gtk2],
552   AC_HELP_STRING( [--with-gtk2=@<:@yes/no@:>@],
553                   [use GTK+ 2.0 @<:@default=no@:>@]),
554   with_gtk2="$withval", with_gtk2="unspecified")
555
556 AC_ARG_WITH([gtk3],
557   AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
558                   [use GTK+ 3.0 instead of 2.0 @<:@default=yes@:>@]),
559   with_gtk3="$withval", with_gtk3="unspecified")
560
561 # GnuTLS
562 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+, then switched back to
563 # LGPLv2.1+ in version 3.1.10.
564 # GnuTLS depends on GMP which switched from LGPLv2.1+ to LGPLv3+ in
565 # version 4.2.2, the switched to LGPLv3+ / GPLv2+ in version 6.0.0.
566
567 tls_message="no"
568 want_gnutls="if_available"
569 AC_ARG_WITH([gnutls],
570   AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
571                   [use GnuTLS library @<:@default=yes, if available@:>@]),
572   [ with_gnutls="$withval"; want_gnutls="yes" ], with_gnutls="yes")
573
574 if test "x$with_gnutls" = "xyes"; then
575   have_license_compatible_gnutls="no"
576   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.1.10 ],
577     [ have_license_compatible_gnutls="yes" ], [ echo "GnuTLS >= 3.1.10 not found " ]
578   )
579
580   if test "x$have_license_compatible_gnutls" != "xyes"; then
581     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.0 gnutls < 3],
582       [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 2.12.0, < 3.0 not found " ]
583     )
584   fi
585
586   if test "x$have_license_compatible_gnutls" = "xyes"; then
587     echo "GnuTLS found, enabling SSL decryption"
588     AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
589     tls_message="yes"
590   else
591     echo "GnuTLS with compatible license not found, disabling SSL decryption"
592     tls_message="no"
593
594     # Error out if the user explicitly requested gnutls
595     if test "x$want_gnutls" = "xyes"; then
596         AC_MSG_ERROR([GnuTLS crypto library was requested, but is not available])
597     fi
598   fi
599 fi
600
601 # libgrypt
602 gcrypt_message="no"
603 want_gcrypt="if_available"
604 AC_ARG_WITH([gcrypt],
605   AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
606                   [use gcrypt library @<:@default=yes, if available@:>@]),
607   [ with_gcrypt="$withval"; want_gcrypt="yes" ], with_gcrypt="yes")
608
609 if test "x$with_gcrypt" = "xyes"; then
610   AM_PATH_LIBGCRYPT(1.4.2,
611         [
612                 echo "libgcrypt found, enabling decryption for ipsec, ssl, etc."
613                 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
614                 gcrypt_message="yes"
615         ]
616         , [
617                 if test x$libgcrypt_config_prefix != x ; then
618                         AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
619                 else
620                         echo "libgcrypt not found, disabling decryption for ipsec, ssl, etc."
621                         gcrypt_message="no"
622                 fi
623
624                 # Error out if the user explicitly requested gcrypt
625                 if test "x$want_gcrypt" = "xyes"; then
626                     AC_MSG_ERROR([libgcrypt library was requested, but is not available])
627                 fi
628         ]
629   )
630 fi
631
632 AC_ARG_WITH(libnl,
633   AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
634                  [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
635 [
636         if test "x$withval" = "xno"
637         then
638                 want_libnl=no
639         elif test "x$withval" = "xyes"
640         then
641                 want_libnl=yes
642                 libnl_version=any
643         elif test "x$withval" = "x1"
644         then
645                 want_libnl=yes
646                 libnl_version=1
647         elif test "x$withval" = "x2"
648         then
649                 want_libnl=yes
650                 libnl_version=2
651         elif test "x$withval" = "x3"
652         then
653                 want_libnl=yes
654                 libnl_version=3
655         else
656                 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
657         fi
658 ],[
659         #
660         # Use libnl if it's present, otherwise don't.
661         #
662         want_libnl=ifavailable
663         libnl_version=any
664 ])
665 #
666 # Libnl is Linux-specific.
667 #
668 libnl_message="no"
669 case "$host_os" in
670 linux*)
671         AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
672
673         if test x$want_libnl = "xno"; then
674                 AC_MSG_RESULT(no)
675         else
676                 AC_MSG_RESULT(yes)
677                 #
678                 # Test for specific libnl versions only if no version
679                 # was specified by the user or if the version in question
680                 # was requested by the user.
681                 #
682                 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
683                         PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
684                 fi
685                 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
686                         PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
687                 fi
688                 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
689                         PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
690                 fi
691                 if (test "${have_libnl3}" = "yes"); then
692                         CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
693                         LIBS="$LIBS $LIBNL3_LIBS"
694                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
695                         AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
696                         libnl_message="yes (v3)"
697                         enable_airpcap=no
698                 elif (test "${have_libnl2}" = "yes"); then
699                         CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
700                         LIBS="$LIBS $LIBNL2_LIBS"
701                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
702                         AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
703                         libnl_message="yes (v2)"
704                         enable_airpcap=no
705                 elif (test "${have_libnl1}" = "yes"); then
706                         CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
707                         LIBS="$LIBS $LIBNL1_LIBS"
708                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
709                         AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
710                         libnl_message="yes (v1)"
711                         enable_airpcap=no
712                 else
713                         if test x$want_libnl = "xyes"; then
714                                 case "$libnl_version" in
715
716                                 any)
717                                         AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
718                                         ;;
719
720                                 *)
721                                         AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
722                                         ;;
723                                 esac
724                         fi
725                 fi
726         fi
727
728         AC_MSG_CHECKING([if nl80211.h is new enough])
729           AC_TRY_COMPILE([#include <linux/nl80211.h>],
730             [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
731              x |= NL80211_ATTR_SUPPORTED_IFTYPES;
732              x |= NL80211_ATTR_SUPPORTED_COMMANDS;
733              x |= NL80211_ATTR_WIPHY_FREQ;
734              x |= NL80211_CHAN_NO_HT;
735              (void)x;],
736             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
737             [AC_MSG_RESULT(no)])
738
739         AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
740           AC_TRY_COMPILE([#include <linux/nl80211.h>],
741             [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
742             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
743             [AC_MSG_RESULT(no)])
744
745         AC_MSG_CHECKING([for NL80211_SPLIT_WIPHY_DUMP])
746           AC_TRY_COMPILE([#include <linux/nl80211.h>],
747             [enum nl80211_protocol_features x = NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP;],
748             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_SPLIT_WIPHY_DUMP, 1, [SPLIT_WIPHY_DUMP is supported])],
749             [AC_MSG_RESULT(no)])
750         ;;
751
752 *)
753         if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
754                 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
755         fi
756 esac
757
758 # libsmi
759 # FIXME: currently the path argument to with-libsmi is being ignored
760 AX_LIBSMI
761
762 #
763 # Check for programs used when building DocBook documentation.
764 #
765
766 # Check for a2x (convert asciidoc to another format)
767 AC_PATH_PROG(A2X, a2x)
768 AC_CHECK_PROG(HAVE_A2X, a2x, "yes", "no")
769 AM_CONDITIONAL(HAVE_A2X, test x$HAVE_A2X = xyes)
770
771 # Check for fop (translate .fo to e.g. pdf)
772 AC_PATH_PROG(FOP, fop)
773 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
774 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
775
776 # TODO: HAVE_LYNX and HAVE_W3M are unused. Maybe require one of them
777 # to be found when a2x is enabled? Otherwise it will fail later...
778 # Check for lynx (asciidoc text format from html)
779 AC_PATH_PROG(LYNX, lynx)
780 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
781 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
782
783 # Check for w3m (asciidoc text format from html)
784 AC_PATH_PROG(W3M, w3m)
785 AC_CHECK_PROG(HAVE_W3M, w3m, "yes", "no")
786 AM_CONDITIONAL(HAVE_W3M, test x$HAVE_W3M = xyes)
787
788 # Check for xmllint
789 AC_PATH_PROG(XMLLINT, xmllint)
790 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
791 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
792
793 # Check for xsltproc
794 AC_PATH_PROG(XSLTPROC, xsltproc)
795 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
796 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
797
798
799 # Check for packaging utilities
800 # For now, we check to see if the various packaging utilites are in our
801 # path.  I'm too lazy to write code to go hunt for them.  -  Gerald
802
803 #
804 # Source packages.
805 # (Lets you install the desktop files.)
806 #
807 AC_PATH_PROG(DESKTOP_FILE_INSTALL, desktop-file-install)
808
809 # SVR4/Solaris
810 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
811 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
812 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
813
814 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
815      -a x$HAVE_PKGTRANS = xyes ; then
816   HAVE_SVR4_PACKAGING=yes
817 else
818   HAVE_SVR4_PACKAGING=no
819 fi
820 AC_SUBST(HAVE_SVR4_PACKAGING)
821
822 # RPM
823 AC_WIRESHARK_RPM_CHECK
824 AC_SUBST(HAVE_RPM)
825
826 # Debian
827 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
828
829 # OS X
830 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
831 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
832 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
833
834 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
835      -a x$HAVE_BLESS = xyes ; then
836   HAVE_OSX_PACKAGING=yes
837 else
838   HAVE_OSX_PACKAGING=no
839 fi
840 AC_SUBST(HAVE_OSX_PACKAGING)
841
842 #
843 # Use this as a proxy for "is this OS X" (just in case somebody actually
844 # built and installed Darwin as an OS, perhaps with some X11-based GUI,
845 # don't look for Darwin).
846 #
847 AC_CHECK_PROG(have_sw_vers, sw_vers, "yes", "no")
848 AM_CONDITIONAL(NOT_OS_X, test "x$have_sw_vers" = "xno")
849
850 #
851 # Some compilers have to be told to fail when passed an unknown -W flag;
852 # make sure we do that.
853 #
854 AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR
855
856 #
857 # Some C++ compilers have to be told to fail when passed a -W flag that
858 # they don't think should apply to C++; make sure we do that.
859 #
860 AC_WIRESHARK_CHECK_NON_CXX_WARNING_OPTION_ERROR
861
862 #
863 # Try to add some additional checks to CFLAGS.
864 # These are not enabled by default, because the warnings they produce
865 # are very hard or impossible to eliminate.
866 #
867 AC_ARG_ENABLE(extra-compiler-warnings,
868   AC_HELP_STRING( [--enable-extra-compiler-warnings],
869                   [do additional compiler warnings @<:@default=no@:>@]),
870 [
871         wireshark_extra_flags=$enableval
872         if test $enableval != no
873         then
874                 #
875                 # The following are for C and C++
876                 #
877                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpedantic)
878                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-variadic-macros)
879                 #
880                 # Various code blocks this one.
881                 #
882                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Woverflow)
883                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
884                 #
885                 # Due to various places where APIs we don't control
886                 # require us to cast away constness, we can probably
887                 # never enable this one with -Werror.
888                 #
889                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-qual)
890                 #
891                 # Some generated ASN.1 dissectors block this one;
892                 # multiple function declarations for the same
893                 # function are being generated.
894                 #
895                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wredundant-decls)
896                 #
897                 # Some loops are safe, but it's hard to convince the
898                 # compiler of that.
899                 #
900                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunsafe-loop-optimizations)
901                 #
902                 # All the registration functions block these for now.
903                 #
904                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-prototypes)
905                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wmissing-declarations)
906                 #
907                 # A bunch of "that might not work on SPARC" code blocks
908                 # this one for now.
909                 #
910                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-align)
911                 #
912                 # Works only with Clang
913                 #
914                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunreachable-code)
915                 #
916                 # Works only with Clang but generates a lot of warnings
917                 # (about glib library not using Doxygen)
918                 #
919                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdocumentation)
920
921                 #
922                 # The following are C only, not C++
923                 #
924                 # Due to various places where APIs we don't control
925                 # require us to cast away constness, we can probably
926                 # never enable this one with -Werror.
927                 #
928                 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wbad-function-cast, C)
929         fi
930 ],)
931
932 # Try to add ASAN address analyze.
933 # Only needed for analyse
934 #
935 AC_ARG_ENABLE(asan,
936   AC_HELP_STRING( [--enable-asan],
937                   [Enable AddressSanitizer (ASAN) for debugging (May be slow down)@<:@default=no@:>@]),
938 [
939         #
940         # With Clang >= 3.5 Leak detection is enable by default
941         # and no yet all leak is fixed...
942         # use ASAN_OPTIONS=detect_leaks=0 to disable detect_leaks
943         #
944         # XXX shouldn't this also be added to LDFLAGS?
945         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fsanitize=address)
946
947 ],)
948
949
950
951 #
952 # The following are for C and C++
953 #
954 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
955 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wextra) # -W is now known as -Wextra
956 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wendif-labels)
957 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpointer-arith)
958 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Warray-bounds)
959 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wformat-security)
960 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fwrapv)
961 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fno-strict-overflow)
962 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fno-delete-null-pointer-checks)
963 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wvla)
964 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Waddress)
965 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wattributes)
966 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdiv-by-zero)
967 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wignored-qualifiers)
968 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wpragmas)
969 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-overlength-strings)
970 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wwrite-strings)
971 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-long-long)
972 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wheader-guard)
973 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunused-const-variable)
974 #
975 # The following are C only, not C++
976 #
977 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wc++-compat, C)
978 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdeclaration-after-statement, C)
979
980 #
981 # XXX - OK for C++?
982 #
983 # Make sure -Wshadow doesn't complain about variables in function and
984 # function pointer declarations shadowing other variables; if not, don't
985 # turn it on, as some versions of GCC (including the one in at least
986 # some Xcode versions that came with Mac OS X 10.5) complain about
987 # that.
988 #
989 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshadow, C,
990   [
991 extern int bar(int a);
992 extern int foo(int);
993
994 int
995 foo(int a)
996 {
997         int (*fptr)(int a) = bar;
998
999         return fptr(a) * 2;
1000 }
1001   ],
1002   [warns about variables in function declarations shadowing other variables])
1003
1004 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wno-pointer-sign, C)
1005 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wold-style-definition, C)
1006 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wstrict-prototypes, C)
1007
1008 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
1009 # is given a constant string.
1010 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
1011 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wlogical-op, C,
1012   [
1013 #include <string.h>
1014
1015 int foo(const char *, int);
1016 int bar(void);
1017
1018 int
1019 foo(const char *sep, int c)
1020 {
1021         if (strchr (sep, c) != NULL)
1022                 return 1;
1023         else
1024                 return 0;
1025 }
1026
1027 int
1028 bar(void)
1029 {
1030         return foo("<", 'a');
1031 }
1032   ],
1033   [generates warnings from strchr()])
1034
1035 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wjump-misses-init, C)
1036 # The Qt headers generate a ton of shortening errors on 64-bit systems
1037 # so only enable this for C for now.
1038 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wshorten-64-to-32, C)
1039
1040 #
1041 # Use the faster pre gcc 4.5 floating point precision if available.
1042 #
1043 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fexcess-precision=fast)
1044
1045 #
1046 # Try to have the compiler default to hiding symbols, so that only
1047 # symbols explicitly exported with WS_DLL_PUBLIC will be visible
1048 # outside (shared) libraries; that way, more UN*X builds will catch
1049 # failures to export symbols, rather than having that fail only on
1050 # Windows.
1051 #
1052 # GCC and GCC-compatible compilers
1053 #
1054 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fvisibility=hidden)
1055 if test "x$can_add_to_cflags" = "xno"
1056 then
1057         #
1058         # Sun^WOracle C.
1059         #
1060         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xldscope=hidden)
1061         if test "x$can_add_to_cflags" = "xno"
1062         then
1063                 # TODO add other ways of hiding symbols
1064                 AC_MSG_WARN(Compiler will export all symbols from shared libraries)
1065         fi
1066 fi
1067
1068 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
1069 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
1070 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
1071 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
1072 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
1073 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
1074
1075 #
1076 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
1077 # so that we can build dumpcap PIE - it may run with elevated
1078 # privileges, and using PIE means the OS can run it at random locations
1079 # in the address space to make attacks more difficult.
1080 #
1081 WS_CHECKED_CFLAGS_before_pie="$WS_CHECKED_CFLAGS"
1082 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-fPIE, C)
1083 if test "x$can_add_to_cflags" = "xyes"
1084 then
1085         # Restore CFLAGS
1086         WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_pie"
1087
1088         LDFLAGS_before_pie="$LDFLAGS"
1089         AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
1090         if test "x$LDFLAGS" != "x$LDFLAGS_before_pie"
1091         then
1092                 # We can use PIE
1093                 PIE_CFLAGS="-fPIE"
1094                 PIE_LDFLAGS="-pie"
1095
1096                 # Restore LDFLAGS
1097                 LDFLAGS="$LDFLAGS_before_pie"
1098         fi
1099
1100 fi
1101 AC_SUBST(PIE_CFLAGS)
1102 AC_SUBST(PIE_LDFLAGS)
1103
1104 WS_CHECKED_CFLAGS_before_simd="$WS_CHECKED_CFLAGS"
1105 AC_WIRESHARK_COMPILER_FLAGS_CHECK(-msse4.2, C)
1106 if test "x$can_add_to_cflags" = "xyes"
1107 then
1108         #
1109         # The compiler supports -msse4.2; use that to enable SSE 4.2.
1110         #
1111         # Restore CFLAGS.  We only want to apply -msse4.2 to
1112         # wsutil/ws_mempbrk_sse42.c, as the SSE4.2 code there
1113         # is run only if the hardware supports it, but other
1114         # code would do no such checks.
1115         #
1116         WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_simd"
1117         ac_sse4_2_flag=-msse4.2
1118 else
1119         #
1120         # Try -xarch=sse4_2; that's the flag for Sun's compiler.
1121         #
1122         AC_WIRESHARK_COMPILER_FLAGS_CHECK(-xarch=sse4_2, C)
1123         if test "x$can_add_to_cflags" = "xyes"
1124         then
1125                 #
1126                 # The compiler supports -xarch=sse4_2; use that to
1127                 # enable SSE 4.2.
1128                 #
1129                 # Restore CFLAGS; see above.
1130                 #
1131                 WS_CHECKED_CFLAGS="$WS_CHECKED_CFLAGS_before_simd"
1132                 ac_sse4_2_flag=-xarch=sse4_2
1133         fi
1134 fi
1135
1136 #
1137 # All AC_WIRESHARK_COMPILER_FLAGS_CHECK are done, do not call it again!
1138 # Prepend them to the user-specified CFLAGS/CXXFLAGS.
1139 #
1140 CFLAGS="$WS_CHECKED_CFLAGS $CFLAGS"
1141 CXXFLAGS="$WS_CHECKED_CXXFLAGS $CXXFLAGS"
1142
1143 if test "x$ac_sse4_2_flag" != x; then
1144         #
1145         # OK, we have a compiler flag to enable SSE 4.2.
1146         #
1147         # Make sure we have the necessary headers for the SSE4.2 intrinsics
1148         # and that we can use them.
1149         #
1150         # First, check whether we have emmintrin.h and can use it
1151         # *without* the SSE 4.2 flag.
1152         #
1153         AC_MSG_CHECKING([whether there is emmintrin.h header and we can use it])
1154         AC_TRY_COMPILE(
1155                 [#include <emmintrin.h>],
1156                 [return 0;],
1157                 [
1158                         emmintrin_h_works=yes
1159                         AC_MSG_RESULT([yes])
1160                 ],
1161                 [
1162                         emmintrin_h_works=no
1163                         AC_MSG_RESULT([no])
1164                 ]
1165         )
1166
1167         #
1168         # OK, if that works, see whether we have nmmintrin.h and
1169         # can use it *with* the SSE 4.2 flag.
1170         #
1171         if test "x$emmintrin_h_works" = "xyes"; then
1172                 #
1173                 # Add the SSE4.2 flags to the beginning of CFLAGS,
1174                 # in case the user explicitly specified -mno-sse4.2
1175                 # (or in case Gentoo's build tools did so); if they
1176                 # did so, we only want this to work if we can use
1177                 # the #pragma to override that for ws_mempbrk_sse42.c,
1178                 # and putting it at the beginning means that the
1179                 # CFLAGS setting in the environment will come later
1180                 # and override it.
1181                 #
1182                 AC_MSG_CHECKING([whether there is nmmintrin.h header and we can use it])
1183                 saved_CFLAGS="$CFLAGS"
1184                 CFLAGS="$ac_sse4_2_flag $CFLAGS"
1185                 AC_TRY_COMPILE(
1186                         [#include <nmmintrin.h>],
1187                         [return 0;],
1188                         [
1189                                 have_sse42=yes
1190                                 AC_DEFINE(HAVE_SSE4_2, 1, [Support SSSE4.2 (Streaming SIMD Extensions 4.2) instructions])
1191                                 CFLAGS_SSE42="$ac_sse4_2_flag"
1192                                 AC_MSG_RESULT([yes])
1193                         ],
1194                         [
1195                                 have_sse42=no
1196                                 AC_MSG_RESULT([no])
1197                         ]
1198                 )
1199                 CFLAGS="$saved_CFLAGS"
1200         else
1201                 have_sse42=no
1202         fi
1203 else
1204         have_sse42=no
1205 fi
1206 dnl build libwsutil_sse42 only if there is SSE4.2
1207 AM_CONDITIONAL(SSE42_SUPPORTED, test "x$have_sse42" = "xyes")
1208 AC_SUBST(CFLAGS_SSE42)
1209
1210 #
1211 # If we're running GCC or clang define _U_ to be "__attribute__((unused))"
1212 # so we can use _U_ to flag unused function parameters and not get warnings
1213 # about them. Otherwise, define _U_ to be an empty string so that _U_ used
1214 # to flag an unused function parameters will compile with other compilers.
1215 #
1216 # XXX - similar hints for other compilers?
1217 #
1218 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
1219   AC_DEFINE(_U_, __attribute__((unused)), [Hint to the compiler that a function parameters is not used])
1220 else
1221   AC_DEFINE(_U_, , [Hint to the compiler that a function parameters is not used])
1222 fi
1223
1224 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
1225 #  (only if the GCC 'optimization level' > 0).
1226 #
1227 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
1228 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
1229 #
1230 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
1231 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
1232
1233 #
1234 # If the compiler supports GCC-style flags, enable a barrier "stop on
1235 # warning".
1236 # This barrier is set for a very large part of the code. However, it is
1237 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
1238 #
1239 warnings_as_errors_default="yes"
1240 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
1241 AC_ARG_ENABLE(warnings-as-errors,
1242   AC_HELP_STRING( [--enable-warnings-as-errors],
1243                   [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra compiler warnings are enabled@:>@]),
1244 [
1245   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
1246     with_warnings_as_errors="yes"
1247     AC_MSG_RESULT(yes)
1248   else
1249     with_warnings_as_errors="no"
1250     AC_MSG_RESULT(no)
1251   fi
1252 ],
1253 [
1254   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
1255     with_warnings_as_errors="yes"
1256     AC_MSG_RESULT(yes)
1257   else
1258     with_warnings_as_errors="no"
1259     AC_MSG_RESULT(no)
1260   fi
1261 ]
1262 )
1263 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
1264
1265 #
1266 # Add any platform-specific compiler flags needed.
1267 #
1268 AC_MSG_CHECKING(for platform-specific compiler flags)
1269 if test "x$GCC" = "xyes" ; then
1270         #
1271         # GCC - do any platform-specific tweaking necessary.
1272         #
1273         case "$host_os" in
1274         solaris*)
1275                 # the X11 headers don't automatically include prototype info
1276                 # and a lot don't include the return type
1277                 CPPFLAGS="$CPPFLAGS -DFUNCPROTO=15"
1278                 CFLAGS="$CFLAGS -Wno-return-type"
1279                 CXXFLAGS="$CXXFLAGS -Wno-return-type"
1280                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
1281                 ;;
1282         *)
1283                 AC_MSG_RESULT(none needed)
1284                 ;;
1285         esac
1286 else
1287         #
1288         # Not GCC - assume it's the vendor's compiler.
1289         #
1290         case "$host_os" in
1291         hpux*)
1292                 #
1293                 # AC_PROG_CC_STDC should already have added whatever
1294                 # flags are necessary for ISO C - C99 if available,
1295                 # otherwise C89 - with extensions.
1296                 #
1297                 # Add +O2, for optimization, as suggested by Jost Martin.
1298                 # XXX - works with "-g"?
1299                 #
1300                 # +O2 is supported both by the C and C++ compiler.
1301                 #
1302                 CFLAGS="+O2 $CFLAGS"
1303                 if test "$CC" = "$CC_FOR_BUILD"; then
1304                         #
1305                         # We're building the build tools with the same
1306                         # compiler as the one with which we're building
1307                         # Wireshark, so add the flags to the flags for
1308                         # that compiler as well.
1309                         #
1310                         CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
1311                 fi
1312                 CXXFLAGS="+O2 $CXXFLAGS"
1313                 AC_MSG_RESULT(HP C/C++ compiler - added +O2)
1314                 ;;
1315         solaris*)
1316                 #
1317                 # Crank up the warning level.
1318                 #
1319                 CFLAGS="$CFLAGS -v"
1320                 CXXFLAGS="$CXXFLAGS +w2"
1321                 ;;
1322         *)
1323                 AC_MSG_RESULT(none needed)
1324                 ;;
1325         esac
1326 fi
1327
1328 #
1329 # Add any platform-specific linker flags needed.
1330 #
1331 AC_MSG_CHECKING(for platform-specific linker flags)
1332 case "$host_os" in
1333 darwin*)
1334         #
1335         # Add -Wl,-single_module to the LDFLAGS used with shared
1336         # libraries, to fix some error that show up in some cases;
1337         # some Apple documentation recommends it for most shared
1338         # libraries.
1339         #
1340         LDFLAGS_SHAREDLIB="-Wl,-single_module"
1341         #
1342         # Add -Wl,-headerpad_max_install_names to the LDFLAGS, as
1343         # code-signing issues is running out of padding space.
1344         #
1345         # Add -Wl,-search_paths_first to make sure that if we search
1346         # directories A and B, in that order, for a given library, a
1347         # non-shared version in directory A, rather than a shared
1348         # version in directory B, is chosen (so we can use
1349         # --with-pcap=/usr/local to force all programs to be linked
1350         # with a static version installed in /usr/local/lib rather than
1351         # the system version in /usr/lib).
1352         #
1353         LDFLAGS="-Wl,-headerpad_max_install_names -Wl,-search_paths_first $LDFLAGS"
1354         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])
1355         ;;
1356 cygwin*)
1357         #
1358         # Shared libraries in cygwin/Win32 must never contain
1359         # undefined symbols.
1360         #
1361         LDFLAGS="$LDFLAGS -no-undefined"
1362         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
1363         ;;
1364 *)
1365         AC_MSG_RESULT(none needed)
1366         ;;
1367 esac
1368 AC_SUBST(LDFLAGS_SHAREDLIB)
1369
1370 # Enable silent builds by default
1371 # Verbose builds can be enabled with "./configure
1372 # --enable-silent-rules ..." or "make V=1 ..."
1373 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
1374   [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
1375
1376 #
1377 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
1378 # "just Darwin" (as we don't currently support iOS, and as I don't
1379 # think you can build and run "just Darwin" as an OS for PCs), we
1380 # arrange to build some programs with Application Services so they
1381 # can launch Web browsers and Finder windows, arrange to build some
1382 # programs with System Configuration so they can get "friendly names"
1383 # and other information about interfaces, and build any programs that
1384 # use either of those frameworks or that report version information
1385 # with Core Foundation as the frameworks in question use it and as we
1386 # get version information from plists and thus need Core Foundation
1387 # to process those plists.
1388 #
1389 case "$host_os" in
1390
1391 darwin*)
1392         AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
1393         APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
1394         SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
1395         COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
1396
1397         #
1398         # OK, so we have the OS X frameworks; do they include
1399         # CFPropertyListCreateWithStream, or do we have
1400         # to fall back on CFPropertyListCreateFromStream?
1401         # (They only differ in the error return, which we
1402         # don't care about.  And, no, we shouldn't just
1403         # use CFPropertyListCreateFromStream, because it's
1404         # deprecated in newer releases.)
1405         #
1406         ac_save_LIBS="$LIBS"
1407         LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
1408         AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
1409         LIBS="$ac_save_LIBS"
1410         ;;
1411 esac
1412 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
1413 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
1414 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
1415
1416 #
1417 # On Solaris, check whether we have getexecname().
1418 #
1419 case "$host_os" in
1420 solaris*)
1421         AC_CHECK_FUNC(getexecname)
1422         ;;
1423 esac
1424
1425 dnl Look in /usr/local for header files and libraries ?
1426 dnl XXX FIXME don't include /usr/local if it is already in the system
1427 dnl search path as this causes gcc 3.2 on Linux to complain about a change
1428 dnl of the system search order for includes
1429 AC_ARG_ENABLE(usr-local,
1430   AC_HELP_STRING( [--enable-usr-local],
1431                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
1432     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
1433
1434 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
1435 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1436         if test -d "/usr/local"; then
1437                 AC_MSG_RESULT(yes)
1438                 #
1439                 # Arrange that we search for header files in the source directory
1440                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
1441                 # as various packages we use ("libpcap", "zlib", "adns")
1442                 # may have been installed under "/usr/local/include".
1443                 #
1444                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
1445
1446                 #
1447                 # Arrange that we search for libraries in "/usr/local/lib".
1448                 #
1449                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
1450         else
1451                 AC_MSG_RESULT(no)
1452         fi
1453 else
1454         AC_MSG_RESULT(no)
1455 fi
1456
1457 #
1458 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
1459 # link directory.
1460 #
1461 case "$host_os" in
1462   solaris*)
1463     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
1464     if test x$LD_LIBRARY_PATH != x ; then
1465       LIBS="$LIBS -R$LD_LIBRARY_PATH"
1466       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
1467     else
1468       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
1469     fi
1470   ;;
1471 esac
1472
1473 #
1474 # Check for versions of "sed" inadequate to handle, in libtool, a list
1475 # of object files as large as the list in Wireshark.
1476 #
1477 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
1478 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
1479 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
1480 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
1481 # is the only "sed" that comes with Solaris that can handle Wireshark.
1482 #
1483 # Add any checks here that are necessary for other OSes.
1484 #
1485 AC_PATH_PROG(SED, sed)
1486 if test "x$SED" = x
1487 then
1488         AC_MSG_ERROR(I couldn't find sed; make sure it's installed and in your path)
1489 fi
1490 AC_WIRESHARK_GNU_SED_CHECK
1491 if test "$HAVE_GNU_SED" = no ; then
1492         case "$host_os" in
1493         solaris*)
1494                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
1495                 case `which sed` in
1496                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
1497                         AC_MSG_RESULT(yes)
1498                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
1499                         ;;
1500
1501                         *)
1502                         AC_MSG_RESULT(no)
1503                         ;;
1504                 esac
1505                 ;;
1506
1507         *)
1508                 :
1509                 ;;
1510         esac
1511 fi
1512
1513 # Enable/disable wireshark
1514 AC_ARG_ENABLE(wireshark,
1515   AC_HELP_STRING( [--enable-wireshark],
1516                   [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]),
1517     enable_wireshark=$enableval,enable_wireshark=yes)
1518 AM_CONDITIONAL(BUILDING_WIRESHARK, test x$enable_wireshark = xyes)
1519
1520 AC_ARG_ENABLE(packet-editor,
1521   AC_HELP_STRING( [--enable-packet-editor],
1522                   [add support for packet editor in Wireshark @<:@default=yes@:>@]),
1523     enable_packet_editor=$enableval,enable_packet_editor=yes)
1524 if test x$enable_packet_editor = xyes; then
1525         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
1526 fi
1527
1528 AC_ARG_ENABLE(profile-build,
1529   AC_HELP_STRING( [--enable-profile-build],
1530                   [build profile-ready binaries @<:@default=no@:>@]),
1531     enable_profile_build=$enableval,enable_profile_build=no)
1532 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
1533 AC_MSG_CHECKING(if profile builds must be generated)
1534 if test "x$enable_profile_build" = "xyes" ; then
1535         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
1536                 AC_MSG_RESULT(yes)
1537                 CFLAGS=" -pg $CFLAGS"
1538                 CXXFLAGS=" -pg $CXXFLAGS"
1539         else
1540                 AC_MSG_RESULT(no)
1541                 echo "Building profile binaries currently only supported for GCC and clang."
1542         fi
1543 else
1544         AC_MSG_RESULT(no)
1545 fi
1546
1547 # Create DATAFILE_DIR #define for config.h
1548 datafiledir=$datadir/wireshark
1549 datafiledir=`(
1550     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1551     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1552     # Ugly hack, but I don't see how this problem can be solved
1553     # properly that DATAFILE_DIR had a value starting with
1554     # "${prefix}/" instead of e.g. "/usr/local/"
1555     eval eval echo "$datafiledir"
1556 )`
1557 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
1558
1559 # Create DOC_DIR #define for config.h
1560 docdir=`(
1561     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1562     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1563     # Ugly hack, but I don't see how this problem can be solved
1564     # properly that DOC_DIR had a value starting with
1565     # "${prefix}/" instead of e.g. "/usr/local/"
1566     eval eval echo "$docdir"
1567 )`
1568 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
1569
1570 GTK2_MIN_VERSION=2.12.0
1571 AC_SUBST(GTK2_MIN_VERSION)
1572 GTK3_MIN_VERSION=3.0.0
1573 AC_SUBST(GTK3_MIN_VERSION)
1574 QT_MIN_VERSION=4.7.0
1575 AC_SUBST(QT_MIN_VERSION)
1576 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1577 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1578 #
1579 # We only do those if we're going to be building Wireshark;
1580 # otherwise, we don't have any GUI to build, so we don't use
1581 # GTK+ or Qt.
1582 #
1583 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1584 # force all programs to be built with GTK+ or Qt.
1585 #
1586 # Release dates for GTK+ versions:
1587 # https://en.wikipedia.org/wiki/GTK+#Releases
1588 # 2.12.0: 14 Sep 2007
1589 # 2.14.0: 04 Sep 2008
1590 # 2.16.0: 13 Mar 2009
1591 # 2.18.0: 23 Sep 2009
1592 # 2.20.0: 23 Mar 2010
1593 # 2.22.0: 23 Sep 2010
1594 # 2.24.0: 30 Jan 2011
1595 # 3.0.0:  10 Feb 2011
1596 # 3.2.0:  25 Sep 2011
1597 # 3.4.0:  26 Mar 2012
1598 # 3.6.0:  24 Sep 2012
1599 # 3.8.0:  25 Mar 2013
1600 # 3.10.0: 23 Sep 2013
1601 # 3.12.0: 25 Mar 2014
1602 # 3.14.0: 30 Sep 2014
1603 # 3.16.0: 22 Mar 2015
1604 # 3.18.0  22 Sep 2015
1605 #
1606 # Release dates for Qt versions:
1607 # https://en.wikipedia.org/wiki/List_of_Qt_releases
1608 # 4.6.0:  01 Dec 2009
1609 # 4.7.0:  21 Sep 2010
1610 # 4.8.0:  15 Dec 2011
1611 # 5.0.0:  19 Dec 2012
1612 # 5.1.0:  03 Jul 2013
1613 # 5.2.0:  12 Dec 2013
1614 # 5.3.0:  20 May 2014
1615 # 5.4.0:  10 Dec 2015
1616 # 5.5.0:  01 Jul 2015
1617
1618 have_qt=no
1619 have_gtk=no
1620 if test "x$enable_wireshark" = "xyes"; then
1621         if test "x$with_gtk2" = "xunspecified" -a \
1622                 "x$with_gtk3" = "xunspecified" -a \
1623                 "x$with_qt" = "xunspecified"; then
1624                 #
1625                 # No GUI toolkits were explicitly specified; pick Qt
1626                 # and GTK+ 3.
1627                 #
1628                 with_qt=yes
1629                 with_gtk3=yes
1630         elif test "x$with_gtk2" = "xunspecified" -a \
1631                   "x$with_gtk3" = "xunspecified" -a \
1632                   "x$with_qt" = "xno"; then
1633                 #
1634                 # Qt was explicitly disabled, and neither GTK+ 2 nor
1635                 # GTK+ 3 were explicitly specified; pick GTK+ 3.
1636                 #
1637                 with_gtk3=yes
1638         fi
1639         if test "x$with_qt" != "xno"; then
1640                 #
1641                 # Qt was specified; make sure we have a C++ compiler.
1642                 #
1643                 if test -z "$CXX"; then
1644                         AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1645                 fi
1646
1647                 #
1648                 # Now make sure we have Qt and, if so, add the flags
1649                 # for it to CFLAGS and CXXFLAGS.
1650                 #
1651                 AC_WIRESHARK_QT_CHECK($QT_MIN_VERSION, "$with_qt",
1652                 [
1653                         CFLAGS="$CFLAGS $Qt_CFLAGS"
1654                         CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1655                         have_qt=yes
1656                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-qt"
1657
1658                         #
1659                         # XXX - greasy hack to make ui/gtk/recent.c
1660                         # compile.
1661                         #
1662                         CPPFLAGS="-DQT_GUI_LIB"
1663
1664                         #
1665                         # We're building with Qt, so we need the Qt build
1666                         # tools in order to build the Wireshark GUI.
1667                         # We've found a particular major version of Qt,
1668                         # and we want that version's build tools; for
1669                         # example, the Qt 4 version of uic produces files
1670                         # that include Qt headers with paths that work
1671                         # with Qt 4 but not Qt 5, so we can't use the
1672                         # Qt 4 version of uic if we're building with Qt 5.
1673                         AC_WIRESHARK_QT_TOOL_CHECK(UIC, uic, "$qt_version")
1674                         AC_SUBST(UIC)
1675                         AC_WIRESHARK_QT_TOOL_CHECK(MOC, moc, "$qt_version")
1676                         AC_SUBST(MOC)
1677                         AC_WIRESHARK_QT_TOOL_CHECK(RCC, rcc, "$qt_version")
1678                         AC_SUBST(RCC)
1679
1680                         #
1681                         # On Darwin, find where the Qt frameworks are
1682                         # located, and add that to the rpath, just in
1683                         # case this is Qt 5.5 or later and the frameworks
1684                         # have an install name that begins with @rpath
1685                         # and aren't installed in a frameworks directory
1686                         # that's searched by default.
1687                         #
1688                         case "$host_os" in
1689                         darwin*)
1690                                 if test $qt_version -le 4
1691                                 then
1692                                         Qt_LDFLAGS="-Wl,-rpath,"`$PKG_CONFIG --libs QtCore | sed -e 's/-F//' -e 's/ -framework.*//'`
1693                                 else
1694                                         Qt_LDFLAGS="-Wl,-rpath,"`$PKG_CONFIG --libs Qt${qt_version}Core | sed -e 's/-F//' -e 's/ -framework.*//'`
1695                                 fi
1696                                 ;;
1697                         esac
1698                         AC_SUBST(Qt_LDFLAGS)
1699                 ],
1700                 [
1701                         case "$with_qt" in
1702
1703                         unspecified)
1704                                 #
1705                                 # They didn't explicitly ask for Qt,
1706                                 # so just don't build with it.
1707                                 #
1708                                 ;;
1709
1710                         yes)
1711                                 AC_MSG_ERROR([Qt is not available])
1712                                 ;;
1713
1714                         4)
1715                                 AC_MSG_ERROR([Qt 4 is not available])
1716                                 ;;
1717
1718                         5)
1719                                 AC_MSG_ERROR([Qt 5 is not available])
1720                                 ;;
1721                         esac
1722                 ])
1723         fi
1724
1725         if test "x$with_gtk3" = "xyes"; then
1726                 #
1727                 # GTK+ 3 was specified; make sure they didn't also
1728                 # specify GTK+ 2, as we don't support building both
1729                 # GTK+ 2 and GTK+ 3 versions at the same time.
1730                 #
1731                 if test "x$with_gtk2" = "xyes"; then
1732                         AC_MSG_ERROR([Both GTK+ 2 and GTK+ 3 were specified; choose one but not both])
1733                 fi
1734
1735                 #
1736                 # Make sure we have GTK+ 3.
1737                 #
1738                 AM_PATH_GTK_3_0(3.0.0,
1739                 [
1740                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1741                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1742                         have_gtk=yes
1743                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk3"
1744                 ],
1745                 [AC_MSG_ERROR([GTK+ 3 is not available])])
1746         elif test "x$with_gtk2" = "xyes"; then
1747                 #
1748                 # GTK+ 3 wasn't specified, and GTK+ 2 was specified;
1749                 # make sure we have GTK+ 2.
1750                 #
1751                 AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1752                 [
1753                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1754                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1755                         have_gtk=yes
1756                         GUI_CONFIGURE_FLAGS="$GUI_CONFIGURE_FLAGS --with-gtk2"
1757                 ],
1758                 [AC_MSG_ERROR([GTK+ 2 is not available])])
1759         fi
1760 fi
1761 AC_SUBST(GUI_CONFIGURE_FLAGS)
1762
1763 GLIB_MIN_VERSION=2.16.0
1764 AC_SUBST(GLIB_MIN_VERSION)
1765 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1766 # support, as we need that for dynamically loading plugins.
1767 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1768 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1769 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1770 # GLIB_CFLAGS to CFLAGS.
1771 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1772 # set when generating the Makefile, so we can make programs that require
1773 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1774 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1775 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1776 # programs to be built with GLib.
1777 #
1778 # Release dates for GLib versions:
1779 # 2.14.0: 03 Aug 2007
1780 # 2.16.0: 10 Mar 2008
1781 # 2.18.0: 02 Sep 2008
1782 # 2.20.0: 13 Mar 2009
1783 # 2.22.0: 22 Sep 2009
1784 # 2.24.0: 28 Mar 2010
1785 # 2.26.0: 27 Sep 2010
1786 # 2.28.0: 08 Feb 2011
1787 # 2.30.0: 27 Sep 2011
1788 # 2.32.0: 24 Mar 2012
1789 # 2.34.0: 24 Sep 2012
1790 # 2.36.0: 25 Mar 2013
1791 # 2.38.0: 23 Sep 2013
1792 # 2.40.0: 24 Mar 2014
1793 # 2.42.0: 22 Sep 2014
1794 # 2.44.0: 23 Mar 2014
1795 # 2.46.0: 25 Sep 2015
1796
1797 use_glib_cflags="true"
1798 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1799         # We have both GTK and Qt and thus will be building both wireshark
1800         # and wireshark-gtk.
1801
1802         wireshark_bin="wireshark\$(EXEEXT) wireshark-gtk\$(EXEEXT)"
1803         wireshark_man="wireshark.1"
1804         wireshark_SUBDIRS="codecs ui/qt ui/gtk"
1805 fi
1806 if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1807         # We don't have GTK+ but we have Qt.
1808
1809         wireshark_bin="wireshark\$(EXEEXT)"
1810         wireshark_man="wireshark.1"
1811         wireshark_SUBDIRS="codecs ui/qt"
1812 fi
1813 if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1814         # We have GTK+ but not Qt.
1815
1816         wireshark_bin="wireshark-gtk\$(EXEEXT)"
1817         wireshark_man="wireshark.1"
1818         wireshark_SUBDIRS="codecs ui/gtk"
1819         use_glib_cflags="false"
1820         OSX_APP_FLAGS="$OSX_APP_FLAGS -gtk"
1821         OSX_DMG_FLAGS="-gtk"
1822 fi
1823 if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1824         # We have neither GTK+ nor Qt.
1825         #
1826         # If they didn't explicitly say "--disable-wireshark",
1827         # fail (so that, unless they explicitly indicated that
1828         # they don't want Wireshark, we stop so they know they
1829         # won't be getting Wireshark unless they fix the GTK+/Qt
1830         # problem).
1831         #
1832         if test "x$enable_wireshark" = "xyes"; then
1833                 if test "x$with_gtk3" = "xyes"; then
1834                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled])
1835                 else
1836                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1837                 fi
1838         fi
1839         wireshark_bin=""
1840         wireshark_man=""
1841 fi
1842
1843 if test "$have_gtk" = "yes" ; then
1844         # If we have GTK then add flags for it.
1845
1846         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1847         if test \( $gtk_config_major_version -eq 3 -a $gtk_config_minor_version -ge 10 \) ; then
1848                 ## Allow use of deprecated & disable deprecated warnings if Gtk >= 3.10;
1849                 ##  The deprecations in Gtk 3.10 will not be fixed ...
1850                 CPPFLAGS="-DGDK_DISABLE_DEPRECATION_WARNINGS $CPPFLAGS"
1851         else
1852                 CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1853         fi
1854         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1855         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1856                 # Enable GSEAL when building with GTK > 2.20
1857                 # (Versions prior to 2.22 lacked some necessary accessors.)
1858                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1859         fi
1860 fi
1861
1862 # XXX - Is this really necessary?  When we build with both Gtk+ and Qt it works...
1863 if test "$use_glib_cflags" = "true"; then
1864         # Use GLIB_CFLAGS
1865         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1866         [
1867                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1868                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1869         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1870 else
1871         # Don't use GLIB_CFLAGS
1872         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1873 fi
1874
1875 # Check for GResource support
1876 PKG_CHECK_EXISTS([gio-2.0 >= 2.32 gdk-pixbuf-2.0 >= 2.26], [have_gresource=yes], [have_gresource=no])
1877 AM_CONDITIONAL(HAVE_GRESOURCE, test "x$have_gresource" = "xyes")
1878 if test "x$have_gresource" = "xyes"; then
1879         AC_DEFINE(HAVE_GRESOURCE, 1, [Defined if GLib GResource is supported])
1880 fi
1881
1882 # Error out if a glib header other than a "top level" header
1883 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1884 #  is used.
1885 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1886
1887 # Error out on the usage of deprecated glib functions
1888 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1889
1890 #
1891 # Check whether GLib modules are supported, to determine whether we
1892 # can support plugins.
1893 #
1894 AC_MSG_CHECKING(whether GLib supports loadable modules)
1895 ac_save_CFLAGS="$CFLAGS"
1896 ac_save_LIBS="$LIBS"
1897 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1898 LIBS="$GLIB_LIBS $LIBS"
1899 AC_TRY_RUN([
1900 #include <glib.h>
1901 #include <gmodule.h>
1902 #include <stdio.h>
1903 #include <stdlib.h>
1904
1905 int
1906 main ()
1907 {
1908   if (g_module_supported())
1909     return 0;   /* success */
1910   else
1911     return 1;   /* failure */
1912 }
1913 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1914    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1915     ac_cv_glib_supports_modules=yes])
1916 CFLAGS="$ac_save_CFLAGS"
1917 LIBS="$ac_save_LIBS"
1918 if test "$ac_cv_glib_supports_modules" = yes ; then
1919   AC_MSG_RESULT(yes)
1920   have_plugins=yes
1921   plugins_dir="plugins"
1922 else
1923   AC_MSG_RESULT(no)
1924   have_plugins=no
1925   plugins_dir=""
1926 fi
1927 AC_SUBST(plugins_dir)
1928
1929 #
1930 # If we have <dlfcn.h>, check whether we have dladdr.
1931 #
1932 if test "$ac_cv_header_dlfcn_h" = "yes"
1933 then
1934         #
1935         # Use GLib compiler flags and linker flags; GLib's gmodule
1936         # stuff uses the dl APIs if available, so it might know
1937         # what flags are needed.
1938         #
1939         ac_save_CFLAGS="$CFLAGS"
1940         ac_save_LIBS="$LIBS"
1941         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1942         LIBS="$GLIB_LIBS $LIBS"
1943         AC_CHECK_FUNCS(dladdr)
1944         if test x$ac_cv_func_dladdr = xno
1945         then
1946                 #
1947                 # OK, try it with -ldl, in case you need that to get
1948                 # dladdr().  For some reason, on Linux, that's not
1949                 # part of the GLib flags; perhaps GLib itself is
1950                 # linked with libdl, so that you can link with
1951                 # Glib and it'll pull libdl in itself.
1952                 #
1953                 LIBS="$LIBS -ldl"
1954                 AC_CHECK_FUNCS(dladdr)
1955         fi
1956         CFLAGS="$ac_save_CFLAGS"
1957         LIBS="$ac_save_LIBS"
1958 fi
1959
1960 #
1961 # Check whether GLib's printf supports thousands grouping. (This might
1962 # be different from the system's printf since GLib can optionally use
1963 # its own printf implementation.)
1964 #
1965 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1966 ac_save_CFLAGS="$CFLAGS"
1967 ac_save_LIBS="$LIBS"
1968 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1969 LIBS="$GLIB_LIBS $LIBS"
1970 AC_TRY_RUN([
1971 #include <glib.h>
1972 #include <locale.h>
1973 #include <stdio.h>
1974 #include <string.h>
1975
1976 int
1977 main ()
1978 {
1979   gchar *str;
1980   setlocale(LC_ALL, "en_US.UTF-8");
1981   str = g_strdup_printf("%'u", 123456);
1982   return (strcmp (str, "123,456") != 0);
1983 }
1984 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1985    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1986     ac_cv_glib_supports_printf_grouping=no])
1987 CFLAGS="$ac_save_CFLAGS"
1988 LIBS="$ac_save_LIBS"
1989 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1990   AC_MSG_RESULT(yes)
1991   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if GLib's printf functions support thousands grouping.])
1992 else
1993   AC_MSG_RESULT(no)
1994 fi
1995
1996 if test "x$have_gtk" = "xyes"
1997 then
1998     #
1999     # We have GTK+; do we want the OS X integration functions and,
2000     # if so, do we have them and, if so, which versions do we have,
2001     # the old Carbon-based ones or the new Cocoa-based ones?
2002     #
2003     AC_MSG_CHECKING(whether to use OS X integration functions)
2004
2005     AC_ARG_WITH(osx-integration,
2006       AC_HELP_STRING( [--with-osx-integration],
2007                       [use OS X integration functions @<:@default=yes, if available@:>@]),
2008     [
2009         if test $withval = no
2010         then
2011             want_osx_integration=no
2012         else
2013             want_osx_integration=yes
2014         fi
2015     ],[
2016         want_osx_integration=yes
2017     ])
2018     if test "x$want_osx_integration" = "xno"; then
2019         AC_MSG_RESULT(no)
2020     else
2021         AC_MSG_RESULT(yes)
2022         AC_WIRESHARK_OSX_INTEGRATION_CHECK
2023     fi
2024 fi
2025
2026 AC_SUBST(wireshark_bin)
2027 AC_SUBST(wireshark_man)
2028 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
2029 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
2030 AC_SUBST(OSX_APP_FLAGS)
2031 AC_SUBST(OSX_DMG_FLAGS)
2032
2033 # Enable/disable tshark
2034 AC_ARG_ENABLE(tshark,
2035   AC_HELP_STRING( [--enable-tshark],
2036                   [build tshark @<:@default=yes@:>@]),
2037     tshark=$enableval,enable_tshark=yes)
2038
2039 if test "x$enable_tshark" = "xyes" ; then
2040         tshark_bin="tshark\$(EXEEXT)"
2041         tshark_man="tshark.1"
2042         wiresharkfilter_man="wireshark-filter.4"
2043 else
2044         tshark_bin=""
2045         tshark_man=""
2046 fi
2047 AC_SUBST(tshark_bin)
2048 AC_SUBST(tshark_man)
2049
2050 # Enable/disable editcap
2051
2052 AC_ARG_ENABLE(editcap,
2053   AC_HELP_STRING( [--enable-editcap],
2054                   [build editcap @<:@default=yes@:>@]),
2055     enable_editcap=$enableval,enable_editcap=yes)
2056
2057 if test "x$enable_editcap" = "xyes" ; then
2058         editcap_bin="editcap\$(EXEEXT)"
2059         editcap_man="editcap.1"
2060 else
2061         editcap_bin=""
2062         editcap_man=""
2063 fi
2064 AC_SUBST(editcap_bin)
2065 AC_SUBST(editcap_man)
2066
2067
2068 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
2069 # or not)
2070
2071 # Enable/disable capinfos
2072
2073 AC_ARG_ENABLE(capinfos,
2074   AC_HELP_STRING( [--enable-capinfos],
2075                   [build capinfos @<:@default=yes@:>@]),
2076     enable_capinfos=$enableval,enable_capinfos=yes)
2077
2078 if test "x$enable_capinfos" = "xyes" ; then
2079         capinfos_bin="capinfos\$(EXEEXT)"
2080         capinfos_man="capinfos.1"
2081 else
2082         capinfos_bin=""
2083         capinfos_man=""
2084 fi
2085 AC_SUBST(capinfos_bin)
2086 AC_SUBST(capinfos_man)
2087
2088 # Enable/disable captype
2089
2090 AC_ARG_ENABLE(captype,
2091   AC_HELP_STRING( [--enable-captype],
2092                   [build captype @<:@default=yes@:>@]),
2093     enable_captype=$enableval,enable_captype=yes)
2094
2095 if test "x$enable_captype" = "xyes" ; then
2096         captype_bin="captype\$(EXEEXT)"
2097         captype_man="captype.1"
2098 else
2099         captype_bin=""
2100         captype_man=""
2101 fi
2102 AC_SUBST(captype_bin)
2103 AC_SUBST(captype_man)
2104
2105 # Enable/disable mergecap
2106
2107 AC_ARG_ENABLE(mergecap,
2108   AC_HELP_STRING( [--enable-mergecap],
2109                   [build mergecap @<:@default=yes@:>@]),
2110     enable_mergecap=$enableval,enable_mergecap=yes)
2111
2112 if test "x$enable_mergecap" = "xyes" ; then
2113         mergecap_bin="mergecap\$(EXEEXT)"
2114         mergecap_man="mergecap.1"
2115 else
2116         mergecap_bin=""
2117         mergecap_man=""
2118 fi
2119 AC_SUBST(mergecap_bin)
2120 AC_SUBST(mergecap_man)
2121
2122 # Enable/disable reordercap
2123
2124 AC_ARG_ENABLE(reordercap,
2125   AC_HELP_STRING( [--enable-reordercap],
2126                   [build reordercap @<:@default=yes@:>@]),
2127     enable_reordercap=$enableval,enable_reordercap=yes)
2128
2129 if test "x$enable_reordercap" = "xyes" ; then
2130         reordercap_bin="reordercap\$(EXEEXT)"
2131         reordercap_man="reordercap.1"
2132 else
2133         reordercap_bin=""
2134         reordercap_man=""
2135 fi
2136 AC_SUBST(reordercap_bin)
2137 AC_SUBST(reordercap_man)
2138
2139 # Enable/disable text2pcap
2140
2141 AC_ARG_ENABLE(text2pcap,
2142   AC_HELP_STRING( [--enable-text2pcap],
2143                   [build text2pcap @<:@default=yes@:>@]),
2144     text2pcap=$enableval,enable_text2pcap=yes)
2145
2146 if test "x$enable_text2pcap" = "xyes" ; then
2147         text2pcap_bin="text2pcap\$(EXEEXT)"
2148         text2pcap_man="text2pcap.1"
2149 else
2150         text2pcap_bin=""
2151         text2pcap_man=""
2152 fi
2153 AC_SUBST(text2pcap_bin)
2154 AC_SUBST(text2pcap_man)
2155
2156 # Enable/disable dftest
2157
2158 AC_ARG_ENABLE(dftest,
2159   AC_HELP_STRING( [--enable-dftest],
2160                   [build dftest @<:@default=yes@:>@]),
2161     enable_dftest=$enableval,enable_dftest=yes)
2162
2163 if test "x$enable_dftest" = "xyes" ; then
2164         dftest_bin="dftest\$(EXEEXT)"
2165         dftest_man="dftest.1"
2166 else
2167         dftest_bin=""
2168         dftest_man=""
2169 fi
2170 AC_SUBST(dftest_bin)
2171 AC_SUBST(dftest_man)
2172
2173 # Enable/disable randpkt
2174
2175 AC_ARG_ENABLE(randpkt,
2176   AC_HELP_STRING( [--enable-randpkt],
2177                   [build randpkt @<:@default=yes@:>@]),
2178     enable_randpkt=$enableval,enable_randpkt=yes)
2179
2180 if test "x$enable_randpkt" = "xyes" ; then
2181         randpkt_bin="randpkt\$(EXEEXT)"
2182         randpkt_man="randpkt.1"
2183 else
2184         randpkt_bin=""
2185         randpkt_man=""
2186 fi
2187 AC_SUBST(randpkt_bin)
2188 AC_SUBST(randpkt_man)
2189
2190 AC_SUBST(wiresharkfilter_man)
2191
2192 dnl Checks for "connect()", used as a proxy for "socket()" - and
2193 dnl "-lsocket", if we need it to get "connect()".
2194 AC_WIRESHARK_SOCKET_LIB_CHECK
2195
2196 dnl pcap check
2197 AC_MSG_CHECKING(whether to use libpcap for packet capture)
2198
2199 AC_ARG_WITH(pcap,
2200   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
2201                   [use libpcap for packet capturing @<:@default=yes@:>@]),
2202 [
2203         if test $withval = no
2204         then
2205                 want_pcap=no
2206         elif test $withval = yes
2207         then
2208                 want_pcap=yes
2209         else
2210                 want_pcap=yes
2211                 pcap_dir=$withval
2212         fi
2213 ],[
2214         want_pcap=yes
2215         pcap_dir=
2216 ])
2217 if test "x$want_pcap" = "xno" ; then
2218         AC_MSG_RESULT(no)
2219 else
2220         AC_MSG_RESULT(yes)
2221         AC_WIRESHARK_PCAP_CHECK
2222 fi
2223
2224
2225 dnl Check for airpcap
2226 dnl We might want to remove this entirely unless we want to support
2227 dnl AutoTools on Windows.
2228 AC_MSG_CHECKING(whether to include airpcap support)
2229 AC_ARG_ENABLE(airpcap,
2230   AC_HELP_STRING( [--enable-airpcap],
2231                   [use AirPcap in Wireshark @<:@default=no@:>@]),
2232   enable_airpcap=$enableval, enable_airpcap=no)
2233
2234 if test x$enable_airpcap = xyes; then
2235         if test "x$want_pcap" = "xno" ; then
2236                 enable_airpcap=no
2237                 AC_MSG_RESULT(pcap not available - disabling airpcap)
2238         else
2239                 AC_MSG_RESULT(yes)
2240                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
2241         fi
2242 else
2243         AC_MSG_RESULT(no)
2244 fi
2245
2246
2247 dnl dumpcap check
2248 AC_MSG_CHECKING(whether to build dumpcap)
2249
2250 AC_ARG_ENABLE(dumpcap,
2251   AC_HELP_STRING( [--enable-dumpcap],
2252                   [build dumpcap @<:@default=yes@:>@]),
2253     enable_dumpcap=$enableval,enable_dumpcap=yes)
2254
2255 if test "x$enable_dumpcap" = "xyes" ; then
2256         if test "x$want_pcap" = "xno" ; then
2257                 enable_dumpcap=no
2258                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
2259         else
2260                 AC_MSG_RESULT(yes)
2261         fi
2262 else
2263         AC_MSG_RESULT(no)
2264 fi
2265
2266 if test "x$enable_dumpcap" = "xyes" ; then
2267         dumpcap_bin="dumpcap\$(EXEEXT)"
2268         dumpcap_man="dumpcap.1"
2269 else
2270         dumpcap_bin=""
2271         dumpcap_man=""
2272 fi
2273 AC_SUBST(dumpcap_bin)
2274 AC_SUBST(dumpcap_man)
2275
2276 # Enable/disable rawshark
2277
2278 dnl rawshark check
2279 AC_MSG_CHECKING(whether to build rawshark)
2280
2281 AC_ARG_ENABLE(rawshark,
2282   AC_HELP_STRING( [--enable-rawshark],
2283                   [build rawshark @<:@default=yes@:>@]),
2284     rawshark=$enableval,enable_rawshark=yes)
2285
2286 if test "x$enable_rawshark" = "xyes" ; then
2287         if test "x$want_pcap" = "xno" ; then
2288                 enable_rawshark=no
2289                 AC_MSG_RESULT(pcap not available - disabling rawshark)
2290         else
2291                 AC_MSG_RESULT(yes)
2292         fi
2293 else
2294         AC_MSG_RESULT(no)
2295 fi
2296
2297 if test "x$enable_rawshark" = "xyes" ; then
2298         rawshark_bin="rawshark\$(EXEEXT)"
2299         rawshark_man="rawshark.1"
2300 else
2301         rawshark_bin=""
2302         rawshark_man=""
2303 fi
2304 AC_SUBST(rawshark_bin)
2305 AC_SUBST(rawshark_man)
2306
2307 dnl androiddump check
2308 AC_MSG_CHECKING(whether to build androiddump)
2309
2310 AC_ARG_ENABLE(androiddump,
2311   AC_HELP_STRING( [--enable-androiddump],
2312                   [build androiddump @<:@default=yes@:>@]),
2313     androiddump=$enableval,enable_androiddump=yes)
2314
2315 if test "x$enable_androiddump" = "xyes" ; then
2316         AC_MSG_RESULT(yes)
2317 else
2318         AC_MSG_RESULT(no)
2319 fi
2320
2321 AC_ARG_ENABLE(androiddump_use_libpcap,
2322   AC_HELP_STRING( [--enable-androiddump-use-libpcap],
2323                   [build androiddump using libpcap @<:@default=no@:>@]),
2324     androiddump_use_libpcap=$enableval,enable_androiddump_use_libpcap=no)
2325
2326 if test "x$enable_androiddump_use_libpcap" = "xyes" ; then
2327         AC_DEFINE(ANDROIDDUMP_USE_LIBPCAP, 1, [Androiddump will use Libpcap])
2328 fi
2329
2330 if test "x$enable_androiddump" = "xyes" ; then
2331         androiddump_bin="androiddump\$(EXEEXT)"
2332         androiddump_man=""
2333 else
2334         androiddump_bin=""
2335         androiddump_man=""
2336 fi
2337 AC_SUBST(androiddump_bin)
2338 AC_SUBST(androiddump_man)
2339
2340 dnl sshdump check
2341 AC_MSG_CHECKING(whether to build sshdump)
2342
2343 AC_ARG_ENABLE(sshdump,
2344   AC_HELP_STRING( [--enable-sshdump],
2345                   [build sshdump @<:@default=yes@:>@]),
2346     sshdump=$enableval,enable_sshdump=yes)
2347
2348 if test "x$enable_sshdump" = "xyes" ; then
2349         AC_MSG_RESULT(yes)
2350 else
2351         AC_MSG_RESULT(no)
2352 fi
2353
2354 # Enable/disable echld
2355 AC_ARG_ENABLE(echld,
2356   AC_HELP_STRING( [--enable-echld],
2357                   [support echld (Experimental) @<:@default=no@:>@]),
2358     have_echld=$enableval,have_echld=no)
2359
2360 AM_CONDITIONAL(HAVE_ECHLD, test "x$have_echld" = "xyes")
2361 if test "x$have_echld" = "xyes"
2362 then
2363   AC_DEFINE(HAVE_ECHLD, 1, [Define if echld is enabled])
2364   echld_test_bin="echld_test\$(EXEEXT)"
2365   echld_dir="echld"
2366 else
2367   have_echld="no"
2368   echld_test_bin=""
2369   echld_dir=""
2370 fi
2371 AC_SUBST(echld_test_bin)
2372 AC_SUBST(echld_dir)
2373
2374 # Enable/disable tfshark
2375 AC_ARG_ENABLE(tfshark,
2376   AC_HELP_STRING( [--enable-tfshark],
2377                   [build tfshark (Experimental) @<:@default=no@:>@]),
2378     tfshark=$enableval,enable_tfshark=no)
2379
2380 if test "x$enable_tfshark" = "xyes" ; then
2381         tfshark_bin="tfshark\$(EXEEXT)"
2382         tfshark_man="tfshark.1"
2383         wiresharkfilter_man="wireshark-filter.4"
2384 else
2385         tfshark_bin=""
2386         tfshark_man=""
2387 fi
2388 AC_SUBST(tfshark_bin)
2389 AC_SUBST(tfshark_man)
2390
2391
2392 dnl Use pcap-ng by default
2393 AC_ARG_ENABLE(pcap-ng-default,
2394   AC_HELP_STRING( [--enable-pcap-ng-default],
2395                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
2396     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
2397 if test x$enable_pcap_ng_default = xyes; then
2398         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
2399 fi
2400
2401 dnl pcap remote check
2402 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
2403
2404 AC_ARG_WITH(pcap-remote,
2405     AC_HELP_STRING([--with-pcap-remote],
2406                    [use libpcap remote capturing (requires libpcap)]),
2407 [
2408     if test $withval = no
2409     then
2410         want_pcap_remote=no
2411     else
2412         want_pcap_remote=yes
2413     fi
2414 ],[
2415     want_pcap_remote=no
2416 ])
2417 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
2418     AC_MSG_RESULT(no)
2419 else
2420     AC_MSG_RESULT(yes)
2421     AC_WIRESHARK_PCAP_REMOTE_CHECK
2422 fi
2423
2424 dnl zlib check
2425 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
2426
2427 AC_ARG_WITH(zlib,
2428   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
2429                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
2430 [
2431         if test "x$withval" = "xno"
2432         then
2433                 want_zlib=no
2434         elif test "x$withval" = "xyes"
2435         then
2436                 want_zlib=yes
2437         else
2438                 want_zlib=yes
2439                 zlib_dir="$withval"
2440         fi
2441 ],[
2442         #
2443         # Use zlib if it's present, otherwise don't.
2444         #
2445         want_zlib=ifavailable
2446         zlib_dir=
2447 ])
2448 if test "x$want_zlib" = "xno" ; then
2449         AC_MSG_RESULT(no)
2450 else
2451         AC_MSG_RESULT(yes)
2452         AC_WIRESHARK_ZLIB_CHECK
2453         if test "x$want_zlib" = "xno" ; then
2454                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
2455         else
2456                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
2457                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
2458                 fi
2459         fi
2460 fi
2461
2462 dnl Lua check
2463 AC_ARG_WITH(lua,
2464   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
2465                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
2466 [
2467         if test $withval = no
2468         then
2469                 want_lua=no
2470         elif test $withval = yes
2471         then
2472                 want_lua=yes
2473         else
2474                 want_lua=yes
2475                 want_lua_dir=$withval
2476         fi
2477 ],[
2478         # By default use Lua if we can find it
2479         want_lua=ifavailable
2480         lua_dir=
2481 ])
2482 if test "x$want_lua" != "xno" ; then
2483         AC_WIRESHARK_LIBLUA_CHECK
2484
2485         if test "x$want_lua" = "xyes" -a "x$have_lua" = "xno"
2486         then
2487                 AC_MSG_ERROR([Lua support was requested, but is not available])
2488         fi
2489 fi
2490 if test "x$have_lua" = "xyes"
2491 then
2492         AC_DEFINE(HAVE_LUA, 1, [Define to use Lua])
2493 fi
2494 AM_CONDITIONAL(HAVE_LIBLUA, test x$have_lua = xyes)
2495 AC_SUBST(LUA_LIBS)
2496 AC_SUBST(LUA_CFLAGS)
2497
2498
2499 dnl portaudio check
2500 AC_MSG_CHECKING(whether to use libportaudio for the GTK+ RTP player)
2501
2502 AC_ARG_WITH(portaudio,
2503   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
2504                   [use libportaudio (located in directory DIR, if supplied) for the GTK+ RTP player @<:@default=yes, if available@:>@]),
2505 [
2506         if test $withval = no
2507         then
2508                 want_portaudio=no
2509         elif test $withval = yes
2510         then
2511                 want_portaudio=yes
2512         else
2513                 want_portaudio=yes
2514                 portaudio_dir=$withval
2515         fi
2516 ],[
2517         #
2518         # Use libportaudio by default
2519         #
2520         want_portaudio=ifavailable
2521         portaudio_dir=
2522 ])
2523 if test "x$want_portaudio" = "xno" ; then
2524         AC_MSG_RESULT(no)
2525 else
2526         AC_MSG_RESULT(yes)
2527         AC_WIRESHARK_LIBPORTAUDIO_CHECK
2528         if test "x$want_portaudio" = "xno" ; then
2529                 AC_MSG_RESULT(libportaudio not found - disabling support for the GTK+ RTP player)
2530         fi
2531 fi
2532 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
2533
2534
2535 dnl Check if dumpcap should be installed with filesystem capabilities
2536 AC_PATH_PROG(SETCAP, setcap)
2537 AC_ARG_ENABLE(setcap-install,
2538   AC_HELP_STRING( [--enable-setcap-install],
2539                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2540     enable_setcap_install=$enableval,enable_setcap_install=no)
2541
2542 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2543 if test "x$enable_setcap_install" = "xno" ; then
2544         AC_MSG_RESULT(no)
2545 else
2546         if test "x$SETCAP" = "x" ; then
2547                 AC_MSG_RESULT(setcap not found)
2548                 AC_MSG_ERROR([Setcap install was requested, but setcap was not found])
2549         elif test "x$enable_dumpcap" = "xno" ; then
2550                 AC_MSG_RESULT(dumpcap disabled)
2551                 AC_MSG_ERROR([Setcap install works only with dumpcap, but dumpcap is disabled])
2552         else
2553                 AC_MSG_RESULT(yes)
2554         fi
2555 fi
2556
2557 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2558
2559 dnl Check if dumpcap should be installed setuid
2560 AC_ARG_ENABLE(setuid-install,
2561   AC_HELP_STRING( [--enable-setuid-install],
2562                   [install dumpcap as setuid @<:@default=no@:>@]),
2563     enable_setuid_install=$enableval,enable_setuid_install=no)
2564
2565 AC_MSG_CHECKING(whether to install dumpcap setuid)
2566 if test "x$enable_setuid_install" = "xno" ; then
2567         AC_MSG_RESULT(no)
2568 else
2569         if test "x$enable_setcap_install" = "xyes" ; then
2570                 enable_setuid_install=no
2571                 AC_MSG_RESULT(setcap and setuid both selected)
2572                 AC_MSG_ERROR(You must choose one of setcap install and setuid install)
2573         elif test "x$enable_dumpcap" = "xno" ; then
2574                 AC_MSG_RESULT(dumpcap disabled)
2575                 AC_MSG_ERROR([Setuid install works only with dumpcap, but dumpcap is disabled])
2576         else
2577                 AC_MSG_RESULT(yes)
2578         fi
2579 fi
2580
2581 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2582 AC_CHECK_FUNCS(setresuid setresgid)
2583
2584 dnl ...but our Network Operations group is named "no"!
2585 DUMPCAP_GROUP=''
2586 AC_ARG_WITH(dumpcap-group,
2587   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2588                   [restrict dumpcap to GROUP]),
2589 [
2590   if test "x$withval" = "xyes"; then
2591       AC_MSG_ERROR([No dumpcap group specified.])
2592   elif test "x$withval" != "xno"; then
2593       if test "x$enable_dumpcap" = "xno" ; then
2594           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2595       fi
2596       AC_MSG_RESULT($withval)
2597       DUMPCAP_GROUP="$withval"
2598   fi
2599 ])
2600 AC_SUBST(DUMPCAP_GROUP)
2601 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2602
2603 dnl libcap (not libpcap) check
2604 LIBCAP_LIBS=''
2605 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2606
2607 AC_ARG_WITH(libcap,
2608   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2609                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2610 [
2611 if   test "x$withval" = "xno";  then
2612         want_libcap=no
2613 elif test "x$withval" = "xyes"; then
2614         want_libcap=yes
2615 elif test -d "$withval"; then
2616         want_libcap=yes
2617         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2618 fi
2619 ])
2620 if test "x$with_libcap" = "xno" ; then
2621         AC_MSG_RESULT(no)
2622 else
2623         AC_MSG_RESULT(yes)
2624         AC_WIRESHARK_LIBCAP_CHECK
2625 fi
2626 AC_SUBST(LIBCAP_LIBS)
2627
2628 dnl Checks for header files.
2629 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2630 dnl Note, however, that, whilst this script is generally run only on UN*Xes:
2631 dnl
2632 dnl     1) we also support building on and for Windows and not all of those
2633 dnl        headers are present on Windows, so the code has to check a
2634 dnl        #define *anyway* to determine whether to include the header
2635 dnl        file
2636 dnl
2637 dnl and
2638 dnl
2639 dnl     2) this might also be run on Windows with a sufficiently UNIXy
2640 dnl        environment such as Cygwin (although Wireshark should be built
2641 dnl        natively rather than using Cygwin).
2642 dnl
2643 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h inttypes.h netdb.h pwd.h unistd.h)
2644 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)
2645 AC_CHECK_HEADERS(netinet/in.h)
2646 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2647
2648 #
2649 # On Linux, check for some additional headers, which we need as a
2650 # workaround for a bonding driver bug and for libpcap's current lack
2651 # of its own workaround for that bug.
2652 #
2653 case "$host_os" in
2654 linux*)
2655         AC_CHECK_HEADERS(linux/sockios.h linux/if_bonding.h,,,[#include <sys/socket.h>])
2656         ;;
2657 esac
2658
2659 dnl SSL Check
2660 SSL_LIBS=''
2661 AC_MSG_CHECKING(whether to use SSL library)
2662
2663 AC_ARG_WITH(ssl,
2664   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2665                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2666 [
2667 if test "x$withval" = "xno";  then
2668         want_ssl=no
2669 elif test "x$withval" = "xyes"; then
2670         want_ssl=yes
2671 elif test -d "$withval"; then
2672         want_ssl=yes
2673         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2674 fi
2675 ],[
2676         want_ssl=no
2677 ])
2678 if test "x$want_ssl" = "xyes"; then
2679         AC_MSG_RESULT(yes)
2680         AC_CHECK_LIB(crypto,EVP_md5,
2681             [
2682                 SSL_LIBS=-lcrypto
2683             ],
2684             [
2685                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2686             ])
2687 else
2688         AC_MSG_RESULT(no)
2689 fi
2690 AC_SUBST(SSL_LIBS)
2691
2692 dnl kerberos check
2693 AC_MSG_CHECKING(whether to use Kerberos library)
2694
2695 AC_ARG_WITH(krb5,
2696   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2697                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2698 [
2699         if test $withval = no
2700         then
2701                 want_krb5=no
2702         elif test $withval = yes
2703         then
2704                 want_krb5=yes
2705         else
2706                 want_krb5=yes
2707                 krb5_dir=$withval
2708         fi
2709 ],[
2710         #
2711         # Use Kerberos library if available, otherwise don't.
2712         #
2713         want_krb5=ifavailable
2714         krb5_dir=
2715 ])
2716 if test "x$want_krb5" = "xno" ; then
2717         AC_MSG_RESULT(no)
2718 else
2719         AC_MSG_RESULT(yes)
2720         AC_WIRESHARK_KRB5_CHECK
2721 fi
2722
2723
2724 dnl c-ares Check
2725 C_ARES_LIBS=''
2726 AC_MSG_CHECKING(whether to use the c-ares library if available)
2727
2728 AC_ARG_WITH(c-ares,
2729   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2730                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2731 [
2732 if   test "x$withval" = "xno";  then
2733         want_c_ares=no
2734 elif test "x$withval" = "xyes"; then
2735         want_c_ares=yes
2736 elif test -d "$withval"; then
2737         want_c_ares=yes
2738         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2739 fi
2740 ])
2741 if test "x$want_c_ares" = "xno" ; then
2742         AC_MSG_RESULT(no)
2743 else
2744         AC_MSG_RESULT(yes)
2745         AC_WIRESHARK_C_ARES_CHECK
2746 fi
2747 AC_SUBST(C_ARES_LIBS)
2748
2749 dnl ADNS Check
2750 ADNS_LIBS=''
2751 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2752
2753 AC_ARG_WITH(adns,
2754   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2755                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2756 [
2757 if   test "x$withval" = "xno";  then
2758         want_adns=no
2759 elif test "x$withval" = "xyes"; then
2760         want_adns=yes
2761 elif test -d "$withval"; then
2762         want_adns=yes
2763         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2764 fi
2765 ])
2766 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2767         AC_MSG_RESULT(no)
2768 else
2769         AC_MSG_RESULT(yes)
2770         AC_WIRESHARK_ADNS_CHECK
2771 fi
2772 AC_SUBST(ADNS_LIBS)
2773
2774 if test "x$have_good_c_ares" != "xyes" -a "x$have_good_adns" != "xyes"; then
2775         # We don't have an asynchronous name resolver, look for a synchronous one
2776
2777         dnl Checks for "getaddrinfo()" - and "-lnsl", if we need it to get
2778         dnl "getaddrinfo()".
2779         AC_WIRESHARK_GETADDRINFO_LIB_CHECK
2780
2781         if test "x$ac_cv_func_getaddrinfo" != "xyes" ; then
2782                 # We don't have the modern name resolver, try older stuff
2783
2784                 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
2785                 dnl "gethostbyname()".
2786                 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
2787
2788                 if test "x$ac_cv_func_gethostbyname" != "xyes" ; then
2789                         # Hopefully this never actually happens.
2790                         # The code works even without name resolvers but we
2791                         # alert the user to this unusual condition.
2792                         AC_MSG_ERROR(Couldn't find any name resolvers!)
2793                 fi
2794
2795                 AC_CHECK_FUNCS(gethostbyname2)
2796         fi
2797 fi
2798
2799 dnl GEOIP Check
2800 GEOIP_LIBS=''
2801 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2802
2803 AC_ARG_WITH(geoip,
2804   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2805                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2806 [
2807 if   test "x$withval" = "xno";  then
2808         want_geoip=no
2809 elif test "x$withval" = "xyes"; then
2810         want_geoip=yes
2811 elif test -d "$withval"; then
2812         want_geoip=yes
2813         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2814 fi
2815 ])
2816 if test "x$want_geoip" = "xno"; then
2817         AC_MSG_RESULT(no)
2818 else
2819         AC_MSG_RESULT(yes)
2820         AC_WIRESHARK_GEOIP_CHECK
2821 fi
2822 AC_SUBST(GEOIP_LIBS)
2823
2824 dnl LIBSSH Check
2825 LIBSSH=''
2826 AC_MSG_CHECKING(whether to use the libssh library if available)
2827
2828 AC_ARG_WITH(ssh,
2829   AC_HELP_STRING( [--with-libssh@<:@=DIR@:>@],
2830                   [use libssh (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2831 [
2832 if   test "x$withval" = "xno";  then
2833         want_libssh=no
2834 elif test "x$withval" = "xyes"; then
2835         want_libssh=yes
2836 elif test -d "$withval"; then
2837         want_libssh=yes
2838         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2839 fi
2840 ])
2841 if test "x$want_libssh" = "xno"; then
2842         AC_MSG_RESULT(no)
2843 else
2844         AC_MSG_RESULT(yes)
2845         AC_WIRESHARK_LIBSSH_CHECK
2846 fi
2847 AC_SUBST(LIBSSH_LIBS)
2848
2849 #
2850 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2851 # never return (just like Charlie on the MTA).
2852 #
2853 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2854 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2855 # follow the function name, so we need two different flavors of
2856 # noreturn tag.
2857 #
2858 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2859
2860 dnl Checks for typedefs, structures, and compiler characteristics.
2861 # AC_C_CONST
2862
2863 # Check how we can get the time zone abbreviation
2864 AC_WIRESHARK_TIMEZONE_ABBREV
2865
2866 # We need to know whether "struct stat" has an "st_flags" member
2867 # for file_user_immutable().
2868
2869 AC_WIRESHARK_STRUCT_ST_FLAGS
2870
2871 # We need to know whether "struct sockaddr" has an "sa_len" member
2872 # for get_interface_list().
2873
2874 AC_WIRESHARK_STRUCT_SA_LEN
2875
2876 # We must know our byte order
2877 AC_C_BIGENDIAN
2878
2879 # Checks whether "-traditional" is needed when using "ioctl".
2880 # XXX - do we need this?
2881 AC_PROG_GCC_TRADITIONAL
2882
2883 AC_CHECK_FUNC(getopt_long,
2884   [
2885     GETOPT_LO=""
2886     AC_DEFINE(HAVE_GETOPT_LONG, 1, [Define to 1 if you have the getopt_long function.])
2887
2888     #
2889     # Do we have optreset?
2890     #
2891     AC_MSG_CHECKING(whether optreset is defined)
2892     AC_TRY_LINK([],
2893       [
2894         extern int optreset;
2895
2896         return optreset;
2897       ],
2898       ac_cv_pcap_debug_defined=yes,
2899       ac_cv_pcap_debug_defined=no)
2900     if test "$ac_cv_pcap_debug_defined" = yes ; then
2901       AC_MSG_RESULT(yes)
2902       AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if you have the optreset variable])
2903     else
2904       AC_MSG_RESULT(no)
2905     fi
2906   ],
2907   GETOPT_LO="wsgetopt.lo")
2908 AC_SUBST(GETOPT_LO)
2909
2910 AC_CHECK_FUNCS(mkstemp mkdtemp)
2911
2912 AC_SEARCH_LIBS(inet_aton, [socket nsl],
2913   [
2914     INET_ATON_LO=""
2915     AC_DEFINE(HAVE_INET_ATON, 0, [Define to 1 if you have the inet_aton function.])
2916   ],
2917   INET_ATON_LO="inet_aton.lo")
2918 AC_SUBST(INET_ATON_LO)
2919
2920 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2921   dnl check for pre-BIND82 inet_pton() bug.
2922   AC_MSG_CHECKING(for broken inet_pton)
2923   AC_TRY_RUN([#include <sys/types.h>
2924 #include <sys/socket.h>
2925 #include <netinet/in.h>
2926 #include <arpa/inet.h>
2927 int main()
2928 {
2929 #ifdef AF_INET6
2930   char buf[16];
2931   /* this should return 0 (error) */
2932   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2933 #else
2934   return 1;
2935 #endif
2936 }], [AC_MSG_RESULT(ok);
2937 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2938 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2939 have_inet_pton=no])],
2940 have_inet_pton=no)
2941 if test "$have_inet_pton" = no; then
2942   INET_PTON_LO="inet_pton.lo"
2943 else
2944   INET_PTON_LO=""
2945 fi
2946 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2947 AC_SUBST(INET_PTON_LO)
2948
2949 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2950   AC_MSG_CHECKING([for inet_ntop prototype])
2951   AC_TRY_COMPILE([#include <stdio.h>
2952 #include <sys/types.h>
2953 #include <sys/socket.h>
2954 #include <netinet/in.h>
2955 #include <arpa/inet.h>
2956
2957 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2958     AC_MSG_RESULT(yes)
2959     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2960     [Define if inet_ntop() prototype exists])], [
2961     AC_TRY_COMPILE([#include <stdio.h>
2962 #include <sys/types.h>
2963 #include <sys/socket.h>
2964 #include <netinet/in.h>
2965 #include <arpa/inet.h>
2966
2967 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2968       AC_MSG_RESULT(yes)
2969       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2970       [Define if inet_ntop() prototype exists])], [
2971       AC_MSG_RESULT(no)])])
2972   INET_NTOP_LO=""], [
2973   INET_NTOP_LO="inet_ntop.lo"
2974   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2975   [Define if inet/v6defs.h needs to be included])])
2976 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2977 AC_SUBST(INET_NTOP_LO)
2978
2979 AC_CHECK_FUNC(strptime,
2980   [
2981     STRPTIME_LO=""
2982     AC_DEFINE(HAVE_STRPTIME, 1, [Define if you have the strptime function.])
2983   ],
2984   STRPTIME_LO="strptime.lo")
2985 AC_SUBST(STRPTIME_LO)
2986
2987 AC_CHECK_FUNC(popcount,
2988   [
2989     POPCOUNT_LO=""
2990     AC_DEFINE(HAVE_POPCOUNT, 1, [Define if you have the popcount function.])
2991   ],
2992   POPCOUNT_LO="popcount.lo")
2993 AC_SUBST(POPCOUNT_LO)
2994
2995 AC_CHECK_FUNCS(getprotobynumber)
2996 AC_CHECK_FUNCS(issetugid)
2997 AC_CHECK_FUNCS(sysconf)
2998
2999 dnl blank for now, but will be used in future
3000 AC_SUBST(wireshark_SUBDIRS)
3001
3002 # Check Bluetooth SBC codec for RTP Player
3003 # git://git.kernel.org/pub/scm/bluetooth/sbc.git
3004 AC_ARG_WITH([sbc],
3005   AC_HELP_STRING( [--with-sbc=@<:@yes/no@:>@],
3006                   [use SBC codec to play Bluetooth A2DP stream @<:@default=yes, if available@:>@]),
3007   with_sbc="$withval"; want_sbc="yes", with_sbc="yes")
3008
3009 PKG_CHECK_MODULES(SBC, sbc >= 1.0, [have_sbc=yes], [have_sbc=no])
3010 if test "x$with_sbc" != "xno"; then
3011     if (test "${have_sbc}" = "yes"); then
3012         AC_DEFINE(HAVE_SBC, 1, [Define to support playing SBC by standalone BlueZ SBC library])
3013     elif test "x$want_sbc" = "xyes"; then
3014         # Error out if the user explicitly requested the sbc library
3015         AC_MSG_ERROR([SBC codec library was requested, but is not available])
3016     fi
3017 else
3018     have_sbc=no
3019 fi
3020
3021 dnl
3022 dnl check whether plugins should be enabled and, if they should be,
3023 dnl check for plugins directory - stolen from Amanda's configure.ac
3024 dnl
3025 dnl we don't wish to expand ${libdir} yet
3026 plugindir='${libdir}/wireshark/plugins/${VERSION}'
3027 AC_ARG_WITH(plugins,
3028   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
3029                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
3030 [
3031   if test "x$withval" = "xno"; then
3032     have_plugins=no
3033   elif test "x$have_plugins" = "xno"; then
3034       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
3035   elif test "x$withval" != "xyes"; then
3036       plugindir="$withval"
3037   fi
3038 ])
3039 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
3040 if test x$have_plugins = xyes
3041 then
3042   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
3043 fi
3044 AC_SUBST(plugindir)
3045 CPPFLAGS="$CPPFLAGS '-DPLUGIN_INSTALL_DIR=\"\$(plugindir)\"'"
3046
3047 #
3048 # The plugin dissectors reside in ./plugins/PROTO/
3049 #
3050 PLUGIN_LIBS=""
3051 AC_SUBST(PLUGIN_LIBS)
3052
3053
3054 dnl Use extcap by default
3055 extcapdir='${datadir}/wireshark/extcap/'
3056 AC_ARG_WITH(extcap,
3057   AC_HELP_STRING( [--with-extcap@<:@=DIR@:>@],
3058                   [use extcap for external capture sources (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
3059 [
3060   if test "x$withval" = "xno"; then
3061       have_extcap=no
3062   elif test "x$withval" = "xyes"; then
3063       have_extcap=yes
3064   elif test "x$withval" != "xyes"; then
3065       have_extcap=yes
3066       extcapdir ="$withval"
3067   fi
3068 ],[
3069     have_extcap=yes
3070 ])
3071 AM_CONDITIONAL(HAVE_EXTCAP, test "x$have_extcap" = "xyes")
3072 if test "x$have_extcap" = "xyes"
3073 then
3074   AC_DEFINE(HAVE_EXTCAP, 1, [Define if external capture sources should be enabled])
3075   AC_DEFINE_UNQUOTED(EXTCAP_DIR,"$extcapdir", [Directory for extcap plugins])
3076 fi
3077 AC_SUBST(extcapdir)
3078
3079 if test "x$enable_sshdump" = "xyes" ; then
3080         if  test "x$have_good_libssh" = "xyes" ; then
3081                 sshdump_bin="sshdump\$(EXEEXT)"
3082                 sshdump_man="sshdump.1"
3083         else
3084                 echo "Can't find libssh. Disabling sshdump."
3085                 enable_sshdump=no
3086                 sshdump_bin=""
3087                 sshdump_man=""
3088         fi
3089 else
3090         sshdump_bin=""
3091         sshdump_man=""
3092 fi
3093 AC_SUBST(sshdump_bin)
3094 AC_SUBST(sshdump_man)
3095
3096 dnl libtool defs
3097 #
3098 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
3099 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
3100 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
3101 #
3102 # With older version(s) of those tool(s), however, it's not just an
3103 # alias, and the configure scripts don't work without it.
3104 #
3105 AM_PROG_LIBTOOL
3106 AC_SUBST(LIBTOOL_DEPS)
3107
3108 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
3109 if test x$enable_static = xyes -a x$have_plugins = xyes
3110 then
3111   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
3112 fi
3113 AC_SUBST(ENABLE_STATIC)
3114
3115 # Gather which GUI we're building for rpmbuild
3116 if test "x$have_gtk" = "xyes"; then
3117         if test "x$with_gtk3" = "xyes"; then
3118                 RPMBUILD_WITH_ARGS="--with gtk3 --without gtk2"
3119         else
3120                 RPMBUILD_WITH_ARGS="--without gtk3 --with gtk2"
3121         fi
3122 else
3123         RPMBUILD_WITH_ARGS="--without gtk2 --without gtk3"
3124 fi
3125 if test "x$have_qt" = "xyes" ; then
3126         if test "$qt_version" -eq "5"; then
3127                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with qt5"
3128         else
3129                 RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with qt"
3130         fi
3131 else
3132         RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without qt --without qt5"
3133 fi
3134 if test "x$have_lua" = "xyes" ; then
3135         RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --with lua"
3136 else
3137         RPMBUILD_WITH_ARGS="$RPMBUILD_WITH_ARGS --without lua"
3138 fi
3139 AC_SUBST(RPMBUILD_WITH_ARGS)
3140
3141 dnl Save the cacheable configure results to config.cache before recursing
3142 AC_CACHE_SAVE
3143
3144 sinclude(plugins/Custom.m4) dnl
3145 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
3146
3147 sinclude(asn1/Custom.m4) dnl
3148 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
3149
3150 AC_CONFIG_HEADERS(config.h)
3151 AC_OUTPUT(
3152   Makefile
3153   doxygen.cfg
3154   asn1/Makefile
3155   _CUSTOM_ASN1_AC_OUTPUT_
3156   asn1/acp133/Makefile
3157   asn1/acse/Makefile
3158   asn1/ansi_map/Makefile
3159   asn1/ansi_tcap/Makefile
3160   asn1/atn-cm/Makefile
3161   asn1/atn-cpdlc/Makefile
3162   asn1/atn-ulcs/Makefile
3163   asn1/c1222/Makefile
3164   asn1/camel/Makefile
3165   asn1/cdt/Makefile
3166   asn1/charging_ase/Makefile
3167   asn1/cmip/Makefile
3168   asn1/cmp/Makefile
3169   asn1/crmf/Makefile
3170   asn1/cms/Makefile
3171   asn1/credssp/Makefile
3172   asn1/dap/Makefile
3173   asn1/disp/Makefile
3174   asn1/dop/Makefile
3175   asn1/dsp/Makefile
3176   asn1/ess/Makefile
3177   asn1/ftam/Makefile
3178   asn1/goose/Makefile
3179   asn1/gprscdr/Makefile
3180   asn1/gsm_map/Makefile
3181   asn1/h225/Makefile
3182   asn1/h235/Makefile
3183   asn1/h245/Makefile
3184   asn1/h248/Makefile
3185   asn1/h282/Makefile
3186   asn1/h283/Makefile
3187   asn1/h323/Makefile
3188   asn1/h450/Makefile
3189   asn1/h450-ros/Makefile
3190   asn1/h460/Makefile
3191   asn1/h501/Makefile
3192   asn1/HI2Operations/Makefile
3193   asn1/hnbap/Makefile
3194   asn1/idmp/Makefile
3195   asn1/ilp/Makefile
3196   asn1/inap/Makefile
3197   asn1/isdn-sup/Makefile
3198   asn1/kerberos/Makefile
3199   asn1/lcsap/Makefile
3200   asn1/ldap/Makefile
3201   asn1/logotypecertextn/Makefile
3202   asn1/lpp/Makefile
3203   asn1/lppa/Makefile
3204   asn1/lppe/Makefile
3205   asn1/lte-rrc/Makefile
3206   asn1/m3ap/Makefile
3207   asn1/mms/Makefile
3208   asn1/mpeg-audio/Makefile
3209   asn1/mpeg-pes/Makefile
3210   asn1/nbap/Makefile
3211   asn1/ns_cert_exts/Makefile
3212   asn1/novell_pkis/Makefile
3213   asn1/ocsp/Makefile
3214   asn1/p1/Makefile
3215   asn1/p22/Makefile
3216   asn1/p7/Makefile
3217   asn1/p772/Makefile
3218   asn1/pcap/Makefile
3219   asn1/pkcs1/Makefile
3220   asn1/pkcs12/Makefile
3221   asn1/pkinit/Makefile
3222   asn1/pkixac/Makefile
3223   asn1/pkix1explicit/Makefile
3224   asn1/pkix1implicit/Makefile
3225   asn1/pkixproxy/Makefile
3226   asn1/pkixqualified/Makefile
3227   asn1/pkixtsp/Makefile
3228   asn1/pres/Makefile
3229   asn1/q932/Makefile
3230   asn1/q932-ros/Makefile
3231   asn1/qsig/Makefile
3232   asn1/ranap/Makefile
3233   asn1/rnsap/Makefile
3234   asn1/ros/Makefile
3235   asn1/rrc/Makefile
3236   asn1/rrlp/Makefile
3237   asn1/rtse/Makefile
3238   asn1/rua/Makefile
3239   asn1/s1ap/Makefile
3240   asn1/sabp/Makefile
3241   asn1/sbc-ap/Makefile
3242   asn1/smrse/Makefile
3243   asn1/snmp/Makefile
3244   asn1/spnego/Makefile
3245   asn1/sv/Makefile
3246   asn1/t124/Makefile
3247   asn1/t125/Makefile
3248   asn1/t38/Makefile
3249   asn1/tcap/Makefile
3250   asn1/tetra/Makefile
3251   asn1/ulp/Makefile
3252   asn1/wlancertextn/Makefile
3253   asn1/x2ap/Makefile
3254   asn1/x509af/Makefile
3255   asn1/x509ce/Makefile
3256   asn1/x509if/Makefile
3257   asn1/x509sat/Makefile
3258   asn1/x721/Makefile
3259   capchild/Makefile
3260   capchild/doxygen.cfg
3261   caputils/Makefile
3262   caputils/doxygen.cfg
3263   doc/Makefile
3264   docbook/Makefile
3265   epan/Makefile
3266   epan/compress/Makefile
3267   epan/crypt/Makefile
3268   epan/doxygen.cfg
3269   epan/dfilter/Makefile
3270   epan/dissectors/Makefile
3271   epan/dissectors/dcerpc/Makefile
3272   epan/dissectors/pidl/Makefile
3273   epan/ftypes/Makefile
3274   epan/nghttp2/Makefile
3275   epan/wmem/Makefile
3276   epan/wslua/Makefile
3277   codecs/Makefile
3278   ui/Makefile
3279   ui/doxygen.cfg
3280   ui/gtk/Makefile
3281   ui/gtk/doxygen.cfg
3282   ui/cli/Makefile
3283   ui/qt/Makefile
3284   ui/qt/doxygen.cfg
3285   help/Makefile
3286   packaging/Makefile
3287   packaging/macosx/Info.plist
3288   packaging/macosx/Makefile
3289   packaging/macosx/osx-dmg.sh
3290   packaging/macosx/Wireshark_package.pmdoc/index.xml
3291   packaging/nsis/Makefile
3292   packaging/rpm/Makefile
3293   packaging/rpm/SPECS/Makefile
3294   packaging/rpm/SPECS/wireshark.spec
3295   packaging/svr4/Makefile
3296   packaging/svr4/checkinstall
3297   packaging/svr4/pkginfo
3298   plugins/Makefile
3299   plugins/docsis/Makefile
3300   plugins/easy_codec/Makefile
3301   plugins/ethercat/Makefile
3302   plugins/gryphon/Makefile
3303   plugins/irda/Makefile
3304   plugins/m2m/Makefile
3305   plugins/mate/Makefile
3306   plugins/opcua/Makefile
3307   plugins/profinet/Makefile
3308   plugins/stats_tree/Makefile
3309   plugins/unistim/Makefile
3310   plugins/wimax/Makefile
3311   plugins/wimaxasncp/Makefile
3312   plugins/wimaxmacphy/Makefile
3313   tools/Makefile
3314   tools/lemon/Makefile
3315   wiretap/Makefile
3316   wsutil/Makefile
3317   echld/Makefile
3318   _CUSTOM_AC_OUTPUT_
3319   ,)
3320 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
3321
3322
3323 # Pretty messages
3324
3325 if test "x$have_gtk" = "xyes"; then
3326         if test "x$with_gtk3" = "xyes"; then
3327                 gtk_lib_message=" (with GTK+ 3"
3328         else
3329                 gtk_lib_message=" (with GTK+ 2"
3330         fi
3331         if test "x$have_ige_mac" = "xyes"; then
3332                 gtk_lib_message="$gtk_lib_message and OS X integration)"
3333         else
3334                 gtk_lib_message="$gtk_lib_message)"
3335         fi
3336 fi
3337
3338 if test "x$have_qt" = "xyes" ; then
3339         enable_wireshark_qt="yes"
3340         qt_lib_message=" (with Qt $qt_version)"
3341 else
3342         enable_wireshark_qt="no"
3343 fi
3344
3345 if test "x$enable_setcap_install" = "xyes" ; then
3346         setcap_message="yes"
3347 else
3348         setcap_message="no"
3349 fi
3350
3351 if test "x$enable_setuid_install" = "xyes" ; then
3352         setuid_message="yes"
3353 else
3354         setuid_message="no"
3355 fi
3356
3357 if test "x$DUMPCAP_GROUP" = "x" ; then
3358         dumpcap_group_message="(none)"
3359 else
3360         dumpcap_group_message="$DUMPCAP_GROUP"
3361 fi
3362
3363 if test "x$want_zlib" = "xno" ; then
3364         zlib_message="no"
3365 else
3366         zlib_message="yes"
3367 fi
3368
3369 if test "x$have_lua" = "xyes" ; then
3370         lua_message="yes"
3371 else
3372         lua_message="no"
3373 fi
3374
3375 if test "x$have_qt_multimedia_lib" = "xyes" ; then
3376         qt_multimedia_message="yes"
3377 else
3378         qt_multimedia_message="no"
3379 fi
3380
3381 if test "x$want_portaudio" = "xyes" ; then
3382         portaudio_message="yes"
3383 else
3384         portaudio_message="no"
3385 fi
3386
3387 if test "x$want_ssl" = "xno" ; then
3388         ssl_message="no"
3389 else
3390         ssl_message="yes"
3391 fi
3392
3393 if test "x$want_krb5" = "xno" ; then
3394         krb5_message="no"
3395 else
3396         krb5_message="yes ($ac_krb5_version)"
3397 fi
3398
3399 if test "x$have_good_c_ares" = "xyes" ; then
3400         c_ares_message="yes"
3401 else
3402         c_ares_message="no"
3403 fi
3404
3405 if test "x$have_good_adns" = "xyes" ; then
3406         adns_message="yes"
3407 else
3408         if test "x$have_good_c_ares" = "xyes" ; then
3409                 adns_message="no (using c-ares instead)"
3410         else
3411                 adns_message="no"
3412         fi
3413 fi
3414
3415 if test "x$have_good_libcap" = "xyes" ; then
3416         libcap_message="yes"
3417 else
3418         libcap_message="no"
3419 fi
3420
3421 if test "x$have_good_geoip" = "xyes" ; then
3422         geoip_message="yes"
3423 else
3424         geoip_message="no"
3425 fi
3426
3427 if test "x$have_good_libssh" = "xyes" ; then
3428         libssh_message="yes"
3429 else
3430         libssh_message="no"
3431 fi
3432
3433 if test "x$have_ssh_userauth_agent" = "xyes" ; then
3434         ssh_userauth_agent_message="yes"
3435 else
3436         ssh_userauth_agent_message="no"
3437 fi
3438
3439 echo ""
3440 echo "The Wireshark package has been configured with the following options."
3441 echo "                    Build wireshark : $enable_wireshark_qt$qt_lib_message"
3442 echo "                Build wireshark-gtk : $have_gtk""$gtk_lib_message"
3443 echo "                       Build tshark : $enable_tshark"
3444 echo "                      Build tfshark : $enable_tfshark"
3445 echo "                     Build capinfos : $enable_capinfos"
3446 echo "                      Build captype : $enable_captype"
3447 echo "                      Build editcap : $enable_editcap"
3448 echo "                      Build dumpcap : $enable_dumpcap"
3449 echo "                     Build mergecap : $enable_mergecap"
3450 echo "                   Build reordercap : $enable_reordercap"
3451 echo "                    Build text2pcap : $enable_text2pcap"
3452 echo "                      Build randpkt : $enable_randpkt"
3453 echo "                       Build dftest : $enable_dftest"
3454 echo "                     Build rawshark : $enable_rawshark"
3455 echo "                  Build androiddump : $enable_androiddump"
3456 echo "                      Build sshdump : $enable_sshdump"
3457 echo "                        Build echld : $have_echld"
3458 echo ""
3459 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
3460 echo "  Install dumpcap with capabilities : $setcap_message"
3461 echo "             Install dumpcap setuid : $setuid_message"
3462 echo "                  Use dumpcap group : $dumpcap_group_message"
3463 echo "                        Use plugins : $have_plugins"
3464 echo "       Use external capture sources : $have_extcap"
3465 echo "                    Use Lua library : $lua_message"
3466 echo "                Build Qt RTP player : $qt_multimedia_message"
3467 echo "              Build GTK+ RTP player : $portaudio_message"
3468 echo "             Build profile binaries : $enable_profile_build"
3469 echo "                   Use pcap library : $want_pcap"
3470 echo "                   Use zlib library : $zlib_message"
3471 echo "               Use kerberos library : $krb5_message"
3472 echo "                 Use c-ares library : $c_ares_message"
3473 echo "               Use GNU ADNS library : $adns_message"
3474 echo "                Use SMI MIB library : $libsmi_message"
3475 echo "             Use GNU crypto library : $gcrypt_message"
3476 echo "             Use SSL crypto library : $ssl_message"
3477 echo "                 Use gnutls library : $tls_message"
3478 echo "     Use POSIX capabilities library : $libcap_message"
3479 echo "                  Use GeoIP library : $geoip_message"
3480 echo "                 Use libssh library : $libssh_message"
3481 echo "            Have ssh_userauth_agent : $ssh_userauth_agent_message"
3482 echo "                     Use nl library : $libnl_message"
3483 echo "              Use SBC codec library : $have_sbc"
3484 #echo "                      Use GResource : $have_gresource"