Add some comments describing what programs are being checked for.
[metze/wireshark/wip.git] / configure.ac
1 # $Id$
2 #
3
4 m4_define([version_major], [1])
5 m4_define([version_minor], [11])
6 m4_define([version_micro], [0])
7 m4_define([version_micro_extra], version_micro)
8 m4_append([version_micro_extra], [])
9
10 AC_INIT(wireshark, [version_major.version_minor.version_micro_extra], http://bugs.wireshark.org/, , http://www.wireshark.org/)
11
12 # Minimum autoconf version we require.
13 AC_PREREQ(2.60)
14 # Variable expansion doesn't work in AC_PREREQ()
15 AC_MIN_VERSION=2.60
16 AC_SUBST(AC_MIN_VERSION)
17
18 dnl Check for CPU / vendor / OS
19 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
20 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
21 dnl needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
22 dnl macros.
23 dnl
24 dnl As nothing in the Wireshark is itself a build tool (we are not,
25 dnl for example, a compiler that generates machine code), we probably
26 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
27 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
28 dnl AC_CANONICAL_HOST - instead.  Note that we do have tools, such as
29 dnl lemon, that need to be built for the build machine, not for the
30 dnl host machine, so we might need both.
31 dnl
32 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
33
34 dnl AC_CANONICAL_BUILD
35 dnl AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
37
38 AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip])
39
40 # Make Wireshark's version available in config.h
41 AC_DEFINE(VERSION_MAJOR, version_major, [Wireshark's major version])
42 AC_DEFINE(VERSION_MINOR, version_minor, [Wireshark's minor version])
43 AC_DEFINE(VERSION_MICRO, version_micro, [Wireshark's micro version])
44
45 AM_DISABLE_STATIC
46
47 #
48 # Checks for programs used in the main build process.
49 #
50 AC_PROG_CC
51 AM_PROG_CC_C_O
52 AC_PROG_CXX
53 AC_PROG_CPP
54 dnl Work around libtool bug (fixed in the version 1.5a?)
55 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
56 AC_LIBTOOL_DLOPEN
57 AC_PROG_LIBTOOL
58 AC_PATH_PROG(PERL, perl)
59
60 # Check for Python.
61 AC_PATH_PROG(PYTHON, python)
62 if test ! -z "$PYTHON"; then
63         #
64         # OK, we found Python; is it Python 2.x?
65         # Note: we don't use named components for sys.version_info to get
66         # the major version number, as named components for version_info
67         # were apparently introduced in Python 2.7.
68         #
69         AC_MSG_CHECKING([whether $PYTHON is Python 2])
70         python_major_version=`$PYTHON -c 'import sys; print sys.version_info[[0]]'`
71         if test "$python_major_version" = 2; then
72                 AC_MSG_RESULT([yes])
73         else
74                 #
75                 # It's not 2.x.
76                 #
77                 AC_MSG_RESULT([no])
78
79                 #
80                 # Try looking for python2; if we find it, we assume it's
81                 # Python 2
82                 #
83                 AC_PATH_PROG(PYTHON, python2)
84         fi
85 fi
86
87 #
88 # XXX - should autogen.sh check for YACC/Bison and Flex?  A user building
89 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
90 # as the tarball should contain the results of running YACC/Bison on .y
91 # files and running Flex on .l files, but a user building from SVN
92 # will have to run YACC/Bison and Flex to process those files.
93 #
94 # On the other hand, what about users who use a distribution tarball to
95 # do development?  They *shouldn't* - that's what the SVN repository is
96 # for - but they might.  They'd get errors if they modify a .y or .l
97 # file and try to do a build - but the error should tell them that they
98 # need to get YACC/Bison and/or Flex.
99 #
100 # Then again, getting them shouldn't be too big of a burden.
101 #
102 # XXX - is the same true of pod2man and pod2html, or are they needed
103 # even when building from a distribution tarball?
104 #
105 #
106 AC_PROG_YACC
107 AC_PATH_PROG(YACCDUMMY, $YACC)
108 if test "x$YACCDUMMY" = x
109 then
110         AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
111 fi
112 AM_PROG_LEX
113 AC_PATH_PROG(LEX, flex)
114 if test "x$LEX" = x
115 then
116         AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
117 fi
118 AC_PATH_PROG(POD2MAN, pod2man)
119 if test "x$POD2MAN" = x
120 then
121         #
122         # The alternative is not to build the man pages....
123         #
124         AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
125 fi
126 AC_PATH_PROG(POD2HTML, pod2html)
127 if test "x$POD2HTML" = x
128 then
129         #
130         # The alternative is not to build the HTML man pages....
131         #
132         AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
133 fi
134
135 #
136 # XXX - this looks for various HTML viewers on the host, not the target;
137 # we really want to know what's available on the target, for cross-builds.
138 # That would probably require us to, at run time, look for xdg-open and,
139 # if we don't find it, look for mozilla, htmlview, etc.
140 #
141 AC_PATH_PROG(HTML_VIEWER, xdg-open)
142 if test "x$HTML_VIEWER" != x
143 then
144         #
145         # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
146         # Define some variable to be that, so we just run that?
147         #
148         AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
149
150         #
151         # XXX - we have to define HTML_VIEWER for the prefs.c code that
152         # sets the default value of the Web browser preference, even
153         # though that preference won't be offered.
154         #
155         AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
156 else
157         AC_PATH_PROG(HTML_VIEWER, htmlview)
158         if test "x$HTML_VIEWER" = x
159         then
160                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
161         else
162                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
163         fi
164 fi
165
166 #
167 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
168 # flags such as -pedantic, -W warning flags and -f feature flags.  Currently,
169 # we assume GCC and clang do; other compilers should be added here.
170 #
171 # This is done to avoid getting tripped up by compilers that support
172 # those flags but give them a different meaning.
173 #
174 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
175         ac_supports_gcc_flags=yes
176 fi
177
178 #
179 # Set "ac_supports_W_linker_passthrough" if the compiler is known to
180 # support "-Wl,{options}" to pass options through to the linker.
181 # Currently, we assume GCC, xlc, and clang do; other compilers should
182 # be added here.
183 #
184 if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then
185         ac_supports_W_linker_passthrough=yes
186 fi
187
188 #
189 # Set "ac_supports_attribute_unused" if the compiler is known to
190 # support "__attribute__(unused)".
191 # Currently, we assume GCC and clang do; other compilers should
192 # be added here.
193 #
194 # XXX - do this with a compiler test?
195 #
196 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
197         ac_supports_W_linker_passthrough=yes
198 fi
199
200 if test "x$CC_FOR_BUILD" = x
201 then
202        CC_FOR_BUILD=$CC
203 fi
204 AC_SUBST(CC_FOR_BUILD)
205 AC_SUBST(CFLAGS_FOR_BUILD)
206
207 # Check for doxygen
208 AC_PATH_PROG(DOXYGEN, doxygen)
209 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
210 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
211
212 #
213 # Check for pkg-config and set PKG_CONFIG accordingly.
214 #
215 # This is referenced via AC_REQUIRE([PKG_PROG_PKG_CONFIG] in some macros
216 # like PKG_CHECK_MODULES. If the first call to such a macro is under an
217 # "if" statement, it's safer to call PKG_PROG_PKG_CONFIG directly, see
218 # the comments in acolocal.m4
219 #
220 PKG_PROG_PKG_CONFIG
221
222 #
223 # Try to arrange for large file support.
224 #
225 AC_SYS_LARGEFILE
226
227 # GnuTLS
228 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+, then switched back to
229 # LGPLv2.1+ in version 3.1.10
230 tls_message="no"
231 AC_ARG_WITH([gnutls],
232   AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
233                   [use GnuTLS library @<:@default=yes@:>@]),
234   with_gnutls="$withval", with_gnutls="yes")
235 if test "x$with_gnutls" = "xyes"; then
236   have_license_compatible_gnutls="no"
237   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.1.10 ],
238     [ have_license_compatible_gnutls="yes" ], [ echo "GnuTLS >= 3.1.10 not found " ]
239   )
240
241   if test "x$have_license_compatible_gnutls" != "xyes"; then
242     PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0 gnutls < 3],
243       [ have_license_compatible_gnutls="yes" ] , [ echo "GnuTLS >= 1.2.0, < 3.0 not found " ]
244     )
245   fi
246
247   if test "x$have_license_compatible_gnutls" = "xyes"; then
248     echo "GnuTLS found, enabling SSL decryption"
249     AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
250     tls_message="yes"
251   else
252     echo "GnuTLS with compatible license not found, disabling SSL decryption"
253     tls_message="no"
254   fi
255 fi
256
257 # libgrypt
258 gcrypt_message="no"
259 AC_ARG_WITH([gcrypt],
260   AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
261                   [use gcrypt library @<:@default=yes@:>@]),
262   with_gcrypt="$withval", with_gcrypt="yes")
263 if test "x$with_gcrypt" = "xyes"; then
264   AM_PATH_LIBGCRYPT(1.1.92,
265         [
266                 echo "libgcrypt found, enabling ipsec decryption"
267                 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
268                 gcrypt_message="yes"
269         ]
270         , [
271                 if test x$libgcrypt_config_prefix != x ; then
272                         AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
273                 else
274                         echo "libgcrypt not found, disabling ipsec decryption"
275                         gcrypt_message="no"
276                 fi
277         ]
278   )
279 fi
280
281 AC_ARG_WITH([qt],
282   AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@],
283                   [use Qt instead of GTK+ @<:@default=no@:>@]),
284   with_qt="$withval", with_qt="no")
285
286 AC_ARG_WITH(libnl,
287   AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
288                  [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
289 [
290         if test "x$withval" = "xno"
291         then
292                 want_libnl=no
293         elif test "x$withval" = "xyes"
294         then
295                 want_libnl=yes
296                 libnl_version=any
297         elif test "x$withval" = "x1"
298         then
299                 want_libnl=yes
300                 libnl_version=1
301         elif test "x$withval" = "x2"
302         then
303                 want_libnl=yes
304                 libnl_version=2
305         elif test "x$withval" = "x3"
306         then
307                 want_libnl=yes
308                 libnl_version=3
309         else
310                 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
311         fi
312 ],[
313         #
314         # Use libnl if it's present, otherwise don't.
315         #
316         want_libnl=ifavailable
317         libnl_version=any
318 ])
319 #
320 # Libnl is Linux-specific.
321 #
322 libnl_message="no"
323 case "$host_os" in
324 linux*)
325         AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
326
327         if test x$want_libnl = "xno"; then
328                 AC_MSG_RESULT(no)
329         else
330                 AC_MSG_RESULT(yes)
331                 #
332                 # Test for specific libnl versions only if no version
333                 # was specified by the user or if the version in question
334                 # was requested by the user.
335                 #
336                 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
337                         PKG_CHECK_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
338                 fi
339                 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
340                         PKG_CHECK_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
341                 fi
342                 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
343                         PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
344                 fi
345                 if (test "${have_libnl3}" = "yes"); then
346                         CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
347                         LIBS="$LIBS $LIBNL3_LIBS"
348                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
349                         AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
350                         libnl_message="yes (v3)"
351                         enable_airpcap=no
352                 elif (test "${have_libnl2}" = "yes"); then
353                         CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
354                         LIBS="$LIBS $LIBNL2_LIBS"
355                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
356                         AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
357                         libnl_message="yes (v2)"
358                         enable_airpcap=no
359                 elif (test "${have_libnl1}" = "yes"); then
360                         CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
361                         LIBS="$LIBS $LIBNL1_LIBS"
362                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
363                         AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
364                         libnl_message="yes (v1)"
365                         enable_airpcap=no
366                 else
367                         if test x$want_libnl = "xyes"; then
368                                 case "$libnl_version" in
369
370                                 any)
371                                         AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
372                                         ;;
373
374                                 *)
375                                         AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
376                                         ;;
377                                 esac
378                         fi
379                 fi
380         fi
381
382         AC_MSG_CHECKING([if nl80211.h is new enough])
383           AC_TRY_COMPILE([#include <linux/nl80211.h>],
384             [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
385                 x = NL80211_ATTR_SUPPORTED_IFTYPES;
386                 x = NL80211_ATTR_SUPPORTED_COMMANDS;
387                 x = NL80211_ATTR_WIPHY_FREQ;
388                 x = NL80211_CHAN_NO_HT;],
389             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
390             [AC_MSG_RESULT(no)])
391
392         AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
393           AC_TRY_COMPILE([#include <linux/nl80211.h>],
394             [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
395             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
396             [AC_MSG_RESULT(no)])
397         ;;
398
399 *)
400         if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
401                 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
402         fi
403 esac
404
405 AC_ARG_WITH([gtk3],
406   AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
407                   [use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]),
408   with_gtk3="$withval", with_gtk3="no")
409
410 # libsmi
411 # FIXME: currently the path argument to with-libsmi is being ignored
412 AX_LIBSMI
413
414 #
415 # Check for programs used when building DocBook documentation.
416 #
417
418 # Check for a2x (convert asciidoc to another format)
419 AC_PATH_PROG(A2X, a2x)
420 AC_CHECK_PROG(HAVE_A2X, a2x, "yes", "no")
421 AM_CONDITIONAL(HAVE_A2X, test x$HAVE_A2X = xyes)
422
423 # Want to control a tape drive? Use mt. Want to convert HTML to text?
424 # Uhhhhh... elinks? lynx? w3m? pandoc? html2text?
425 AC_PATH_PROG(ELINKS, elinks)
426 AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no")
427 AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes)
428
429 # Check for fop (translate .fo to e.g. pdf)
430 AC_PATH_PROG(FOP, fop)
431 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
432 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
433
434 # Check for lynx (html -> text)
435 AC_PATH_PROG(LYNX, lynx)
436 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
437 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
438
439 # Check for w3m (html -> text)
440 AC_PATH_PROG(W3M, w3m)
441 AC_CHECK_PROG(HAVE_W3M, w3m, "yes", "no")
442 AM_CONDITIONAL(HAVE_W3M, test x$HAVE_W3M = xyes)
443
444 # Check for xmllint
445 AC_PATH_PROG(XMLLINT, xmllint)
446 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
447 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
448
449 # Check for xsltproc
450 AC_PATH_PROG(XSLTPROC, xsltproc)
451 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
452 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
453
454
455 # Check for packaging utilities
456 # For now, we check to see if the various packaging utilites are in our
457 # path.  I'm too lazy to write code to go hunt for them.  -  Gerald
458
459 #
460 # Source packages.
461 # (Lets you install the desktop files.)
462 #
463 AC_PATH_PROG(DESKTOP_FILE_INSTALL, desktop-file-install)
464
465 # SVR4/Solaris
466 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
467 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
468 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
469
470 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
471      -a x$HAVE_PKGTRANS = xyes ; then
472   HAVE_SVR4_PACKAGING=yes
473 else
474   HAVE_SVR4_PACKAGING=no
475 fi
476 AC_SUBST(HAVE_SVR4_PACKAGING)
477
478 # RPM
479 AC_WIRESHARK_RPM_CHECK
480 AC_SUBST(HAVE_RPM)
481
482 # Debian
483 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
484
485 # Mac OS X
486 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
487 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
488 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
489
490 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
491      -a x$HAVE_BLESS = xyes ; then
492   HAVE_OSX_PACKAGING=yes
493 else
494   HAVE_OSX_PACKAGING=no
495 fi
496 AC_SUBST(HAVE_OSX_PACKAGING)
497
498 #
499 # Try to add some additional gcc checks to CFLAGS
500 #
501 AC_ARG_ENABLE(extra-gcc-checks,
502   AC_HELP_STRING( [--enable-extra-gcc-checks],
503                   [do additional -W checks in GCC @<:@default=no@:>@]),
504 [
505         wireshark_extra_gcc_flags=$enableval
506         if test $enableval != no
507         then
508                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-pedantic)
509                 #
510                 # Various code blocks this one.
511                 #
512                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Woverflow)
513                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
514                 #
515                 # Some memset() calls to clear out structures
516                 # on the stack are getting flagged as "will never
517                 # be executed" by this, at least by Apple's
518                 # i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on
519                 # Apple Inc. build 5658) (LLVM build 2336.11.00), for
520                 # some unknown reason.
521                 #
522                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunreachable-code)
523                 #
524                 # Due to various places where APIs we don't control
525                 # require us to cast away constness, we can probably
526                 # never enable these ones with -Werror.
527                 #
528                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-qual)
529                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wbad-function-cast, C)
530                 #
531                 # Some generated ASN.1 dissectors block this one;
532                 # multiple function declarations for the same
533                 # function are being generated.
534                 #
535                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wredundant-decls)
536                 #
537                 # Some loops are safe, but it's hard to convince the
538                 # compiler of that.
539                 #
540                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunsafe-loop-optimizations)
541                 #
542                 # All the registration functions block these for now.
543                 #
544                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-prototypes)
545                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-declarations)
546         fi
547 ],)
548 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
549 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wextra) # -W is now known as -Wextra
550 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement, C)
551 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wendif-labels)
552 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpointer-arith)
553 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-pointer-sign, C)
554 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds)
555 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-align)
556 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security)
557 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wold-style-definition, C)
558 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshorten-64-to-32)
559 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wstrict-prototypes, C)
560 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wjump-misses-init, C)
561 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wvla)
562 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Waddress)
563 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds)
564 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wattributes)
565 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdiv-by-zero)
566 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wignored-qualifiers)
567 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpragmas)
568 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-overlength-strings)
569 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wwrite-strings)
570 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-long-long)
571 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wc++-compat, C)
572
573 #
574 # XXX - OK for C++?
575 #
576 # Make sure -Wshadow doesn't complain about variables in function and
577 # function pointer declarations shadowing other variables; if not, don't
578 # turn it on, as some versions of GCC (including the one in at least
579 # some Xcode versions that came with Mac OS X 10.5) complain about
580 # that.
581 #
582 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshadow, C,
583   [
584 extern int bar(int a);
585 extern int foo(int);
586
587 int
588 foo(int a)
589 {
590         int (*fptr)(int a) = bar;
591
592         return fptr(a) * 2;
593 }
594   ],
595   [warns about variables in function declarations shadowing other variables])
596
597 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
598 # is given a constant string.
599 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
600 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wlogical-op, C,
601   [
602 #include <string.h>
603
604 int foo(const char *, int);
605 int bar(void);
606
607 int
608 foo(const char *sep, int c)
609 {
610         if (strchr (sep, c) != NULL)
611                 return 1;
612         else
613                 return 0;
614 }
615
616 int
617 bar(void)
618 {
619         return foo("<", 'a');
620 }
621   ],
622   [generates warnings from strchr()])
623
624
625 ## AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-error=unused-but-set-variable)
626
627 #
628 # Use the faster pre gcc 4.5 floating point precision if available;
629 # clang doesn't error out on -f options that it doesn't know about,
630 # it just warns and ignores them, so this check doesn't cause us
631 # to omit -fexcess-precision=fast, which produces a pile of
632 # annoying warnings.
633 #
634 if test "x$CC" != "xclang" ; then
635   AC_WIRESHARK_GCC_CFLAGS_CHECK(-fexcess-precision=fast)
636 fi
637
638 CFLAGS_before_fvhidden=$CFLAGS
639 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fvisibility=hidden)
640 if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden"
641 then
642         # TODO add other ways of hiding symbols
643         AC_MSG_WARN(Compiler will export all symbols from shared libraries)
644 fi
645
646 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
647 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
648 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
649 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
650 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
651 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
652
653 #
654 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
655 # so that we can build dumpcap PIE - it may run with elevated
656 # privileges, and using PIE means the OS can run it at random locations
657 # in the address space to make attacks more difficult.
658 #
659 CFLAGS_before_pie=$CFLAGS
660 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fPIE, C)
661 if test "x$CLFAGS" != "x$CFLAGS_before_pie"
662 then
663         # Restore CFLAGS
664         CFLAGS=$CFLAGS_before_pie
665
666         LDFLAGS_before_pie=$LDFLAGS
667         AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
668         if test "x$LDFLAGS" != "x$LDFLAGS_before_pie"
669         then
670                 # We can use PIE
671                 PIE_CFLAGS="-fPIE"
672                 PIE_LDFLAGS="-pie"
673
674                 # Restore LDFLAGS
675                 LDFLAGS=$LDFLAGS_before_pie
676         fi
677
678 fi
679 AC_SUBST(PIE_CFLAGS)
680 AC_SUBST(PIE_LDFLAGS)
681
682 #
683 # If we're running GCC or clang define _U_ to be "__attribute__((unused))"
684 # so we can use _U_ to flag unused function parameters and not get warnings
685 # about them. Otherwise, define _U_ to be an empty string so that _U_ used
686 # to flag an unused function parameters will compile with other compilers.
687 #
688 # XXX - similar hints for other compilers?
689 #
690 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
691   AC_DEFINE(_U_, __attribute__((unused)), [Hint to the compiler that a function parameters is not used])
692 else
693   AC_DEFINE(_U_, , [Hint to the compiler that a function parameters is not used])
694 fi
695
696 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
697 #  (only if the GCC 'optimization level' > 0).
698 #
699 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
700 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
701 #
702 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
703 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
704
705 #
706 # If the compiler supports GCC-style flags, enable a barrier "stop on
707 # warning".
708 # This barrier is set for a very large part of the code. However, it is
709 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
710 #
711 warnings_as_errors_default="yes"
712 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
713 AC_ARG_ENABLE(warnings-as-errors,
714   AC_HELP_STRING( [--enable-warnings-as-errors],
715                   [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra warnings are enabled@:>@]),
716 [
717   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
718     with_warnings_as_errors="yes"
719     AC_MSG_RESULT(yes)
720   else
721     with_warnings_as_errors="no"
722     AC_MSG_RESULT(no)
723   fi
724 ],
725 [
726   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
727     with_warnings_as_errors="yes"
728     AC_MSG_RESULT(yes)
729   else
730     with_warnings_as_errors="no"
731     AC_MSG_RESULT(no)
732   fi
733 ]
734 )
735 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
736
737 #
738 # Add any platform-specific compiler flags needed.
739 #
740 AC_MSG_CHECKING(for platform-specific compiler flags)
741 if test "x$GCC" = "xyes" ; then
742         #
743         # GCC - do any platform-specific tweaking necessary.
744         #
745         case "$host_os" in
746         solaris*)
747                 # the X11 headers don't automatically include prototype info
748                 # and a lot don't include the return type
749                 CPPFLAGS="$CPPFLAGS -DFUNCPROTO=15"
750                 CFLAGS="$CFLAGS -Wno-return-type"
751                 CXXFLAGS="$CXXFLAGS -Wno-return-type"
752                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
753                 ;;
754         *)
755                 AC_MSG_RESULT(none needed)
756                 ;;
757         esac
758 else
759         #
760         # Not GCC - assume it's the vendor's compiler.
761         #
762         case "$host_os" in
763         hpux*)
764                 #
765                 # HP's ANSI C compiler; flags suggested by Jost Martin.
766                 # "-Ae" for ANSI C plus extensions such as "long long".
767                 # "+O2", for optimization.  XXX - works with "-g"?
768                 #
769                 # HP's ANSI C++ compiler doesn't support "-Ae", but
770                 # does support "+O2", at least according to the
771                 # documentation I can find online.
772                 #
773                 CFLAGS="-Ae +O2 $CFLAGS"
774                 CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
775                 CXXFLAGS="+O2 $CFLAGS"
776                 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
777                 ;;
778         *)
779                 AC_MSG_RESULT(none needed)
780                 ;;
781         esac
782 fi
783
784 #
785 # Add any platform-specific linker flags needed.
786 #
787 AC_MSG_CHECKING(for platform-specific linker flags)
788 case "$host_os" in
789 darwin*)
790         #
791         # Add -Wl,-single_module to the LDFLAGS used with shared
792         # libraries, to fix some error that show up in some cases;
793         # some Apple documentation recommends it for most shared
794         # libraries.
795         #
796         LDFLAGS_SHAREDLIB="-Wl,-single_module"
797         #
798         # Add -Wl,-search_paths_first to make sure that if we search
799         # directories A and B, in that order, for a given library, a
800         # non-shared version in directory A, rather than a shared
801         # version in directory B, is chosen (so we can use
802         # --with-pcap=/usr/local to force all programs to be linked
803         # with a static version installed in /usr/local/lib rather than
804         # the system version in /usr/lib).
805         #
806         LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
807         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first])
808         ;;
809 cygwin*)
810         #
811         # Shared libraries in cygwin/Win32 must never contain
812         # undefined symbols.
813         #
814         LDFLAGS="$LDFLAGS -no-undefined"
815         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
816         ;;
817 *)
818         AC_MSG_RESULT(none needed)
819         ;;
820 esac
821 AC_SUBST(LDFLAGS_SHAREDLIB)
822
823 # Enable silent builds by default
824 # Verbose builds can be enabled with "./configure
825 # --enable-silent-rules ..." or "make V=1 ..."
826 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
827   [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
828
829 #
830 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
831 # "just Darwin" (as we don't currently support iOS, and as I don't
832 # think you can build and run "just Darwin" as an OS for PCs), we
833 # arrange to build some programs with Application Services so they
834 # can launch Web browsers and Finder windows, arrange to build some
835 # programs with System Configuration so they can get "friendly names"
836 # and other information about interfaces, and build any programs that
837 # use either of those frameworks or that report version information
838 # with Core Foundation as the frameworks in question use it and as we
839 # get version information from plists and thus need Core Foundation
840 # to process those plists.
841 #
842 case "$host_os" in
843
844 darwin*)
845         AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
846         APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
847         SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
848         COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
849
850         #
851         # OK, so we have the OS X frameworks; do they include
852         # CFPropertyListCreateWithStream, or do we have
853         # to fall back on CFPropertyListCreateFromStream?
854         # (They only differ in the error return, which we
855         # don't care about.  And, no, we shouldn't just
856         # use CFPropertyListCreateFromStream, because it's
857         # deprecated in newer releases.)
858         #
859         ac_save_LIBS="$LIBS"
860         LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
861         AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
862         LIBS="$ac_save_LIBS"
863         ;;
864 esac
865 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
866 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
867 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
868
869 dnl Look in /usr/local for header files and libraries ?
870 dnl XXX FIXME don't include /usr/local if it is already in the system
871 dnl search path as this causes gcc 3.2 on Linux to complain about a change
872 dnl of the system search order for includes
873 AC_ARG_ENABLE(usr-local,
874   AC_HELP_STRING( [--enable-usr-local],
875                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
876     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
877
878 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
879 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
880         if test -d "/usr/local"; then
881                 AC_MSG_RESULT(yes)
882                 #
883                 # Arrange that we search for header files in the source directory
884                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
885                 # as various packages we use ("libpcap", "zlib", "adns")
886                 # may have been installed under "/usr/local/include".
887                 #
888                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
889
890                 #
891                 # Arrange that we search for libraries in "/usr/local/lib".
892                 #
893                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
894         else
895                 AC_MSG_RESULT(no)
896         fi
897 else
898         AC_MSG_RESULT(no)
899 fi
900
901 #
902 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
903 # link directory.
904 #
905 case "$host_os" in
906   solaris*)
907     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
908     if test x$LD_LIBRARY_PATH != x ; then
909       LIBS="$LIBS -R$LD_LIBRARY_PATH"
910       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
911     else
912       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
913     fi
914   ;;
915 esac
916
917 #
918 # Check for versions of "sed" inadequate to handle, in libtool, a list
919 # of object files as large as the list in Wireshark.
920 #
921 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
922 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
923 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
924 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
925 # is the only "sed" that comes with Solaris that can handle Wireshark.
926 #
927 # Add any checks here that are necessary for other OSes.
928 #
929 AC_WIRESHARK_GNU_SED_CHECK
930 if test "$HAVE_GNU_SED" = no ; then
931         case "$host_os" in
932         solaris*)
933                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
934                 case `which sed` in
935                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
936                         AC_MSG_RESULT(yes)
937                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
938                         ;;
939
940                         *)
941                         AC_MSG_RESULT(no)
942                         ;;
943                 esac
944                 ;;
945
946         *)
947                 :
948                 ;;
949         esac
950 fi
951
952 # Enable/disable wireshark
953
954 AC_ARG_ENABLE(wireshark,
955   AC_HELP_STRING( [--enable-wireshark],
956                   [build GTK+-based Wireshark @<:@default=yes, if GTK+ available@:>@]),
957     enable_wireshark=$enableval,enable_wireshark=yes)
958
959 AC_ARG_ENABLE(packet-editor,
960   AC_HELP_STRING( [--enable-packet-editor],
961                   [add support for packet editor in Wireshark @<:@default=no@:>@]),
962     enable_packet_editor=$enableval,enable_packet_editor=no)
963 if test x$enable_packet_editor = xyes; then
964         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
965 fi
966
967 AC_ARG_ENABLE(profile-build,
968   AC_HELP_STRING( [--enable-profile-build],
969                   [build profile-ready binaries @<:@default=no@:>@]),
970     enable_profile_build=$enableval,enable_profile_build=no)
971 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
972 AC_MSG_CHECKING(if profile builds must be generated)
973 if test "x$enable_profile_build" = "xyes" ; then
974         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
975                 AC_MSG_RESULT(yes)
976                 CFLAGS=" -pg $CFLAGS"
977                 CXXFLAGS=" -pg $CXXFLAGS"
978         else
979                 AC_MSG_RESULT(no)
980                 echo "Building profile binaries currently only supported for GCC and clang."
981         fi
982 else
983         AC_MSG_RESULT(no)
984 fi
985
986 # Create DATAFILE_DIR #define for config.h
987 datafiledir=$datadir/wireshark
988 datafiledir=`(
989     test "x$prefix" = xNONE && prefix=$ac_default_prefix
990     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
991     # Ugly hack, but I don't see how this problem can be solved
992     # properly that DATAFILE_DIR had a value starting with
993     # "${prefix}/" instead of e.g. "/usr/local/"
994     eval eval echo "$datafiledir"
995 )`
996 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
997
998 # Create DOC_DIR #define for config.h
999 docdir=`(
1000     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1001     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1002     # Ugly hack, but I don't see how this problem can be solved
1003     # properly that DOC_DIR had a value starting with
1004     # "${prefix}/" instead of e.g. "/usr/local/"
1005     eval eval echo "$docdir"
1006 )`
1007 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
1008
1009 GTK2_MIN_VERSION=2.12.0
1010 AC_SUBST(GTK2_MIN_VERSION)
1011 GTK3_MIN_VERSION=3.0.0
1012 AC_SUBST(GTK3_MIN_VERSION)
1013 QT_MIN_VERSION=4.6.0
1014 AC_SUBST(QT_MIN_VERSION)
1015 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1016 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1017 #
1018 # We only do those if we're going to be building Wireshark;
1019 # otherwise, we don't have any GUI to build, so we don't use
1020 # GTK+ or Qt.
1021 #
1022 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1023 # force all programs to be built with GTK+ or Qt.
1024 #
1025 # Release dates for GTK+ versions:
1026 # 2.12.0: 14 Sep 2007
1027 # 2.14.0: 04 Sep 2008
1028 # 2.16.0: 13 Mar 2009
1029 # 2.18.0: 23 Sep 2009
1030 # 2.20.0: 23 Mar 2010
1031 # 2.22.0: 23 Sep 2010
1032 # 2.24.0: 30 Jan 2011
1033 # 3.0.0:  10 Feb 2011
1034 # 3.2.0:  25 Sep 2011
1035 # 3.4.0:  26 Mar 2012
1036 # 3.6.0:  24 Sep 2012
1037 # 3.8.0:  25 Mar 2013
1038
1039 if test "x$enable_wireshark" = "xyes"; then
1040         if test "x$with_qt" = "xyes"; then
1041
1042                 AC_MSG_CHECKING(whether we have a working C++ compiler)
1043                 AC_LANG_PUSH([C++])
1044                 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
1045                         [AC_MSG_RESULT(yes)],
1046                         [
1047                          AC_MSG_RESULT(no)
1048                          AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1049                         ])
1050                 AC_LANG_POP([C++])
1051
1052                 AM_PATH_QT($QT_MIN_VERSION,
1053                 [
1054                         CFLAGS="$CFLAGS $Qt_CFLAGS"
1055                         CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1056                         have_qt=yes
1057                 ]
1058                 , [AC_MSG_ERROR([Qt is not available])])
1059
1060                 #
1061                 # XXX - greasy hack to make ui/gtk/recent.c
1062                 # compile.
1063                 #
1064                 CPPFLAGS="-DQT_GUI_LIB"
1065
1066                 #
1067                 # We don't know whether we have GTK+, but we
1068                 # won't be using it, so it's as if we don't
1069                 # have it.
1070                 #
1071                 have_gtk=no
1072         else
1073                 #
1074                 # Not Qt - either GTK+ 3.x or 2.x.
1075                 #
1076                 if test "x$with_gtk3" = "xyes"; then
1077                         AM_PATH_GTK_3_0(3.0.0,
1078                         [
1079                                 CFLAGS="$CFLAGS $GTK_CFLAGS"
1080                                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1081                                 have_gtk=yes
1082                                 AC_DEFINE(HAVE_GTK, 1,
1083                                     [Define to 1 if compiling with GTK])
1084                         ], have_gtk=no)
1085
1086                 else
1087                         AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1088                         [
1089                                 CFLAGS="$CFLAGS $GTK_CFLAGS"
1090                                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1091                                 have_gtk=yes
1092                                 AC_DEFINE(HAVE_GTK, 1,
1093                                     [Define to 1 if compiling with GTK])
1094                         ], have_gtk=no)
1095                 fi
1096         fi
1097 else
1098         have_qt=no
1099         have_gtk=no
1100 fi
1101
1102 GLIB_MIN_VERSION=2.14.0
1103 AC_SUBST(GLIB_MIN_VERSION)
1104 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1105 # support, as we need that for dynamically loading plugins.
1106 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1107 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1108 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1109 # GLIB_CFLAGS to CFLAGS.
1110 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1111 # set when generating the Makefile, so we can make programs that require
1112 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1113 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1114 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1115 # programs to be built with GLib.
1116 #
1117 # Release dates for GLib versions:
1118 # 2.14.0: 03 Aug 2007
1119 # 2.16.0: 10 Mar 2008
1120 # 2.18.0: 02 Sep 2008
1121 # 2.20.0: 13 Mar 2009
1122 # 2.22.0: 22 Sep 2009
1123 # 2.24.0: 28 Mar 2010
1124 # 2.26.0: 27 Sep 2010
1125 # 2.28.0: 08 Feb 2011
1126 # 2.30.0: 27 Sep 2011
1127 # 2.32.0: 24 Mar 2012
1128 # 2.34.0: 24 Sep 2012
1129 # 2.36.0: 25 Mar 2013
1130
1131 have_wireshark_cxx="false"
1132 if test "$have_gtk" = "no" ; then
1133         #
1134         # We don't have GTK+.
1135         #
1136         if test "$have_qt" = "yes" ; then
1137                 #
1138                 # However, we do have Qt, and thus will be building
1139                 # Wireshark (if the user had explicitly disabled
1140                 # Wireshark, we wouldn't have looked for Qt, so we
1141                 # wouldn't think we had it, and thus wouldn't be here).
1142                 #
1143                 wireshark_bin="wireshark\$(EXEEXT)"
1144                 # Give automake a hint that it needs to use c++ linking.
1145                 have_wireshark_cxx="yes"
1146                 wireshark_man="wireshark.1"
1147                 wireshark_SUBDIRS="codecs ui/qt"
1148         else
1149                 #
1150                 # We don't have Qt, either, which means we have no UI
1151                 # toolkit.
1152                 #
1153                 # If they didn't explicitly say "--disable-wireshark",
1154                 # fail (so that, unless they explicitly indicated that
1155                 # they don't want Wireshark, we stop so they know they
1156                 # won't be getting Wireshark unless they fix the GTK+/Qt
1157                 # problem).
1158                 #
1159                 if test "x$enable_wireshark" = "xyes"; then
1160                         if test "x$with_gtk3" = "xyes"; then
1161                                 AC_MSG_ERROR([GTK+ $GTK3_MIN_VERSION or later isn't available, so Wireshark can't be compiled])
1162                         else
1163                                 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1164                         fi
1165                 fi
1166                 wireshark_bin=""
1167                 wireshark_man=""
1168         fi
1169         # Use GLIB_CFLAGS
1170         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1171         [
1172                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1173                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1174         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1175 else
1176         #
1177         # We have GTK+, and thus will be building Wireshark (if the user
1178         # had explicitly disabled Wireshark, we wouldn't have looked for
1179         # GTK+, so we wouldn't think we had it, and thus wouldn't be here).
1180         #
1181         wireshark_bin="wireshark\$(EXEEXT)"
1182         wireshark_man="wireshark.1"
1183         wireshark_SUBDIRS="codecs ui/gtk"
1184         # Don't use GLIB_CFLAGS
1185         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1186
1187         CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1188         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1189         CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1190         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1191         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1192                 # Enable GSEAL when building with GTK > 2.20
1193                 # (Versions prior to 2.22 lacked some necessary accessors.)
1194                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1195         fi
1196 fi
1197
1198 #
1199 # "make dist" requires that we have the Qt build tools.
1200 #
1201 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1202 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1203 # installed; if they're still doing that in current Fedora releases,
1204 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1205 #
1206 AC_PATH_PROG(UIC, uic)
1207 if test "x$UIC" = x
1208 then
1209         AC_PATH_PROG(UIC, uic-qt4)
1210         if test "x$UIC" = x
1211         then
1212                 if test "x$with_qt" = "xyes"; then
1213                         #
1214                         # If you want to build with Qt, you'd better
1215                         # have uic.
1216                         #
1217                         AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1218                 else
1219                         #
1220                         # We shouldn't fail here, as the user's not
1221                         # building with Qt, and we shouldn't force them
1222                         # to have Qt installed if they're not doing so.
1223                         # "make dist" will fail if they do that, but
1224                         # we don't know whether they'll be doing that,
1225                         # so this is the best we can do.
1226                         #
1227                         UIC=uic
1228                 fi
1229         fi
1230 fi
1231 AC_SUBST(UIC)
1232 AC_PATH_PROG(MOC, moc)
1233 if test "x$MOC" = x
1234 then
1235         AC_PATH_PROG(MOC, moc-qt4)
1236         if test "x$MOC" = x
1237         then
1238                 if test "x$with_qt" = "xyes"; then
1239                         #
1240                         # If you want to build with Qt, you'd better
1241                         # have moc.
1242                         #
1243                         AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1244                 else
1245                         #
1246                         # We shouldn't fail here, as the user's not
1247                         # building with Qt, and we shouldn't force them
1248                         # to have Qt installed if they're not doing so.
1249                         # "make dist" will fail if they do that, but
1250                         # we don't know whether they'll be doing that,
1251                         # so this is the best we can do.
1252                         #
1253                         MIC=moc
1254                 fi
1255         fi
1256 fi
1257 AC_SUBST(MOC)
1258
1259 # Error out if a glib header other than a "top level" header
1260 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1261 #  is used.
1262 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1263
1264 # Error out on the usage of deprecated glib functions
1265 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1266
1267 #
1268 # Check whether GLib modules are supported, to determine whether we
1269 # can support plugins.
1270 #
1271 AC_MSG_CHECKING(whether GLib supports loadable modules)
1272 ac_save_CFLAGS="$CFLAGS"
1273 ac_save_LIBS="$LIBS"
1274 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1275 LIBS="$GLIB_LIBS $LIBS"
1276 AC_TRY_RUN([
1277 #include <glib.h>
1278 #include <gmodule.h>
1279 #include <stdio.h>
1280 #include <stdlib.h>
1281
1282 int
1283 main ()
1284 {
1285   if (g_module_supported())
1286     return 0;   /* success */
1287   else
1288     return 1;   /* failure */
1289 }
1290 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1291    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1292     ac_cv_glib_supports_modules=yes])
1293 CFLAGS="$ac_save_CFLAGS"
1294 LIBS="$ac_save_LIBS"
1295 if test "$ac_cv_glib_supports_modules" = yes ; then
1296   AC_MSG_RESULT(yes)
1297   have_plugins=yes
1298 else
1299   AC_MSG_RESULT(no)
1300   have_plugins=no
1301 fi
1302
1303 #
1304 # If we have <dlfcn.h>, check whether we can use dladdr to find a
1305 # filename (hopefully, a full pathname, but no guarantees) for
1306 # the executable.
1307 #
1308 if test "$ac_cv_header_dlfcn_h" = "yes"
1309 then
1310         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
1311         ac_save_CFLAGS="$CFLAGS"
1312         ac_save_LIBS="$LIBS"
1313         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1314         LIBS="$GLIB_LIBS $LIBS"
1315         AC_TRY_RUN([
1316 #define _GNU_SOURCE     /* required on Linux, sigh */
1317 #include <dlfcn.h>
1318
1319 int
1320 main(void)
1321 {
1322         Dl_info info;
1323
1324         if (!dladdr((void *)main, &info))
1325                 return 1;       /* failure */
1326         return 0;               /* assume success */
1327 }
1328 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
1329    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1330     ac_cv_dladdr_finds_executable_path=yes])
1331         CFLAGS="$ac_save_CFLAGS"
1332         LIBS="$ac_save_LIBS"
1333         if test x$ac_cv_dladdr_finds_executable_path = xyes
1334         then
1335                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
1336         fi
1337         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
1338 fi
1339
1340 #
1341 # Check whether GLib's printf supports thousands grouping. (This might
1342 # be different from the system's printf since GLib can optionally use
1343 # its own printf implementation.)
1344 #
1345 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1346 ac_save_CFLAGS="$CFLAGS"
1347 ac_save_LIBS="$LIBS"
1348 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1349 LIBS="$GLIB_LIBS $LIBS"
1350 AC_TRY_RUN([
1351 #include <glib.h>
1352 #include <locale.h>
1353 #include <stdio.h>
1354 #include <string.h>
1355
1356 int
1357 main ()
1358 {
1359   gchar *str;
1360   setlocale(LC_ALL, "en_US.UTF-8");
1361   str = g_strdup_printf("%'u", 123456);
1362   return (strcmp (str, "123,456") != 0);
1363 }
1364 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1365    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1366     ac_cv_glib_supports_printf_grouping=no])
1367 CFLAGS="$ac_save_CFLAGS"
1368 LIBS="$ac_save_LIBS"
1369 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1370   AC_MSG_RESULT(yes)
1371   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1372 else
1373   AC_MSG_RESULT(no)
1374 fi
1375
1376 if test "x$have_gtk" = "xyes"
1377 then
1378     #
1379     # We have GTK+; do we want the OS X integration functions and,
1380     # if so, do we have them and, if so, which versions do we have,
1381     # the old Carbon-based ones or the new Cocoa-based ones?
1382     #
1383     AC_MSG_CHECKING(whether to use OS X integration functions)
1384
1385     AC_ARG_WITH(osx-integration,
1386       AC_HELP_STRING( [--with-osx-integration],
1387                       [use OS X integration functions @<:@default=yes, if available@:>@]),
1388     [
1389         if test $withval = no
1390         then
1391             want_osx_integration=no
1392         else
1393             want_osx_integration=yes
1394         fi
1395     ],[
1396         want_osx_integration=yes
1397     ])
1398     if test "x$want_osx_integration" = "xno"; then
1399         AC_MSG_RESULT(no)
1400     else
1401         AC_MSG_RESULT(yes)
1402         AC_WIRESHARK_OSX_INTEGRATION_CHECK
1403     fi
1404 fi
1405
1406 AC_SUBST(wireshark_bin)
1407 AC_SUBST(wireshark_man)
1408 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1409 AM_CONDITIONAL(HAVE_WIRESHARK_CXX, test "$have_wireshark_cxx" = "yes")
1410
1411
1412 # Enable/disable tshark
1413
1414 AC_ARG_ENABLE(tshark,
1415   AC_HELP_STRING( [--enable-tshark],
1416                   [build TShark @<:@default=yes@:>@]),
1417     tshark=$enableval,enable_tshark=yes)
1418
1419 if test "x$enable_tshark" = "xyes" ; then
1420         tshark_bin="tshark\$(EXEEXT)"
1421         tshark_man="tshark.1"
1422         wiresharkfilter_man="wireshark-filter.4"
1423 else
1424         tshark_bin=""
1425         tshark_man=""
1426 fi
1427 AC_SUBST(tshark_bin)
1428 AC_SUBST(tshark_man)
1429 AC_SUBST(wiresharkfilter_man)
1430
1431
1432
1433 # Enable/disable editcap
1434
1435 AC_ARG_ENABLE(editcap,
1436   AC_HELP_STRING( [--enable-editcap],
1437                   [build editcap @<:@default=yes@:>@]),
1438     enable_editcap=$enableval,enable_editcap=yes)
1439
1440 if test "x$enable_editcap" = "xyes" ; then
1441         editcap_bin="editcap\$(EXEEXT)"
1442         editcap_man="editcap.1"
1443 else
1444         editcap_bin=""
1445         editcap_man=""
1446 fi
1447 AC_SUBST(editcap_bin)
1448 AC_SUBST(editcap_man)
1449
1450 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1451 # or not)
1452
1453 # Enable/disable capinfos
1454
1455 AC_ARG_ENABLE(capinfos,
1456   AC_HELP_STRING( [--enable-capinfos],
1457                   [build capinfos @<:@default=yes@:>@]),
1458     enable_capinfos=$enableval,enable_capinfos=yes)
1459
1460 if test "x$enable_capinfos" = "xyes" ; then
1461         capinfos_bin="capinfos\$(EXEEXT)"
1462         capinfos_man="capinfos.1"
1463 else
1464         capinfos_bin=""
1465         capinfos_man=""
1466 fi
1467 AC_SUBST(capinfos_bin)
1468 AC_SUBST(capinfos_man)
1469
1470
1471 # Enable/disable mergecap
1472
1473 AC_ARG_ENABLE(mergecap,
1474   AC_HELP_STRING( [--enable-mergecap],
1475                   [build mergecap @<:@default=yes@:>@]),
1476     enable_mergecap=$enableval,enable_mergecap=yes)
1477
1478 if test "x$enable_mergecap" = "xyes" ; then
1479         mergecap_bin="mergecap\$(EXEEXT)"
1480         mergecap_man="mergecap.1"
1481 else
1482         mergecap_bin=""
1483         mergecap_man=""
1484 fi
1485 AC_SUBST(mergecap_bin)
1486 AC_SUBST(mergecap_man)
1487
1488
1489 # Enable/disable reordercap
1490
1491 AC_ARG_ENABLE(reordercap,
1492   AC_HELP_STRING( [--enable-reordercap],
1493                   [build reordercap @<:@default=yes@:>@]),
1494     enable_reordercap=$enableval,enable_reordercap=yes)
1495
1496 if test "x$enable_reordercap" = "xyes" ; then
1497         reordercap_bin="reordercap\$(EXEEXT)"
1498         reordercap_man="reordercap.1"
1499 else
1500         reordercap_bin=""
1501         reordercap_man=""
1502 fi
1503 AC_SUBST(reordercap_bin)
1504 AC_SUBST(reordercap_man)
1505
1506
1507 # Enable/disable text2pcap
1508
1509 AC_ARG_ENABLE(text2pcap,
1510   AC_HELP_STRING( [--enable-text2pcap],
1511                   [build text2pcap @<:@default=yes@:>@]),
1512     text2pcap=$enableval,enable_text2pcap=yes)
1513
1514 if test "x$enable_text2pcap" = "xyes" ; then
1515         text2pcap_bin="text2pcap\$(EXEEXT)"
1516         text2pcap_man="text2pcap.1"
1517 else
1518         text2pcap_bin=""
1519         text2pcap_man=""
1520 fi
1521 AC_SUBST(text2pcap_bin)
1522 AC_SUBST(text2pcap_man)
1523
1524
1525 # Enable/disable dftest
1526
1527 AC_ARG_ENABLE(dftest,
1528   AC_HELP_STRING( [--enable-dftest],
1529                   [build dftest @<:@default=yes@:>@]),
1530     enable_dftest=$enableval,enable_dftest=yes)
1531
1532 if test "x$enable_dftest" = "xyes" ; then
1533         dftest_bin="dftest\$(EXEEXT)"
1534         dftest_man="dftest.1"
1535 else
1536         dftest_bin=""
1537         dftest_man=""
1538 fi
1539 AC_SUBST(dftest_bin)
1540 AC_SUBST(dftest_man)
1541
1542
1543 # Enable/disable randpkt
1544
1545 AC_ARG_ENABLE(randpkt,
1546   AC_HELP_STRING( [--enable-randpkt],
1547                   [build randpkt @<:@default=yes@:>@]),
1548     enable_randpkt=$enableval,enable_randpkt=yes)
1549
1550 if test "x$enable_randpkt" = "xyes" ; then
1551         randpkt_bin="randpkt\$(EXEEXT)"
1552         randpkt_man="randpkt.1"
1553 else
1554         randpkt_bin=""
1555         randpkt_man=""
1556 fi
1557 AC_SUBST(randpkt_bin)
1558 AC_SUBST(randpkt_man)
1559
1560
1561
1562 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1563 dnl "gethostbyname()".
1564 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1565
1566 dnl Checks for "connect()", used as a proxy for "socket()" - and
1567 dnl "-lsocket", if we need it to get "connect()".
1568 AC_WIRESHARK_SOCKET_LIB_CHECK
1569
1570 dnl pcap check
1571 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1572
1573 AC_ARG_WITH(pcap,
1574   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1575                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1576 [
1577         if test $withval = no
1578         then
1579                 want_pcap=no
1580         elif test $withval = yes
1581         then
1582                 want_pcap=yes
1583         else
1584                 want_pcap=yes
1585                 pcap_dir=$withval
1586         fi
1587 ],[
1588         want_pcap=yes
1589         pcap_dir=
1590 ])
1591 if test "x$want_pcap" = "xno" ; then
1592         AC_MSG_RESULT(no)
1593 else
1594         AC_MSG_RESULT(yes)
1595         AC_WIRESHARK_PCAP_CHECK
1596 fi
1597
1598
1599 dnl Check for airpcap
1600 AC_MSG_CHECKING(whether to include airpcap support)
1601 AC_ARG_ENABLE(airpcap,
1602   AC_HELP_STRING( [--enable-airpcap],
1603                   [use AirPcap in Wireshark @<:@default=yes@:>@]),
1604   enable_airpcap=$enableval, enable_airpcap=yes)
1605
1606 if test x$enable_airpcap = xyes; then
1607         if test "x$want_pcap" = "xno" ; then
1608                 enable_airpcap=no
1609                 AC_MSG_RESULT(pcap not available - disabling airpcap)
1610         else
1611                 AC_MSG_RESULT(yes)
1612                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1613         fi
1614 else
1615         AC_MSG_RESULT(no)
1616 fi
1617
1618
1619 dnl dumpcap check
1620 AC_MSG_CHECKING(whether to build dumpcap)
1621
1622 AC_ARG_ENABLE(dumpcap,
1623   AC_HELP_STRING( [--enable-dumpcap],
1624                   [build dumpcap @<:@default=yes@:>@]),
1625     enable_dumpcap=$enableval,enable_dumpcap=yes)
1626
1627 if test "x$enable_dumpcap" = "xyes" ; then
1628         if test "x$want_pcap" = "xno" ; then
1629                 enable_dumpcap=no
1630                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1631         else
1632                 AC_MSG_RESULT(yes)
1633         fi
1634 else
1635         AC_MSG_RESULT(no)
1636 fi
1637
1638 if test "x$enable_dumpcap" = "xyes" ; then
1639         dumpcap_bin="dumpcap\$(EXEEXT)"
1640         dumpcap_man="dumpcap.1"
1641 else
1642         dumpcap_bin=""
1643         dumpcap_man=""
1644 fi
1645 AC_SUBST(dumpcap_bin)
1646 AC_SUBST(dumpcap_man)
1647
1648 # Enable/disable rawshark
1649
1650 dnl rawshark check
1651 AC_MSG_CHECKING(whether to build rawshark)
1652
1653 AC_ARG_ENABLE(rawshark,
1654   AC_HELP_STRING( [--enable-rawshark],
1655                   [build rawshark @<:@default=yes@:>@]),
1656     rawshark=$enableval,enable_rawshark=yes)
1657
1658 if test "x$enable_rawshark" = "xyes" ; then
1659         if test "x$want_pcap" = "xno" ; then
1660                 enable_rawshark=no
1661                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1662         else
1663                 AC_MSG_RESULT(yes)
1664         fi
1665 else
1666         AC_MSG_RESULT(no)
1667 fi
1668
1669 if test "x$enable_rawshark" = "xyes" ; then
1670         rawshark_bin="rawshark\$(EXEEXT)"
1671         rawshark_man="rawshark.1"
1672 else
1673         rawshark_bin=""
1674         rawshark_man=""
1675 fi
1676 AC_SUBST(rawshark_bin)
1677 AC_SUBST(rawshark_man)
1678
1679 dnl Use pcap-ng by default
1680 AC_ARG_ENABLE(pcap-ng-default,
1681   AC_HELP_STRING( [--enable-pcap-ng-default],
1682                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
1683     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1684 if test x$enable_pcap_ng_default = xyes; then
1685         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1686 fi
1687
1688 dnl pcap remote check
1689 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1690
1691 AC_ARG_WITH(pcap-remote,
1692     AC_HELP_STRING([--with-pcap-remote],
1693                    [use libpcap remote capturing (requires libpcap)]),
1694 [
1695     if test $withval = no
1696     then
1697         want_pcap_remote=no
1698     else
1699         want_pcap_remote=yes
1700     fi
1701 ],[
1702     want_pcap_remote=no
1703 ])
1704 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1705     AC_MSG_RESULT(no)
1706 else
1707     AC_MSG_RESULT(yes)
1708     AC_WIRESHARK_PCAP_REMOTE_CHECK
1709 fi
1710
1711 dnl zlib check
1712 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1713
1714 AC_ARG_WITH(zlib,
1715   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1716                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1717 [
1718         if test "x$withval" = "xno"
1719         then
1720                 want_zlib=no
1721         elif test "x$withval" = "xyes"
1722         then
1723                 want_zlib=yes
1724         else
1725                 want_zlib=yes
1726                 zlib_dir="$withval"
1727         fi
1728 ],[
1729         #
1730         # Use zlib if it's present, otherwise don't.
1731         #
1732         want_zlib=ifavailable
1733         zlib_dir=
1734 ])
1735 if test "x$want_zlib" = "xno" ; then
1736         AC_MSG_RESULT(no)
1737 else
1738         AC_MSG_RESULT(yes)
1739         AC_WIRESHARK_ZLIB_CHECK
1740         if test "x$want_zlib" = "xno" ; then
1741                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1742         else
1743                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1744                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1745                 fi
1746         fi
1747 fi
1748
1749 dnl Lua check
1750 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1751
1752 AC_ARG_WITH(lua,
1753   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1754                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1755 [
1756         if test $withval = no
1757         then
1758                 want_lua=no
1759         elif test $withval = yes
1760         then
1761                 want_lua=yes
1762         else
1763                 want_lua=yes
1764                 lua_dir=$withval
1765         fi
1766 ],[
1767         #
1768         # Use liblua by default
1769         #
1770         want_lua=ifavailable
1771         lua_dir=
1772 ])
1773 if test "x$want_lua" = "xno" ; then
1774         AC_MSG_RESULT(no)
1775 else
1776         AC_MSG_RESULT(yes)
1777         AC_WIRESHARK_LIBLUA_CHECK
1778         if test "x$want_lua" = "xno" ; then
1779                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1780         fi
1781 fi
1782 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1783
1784
1785 dnl portaudio check
1786 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1787
1788 AC_ARG_WITH(portaudio,
1789   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1790                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
1791 [
1792         if test $withval = no
1793         then
1794                 want_portaudio=no
1795         elif test $withval = yes
1796         then
1797                 want_portaudio=yes
1798         else
1799                 want_portaudio=yes
1800                 portaudio_dir=$withval
1801         fi
1802 ],[
1803         #
1804         # Use libportaudio by default
1805         #
1806         want_portaudio=ifavailable
1807         portaudio_dir=
1808 ])
1809 if test "x$want_portaudio" = "xno" ; then
1810         AC_MSG_RESULT(no)
1811 else
1812         AC_MSG_RESULT(yes)
1813         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1814         if test "x$want_portaudio" = "xno" ; then
1815                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1816         fi
1817 fi
1818 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1819
1820
1821 dnl ipv6 check
1822 AC_ARG_ENABLE(ipv6,
1823   AC_HELP_STRING( [--enable-ipv6],
1824                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
1825     enable_ipv6=$enableval,enable_ipv6=yes)
1826
1827 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1828 if test "x$enable_ipv6" = "xno" ; then
1829         AC_MSG_RESULT(no)
1830 else
1831         AC_MSG_RESULT(yes)
1832         AC_WIRESHARK_IPV6_STACK
1833 fi
1834
1835
1836 dnl Check if dumpcap should be installed with filesystem capabilities
1837 AC_PATH_PROG(SETCAP, setcap)
1838 AC_ARG_ENABLE(setcap-install,
1839   AC_HELP_STRING( [--enable-setcap-install],
1840                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1841     enable_setcap_install=$enableval,enable_setcap_install=no)
1842
1843 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1844 if test "x$enable_setcap_install" = "xno" ; then
1845         AC_MSG_RESULT(no)
1846 else
1847         if test "x$SETCAP" = "x" ; then
1848                 AC_MSG_RESULT(no. Setcap not found)
1849         elif test "x$enable_dumpcap" = "xno" ; then
1850                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1851         else
1852                 AC_MSG_RESULT(yes)
1853         fi
1854 fi
1855
1856 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1857
1858 dnl Check if dumpcap should be installed setuid
1859 AC_ARG_ENABLE(setuid-install,
1860   AC_HELP_STRING( [--enable-setuid-install],
1861                   [install dumpcap as setuid @<:@default=no@:>@]),
1862     enable_setuid_install=$enableval,enable_setuid_install=no)
1863
1864 AC_MSG_CHECKING(whether to install dumpcap setuid)
1865 if test "x$enable_setuid_install" = "xno" ; then
1866         AC_MSG_RESULT(no)
1867 else
1868         if test "x$enable_setcap_install" = "xyes" ; then
1869                 enable_setuid_install=no
1870                 AC_MSG_RESULT(no; using setcap instead)
1871         elif test "x$enable_dumpcap" = "xno" ; then
1872                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1873         else
1874                 AC_MSG_RESULT(yes)
1875         fi
1876 fi
1877
1878 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1879 AC_CHECK_FUNCS(setresuid setresgid)
1880
1881 dnl ...but our Network Operations group is named "no"!
1882 DUMPCAP_GROUP=''
1883 AC_ARG_WITH(dumpcap-group,
1884   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1885                   [restrict dumpcap to GROUP]),
1886 [
1887   if test "x$withval" = "xyes"; then
1888       AC_MSG_ERROR([No dumpcap group specified.])
1889   elif test "x$withval" != "xno"; then
1890       if test "x$enable_dumpcap" = "xno" ; then
1891           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
1892       fi
1893       AC_MSG_RESULT($withval)
1894       DUMPCAP_GROUP="$withval"
1895   fi
1896 ])
1897 AC_SUBST(DUMPCAP_GROUP)
1898 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
1899
1900 dnl libcap (not libpcap) check
1901 LIBCAP_LIBS=''
1902 AC_MSG_CHECKING(whether to use the libcap capabilities library)
1903
1904 AC_ARG_WITH(libcap,
1905   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
1906                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
1907 [
1908 if   test "x$withval" = "xno";  then
1909         want_libcap=no
1910 elif test "x$withval" = "xyes"; then
1911         want_libcap=yes
1912 elif test -d "$withval"; then
1913         want_libcap=yes
1914         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1915 fi
1916 ])
1917 if test "x$with_libcap" = "xno" ; then
1918         AC_MSG_RESULT(no)
1919 else
1920         AC_MSG_RESULT(yes)
1921         AC_WIRESHARK_LIBCAP_CHECK
1922 fi
1923 AC_SUBST(LIBCAP_LIBS)
1924
1925 dnl Checks for header files.
1926 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
1927 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
1928 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)
1929 AC_CHECK_HEADERS(netinet/in.h)
1930 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
1931
1932 dnl SSL Check
1933 SSL_LIBS=''
1934 AC_MSG_CHECKING(whether to use SSL library)
1935
1936 AC_ARG_WITH(ssl,
1937   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
1938                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
1939 [
1940 if test "x$withval" = "xno";  then
1941         want_ssl=no
1942 elif test "x$withval" = "xyes"; then
1943         want_ssl=yes
1944 elif test -d "$withval"; then
1945         want_ssl=yes
1946         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1947 fi
1948 ],[
1949         want_ssl=no
1950 ])
1951 if test "x$want_ssl" = "xyes"; then
1952         AC_MSG_RESULT(yes)
1953         AC_CHECK_LIB(crypto,EVP_md5,
1954             [
1955                 SSL_LIBS=-lcrypto
1956             ],
1957             [
1958                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
1959             ])
1960 else
1961         AC_MSG_RESULT(no)
1962 fi
1963 AC_SUBST(SSL_LIBS)
1964
1965 dnl kerberos check
1966 AC_MSG_CHECKING(whether to use Kerberos library)
1967
1968 AC_ARG_WITH(krb5,
1969   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1970                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
1971 [
1972         if test $withval = no
1973         then
1974                 want_krb5=no
1975         elif test $withval = yes
1976         then
1977                 want_krb5=yes
1978         else
1979                 want_krb5=yes
1980                 krb5_dir=$withval
1981         fi
1982 ],[
1983         #
1984         # Use Kerberos library if available, otherwise don't.
1985         #
1986         want_krb5=ifavailable
1987         krb5_dir=
1988 ])
1989 if test "x$want_krb5" = "xno" ; then
1990         AC_MSG_RESULT(no)
1991 else
1992         AC_MSG_RESULT(yes)
1993         AC_WIRESHARK_KRB5_CHECK
1994 fi
1995
1996
1997 dnl c-ares Check
1998 C_ARES_LIBS=''
1999 AC_MSG_CHECKING(whether to use the c-ares library if available)
2000
2001 AC_ARG_WITH(c-ares,
2002   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2003                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2004 [
2005 if   test "x$withval" = "xno";  then
2006         want_c_ares=no
2007 elif test "x$withval" = "xyes"; then
2008         want_c_ares=yes
2009 elif test -d "$withval"; then
2010         want_c_ares=yes
2011         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2012 fi
2013 ])
2014 if test "x$want_c_ares" = "xno" ; then
2015         AC_MSG_RESULT(no)
2016 else
2017         AC_MSG_RESULT(yes)
2018         AC_WIRESHARK_C_ARES_CHECK
2019 fi
2020 AC_SUBST(C_ARES_LIBS)
2021
2022 dnl ADNS Check
2023 ADNS_LIBS=''
2024 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2025
2026 AC_ARG_WITH(adns,
2027   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2028                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2029 [
2030 if   test "x$withval" = "xno";  then
2031         want_adns=no
2032 elif test "x$withval" = "xyes"; then
2033         want_adns=yes
2034 elif test -d "$withval"; then
2035         want_adns=yes
2036         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2037 fi
2038 ])
2039 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2040         AC_MSG_RESULT(no)
2041 else
2042         AC_MSG_RESULT(yes)
2043         AC_WIRESHARK_ADNS_CHECK
2044 fi
2045 AC_SUBST(ADNS_LIBS)
2046
2047 dnl GEOIP Check
2048 GEOIP_LIBS=''
2049 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2050
2051 AC_ARG_WITH(geoip,
2052   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2053                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2054 [
2055 if   test "x$withval" = "xno";  then
2056         want_geoip=no
2057 elif test "x$withval" = "xyes"; then
2058         want_geoip=yes
2059 elif test -d "$withval"; then
2060         want_geoip=yes
2061         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2062 fi
2063 ])
2064 if test "x$want_geoip" = "xno"; then
2065         AC_MSG_RESULT(no)
2066 else
2067         AC_MSG_RESULT(yes)
2068         AC_WIRESHARK_GEOIP_CHECK
2069 fi
2070 AC_SUBST(GEOIP_LIBS)
2071
2072 # Warning: this Python scripting appears to be broken (does not work at all).
2073 # Running it also causes Valgrind to complain about all sorts of memory errors.
2074 # Suggestion: do not enable it unless you are working on fixing it.
2075 #
2076 # An alternative might be https://code.google.com/p/pyreshark/
2077 #
2078 dnl Python devel Check
2079 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2080
2081 AC_ARG_WITH(broken-python,
2082     AC_HELP_STRING( [--with-broken-python@<:@=DIR@:>@],
2083                     [use the (BROKEN) Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@]),
2084 [
2085         pythondir='${libdir}/wireshark/python/${VERSION}'
2086         if test "x$withval" = "xno"
2087         then
2088                 want_python=no
2089         elif test "x$withval" = "xyes"
2090         then
2091                 want_python=yes
2092         else
2093                 want_python=yes
2094                 pythondir="$withval"
2095         fi
2096 ],[
2097         # By default (user didn't explicitly enable Python), don't enable
2098         # Python support.
2099         #
2100         want_python=no
2101         #pythondir='${libdir}/wireshark/python/${VERSION}'
2102 ])
2103 if test "x$want_python" = "xno" ; then
2104         AC_MSG_RESULT(no)
2105 else
2106         AC_MSG_RESULT(yes)
2107         AC_WIRESHARK_PYTHON_CHECK
2108 fi
2109 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2110 AC_SUBST(pythondir)
2111
2112 #
2113 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2114 # never return (just like Charlie on the MTA).
2115 #
2116 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2117 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2118 # follow the function name, so we need two different flavors of
2119 # noreturn tag.
2120 #
2121 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2122
2123 dnl Checks for typedefs, structures, and compiler characteristics.
2124 # AC_C_CONST
2125
2126 # Check how we can get the time zone abbreviation
2127 AC_WIRESHARK_TIMEZONE_ABBREV
2128
2129 # We need to know whether "struct stat" has an "st_flags" member
2130 # for file_user_immutable().
2131
2132 AC_WIRESHARK_STRUCT_ST_FLAGS
2133
2134 # We need to know whether "struct sockaddr" has an "sa_len" member
2135 # for get_interface_list().
2136
2137 AC_WIRESHARK_STRUCT_SA_LEN
2138
2139 # We must know our byte order
2140 AC_C_BIGENDIAN
2141
2142 # Checks whether "-traditional" is needed when using "ioctl".
2143 # XXX - do we need this?
2144 AC_PROG_GCC_TRADITIONAL
2145
2146 GETOPT_LO=""
2147 AC_CHECK_FUNC(getopt,
2148   [GETOPT_LO=""
2149    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2150   ],
2151   GETOPT_LO="wsgetopt.lo"
2152 )
2153 if test "$ac_cv_func_getopt" = no ; then
2154   GETOPT_LO="wsgetopt.lo"
2155 fi
2156 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2157 AC_SUBST(GETOPT_LO)
2158
2159 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2160   STRNCASECMP_LO="strncasecmp.lo")
2161 if test "$ac_cv_func_strncasecmp" = no ; then
2162   STRNCASECMP_LO="strncasecmp.lo"
2163 fi
2164 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2165 AC_SUBST(STRNCASECMP_LO)
2166
2167 AC_CHECK_FUNCS(mkstemp mkdtemp)
2168
2169 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2170     have_inet_aton=no)
2171 if test "$have_inet_aton" = no; then
2172   INET_ATON_LO="inet_aton.lo"
2173   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
2174 else
2175   INET_ATON_LO=""
2176 fi
2177 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2178 AC_SUBST(INET_ATON_LO)
2179
2180 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2181   dnl check for pre-BIND82 inet_pton() bug.
2182   AC_MSG_CHECKING(for broken inet_pton)
2183   AC_TRY_RUN([#include <sys/types.h>
2184 #include <sys/socket.h>
2185 #include <netinet/in.h>
2186 #include <arpa/inet.h>
2187 int main()
2188 {
2189 #ifdef AF_INET6
2190   char buf[16];
2191   /* this should return 0 (error) */
2192   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2193 #else
2194   return 1;
2195 #endif
2196 }], [AC_MSG_RESULT(ok);
2197 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2198 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2199 have_inet_pton=no])],
2200 have_inet_pton=no)
2201 if test "$have_inet_pton" = no; then
2202   INET_PTON_LO="inet_pton.lo"
2203 else
2204   INET_PTON_LO=""
2205 fi
2206 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2207 AC_SUBST(INET_PTON_LO)
2208
2209 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2210   AC_MSG_CHECKING([for inet_ntop prototype])
2211   AC_TRY_COMPILE([#include <stdio.h>
2212 #include <sys/types.h>
2213 #include <sys/socket.h>
2214 #include <netinet/in.h>
2215 #include <arpa/inet.h>
2216
2217 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2218     AC_MSG_RESULT(yes)
2219     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2220     [Define if inet_ntop() prototype exists])], [
2221     AC_TRY_COMPILE([#include <stdio.h>
2222 #include <sys/types.h>
2223 #include <sys/socket.h>
2224 #include <netinet/in.h>
2225 #include <arpa/inet.h>
2226
2227 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2228       AC_MSG_RESULT(yes)
2229       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2230       [Define if inet_ntop() prototype exists])], [
2231       AC_MSG_RESULT(no)])])
2232   INET_NTOP_LO=""], [
2233   INET_NTOP_LO="inet_ntop.lo"
2234   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2235   [Define if inet/v6defs.h needs to be included])])
2236 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2237 AC_SUBST(INET_NTOP_LO)
2238
2239 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2240   [STRPTIME_LO="strptime.lo"
2241    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2242 ])
2243 if test "$ac_cv_func_strptime" = no ; then
2244   STRPTIME_LO="strptime.lo"
2245 fi
2246 AC_SUBST(STRPTIME_C)
2247 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2248 AC_SUBST(STRPTIME_LO)
2249
2250 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2251 AC_CHECK_FUNCS(issetugid)
2252 AC_CHECK_FUNCS(mmap mprotect sysconf)
2253 AC_CHECK_FUNCS(strtoll)
2254
2255 dnl blank for now, but will be used in future
2256 AC_SUBST(wireshark_SUBDIRS)
2257
2258 dnl
2259 dnl check whether plugins should be enabled and, if they should be,
2260 dnl check for plugins directory - stolen from Amanda's configure.ac
2261 dnl
2262 dnl we don't wish to expand ${libdir} yet
2263 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2264 AC_ARG_WITH(plugins,
2265   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2266                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2267 [
2268   if test "x$withval" = "xno"; then
2269     have_plugins=no
2270   elif test "x$have_plugins" = "xno"; then
2271       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2272   elif test "x$withval" != "xyes"; then
2273       plugindir="$withval"
2274   fi
2275 ])
2276 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2277 if test x$have_plugins = xyes
2278 then
2279   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2280 fi
2281 AC_SUBST(plugindir)
2282 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2283
2284 #
2285 # The plugin dissectors reside in ./plugins/PROTO/
2286 #
2287 PLUGIN_LIBS=""
2288 AC_SUBST(PLUGIN_LIBS)
2289
2290 #
2291 # Check if (emem) memory allocations must be 8-byte aligned.
2292 # I haven't been able to write C code that reliably makes that determination
2293 # (different versions of GCC with or without optimization give different
2294 # results) so just assume everything except (32-bit) x86 needs 8-byte
2295 # alignment (64-bit platforms either require 8-byte alignment for pointers
2296 # and 64-bit integral data types or may get better performance from that;
2297 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2298 # platforms would only require it, or get better performance from it,
2299 # for 64-bit floating-point values.).
2300 #
2301 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2302 case $host_cpu in
2303         i386|i486|i586|i686)
2304                 AC_MSG_RESULT(no)
2305                 ;;
2306         *)
2307                 AC_MSG_RESULT(yes)
2308                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2309                 ;;
2310 esac
2311
2312 dnl libtool defs
2313 #
2314 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2315 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2316 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2317 #
2318 # With older version(s) of those tool(s), however, it's not just an
2319 # alias, and the configure scripts don't work without it.
2320 #
2321 AM_PROG_LIBTOOL
2322 AC_SUBST(LIBTOOL_DEPS)
2323
2324 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2325 if test x$enable_static = xyes -a x$have_plugins = xyes
2326 then
2327   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2328 fi
2329 AC_SUBST(ENABLE_STATIC)
2330
2331 dnl Save the cacheable configure results to config.cache before recursing
2332 AC_CACHE_SAVE
2333
2334 sinclude(plugins/Custom.m4) dnl
2335 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2336
2337 sinclude(asn1/Custom.m4) dnl
2338 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2339
2340 AC_CONFIG_HEADERS(config.h)
2341 AC_OUTPUT(
2342   Makefile
2343   doxygen.cfg
2344   asn1/Makefile
2345   _CUSTOM_ASN1_AC_OUTPUT_
2346   asn1/acp133/Makefile
2347   asn1/acse/Makefile
2348   asn1/ansi_map/Makefile
2349   asn1/ansi_tcap/Makefile
2350   asn1/c1222/Makefile
2351   asn1/camel/Makefile
2352   asn1/cdt/Makefile
2353   asn1/charging_ase/Makefile
2354   asn1/cmip/Makefile
2355   asn1/cmp/Makefile
2356   asn1/crmf/Makefile
2357   asn1/cms/Makefile
2358   asn1/credssp/Makefile
2359   asn1/dap/Makefile
2360   asn1/disp/Makefile
2361   asn1/dop/Makefile
2362   asn1/dsp/Makefile
2363   asn1/ess/Makefile
2364   asn1/ftam/Makefile
2365   asn1/gnm/Makefile
2366   asn1/goose/Makefile
2367   asn1/gprscdr/Makefile
2368   asn1/gsm_map/Makefile
2369   asn1/h225/Makefile
2370   asn1/h235/Makefile
2371   asn1/h245/Makefile
2372   asn1/h248/Makefile
2373   asn1/h282/Makefile
2374   asn1/h283/Makefile
2375   asn1/h323/Makefile
2376   asn1/h450/Makefile
2377   asn1/h450-ros/Makefile
2378   asn1/h460/Makefile
2379   asn1/h501/Makefile
2380   asn1/HI2Operations/Makefile
2381   asn1/hnbap/Makefile
2382   asn1/idmp/Makefile
2383   asn1/inap/Makefile
2384   asn1/isdn-sup/Makefile
2385   asn1/kerberos/Makefile
2386   asn1/lcsap/Makefile
2387   asn1/ldap/Makefile
2388   asn1/logotypecertextn/Makefile
2389   asn1/lpp/Makefile
2390   asn1/lppa/Makefile
2391   asn1/lppe/Makefile
2392   asn1/lte-rrc/Makefile
2393   asn1/m3ap/Makefile
2394   asn1/mms/Makefile
2395   asn1/mpeg-audio/Makefile
2396   asn1/mpeg-pes/Makefile
2397   asn1/nbap/Makefile
2398   asn1/ns_cert_exts/Makefile
2399   asn1/ocsp/Makefile
2400   asn1/p1/Makefile
2401   asn1/p22/Makefile
2402   asn1/p7/Makefile
2403   asn1/p772/Makefile
2404   asn1/pcap/Makefile
2405   asn1/pkcs1/Makefile
2406   asn1/pkcs12/Makefile
2407   asn1/pkinit/Makefile
2408   asn1/pkixac/Makefile
2409   asn1/pkix1explicit/Makefile
2410   asn1/pkix1implicit/Makefile
2411   asn1/pkixproxy/Makefile
2412   asn1/pkixqualified/Makefile
2413   asn1/pkixtsp/Makefile
2414   asn1/pres/Makefile
2415   asn1/q932/Makefile
2416   asn1/q932-ros/Makefile
2417   asn1/qsig/Makefile
2418   asn1/ranap/Makefile
2419   asn1/rnsap/Makefile
2420   asn1/ros/Makefile
2421   asn1/rrc/Makefile
2422   asn1/rrlp/Makefile
2423   asn1/rtse/Makefile
2424   asn1/rua/Makefile
2425   asn1/s1ap/Makefile
2426   asn1/sabp/Makefile
2427   asn1/sbc-ap/Makefile
2428   asn1/smrse/Makefile
2429   asn1/snmp/Makefile
2430   asn1/spnego/Makefile
2431   asn1/sv/Makefile
2432   asn1/t124/Makefile
2433   asn1/t125/Makefile
2434   asn1/t38/Makefile
2435   asn1/tcap/Makefile
2436   asn1/tetra/Makefile
2437   asn1/ulp/Makefile
2438   asn1/wlancertextn/Makefile
2439   asn1/x2ap/Makefile
2440   asn1/x509af/Makefile
2441   asn1/x509ce/Makefile
2442   asn1/x509if/Makefile
2443   asn1/x509sat/Makefile
2444   asn1/x721/Makefile
2445   doc/Makefile
2446   docbook/Makefile
2447   epan/Makefile
2448   epan/crypt/Makefile
2449   epan/doxygen.cfg
2450   epan/dfilter/Makefile
2451   epan/dissectors/Makefile
2452   epan/dissectors/dcerpc/Makefile
2453   epan/dissectors/pidl/Makefile
2454   epan/ftypes/Makefile
2455   epan/wmem/Makefile
2456   epan/wslua/Makefile
2457   epan/wspython/Makefile
2458   codecs/Makefile
2459   ui/Makefile
2460   ui/doxygen.cfg
2461   ui/gtk/Makefile
2462   ui/gtk/doxygen.cfg
2463   ui/cli/Makefile
2464   ui/qt/Makefile
2465   ui/qt/doxygen.cfg
2466   help/Makefile
2467   packaging/Makefile
2468   packaging/macosx/Info.plist
2469   packaging/macosx/Makefile
2470   packaging/macosx/osx-dmg.sh
2471   packaging/nsis/Makefile
2472   packaging/rpm/Makefile
2473   packaging/rpm/SPECS/Makefile
2474   packaging/rpm/SPECS/wireshark.spec
2475   packaging/svr4/Makefile
2476   packaging/svr4/checkinstall
2477   packaging/svr4/pkginfo
2478   plugins/Makefile
2479   plugins/asn1/Makefile
2480   plugins/docsis/Makefile
2481   plugins/ethercat/Makefile
2482   plugins/gryphon/Makefile
2483   plugins/irda/Makefile
2484   plugins/m2m/Makefile
2485   plugins/mate/Makefile
2486   plugins/opcua/Makefile
2487   plugins/profinet/Makefile
2488   plugins/stats_tree/Makefile
2489   plugins/unistim/Makefile
2490   plugins/wimax/Makefile
2491   plugins/wimaxasncp/Makefile
2492   plugins/wimaxmacphy/Makefile
2493   tools/Makefile
2494   tools/lemon/Makefile
2495   wiretap/Makefile
2496   wsutil/Makefile
2497   _CUSTOM_AC_OUTPUT_
2498   ,)
2499 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2500
2501
2502 # Pretty messages
2503
2504 if test "x$have_qt" = "xyes"; then
2505         gui_lib_message=" (with Qt)"
2506 else
2507         if test "x$have_gtk" = "xyes"; then
2508                 if test "x$with_gtk3" = "xyes"; then
2509                         gui_lib_message=" (with GTK+ 3"
2510                 else
2511                         gui_lib_message=" (with GTK+ 2"
2512                 fi
2513                 if test "x$have_ige_mac" = "xyes"; then
2514                         gui_lib_message="$gui_lib_message and Mac OS X integration)"
2515                 else
2516                         gui_lib_message="$gui_lib_message)"
2517                 fi
2518         fi
2519 fi
2520
2521 if test "x$enable_setcap_install" = "xyes" ; then
2522         setcap_message="yes"
2523 else
2524         setcap_message="no"
2525 fi
2526
2527 if test "x$enable_setuid_install" = "xyes" ; then
2528         setuid_message="yes"
2529 else
2530         setuid_message="no"
2531 fi
2532
2533 if test "x$DUMPCAP_GROUP" = "x" ; then
2534         dumpcap_group_message="(none)"
2535 else
2536         dumpcap_group_message="$DUMPCAP_GROUP"
2537 fi
2538
2539 if test "x$want_zlib" = "xno" ; then
2540         zlib_message="no"
2541 else
2542         zlib_message="yes"
2543 fi
2544
2545 if test "x$want_lua" = "xyes" ; then
2546         lua_message="yes"
2547 else
2548         lua_message="no"
2549 fi
2550
2551 if test "x$want_python" = "xno"; then
2552         python_message="no"
2553 else
2554         python_message="yes"
2555 fi
2556
2557 if test "x$want_portaudio" = "xyes" ; then
2558         portaudio_message="yes"
2559 else
2560         portaudio_message="no"
2561 fi
2562
2563 if test "x$want_ssl" = "xno" ; then
2564         ssl_message="no"
2565 else
2566         ssl_message="yes"
2567 fi
2568
2569 if test "x$want_krb5" = "xno" ; then
2570         krb5_message="no"
2571 else
2572         krb5_message="yes ($ac_krb5_version)"
2573 fi
2574
2575 if test "x$have_good_c_ares" = "xyes" ; then
2576         c_ares_message="yes"
2577 else
2578         c_ares_message="no"
2579 fi
2580
2581 if test "x$have_good_adns" = "xyes" ; then
2582         adns_message="yes"
2583 else
2584         if test "x$have_good_c_ares" = "xyes" ; then
2585                 adns_message="no (using c-ares instead)"
2586         else
2587                 adns_message="no"
2588         fi
2589 fi
2590
2591 if test "x$have_good_libcap" = "xyes" ; then
2592         libcap_message="yes"
2593 else
2594         libcap_message="no"
2595 fi
2596
2597 if test "x$have_good_geoip" = "xyes" ; then
2598         geoip_message="yes"
2599 else
2600         geoip_message="no"
2601 fi
2602
2603 echo ""
2604 echo "The Wireshark package has been configured with the following options."
2605 echo "                    Build wireshark : $enable_wireshark""$gui_lib_message"
2606 echo "                       Build tshark : $enable_tshark"
2607 echo "                     Build capinfos : $enable_capinfos"
2608 echo "                      Build editcap : $enable_editcap"
2609 echo "                      Build dumpcap : $enable_dumpcap"
2610 echo "                     Build mergecap : $enable_mergecap"
2611 echo "                   Build reordercap : $enable_reordercap"
2612 echo "                    Build text2pcap : $enable_text2pcap"
2613 echo "                      Build randpkt : $enable_randpkt"
2614 echo "                       Build dftest : $enable_dftest"
2615 echo "                     Build rawshark : $enable_rawshark"
2616 echo ""
2617 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2618 echo "  Install dumpcap with capabilities : $setcap_message"
2619 echo "             Install dumpcap setuid : $setuid_message"
2620 echo "                  Use dumpcap group : $dumpcap_group_message"
2621 echo "                        Use plugins : $have_plugins"
2622 echo "                    Use Lua library : $lua_message"
2623 echo "                 Use Python binding : $python_message"
2624 echo "                   Build rtp_player : $portaudio_message"
2625 echo "             Build profile binaries : $enable_profile_build"
2626 echo "                   Use pcap library : $want_pcap"
2627 echo "                   Use zlib library : $zlib_message"
2628 echo "               Use kerberos library : $krb5_message"
2629 echo "                 Use c-ares library : $c_ares_message"
2630 echo "               Use GNU ADNS library : $adns_message"
2631 echo "                Use SMI MIB library : $libsmi_message"
2632 echo "             Use GNU crypto library : $gcrypt_message"
2633 echo "             Use SSL crypto library : $ssl_message"
2634 echo "           Use IPv6 name resolution : $enable_ipv6"
2635 echo "                 Use gnutls library : $tls_message"
2636 echo "     Use POSIX capabilities library : $libcap_message"
2637 echo "                  Use GeoIP library : $geoip_message"
2638 echo "                     Use nl library : $libnl_message"