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