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