Don't use compiler options not supported by clang in XCode 4.6.3
[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         # Also add -Wl,-rpath,@executable_path/../lib and
996         # -Wl,-rpath,/usr/local/lib, so that, if we build an app
997         # bundle, we can tweak all the executable images, shared
998         # libraries, and plugins in the bundle to look for non-system
999         # libraries in the rpath, rather than having a script tweak
1000         # DYLD_LIBRARY_PATH.
1001         #
1002         LDFLAGS="-Wl,-search_paths_first -Wl,-rpath,@executable_path/../lib -Wl,-rpath,/usr/local/lib $LDFLAGS"
1003         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first, and rpaths])
1004         ;;
1005 cygwin*)
1006         #
1007         # Shared libraries in cygwin/Win32 must never contain
1008         # undefined symbols.
1009         #
1010         LDFLAGS="$LDFLAGS -no-undefined"
1011         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
1012         ;;
1013 *)
1014         AC_MSG_RESULT(none needed)
1015         ;;
1016 esac
1017 AC_SUBST(LDFLAGS_SHAREDLIB)
1018
1019 # Enable silent builds by default
1020 # Verbose builds can be enabled with "./configure
1021 # --enable-silent-rules ..." or "make V=1 ..."
1022 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
1023   [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
1024
1025 #
1026 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
1027 # "just Darwin" (as we don't currently support iOS, and as I don't
1028 # think you can build and run "just Darwin" as an OS for PCs), we
1029 # arrange to build some programs with Application Services so they
1030 # can launch Web browsers and Finder windows, arrange to build some
1031 # programs with System Configuration so they can get "friendly names"
1032 # and other information about interfaces, and build any programs that
1033 # use either of those frameworks or that report version information
1034 # with Core Foundation as the frameworks in question use it and as we
1035 # get version information from plists and thus need Core Foundation
1036 # to process those plists.
1037 #
1038 case "$host_os" in
1039
1040 darwin*)
1041         AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
1042         APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
1043         SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
1044         COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
1045
1046         #
1047         # OK, so we have the OS X frameworks; do they include
1048         # CFPropertyListCreateWithStream, or do we have
1049         # to fall back on CFPropertyListCreateFromStream?
1050         # (They only differ in the error return, which we
1051         # don't care about.  And, no, we shouldn't just
1052         # use CFPropertyListCreateFromStream, because it's
1053         # deprecated in newer releases.)
1054         #
1055         ac_save_LIBS="$LIBS"
1056         LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
1057         AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
1058         LIBS="$ac_save_LIBS"
1059         ;;
1060 esac
1061 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
1062 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
1063 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
1064 AC_SUBST(OSX_APP_FLAGS)
1065
1066 dnl Look in /usr/local for header files and libraries ?
1067 dnl XXX FIXME don't include /usr/local if it is already in the system
1068 dnl search path as this causes gcc 3.2 on Linux to complain about a change
1069 dnl of the system search order for includes
1070 AC_ARG_ENABLE(usr-local,
1071   AC_HELP_STRING( [--enable-usr-local],
1072                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
1073     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
1074
1075 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
1076 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
1077         if test -d "/usr/local"; then
1078                 AC_MSG_RESULT(yes)
1079                 #
1080                 # Arrange that we search for header files in the source directory
1081                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
1082                 # as various packages we use ("libpcap", "zlib", "adns")
1083                 # may have been installed under "/usr/local/include".
1084                 #
1085                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
1086
1087                 #
1088                 # Arrange that we search for libraries in "/usr/local/lib".
1089                 #
1090                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
1091         else
1092                 AC_MSG_RESULT(no)
1093         fi
1094 else
1095         AC_MSG_RESULT(no)
1096 fi
1097
1098 #
1099 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
1100 # link directory.
1101 #
1102 case "$host_os" in
1103   solaris*)
1104     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
1105     if test x$LD_LIBRARY_PATH != x ; then
1106       LIBS="$LIBS -R$LD_LIBRARY_PATH"
1107       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
1108     else
1109       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
1110     fi
1111   ;;
1112 esac
1113
1114 #
1115 # Check for versions of "sed" inadequate to handle, in libtool, a list
1116 # of object files as large as the list in Wireshark.
1117 #
1118 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
1119 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
1120 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
1121 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
1122 # is the only "sed" that comes with Solaris that can handle Wireshark.
1123 #
1124 # Add any checks here that are necessary for other OSes.
1125 #
1126 AC_WIRESHARK_GNU_SED_CHECK
1127 if test "$HAVE_GNU_SED" = no ; then
1128         case "$host_os" in
1129         solaris*)
1130                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
1131                 case `which sed` in
1132                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
1133                         AC_MSG_RESULT(yes)
1134                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
1135                         ;;
1136
1137                         *)
1138                         AC_MSG_RESULT(no)
1139                         ;;
1140                 esac
1141                 ;;
1142
1143         *)
1144                 :
1145                 ;;
1146         esac
1147 fi
1148
1149 # Enable/disable wireshark
1150 AC_ARG_ENABLE(wireshark,
1151   AC_HELP_STRING( [--enable-wireshark],
1152                   [build the Wireshark GUI (with Gtk+, Qt, or both) @<:@default=yes@:>@]),
1153     enable_wireshark=$enableval,enable_wireshark=yes)
1154
1155 AC_ARG_ENABLE(packet-editor,
1156   AC_HELP_STRING( [--enable-packet-editor],
1157                   [add support for packet editor in Wireshark @<:@default=no@:>@]),
1158     enable_packet_editor=$enableval,enable_packet_editor=no)
1159 if test x$enable_packet_editor = xyes; then
1160         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
1161 fi
1162
1163 AC_ARG_ENABLE(profile-build,
1164   AC_HELP_STRING( [--enable-profile-build],
1165                   [build profile-ready binaries @<:@default=no@:>@]),
1166     enable_profile_build=$enableval,enable_profile_build=no)
1167 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
1168 AC_MSG_CHECKING(if profile builds must be generated)
1169 if test "x$enable_profile_build" = "xyes" ; then
1170         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
1171                 AC_MSG_RESULT(yes)
1172                 CFLAGS=" -pg $CFLAGS"
1173                 CXXFLAGS=" -pg $CXXFLAGS"
1174         else
1175                 AC_MSG_RESULT(no)
1176                 echo "Building profile binaries currently only supported for GCC and clang."
1177         fi
1178 else
1179         AC_MSG_RESULT(no)
1180 fi
1181
1182 # Create DATAFILE_DIR #define for config.h
1183 datafiledir=$datadir/wireshark
1184 datafiledir=`(
1185     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1186     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1187     # Ugly hack, but I don't see how this problem can be solved
1188     # properly that DATAFILE_DIR had a value starting with
1189     # "${prefix}/" instead of e.g. "/usr/local/"
1190     eval eval echo "$datafiledir"
1191 )`
1192 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
1193
1194 # Create DOC_DIR #define for config.h
1195 docdir=`(
1196     test "x$prefix" = xNONE && prefix=$ac_default_prefix
1197     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
1198     # Ugly hack, but I don't see how this problem can be solved
1199     # properly that DOC_DIR had a value starting with
1200     # "${prefix}/" instead of e.g. "/usr/local/"
1201     eval eval echo "$docdir"
1202 )`
1203 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
1204
1205 GTK2_MIN_VERSION=2.12.0
1206 AC_SUBST(GTK2_MIN_VERSION)
1207 GTK3_MIN_VERSION=3.0.0
1208 AC_SUBST(GTK3_MIN_VERSION)
1209 QT_MIN_VERSION=4.6.0
1210 AC_SUBST(QT_MIN_VERSION)
1211 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
1212 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
1213 #
1214 # We only do those if we're going to be building Wireshark;
1215 # otherwise, we don't have any GUI to build, so we don't use
1216 # GTK+ or Qt.
1217 #
1218 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1219 # force all programs to be built with GTK+ or Qt.
1220 #
1221 # Release dates for GTK+ versions:
1222 # 2.12.0: 14 Sep 2007
1223 # 2.14.0: 04 Sep 2008
1224 # 2.16.0: 13 Mar 2009
1225 # 2.18.0: 23 Sep 2009
1226 # 2.20.0: 23 Mar 2010
1227 # 2.22.0: 23 Sep 2010
1228 # 2.24.0: 30 Jan 2011
1229 # 3.0.0:  10 Feb 2011
1230 # 3.2.0:  25 Sep 2011
1231 # 3.4.0:  26 Mar 2012
1232 # 3.6.0:  24 Sep 2012
1233 # 3.8.0:  25 Mar 2013
1234
1235 have_qt=no
1236 have_gtk=no
1237 if test "x$enable_wireshark" = "xyes"; then
1238         if test "x$with_qt" = "xyes"; then
1239                 #
1240                 # Make sure we have a C++ compiler.
1241                 #
1242                 if test -z "$CXX"; then
1243                         AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1244                 fi
1245
1246                 AM_PATH_QT($QT_MIN_VERSION,
1247                 [
1248                         CFLAGS="$CFLAGS $Qt_CFLAGS"
1249                         CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1250                         have_qt=yes
1251                 ]
1252                 , [AC_MSG_ERROR([Qt is not available])])
1253
1254                 #
1255                 # XXX - greasy hack to make ui/gtk/recent.c
1256                 # compile.
1257                 #
1258                 CPPFLAGS="-DQT_GUI_LIB"
1259         fi
1260
1261         if test "x$with_gtk3" = "xyes" -a "x$with_gtk2" = "xyes" ; then
1262                 # If the user gave us --with-gtk3, use gtk3 rather than gtk2
1263                 with_gtk2="no"
1264         fi
1265
1266         if test "x$with_gtk3" = "xyes"; then
1267                 AM_PATH_GTK_3_0(3.0.0,
1268                 [
1269                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1270                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1271                         have_gtk=yes
1272                 ], have_gtk=no)
1273         fi
1274
1275         if test "x$with_gtk2" = "xyes"; then
1276                 AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1277                 [
1278                         CFLAGS="$CFLAGS $GTK_CFLAGS"
1279                         CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1280                         have_gtk=yes
1281                 ], have_gtk=no)
1282         fi
1283 fi
1284
1285 GLIB_MIN_VERSION=2.16.0
1286 AC_SUBST(GLIB_MIN_VERSION)
1287 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1288 # support, as we need that for dynamically loading plugins.
1289 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1290 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1291 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1292 # GLIB_CFLAGS to CFLAGS.
1293 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1294 # set when generating the Makefile, so we can make programs that require
1295 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1296 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1297 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1298 # programs to be built with GLib.
1299 #
1300 # Release dates for GLib versions:
1301 # 2.14.0: 03 Aug 2007
1302 # 2.16.0: 10 Mar 2008
1303 # 2.18.0: 02 Sep 2008
1304 # 2.20.0: 13 Mar 2009
1305 # 2.22.0: 22 Sep 2009
1306 # 2.24.0: 28 Mar 2010
1307 # 2.26.0: 27 Sep 2010
1308 # 2.28.0: 08 Feb 2011
1309 # 2.30.0: 27 Sep 2011
1310 # 2.32.0: 24 Mar 2012
1311 # 2.34.0: 24 Sep 2012
1312 # 2.36.0: 25 Mar 2013
1313
1314 use_glib_cflags="true"
1315 if test "$have_gtk" = "yes" -a "$have_qt" = "yes" ; then
1316         # We have both GTK and Qt and thus will be building both wireshark
1317         # and wireshark-qt.
1318
1319         wireshark_bin="wireshark\$(EXEEXT) wireshark-qt\$(EXEEXT)"
1320         wireshark_man="wireshark.1"
1321         wireshark_SUBDIRS="codecs ui/qt ui/gtk"
1322 fi
1323 if test "$have_gtk" = "no" -a "$have_qt" = "yes" ; then
1324         # We don't have GTK+ but we have Qt.
1325
1326         wireshark_bin="wireshark-qt\$(EXEEXT)"
1327         wireshark_man="wireshark.1"
1328         wireshark_SUBDIRS="codecs ui/qt"
1329 fi
1330 if test "$have_gtk" = "yes" -a "$have_qt" = "no" ; then
1331         # We have GTK+ but not Qt.
1332
1333         wireshark_bin="wireshark\$(EXEEXT)"
1334         wireshark_man="wireshark.1"
1335         wireshark_SUBDIRS="codecs ui/gtk"
1336         use_glib_cflags="false"
1337 fi
1338 if test "$have_gtk" = "no" -a "$have_qt" = "no" ; then
1339         # We have neither GTK+ nor Qt.
1340         #
1341         # If they didn't explicitly say "--disable-wireshark",
1342         # fail (so that, unless they explicitly indicated that
1343         # they don't want Wireshark, we stop so they know they
1344         # won't be getting Wireshark unless they fix the GTK+/Qt
1345         # problem).
1346         #
1347         if test "x$enable_wireshark" = "xyes"; then
1348                 if test "x$with_gtk3" = "xyes"; then
1349                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK3_MIN_VERSION or later are available, so Wireshark can't be compiled])
1350                 else
1351                         AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1352                 fi
1353         fi
1354         wireshark_bin=""
1355         wireshark_man=""
1356 fi
1357
1358 if test "$have_gtk" = "yes" ; then
1359         # If we have GTK then add flags for it.
1360
1361         CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1362         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1363         CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1364         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1365         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1366                 # Enable GSEAL when building with GTK > 2.20
1367                 # (Versions prior to 2.22 lacked some necessary accessors.)
1368                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1369         fi
1370 fi
1371
1372 # XXX - Is this really necessary?  When we build with both Gtk+ and Qt it works...
1373 if test "$use_glib_cflags" = "true"; then
1374         # Use GLIB_CFLAGS
1375         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1376         [
1377                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1378                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1379         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1380 else
1381         # Don't use GLIB_CFLAGS
1382         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1383 fi
1384
1385 #
1386 # "make dist" requires that we have the Qt build tools.
1387 #
1388 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1389 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1390 # installed; if they're still doing that in current Fedora releases,
1391 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1392 #
1393 AC_PATH_PROG(UIC, uic-qt4)
1394 if test "x$UIC" = x
1395 then
1396         AC_PATH_PROG(UIC, uic)
1397         if test "x$UIC" = x
1398         then
1399                 if test "x$with_qt" = "xyes"; then
1400                         #
1401                         # If you want to build with Qt, you'd better
1402                         # have uic.
1403                         #
1404                         AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1405                 else
1406                         #
1407                         # We shouldn't fail here, as the user's not
1408                         # building with Qt, and we shouldn't force them
1409                         # to have Qt installed if they're not doing so.
1410                         # "make dist" will fail if they do that, but
1411                         # we don't know whether they'll be doing that,
1412                         # so this is the best we can do.
1413                         #
1414                         UIC=uic
1415                 fi
1416         fi
1417 fi
1418 AC_SUBST(UIC)
1419 AC_PATH_PROG(MOC, moc-qt4)
1420 if test "x$MOC" = x
1421 then
1422         AC_PATH_PROG(MOC, moc)
1423         if test "x$MOC" = x
1424         then
1425                 if test "x$with_qt" = "xyes"; then
1426                         #
1427                         # If you want to build with Qt, you'd better
1428                         # have moc.
1429                         #
1430                         AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1431                 else
1432                         #
1433                         # We shouldn't fail here, as the user's not
1434                         # building with Qt, and we shouldn't force them
1435                         # to have Qt installed if they're not doing so.
1436                         # "make dist" will fail if they do that, but
1437                         # we don't know whether they'll be doing that,
1438                         # so this is the best we can do.
1439                         #
1440                         MIC=moc
1441                 fi
1442         fi
1443 fi
1444 AC_SUBST(MOC)
1445
1446 # Error out if a glib header other than a "top level" header
1447 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1448 #  is used.
1449 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1450
1451 # Error out on the usage of deprecated glib functions
1452 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1453
1454 #
1455 # Check whether GLib modules are supported, to determine whether we
1456 # can support plugins.
1457 #
1458 AC_MSG_CHECKING(whether GLib supports loadable modules)
1459 ac_save_CFLAGS="$CFLAGS"
1460 ac_save_LIBS="$LIBS"
1461 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1462 LIBS="$GLIB_LIBS $LIBS"
1463 AC_TRY_RUN([
1464 #include <glib.h>
1465 #include <gmodule.h>
1466 #include <stdio.h>
1467 #include <stdlib.h>
1468
1469 int
1470 main ()
1471 {
1472   if (g_module_supported())
1473     return 0;   /* success */
1474   else
1475     return 1;   /* failure */
1476 }
1477 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1478    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1479     ac_cv_glib_supports_modules=yes])
1480 CFLAGS="$ac_save_CFLAGS"
1481 LIBS="$ac_save_LIBS"
1482 if test "$ac_cv_glib_supports_modules" = yes ; then
1483   AC_MSG_RESULT(yes)
1484   have_plugins=yes
1485 else
1486   AC_MSG_RESULT(no)
1487   have_plugins=no
1488 fi
1489
1490 #
1491 # If we have <dlfcn.h>, check whether we can use dladdr to find a
1492 # filename (hopefully, a full pathname, but no guarantees) for
1493 # the executable.
1494 #
1495 if test "$ac_cv_header_dlfcn_h" = "yes"
1496 then
1497         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
1498         ac_save_CFLAGS="$CFLAGS"
1499         ac_save_LIBS="$LIBS"
1500         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1501         LIBS="$GLIB_LIBS $LIBS"
1502         AC_TRY_RUN([
1503 #define _GNU_SOURCE     /* required on Linux, sigh */
1504 #include <dlfcn.h>
1505
1506 int
1507 main(void)
1508 {
1509         Dl_info info;
1510
1511         if (!dladdr((void *)main, &info))
1512                 return 1;       /* failure */
1513         return 0;               /* assume success */
1514 }
1515 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
1516    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1517     ac_cv_dladdr_finds_executable_path=yes])
1518         CFLAGS="$ac_save_CFLAGS"
1519         LIBS="$ac_save_LIBS"
1520         if test x$ac_cv_dladdr_finds_executable_path = xyes
1521         then
1522                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
1523         fi
1524         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
1525 fi
1526
1527 #
1528 # Check whether GLib's printf supports thousands grouping. (This might
1529 # be different from the system's printf since GLib can optionally use
1530 # its own printf implementation.)
1531 #
1532 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1533 ac_save_CFLAGS="$CFLAGS"
1534 ac_save_LIBS="$LIBS"
1535 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1536 LIBS="$GLIB_LIBS $LIBS"
1537 AC_TRY_RUN([
1538 #include <glib.h>
1539 #include <locale.h>
1540 #include <stdio.h>
1541 #include <string.h>
1542
1543 int
1544 main ()
1545 {
1546   gchar *str;
1547   setlocale(LC_ALL, "en_US.UTF-8");
1548   str = g_strdup_printf("%'u", 123456);
1549   return (strcmp (str, "123,456") != 0);
1550 }
1551 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1552    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1553     ac_cv_glib_supports_printf_grouping=no])
1554 CFLAGS="$ac_save_CFLAGS"
1555 LIBS="$ac_save_LIBS"
1556 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1557   AC_MSG_RESULT(yes)
1558   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1559 else
1560   AC_MSG_RESULT(no)
1561 fi
1562
1563 if test "x$have_gtk" = "xyes"
1564 then
1565     #
1566     # We have GTK+; do we want the OS X integration functions and,
1567     # if so, do we have them and, if so, which versions do we have,
1568     # the old Carbon-based ones or the new Cocoa-based ones?
1569     #
1570     AC_MSG_CHECKING(whether to use OS X integration functions)
1571
1572     AC_ARG_WITH(osx-integration,
1573       AC_HELP_STRING( [--with-osx-integration],
1574                       [use OS X integration functions @<:@default=yes, if available@:>@]),
1575     [
1576         if test $withval = no
1577         then
1578             want_osx_integration=no
1579         else
1580             want_osx_integration=yes
1581         fi
1582     ],[
1583         want_osx_integration=yes
1584     ])
1585     if test "x$want_osx_integration" = "xno"; then
1586         AC_MSG_RESULT(no)
1587     else
1588         AC_MSG_RESULT(yes)
1589         AC_WIRESHARK_OSX_INTEGRATION_CHECK
1590     fi
1591 fi
1592
1593 AC_SUBST(wireshark_bin)
1594 AC_SUBST(wireshark_man)
1595 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1596 AM_CONDITIONAL(HAVE_GTK, test "$have_gtk" = "yes")
1597
1598
1599 # Enable/disable tshark
1600
1601 AC_ARG_ENABLE(tshark,
1602   AC_HELP_STRING( [--enable-tshark],
1603                   [build TShark @<:@default=yes@:>@]),
1604     tshark=$enableval,enable_tshark=yes)
1605
1606 if test "x$enable_tshark" = "xyes" ; then
1607         tshark_bin="tshark\$(EXEEXT)"
1608         tshark_man="tshark.1"
1609         wiresharkfilter_man="wireshark-filter.4"
1610 else
1611         tshark_bin=""
1612         tshark_man=""
1613 fi
1614 AC_SUBST(tshark_bin)
1615 AC_SUBST(tshark_man)
1616 AC_SUBST(wiresharkfilter_man)
1617
1618
1619
1620 # Enable/disable editcap
1621
1622 AC_ARG_ENABLE(editcap,
1623   AC_HELP_STRING( [--enable-editcap],
1624                   [build editcap @<:@default=yes@:>@]),
1625     enable_editcap=$enableval,enable_editcap=yes)
1626
1627 if test "x$enable_editcap" = "xyes" ; then
1628         editcap_bin="editcap\$(EXEEXT)"
1629         editcap_man="editcap.1"
1630 else
1631         editcap_bin=""
1632         editcap_man=""
1633 fi
1634 AC_SUBST(editcap_bin)
1635 AC_SUBST(editcap_man)
1636
1637
1638
1639 # Enable/disable echld
1640
1641 AC_ARG_ENABLE(echld,
1642   AC_HELP_STRING( [--enable-echld],
1643                   [support echld]),
1644     have_echld=$enableval,have_echld=no)
1645
1646 AM_CONDITIONAL(HAVE_ECHLD, test "x$have_echld" = "xyes")
1647 if test "x$have_echld" = "xyes"
1648 then
1649   AC_DEFINE(HAVE_ECHLD, 1, [Define if echld is enabled])
1650   echld_test_bin="echld_test\$(EXEEXT)"
1651   echld_dir="echld"
1652 else
1653   have_echld="no"
1654   echld_test_bin=""
1655   echld_dir=""
1656 fi
1657 AC_SUBST(echld_test_bin)
1658 AC_SUBST(echld_dir)
1659
1660
1661 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1662 # or not)
1663
1664 # Enable/disable capinfos
1665
1666 AC_ARG_ENABLE(capinfos,
1667   AC_HELP_STRING( [--enable-capinfos],
1668                   [build capinfos @<:@default=yes@:>@]),
1669     enable_capinfos=$enableval,enable_capinfos=yes)
1670
1671 if test "x$enable_capinfos" = "xyes" ; then
1672         capinfos_bin="capinfos\$(EXEEXT)"
1673         capinfos_man="capinfos.1"
1674 else
1675         capinfos_bin=""
1676         capinfos_man=""
1677 fi
1678 AC_SUBST(capinfos_bin)
1679 AC_SUBST(capinfos_man)
1680
1681
1682 # Enable/disable mergecap
1683
1684 AC_ARG_ENABLE(mergecap,
1685   AC_HELP_STRING( [--enable-mergecap],
1686                   [build mergecap @<:@default=yes@:>@]),
1687     enable_mergecap=$enableval,enable_mergecap=yes)
1688
1689 if test "x$enable_mergecap" = "xyes" ; then
1690         mergecap_bin="mergecap\$(EXEEXT)"
1691         mergecap_man="mergecap.1"
1692 else
1693         mergecap_bin=""
1694         mergecap_man=""
1695 fi
1696 AC_SUBST(mergecap_bin)
1697 AC_SUBST(mergecap_man)
1698
1699
1700 # Enable/disable reordercap
1701
1702 AC_ARG_ENABLE(reordercap,
1703   AC_HELP_STRING( [--enable-reordercap],
1704                   [build reordercap @<:@default=yes@:>@]),
1705     enable_reordercap=$enableval,enable_reordercap=yes)
1706
1707 if test "x$enable_reordercap" = "xyes" ; then
1708         reordercap_bin="reordercap\$(EXEEXT)"
1709         reordercap_man="reordercap.1"
1710 else
1711         reordercap_bin=""
1712         reordercap_man=""
1713 fi
1714 AC_SUBST(reordercap_bin)
1715 AC_SUBST(reordercap_man)
1716
1717
1718 # Enable/disable text2pcap
1719
1720 AC_ARG_ENABLE(text2pcap,
1721   AC_HELP_STRING( [--enable-text2pcap],
1722                   [build text2pcap @<:@default=yes@:>@]),
1723     text2pcap=$enableval,enable_text2pcap=yes)
1724
1725 if test "x$enable_text2pcap" = "xyes" ; then
1726         text2pcap_bin="text2pcap\$(EXEEXT)"
1727         text2pcap_man="text2pcap.1"
1728 else
1729         text2pcap_bin=""
1730         text2pcap_man=""
1731 fi
1732 AC_SUBST(text2pcap_bin)
1733 AC_SUBST(text2pcap_man)
1734
1735
1736 # Enable/disable dftest
1737
1738 AC_ARG_ENABLE(dftest,
1739   AC_HELP_STRING( [--enable-dftest],
1740                   [build dftest @<:@default=yes@:>@]),
1741     enable_dftest=$enableval,enable_dftest=yes)
1742
1743 if test "x$enable_dftest" = "xyes" ; then
1744         dftest_bin="dftest\$(EXEEXT)"
1745         dftest_man="dftest.1"
1746 else
1747         dftest_bin=""
1748         dftest_man=""
1749 fi
1750 AC_SUBST(dftest_bin)
1751 AC_SUBST(dftest_man)
1752
1753
1754 # Enable/disable randpkt
1755
1756 AC_ARG_ENABLE(randpkt,
1757   AC_HELP_STRING( [--enable-randpkt],
1758                   [build randpkt @<:@default=yes@:>@]),
1759     enable_randpkt=$enableval,enable_randpkt=yes)
1760
1761 if test "x$enable_randpkt" = "xyes" ; then
1762         randpkt_bin="randpkt\$(EXEEXT)"
1763         randpkt_man="randpkt.1"
1764 else
1765         randpkt_bin=""
1766         randpkt_man=""
1767 fi
1768 AC_SUBST(randpkt_bin)
1769 AC_SUBST(randpkt_man)
1770
1771
1772
1773 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1774 dnl "gethostbyname()".
1775 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1776
1777 dnl Checks for "connect()", used as a proxy for "socket()" - and
1778 dnl "-lsocket", if we need it to get "connect()".
1779 AC_WIRESHARK_SOCKET_LIB_CHECK
1780
1781 dnl pcap check
1782 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1783
1784 AC_ARG_WITH(pcap,
1785   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1786                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1787 [
1788         if test $withval = no
1789         then
1790                 want_pcap=no
1791         elif test $withval = yes
1792         then
1793                 want_pcap=yes
1794         else
1795                 want_pcap=yes
1796                 pcap_dir=$withval
1797         fi
1798 ],[
1799         want_pcap=yes
1800         pcap_dir=
1801 ])
1802 if test "x$want_pcap" = "xno" ; then
1803         AC_MSG_RESULT(no)
1804 else
1805         AC_MSG_RESULT(yes)
1806         AC_WIRESHARK_PCAP_CHECK
1807 fi
1808
1809
1810 dnl Check for airpcap
1811 AC_MSG_CHECKING(whether to include airpcap support)
1812 AC_ARG_ENABLE(airpcap,
1813   AC_HELP_STRING( [--enable-airpcap],
1814                   [use AirPcap in Wireshark @<:@default=yes@:>@]),
1815   enable_airpcap=$enableval, enable_airpcap=yes)
1816
1817 if test x$enable_airpcap = xyes; then
1818         if test "x$want_pcap" = "xno" ; then
1819                 enable_airpcap=no
1820                 AC_MSG_RESULT(pcap not available - disabling airpcap)
1821         else
1822                 AC_MSG_RESULT(yes)
1823                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1824         fi
1825 else
1826         AC_MSG_RESULT(no)
1827 fi
1828
1829
1830 dnl dumpcap check
1831 AC_MSG_CHECKING(whether to build dumpcap)
1832
1833 AC_ARG_ENABLE(dumpcap,
1834   AC_HELP_STRING( [--enable-dumpcap],
1835                   [build dumpcap @<:@default=yes@:>@]),
1836     enable_dumpcap=$enableval,enable_dumpcap=yes)
1837
1838 if test "x$enable_dumpcap" = "xyes" ; then
1839         if test "x$want_pcap" = "xno" ; then
1840                 enable_dumpcap=no
1841                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1842         else
1843                 AC_MSG_RESULT(yes)
1844         fi
1845 else
1846         AC_MSG_RESULT(no)
1847 fi
1848
1849 if test "x$enable_dumpcap" = "xyes" ; then
1850         dumpcap_bin="dumpcap\$(EXEEXT)"
1851         dumpcap_man="dumpcap.1"
1852 else
1853         dumpcap_bin=""
1854         dumpcap_man=""
1855 fi
1856 AC_SUBST(dumpcap_bin)
1857 AC_SUBST(dumpcap_man)
1858
1859 # Enable/disable rawshark
1860
1861 dnl rawshark check
1862 AC_MSG_CHECKING(whether to build rawshark)
1863
1864 AC_ARG_ENABLE(rawshark,
1865   AC_HELP_STRING( [--enable-rawshark],
1866                   [build rawshark @<:@default=yes@:>@]),
1867     rawshark=$enableval,enable_rawshark=yes)
1868
1869 if test "x$enable_rawshark" = "xyes" ; then
1870         if test "x$want_pcap" = "xno" ; then
1871                 enable_rawshark=no
1872                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1873         else
1874                 AC_MSG_RESULT(yes)
1875         fi
1876 else
1877         AC_MSG_RESULT(no)
1878 fi
1879
1880 if test "x$enable_rawshark" = "xyes" ; then
1881         rawshark_bin="rawshark\$(EXEEXT)"
1882         rawshark_man="rawshark.1"
1883 else
1884         rawshark_bin=""
1885         rawshark_man=""
1886 fi
1887 AC_SUBST(rawshark_bin)
1888 AC_SUBST(rawshark_man)
1889
1890 dnl Use pcap-ng by default
1891 AC_ARG_ENABLE(pcap-ng-default,
1892   AC_HELP_STRING( [--enable-pcap-ng-default],
1893                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
1894     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1895 if test x$enable_pcap_ng_default = xyes; then
1896         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1897 fi
1898
1899 dnl pcap remote check
1900 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1901
1902 AC_ARG_WITH(pcap-remote,
1903     AC_HELP_STRING([--with-pcap-remote],
1904                    [use libpcap remote capturing (requires libpcap)]),
1905 [
1906     if test $withval = no
1907     then
1908         want_pcap_remote=no
1909     else
1910         want_pcap_remote=yes
1911     fi
1912 ],[
1913     want_pcap_remote=no
1914 ])
1915 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1916     AC_MSG_RESULT(no)
1917 else
1918     AC_MSG_RESULT(yes)
1919     AC_WIRESHARK_PCAP_REMOTE_CHECK
1920 fi
1921
1922 dnl zlib check
1923 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1924
1925 AC_ARG_WITH(zlib,
1926   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1927                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1928 [
1929         if test "x$withval" = "xno"
1930         then
1931                 want_zlib=no
1932         elif test "x$withval" = "xyes"
1933         then
1934                 want_zlib=yes
1935         else
1936                 want_zlib=yes
1937                 zlib_dir="$withval"
1938         fi
1939 ],[
1940         #
1941         # Use zlib if it's present, otherwise don't.
1942         #
1943         want_zlib=ifavailable
1944         zlib_dir=
1945 ])
1946 if test "x$want_zlib" = "xno" ; then
1947         AC_MSG_RESULT(no)
1948 else
1949         AC_MSG_RESULT(yes)
1950         AC_WIRESHARK_ZLIB_CHECK
1951         if test "x$want_zlib" = "xno" ; then
1952                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1953         else
1954                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1955                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1956                 fi
1957         fi
1958 fi
1959
1960 dnl Lua check
1961 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1962
1963 AC_ARG_WITH(lua,
1964   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1965                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1966 [
1967         if test $withval = no
1968         then
1969                 want_lua=no
1970         elif test $withval = yes
1971         then
1972                 want_lua=yes
1973         else
1974                 want_lua=yes
1975                 lua_dir=$withval
1976         fi
1977 ],[
1978         #
1979         # Use liblua by default
1980         #
1981         want_lua=ifavailable
1982         lua_dir=
1983 ])
1984 if test "x$want_lua" = "xno" ; then
1985         AC_MSG_RESULT(no)
1986 else
1987         AC_MSG_RESULT(yes)
1988         AC_WIRESHARK_LIBLUA_CHECK
1989         if test "x$want_lua" = "xno" ; then
1990                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1991         fi
1992 fi
1993 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1994
1995
1996 dnl portaudio check
1997 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1998
1999 AC_ARG_WITH(portaudio,
2000   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
2001                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
2002 [
2003         if test $withval = no
2004         then
2005                 want_portaudio=no
2006         elif test $withval = yes
2007         then
2008                 want_portaudio=yes
2009         else
2010                 want_portaudio=yes
2011                 portaudio_dir=$withval
2012         fi
2013 ],[
2014         #
2015         # Use libportaudio by default
2016         #
2017         want_portaudio=ifavailable
2018         portaudio_dir=
2019 ])
2020 if test "x$want_portaudio" = "xno" ; then
2021         AC_MSG_RESULT(no)
2022 else
2023         AC_MSG_RESULT(yes)
2024         AC_WIRESHARK_LIBPORTAUDIO_CHECK
2025         if test "x$want_portaudio" = "xno" ; then
2026                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
2027         fi
2028 fi
2029 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
2030
2031
2032 dnl ipv6 check
2033 AC_ARG_ENABLE(ipv6,
2034   AC_HELP_STRING( [--enable-ipv6],
2035                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
2036     enable_ipv6=$enableval,enable_ipv6=yes)
2037
2038 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
2039 if test "x$enable_ipv6" = "xno" ; then
2040         AC_MSG_RESULT(no)
2041 else
2042         AC_MSG_RESULT(yes)
2043         AC_WIRESHARK_IPV6_STACK
2044 fi
2045
2046
2047 dnl Check if dumpcap should be installed with filesystem capabilities
2048 AC_PATH_PROG(SETCAP, setcap)
2049 AC_ARG_ENABLE(setcap-install,
2050   AC_HELP_STRING( [--enable-setcap-install],
2051                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
2052     enable_setcap_install=$enableval,enable_setcap_install=no)
2053
2054 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
2055 if test "x$enable_setcap_install" = "xno" ; then
2056         AC_MSG_RESULT(no)
2057 else
2058         if test "x$SETCAP" = "x" ; then
2059                 AC_MSG_RESULT(no. Setcap not found)
2060         elif test "x$enable_dumpcap" = "xno" ; then
2061                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
2062         else
2063                 AC_MSG_RESULT(yes)
2064         fi
2065 fi
2066
2067 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
2068
2069 dnl Check if dumpcap should be installed setuid
2070 AC_ARG_ENABLE(setuid-install,
2071   AC_HELP_STRING( [--enable-setuid-install],
2072                   [install dumpcap as setuid @<:@default=no@:>@]),
2073     enable_setuid_install=$enableval,enable_setuid_install=no)
2074
2075 AC_MSG_CHECKING(whether to install dumpcap setuid)
2076 if test "x$enable_setuid_install" = "xno" ; then
2077         AC_MSG_RESULT(no)
2078 else
2079         if test "x$enable_setcap_install" = "xyes" ; then
2080                 enable_setuid_install=no
2081                 AC_MSG_RESULT(no; using setcap instead)
2082         elif test "x$enable_dumpcap" = "xno" ; then
2083                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
2084         else
2085                 AC_MSG_RESULT(yes)
2086         fi
2087 fi
2088
2089 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
2090 AC_CHECK_FUNCS(setresuid setresgid)
2091
2092 dnl ...but our Network Operations group is named "no"!
2093 DUMPCAP_GROUP=''
2094 AC_ARG_WITH(dumpcap-group,
2095   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
2096                   [restrict dumpcap to GROUP]),
2097 [
2098   if test "x$withval" = "xyes"; then
2099       AC_MSG_ERROR([No dumpcap group specified.])
2100   elif test "x$withval" != "xno"; then
2101       if test "x$enable_dumpcap" = "xno" ; then
2102           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
2103       fi
2104       AC_MSG_RESULT($withval)
2105       DUMPCAP_GROUP="$withval"
2106   fi
2107 ])
2108 AC_SUBST(DUMPCAP_GROUP)
2109 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
2110
2111 dnl libcap (not libpcap) check
2112 LIBCAP_LIBS=''
2113 AC_MSG_CHECKING(whether to use the libcap capabilities library)
2114
2115 AC_ARG_WITH(libcap,
2116   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
2117                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
2118 [
2119 if   test "x$withval" = "xno";  then
2120         want_libcap=no
2121 elif test "x$withval" = "xyes"; then
2122         want_libcap=yes
2123 elif test -d "$withval"; then
2124         want_libcap=yes
2125         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2126 fi
2127 ])
2128 if test "x$with_libcap" = "xno" ; then
2129         AC_MSG_RESULT(no)
2130 else
2131         AC_MSG_RESULT(yes)
2132         AC_WIRESHARK_LIBCAP_CHECK
2133 fi
2134 AC_SUBST(LIBCAP_LIBS)
2135
2136 dnl Checks for header files.
2137 dnl Some of these may not be needed: http://hacks.owlfolio.org/header-survey/
2138 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
2139 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)
2140 AC_CHECK_HEADERS(netinet/in.h)
2141 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
2142
2143 dnl SSL Check
2144 SSL_LIBS=''
2145 AC_MSG_CHECKING(whether to use SSL library)
2146
2147 AC_ARG_WITH(ssl,
2148   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
2149                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
2150 [
2151 if test "x$withval" = "xno";  then
2152         want_ssl=no
2153 elif test "x$withval" = "xyes"; then
2154         want_ssl=yes
2155 elif test -d "$withval"; then
2156         want_ssl=yes
2157         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2158 fi
2159 ],[
2160         want_ssl=no
2161 ])
2162 if test "x$want_ssl" = "xyes"; then
2163         AC_MSG_RESULT(yes)
2164         AC_CHECK_LIB(crypto,EVP_md5,
2165             [
2166                 SSL_LIBS=-lcrypto
2167             ],
2168             [
2169                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
2170             ])
2171 else
2172         AC_MSG_RESULT(no)
2173 fi
2174 AC_SUBST(SSL_LIBS)
2175
2176 dnl kerberos check
2177 AC_MSG_CHECKING(whether to use Kerberos library)
2178
2179 AC_ARG_WITH(krb5,
2180   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
2181                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
2182 [
2183         if test $withval = no
2184         then
2185                 want_krb5=no
2186         elif test $withval = yes
2187         then
2188                 want_krb5=yes
2189         else
2190                 want_krb5=yes
2191                 krb5_dir=$withval
2192         fi
2193 ],[
2194         #
2195         # Use Kerberos library if available, otherwise don't.
2196         #
2197         want_krb5=ifavailable
2198         krb5_dir=
2199 ])
2200 if test "x$want_krb5" = "xno" ; then
2201         AC_MSG_RESULT(no)
2202 else
2203         AC_MSG_RESULT(yes)
2204         AC_WIRESHARK_KRB5_CHECK
2205 fi
2206
2207
2208 dnl c-ares Check
2209 C_ARES_LIBS=''
2210 AC_MSG_CHECKING(whether to use the c-ares library if available)
2211
2212 AC_ARG_WITH(c-ares,
2213   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
2214                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
2215 [
2216 if   test "x$withval" = "xno";  then
2217         want_c_ares=no
2218 elif test "x$withval" = "xyes"; then
2219         want_c_ares=yes
2220 elif test -d "$withval"; then
2221         want_c_ares=yes
2222         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2223 fi
2224 ])
2225 if test "x$want_c_ares" = "xno" ; then
2226         AC_MSG_RESULT(no)
2227 else
2228         AC_MSG_RESULT(yes)
2229         AC_WIRESHARK_C_ARES_CHECK
2230 fi
2231 AC_SUBST(C_ARES_LIBS)
2232
2233 dnl ADNS Check
2234 ADNS_LIBS=''
2235 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2236
2237 AC_ARG_WITH(adns,
2238   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2239                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2240 [
2241 if   test "x$withval" = "xno";  then
2242         want_adns=no
2243 elif test "x$withval" = "xyes"; then
2244         want_adns=yes
2245 elif test -d "$withval"; then
2246         want_adns=yes
2247         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2248 fi
2249 ])
2250 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2251         AC_MSG_RESULT(no)
2252 else
2253         AC_MSG_RESULT(yes)
2254         AC_WIRESHARK_ADNS_CHECK
2255 fi
2256 AC_SUBST(ADNS_LIBS)
2257
2258 dnl GEOIP Check
2259 GEOIP_LIBS=''
2260 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2261
2262 AC_ARG_WITH(geoip,
2263   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2264                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2265 [
2266 if   test "x$withval" = "xno";  then
2267         want_geoip=no
2268 elif test "x$withval" = "xyes"; then
2269         want_geoip=yes
2270 elif test -d "$withval"; then
2271         want_geoip=yes
2272         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2273 fi
2274 ])
2275 if test "x$want_geoip" = "xno"; then
2276         AC_MSG_RESULT(no)
2277 else
2278         AC_MSG_RESULT(yes)
2279         AC_WIRESHARK_GEOIP_CHECK
2280 fi
2281 AC_SUBST(GEOIP_LIBS)
2282
2283 # Warning: this Python scripting appears to be broken (does not work at all).
2284 # Running it also causes Valgrind to complain about all sorts of memory errors.
2285 # Suggestion: do not enable it unless you are working on fixing it.
2286 #
2287 # An alternative might be https://code.google.com/p/pyreshark/
2288 #
2289 dnl Python devel Check
2290 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2291
2292 AC_ARG_WITH(broken-python,
2293     AC_HELP_STRING( [--with-broken-python@<:@=DIR@:>@],
2294                     [use the (BROKEN) Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@]),
2295 [
2296         pythondir='${libdir}/wireshark/python/${VERSION}'
2297         if test "x$withval" = "xno"
2298         then
2299                 want_python=no
2300         elif test "x$withval" = "xyes"
2301         then
2302                 want_python=yes
2303         else
2304                 want_python=yes
2305                 pythondir="$withval"
2306         fi
2307 ],[
2308         # By default (user didn't explicitly enable Python), don't enable
2309         # Python support.
2310         #
2311         want_python=no
2312         #pythondir='${libdir}/wireshark/python/${VERSION}'
2313 ])
2314 if test "x$want_python" = "xno" ; then
2315         AC_MSG_RESULT(no)
2316 else
2317         AC_MSG_RESULT(yes)
2318         AC_WIRESHARK_PYTHON_CHECK
2319 fi
2320 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2321 AC_SUBST(pythondir)
2322
2323 #
2324 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2325 # never return (just like Charlie on the MTA).
2326 #
2327 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2328 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2329 # follow the function name, so we need two different flavors of
2330 # noreturn tag.
2331 #
2332 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2333
2334 dnl Checks for typedefs, structures, and compiler characteristics.
2335 # AC_C_CONST
2336
2337 # Check how we can get the time zone abbreviation
2338 AC_WIRESHARK_TIMEZONE_ABBREV
2339
2340 # We need to know whether "struct stat" has an "st_flags" member
2341 # for file_user_immutable().
2342
2343 AC_WIRESHARK_STRUCT_ST_FLAGS
2344
2345 # We need to know whether "struct sockaddr" has an "sa_len" member
2346 # for get_interface_list().
2347
2348 AC_WIRESHARK_STRUCT_SA_LEN
2349
2350 # We must know our byte order
2351 AC_C_BIGENDIAN
2352
2353 # Checks whether "-traditional" is needed when using "ioctl".
2354 # XXX - do we need this?
2355 AC_PROG_GCC_TRADITIONAL
2356
2357 GETOPT_LO=""
2358 AC_CHECK_FUNC(getopt,
2359   [GETOPT_LO=""
2360    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2361   ],
2362   GETOPT_LO="wsgetopt.lo"
2363 )
2364 if test "$ac_cv_func_getopt" = no ; then
2365   GETOPT_LO="wsgetopt.lo"
2366 fi
2367 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2368 AC_SUBST(GETOPT_LO)
2369
2370 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2371   STRNCASECMP_LO="strncasecmp.lo")
2372 if test "$ac_cv_func_strncasecmp" = no ; then
2373   STRNCASECMP_LO="strncasecmp.lo"
2374 fi
2375 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2376 AC_SUBST(STRNCASECMP_LO)
2377
2378 AC_CHECK_FUNCS(mkstemp mkdtemp)
2379
2380 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2381     have_inet_aton=no)
2382 if test "$have_inet_aton" = no; then
2383   INET_ATON_LO="inet_aton.lo"
2384   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
2385 else
2386   INET_ATON_LO=""
2387 fi
2388 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2389 AC_SUBST(INET_ATON_LO)
2390
2391 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2392   dnl check for pre-BIND82 inet_pton() bug.
2393   AC_MSG_CHECKING(for broken inet_pton)
2394   AC_TRY_RUN([#include <sys/types.h>
2395 #include <sys/socket.h>
2396 #include <netinet/in.h>
2397 #include <arpa/inet.h>
2398 int main()
2399 {
2400 #ifdef AF_INET6
2401   char buf[16];
2402   /* this should return 0 (error) */
2403   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2404 #else
2405   return 1;
2406 #endif
2407 }], [AC_MSG_RESULT(ok);
2408 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2409 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2410 have_inet_pton=no])],
2411 have_inet_pton=no)
2412 if test "$have_inet_pton" = no; then
2413   INET_PTON_LO="inet_pton.lo"
2414 else
2415   INET_PTON_LO=""
2416 fi
2417 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2418 AC_SUBST(INET_PTON_LO)
2419
2420 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2421   AC_MSG_CHECKING([for inet_ntop prototype])
2422   AC_TRY_COMPILE([#include <stdio.h>
2423 #include <sys/types.h>
2424 #include <sys/socket.h>
2425 #include <netinet/in.h>
2426 #include <arpa/inet.h>
2427
2428 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2429     AC_MSG_RESULT(yes)
2430     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2431     [Define if inet_ntop() prototype exists])], [
2432     AC_TRY_COMPILE([#include <stdio.h>
2433 #include <sys/types.h>
2434 #include <sys/socket.h>
2435 #include <netinet/in.h>
2436 #include <arpa/inet.h>
2437
2438 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2439       AC_MSG_RESULT(yes)
2440       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2441       [Define if inet_ntop() prototype exists])], [
2442       AC_MSG_RESULT(no)])])
2443   INET_NTOP_LO=""], [
2444   INET_NTOP_LO="inet_ntop.lo"
2445   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2446   [Define if inet/v6defs.h needs to be included])])
2447 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2448 AC_SUBST(INET_NTOP_LO)
2449
2450 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2451   [STRPTIME_LO="strptime.lo"
2452    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2453 ])
2454 if test "$ac_cv_func_strptime" = no ; then
2455   STRPTIME_LO="strptime.lo"
2456 fi
2457 AC_SUBST(STRPTIME_C)
2458 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2459 AC_SUBST(STRPTIME_LO)
2460
2461 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2462 AC_CHECK_FUNCS(issetugid)
2463 AC_CHECK_FUNCS(mmap mprotect sysconf)
2464 AC_CHECK_FUNCS(strtoll)
2465
2466 dnl blank for now, but will be used in future
2467 AC_SUBST(wireshark_SUBDIRS)
2468
2469 dnl
2470 dnl check whether plugins should be enabled and, if they should be,
2471 dnl check for plugins directory - stolen from Amanda's configure.ac
2472 dnl
2473 dnl we don't wish to expand ${libdir} yet
2474 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2475 AC_ARG_WITH(plugins,
2476   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2477                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2478 [
2479   if test "x$withval" = "xno"; then
2480     have_plugins=no
2481   elif test "x$have_plugins" = "xno"; then
2482       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2483   elif test "x$withval" != "xyes"; then
2484       plugindir="$withval"
2485   fi
2486 ])
2487 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2488 if test x$have_plugins = xyes
2489 then
2490   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2491 fi
2492 AC_SUBST(plugindir)
2493 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2494
2495 #
2496 # The plugin dissectors reside in ./plugins/PROTO/
2497 #
2498 PLUGIN_LIBS=""
2499 AC_SUBST(PLUGIN_LIBS)
2500
2501 #
2502 # Check if (emem) memory allocations must be 8-byte aligned.
2503 # I haven't been able to write C code that reliably makes that determination
2504 # (different versions of GCC with or without optimization give different
2505 # results) so just assume everything except (32-bit) x86 needs 8-byte
2506 # alignment (64-bit platforms either require 8-byte alignment for pointers
2507 # and 64-bit integral data types or may get better performance from that;
2508 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2509 # platforms would only require it, or get better performance from it,
2510 # for 64-bit floating-point values.).
2511 #
2512 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2513 case $host_cpu in
2514         i386|i486|i586|i686)
2515                 AC_MSG_RESULT(no)
2516                 ;;
2517         *)
2518                 AC_MSG_RESULT(yes)
2519                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2520                 ;;
2521 esac
2522
2523 dnl libtool defs
2524 #
2525 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2526 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2527 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2528 #
2529 # With older version(s) of those tool(s), however, it's not just an
2530 # alias, and the configure scripts don't work without it.
2531 #
2532 AM_PROG_LIBTOOL
2533 AC_SUBST(LIBTOOL_DEPS)
2534
2535 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2536 if test x$enable_static = xyes -a x$have_plugins = xyes
2537 then
2538   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2539 fi
2540 AC_SUBST(ENABLE_STATIC)
2541
2542 dnl Save the cacheable configure results to config.cache before recursing
2543 AC_CACHE_SAVE
2544
2545 sinclude(plugins/Custom.m4) dnl
2546 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2547
2548 sinclude(asn1/Custom.m4) dnl
2549 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2550
2551 AC_CONFIG_HEADERS(config.h)
2552 AC_OUTPUT(
2553   Makefile
2554   doxygen.cfg
2555   asn1/Makefile
2556   _CUSTOM_ASN1_AC_OUTPUT_
2557   asn1/acp133/Makefile
2558   asn1/acse/Makefile
2559   asn1/ansi_map/Makefile
2560   asn1/ansi_tcap/Makefile
2561   asn1/c1222/Makefile
2562   asn1/camel/Makefile
2563   asn1/cdt/Makefile
2564   asn1/charging_ase/Makefile
2565   asn1/cmip/Makefile
2566   asn1/cmp/Makefile
2567   asn1/crmf/Makefile
2568   asn1/cms/Makefile
2569   asn1/credssp/Makefile
2570   asn1/dap/Makefile
2571   asn1/disp/Makefile
2572   asn1/dop/Makefile
2573   asn1/dsp/Makefile
2574   asn1/ess/Makefile
2575   asn1/ftam/Makefile
2576   asn1/gnm/Makefile
2577   asn1/goose/Makefile
2578   asn1/gprscdr/Makefile
2579   asn1/gsm_map/Makefile
2580   asn1/h225/Makefile
2581   asn1/h235/Makefile
2582   asn1/h245/Makefile
2583   asn1/h248/Makefile
2584   asn1/h282/Makefile
2585   asn1/h283/Makefile
2586   asn1/h323/Makefile
2587   asn1/h450/Makefile
2588   asn1/h450-ros/Makefile
2589   asn1/h460/Makefile
2590   asn1/h501/Makefile
2591   asn1/HI2Operations/Makefile
2592   asn1/hnbap/Makefile
2593   asn1/idmp/Makefile
2594   asn1/inap/Makefile
2595   asn1/isdn-sup/Makefile
2596   asn1/kerberos/Makefile
2597   asn1/lcsap/Makefile
2598   asn1/ldap/Makefile
2599   asn1/logotypecertextn/Makefile
2600   asn1/lpp/Makefile
2601   asn1/lppa/Makefile
2602   asn1/lppe/Makefile
2603   asn1/lte-rrc/Makefile
2604   asn1/m3ap/Makefile
2605   asn1/mms/Makefile
2606   asn1/mpeg-audio/Makefile
2607   asn1/mpeg-pes/Makefile
2608   asn1/nbap/Makefile
2609   asn1/ns_cert_exts/Makefile
2610   asn1/ocsp/Makefile
2611   asn1/p1/Makefile
2612   asn1/p22/Makefile
2613   asn1/p7/Makefile
2614   asn1/p772/Makefile
2615   asn1/pcap/Makefile
2616   asn1/pkcs1/Makefile
2617   asn1/pkcs12/Makefile
2618   asn1/pkinit/Makefile
2619   asn1/pkixac/Makefile
2620   asn1/pkix1explicit/Makefile
2621   asn1/pkix1implicit/Makefile
2622   asn1/pkixproxy/Makefile
2623   asn1/pkixqualified/Makefile
2624   asn1/pkixtsp/Makefile
2625   asn1/pres/Makefile
2626   asn1/q932/Makefile
2627   asn1/q932-ros/Makefile
2628   asn1/qsig/Makefile
2629   asn1/ranap/Makefile
2630   asn1/rnsap/Makefile
2631   asn1/ros/Makefile
2632   asn1/rrc/Makefile
2633   asn1/rrlp/Makefile
2634   asn1/rtse/Makefile
2635   asn1/rua/Makefile
2636   asn1/s1ap/Makefile
2637   asn1/sabp/Makefile
2638   asn1/sbc-ap/Makefile
2639   asn1/smrse/Makefile
2640   asn1/snmp/Makefile
2641   asn1/spnego/Makefile
2642   asn1/sv/Makefile
2643   asn1/t124/Makefile
2644   asn1/t125/Makefile
2645   asn1/t38/Makefile
2646   asn1/tcap/Makefile
2647   asn1/tetra/Makefile
2648   asn1/ulp/Makefile
2649   asn1/wlancertextn/Makefile
2650   asn1/x2ap/Makefile
2651   asn1/x509af/Makefile
2652   asn1/x509ce/Makefile
2653   asn1/x509if/Makefile
2654   asn1/x509sat/Makefile
2655   asn1/x721/Makefile
2656   doc/Makefile
2657   docbook/Makefile
2658   epan/Makefile
2659   epan/crypt/Makefile
2660   epan/doxygen.cfg
2661   epan/dfilter/Makefile
2662   epan/dissectors/Makefile
2663   epan/dissectors/dcerpc/Makefile
2664   epan/dissectors/pidl/Makefile
2665   epan/ftypes/Makefile
2666   epan/wmem/Makefile
2667   epan/wslua/Makefile
2668   epan/wspython/Makefile
2669   codecs/Makefile
2670   ui/Makefile
2671   ui/doxygen.cfg
2672   ui/gtk/Makefile
2673   ui/gtk/doxygen.cfg
2674   ui/cli/Makefile
2675   ui/qt/Makefile
2676   ui/qt/doxygen.cfg
2677   help/Makefile
2678   packaging/Makefile
2679   packaging/macosx/Info.plist
2680   packaging/macosx/Makefile
2681   packaging/macosx/osx-dmg.sh
2682   packaging/nsis/Makefile
2683   packaging/rpm/Makefile
2684   packaging/rpm/SPECS/Makefile
2685   packaging/rpm/SPECS/wireshark.spec
2686   packaging/svr4/Makefile
2687   packaging/svr4/checkinstall
2688   packaging/svr4/pkginfo
2689   plugins/Makefile
2690   plugins/asn1/Makefile
2691   plugins/docsis/Makefile
2692   plugins/ethercat/Makefile
2693   plugins/gryphon/Makefile
2694   plugins/irda/Makefile
2695   plugins/m2m/Makefile
2696   plugins/mate/Makefile
2697   plugins/opcua/Makefile
2698   plugins/profinet/Makefile
2699   plugins/stats_tree/Makefile
2700   plugins/unistim/Makefile
2701   plugins/wimax/Makefile
2702   plugins/wimaxasncp/Makefile
2703   plugins/wimaxmacphy/Makefile
2704   tools/Makefile
2705   tools/lemon/Makefile
2706   wiretap/Makefile
2707   wsutil/Makefile
2708   echld/Makefile
2709   _CUSTOM_AC_OUTPUT_
2710   ,)
2711 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2712
2713
2714 # Pretty messages
2715
2716 if test "x$have_gtk" = "xyes"; then
2717         if test "x$with_gtk3" = "xyes"; then
2718                 gtk_lib_message=" (with GTK+ 3"
2719         else
2720                 gtk_lib_message=" (with GTK+ 2"
2721         fi
2722         if test "x$have_ige_mac" = "xyes"; then
2723                 gtk_lib_message="$gtk_lib_message and Mac OS X integration)"
2724         else
2725                 gtk_lib_message="$gtk_lib_message)"
2726         fi
2727 fi
2728
2729 if test "x$have_qt" = "xyes" ; then
2730         enable_qtshark="yes"
2731 else
2732         enable_qtshark="no"
2733 fi
2734
2735 if test "x$enable_setcap_install" = "xyes" ; then
2736         setcap_message="yes"
2737 else
2738         setcap_message="no"
2739 fi
2740
2741 if test "x$enable_setuid_install" = "xyes" ; then
2742         setuid_message="yes"
2743 else
2744         setuid_message="no"
2745 fi
2746
2747 if test "x$DUMPCAP_GROUP" = "x" ; then
2748         dumpcap_group_message="(none)"
2749 else
2750         dumpcap_group_message="$DUMPCAP_GROUP"
2751 fi
2752
2753 if test "x$want_zlib" = "xno" ; then
2754         zlib_message="no"
2755 else
2756         zlib_message="yes"
2757 fi
2758
2759 if test "x$want_lua" = "xyes" ; then
2760         lua_message="yes"
2761 else
2762         lua_message="no"
2763 fi
2764
2765 if test "x$want_python" = "xno"; then
2766         python_message="no"
2767 else
2768         python_message="yes"
2769 fi
2770
2771 if test "x$want_portaudio" = "xyes" ; then
2772         portaudio_message="yes"
2773 else
2774         portaudio_message="no"
2775 fi
2776
2777 if test "x$want_ssl" = "xno" ; then
2778         ssl_message="no"
2779 else
2780         ssl_message="yes"
2781 fi
2782
2783 if test "x$want_krb5" = "xno" ; then
2784         krb5_message="no"
2785 else
2786         krb5_message="yes ($ac_krb5_version)"
2787 fi
2788
2789 if test "x$have_good_c_ares" = "xyes" ; then
2790         c_ares_message="yes"
2791 else
2792         c_ares_message="no"
2793 fi
2794
2795 if test "x$have_good_adns" = "xyes" ; then
2796         adns_message="yes"
2797 else
2798         if test "x$have_good_c_ares" = "xyes" ; then
2799                 adns_message="no (using c-ares instead)"
2800         else
2801                 adns_message="no"
2802         fi
2803 fi
2804
2805 if test "x$have_good_libcap" = "xyes" ; then
2806         libcap_message="yes"
2807 else
2808         libcap_message="no"
2809 fi
2810
2811 if test "x$have_good_geoip" = "xyes" ; then
2812         geoip_message="yes"
2813 else
2814         geoip_message="no"
2815 fi
2816
2817 echo ""
2818 echo "The Wireshark package has been configured with the following options."
2819 echo "             Build wireshark (Gtk+) : $have_gtk""$gtk_lib_message"
2820 echo "                 Build wireshark-qt : $enable_qtshark"
2821 echo "                       Build tshark : $enable_tshark"
2822 echo "                     Build capinfos : $enable_capinfos"
2823 echo "                      Build editcap : $enable_editcap"
2824 echo "                      Build dumpcap : $enable_dumpcap"
2825 echo "                     Build mergecap : $enable_mergecap"
2826 echo "                   Build reordercap : $enable_reordercap"
2827 echo "                    Build text2pcap : $enable_text2pcap"
2828 echo "                      Build randpkt : $enable_randpkt"
2829 echo "                       Build dftest : $enable_dftest"
2830 echo "                     Build rawshark : $enable_rawshark"
2831 echo "                        Build echld : $have_echld"
2832 echo ""
2833 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2834 echo "  Install dumpcap with capabilities : $setcap_message"
2835 echo "             Install dumpcap setuid : $setuid_message"
2836 echo "                  Use dumpcap group : $dumpcap_group_message"
2837 echo "                        Use plugins : $have_plugins"
2838 echo "                    Use Lua library : $lua_message"
2839 echo "                 Use Python binding : $python_message"
2840 echo "                   Build rtp_player : $portaudio_message"
2841 echo "             Build profile binaries : $enable_profile_build"
2842 echo "                   Use pcap library : $want_pcap"
2843 echo "                   Use zlib library : $zlib_message"
2844 echo "               Use kerberos library : $krb5_message"
2845 echo "                 Use c-ares library : $c_ares_message"
2846 echo "               Use GNU ADNS library : $adns_message"
2847 echo "                Use SMI MIB library : $libsmi_message"
2848 echo "             Use GNU crypto library : $gcrypt_message"
2849 echo "             Use SSL crypto library : $ssl_message"
2850 echo "           Use IPv6 name resolution : $enable_ipv6"
2851 echo "                 Use gnutls library : $tls_message"
2852 echo "     Use POSIX capabilities library : $libcap_message"
2853 echo "                  Use GeoIP library : $geoip_message"
2854 echo "                     Use nl library : $libnl_message"