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