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