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