Microsoft Credential Security Support Provider (CredSSP) support.
[metze/wireshark/wip.git] / configure.in
1 # $Id$
2 #
3 AC_PREREQ(2.60)
4
5 AC_INIT(wireshark, 1.7.0)
6
7 dnl Check for CPU / vendor / OS
8 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
9 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
10 dnl needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
11 dnl macros.
12 dnl
13 dnl As nothing in the Wireshark is itself a build tool (we are not,
14 dnl for example, a compiler that generates machine code), we probably
15 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
16 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
17 dnl AC_CANONICAL_HOST - instead.  Note that we do have tools, such as
18 dnl lemon, that need to be built for the build machine, not for the
19 dnl host machine, so we might need both.
20 dnl
21 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
22
23 dnl AC_CANONICAL_BUILD
24 dnl AC_CANONICAL_HOST
25 AC_CANONICAL_TARGET
26
27 AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip])
28
29 AM_DISABLE_STATIC
30
31 dnl Checks for programs.
32 AC_PROG_CC
33 AM_PROG_CC_C_O
34 AC_PROG_CXX
35 AC_PROG_CPP
36 dnl Work around libtool bug (fixed in the version 1.5a?)
37 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
38 AC_LIBTOOL_DLOPEN
39 AC_PROG_LIBTOOL
40 AC_PATH_PROG(PERL, perl)
41 #
42 # XXX - should autogen.sh check for YACC/Bison and Flex?  A user building
43 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
44 # as the tarball should contain the results of running YACC/Bison on .y
45 # files and running Flex on .l files, but a user building from SVN
46 # will have to run YACC/Bison and Flex to process those files.
47 #
48 # On the other hand, what about users who use a distribution tarball to
49 # do development?  They *shouldn't* - that's what the SVN repository is
50 # for - but they might.  They'd get errors if they modify a .y or .l
51 # file and try to do a build - but the error should tell them that they
52 # need to get YACC/Bison and/or Flex.
53 #
54 # Then again, getting them shouldn't be too big of a burden.
55 #
56 # XXX - is the same true of pod2man and pod2html, or are they needed
57 # even when building from a distribution tarball?
58 #
59 #
60 AC_PROG_YACC
61 AC_PATH_PROG(YACCDUMMY, $YACC)
62 if test "x$YACCDUMMY" = x
63 then
64         AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
65 fi
66 AM_PROG_LEX
67 AC_PATH_PROG(LEX, flex)
68 if test "x$LEX" = x
69 then
70         AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
71 fi
72 AC_PATH_PROG(POD2MAN, pod2man)
73 if test "x$POD2MAN" = x
74 then
75         #
76         # The alternative is not to build the man pages....
77         #
78         AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
79 fi
80 AC_PATH_PROG(POD2HTML, pod2html)
81 if test "x$POD2HTML" = x
82 then
83         #
84         # The alternative is not to build the HTML man pages....
85         #
86         AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
87 fi
88
89 #
90 # XXX - this looks for various HTML viewers on the host, not the target;
91 # we really want to know what's available on the target, for cross-builds.
92 # That would probably require us to, at run time, look for xdg-open and,
93 # if we don't find it, look for mozilla, htmlview, etc.
94 #
95 AC_PATH_PROG(HTML_VIEWER, xdg-open)
96 if test "x$HTML_VIEWER" != x
97 then
98         #
99         # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
100         # Define some variable to be that, so we just run that?
101         #
102         AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
103
104         #
105         # XXX - we have to define HTML_VIEWER for the prefs.c code that
106         # sets the default value of the Web browser preference, even
107         # though that preference won't be offered.
108         #
109         AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
110 else
111         AC_PATH_PROG(HTML_VIEWER, htmlview)
112         if test "x$HTML_VIEWER" = x
113         then
114                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
115         else
116                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
117         fi
118 fi
119
120 AC_PATH_PROG(PYTHON, python)
121
122 AC_SUBST(PERL)
123 AC_SUBST(LEX)
124 AC_SUBST(POD2MAN)
125 AC_SUBST(POD2HTML)
126 AC_SUBST(PYTHON)
127 AC_SUBST(XSLTPROC)
128 AC_SUBST(XMLLINT)
129
130 #
131 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
132 # flags such as -pedantic, -W warning flags and -f feature flags.  Currently,
133 # we assume GCC and clang do; other compilers should be added here.
134 #
135 # This is done to avoid getting tripped up by compilers that support
136 # those flags but give them a different meaning.
137 #
138 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
139         ac_supports_gcc_flags=yes
140 fi
141
142 #
143 # Set "ac_supports_W_linker_passthrough" if the compiler is known to
144 # support "-Wl,{options}" to pass options through to the linker.
145 # Currently, we assume GCC, xlc, and clang do; other compilers should
146 # be added here.
147 #
148 if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then
149         ac_supports_W_linker_passthrough=yes
150 fi
151
152 #
153 # Set "ac_supports_attribute_unused" if the compiler is known to
154 # support "__attribute__(unused)".
155 # Currently, we assume GCC and clang do; other compilers should
156 # be added here.
157 #
158 # XXX - do this with a compiler test?
159 #
160 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
161         ac_supports_W_linker_passthrough=yes
162 fi
163
164 if test "x$CC_FOR_BUILD" = x
165 then
166        CC_FOR_BUILD=$CC
167 fi
168 AC_SUBST(CC_FOR_BUILD)
169
170 # Check for doxygen
171 AC_PATH_PROG(DOXYGEN, doxygen)
172 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
173 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
174
175 #
176 # Try to arrange for large file support.
177 #
178 AC_SYS_LARGEFILE
179
180 # GnuTLS
181 tls_message="no"
182 AC_ARG_WITH([gnutls],
183   AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
184                   [use GnuTLS library @<:@default=yes@:>@]),
185   with_gnutls="$withval", with_gnutls="yes")
186 if test "x$with_gnutls" = "xyes"; then
187   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0],
188         [
189                 echo "GnuTLS found, enabling SSL decryption"
190                 AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
191                 tls_message="yes"
192         ]
193         , [
194                 echo "GnuTLS not found, disabling SSL decryption"
195                 tls_message="no"
196         ]
197   )
198 fi
199
200 # libgrypt
201 gcrypt_message="no"
202 AC_ARG_WITH([gcrypt],
203   AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
204                   [use gcrypt library @<:@default=yes@:>@]),
205   with_gcrypt="$withval", with_gcrypt="yes")
206 if test "x$with_gcrypt" = "xyes"; then
207   AM_PATH_LIBGCRYPT(1.1.92,
208         [
209                 echo "libgcrypt found, enabling ipsec decryption"
210                 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
211                 gcrypt_message="yes"
212         ]
213         , [
214                 if test x$libgcrypt_config_prefix != x ; then
215                         AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
216                 else
217                         echo "libgcrypt not found, disabling ipsec decryption"
218                         gcrypt_message="no"
219                 fi
220         ]
221   )
222 fi
223
224 AC_ARG_WITH([gtk3],
225   AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
226                   [use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]),
227   with_gtk3="$withval", with_gtk="no")
228
229
230 # libsmi
231 # FIXME: currently the path argument to with-libsmi is being ignored
232 AX_LIBSMI
233
234 # Check for xsltproc
235 AC_PATH_PROG(XSLTPROC, xsltproc)
236 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
237 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
238
239 # Check for xmllint
240 AC_PATH_PROG(XMLLINT, xmllint)
241 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
242 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
243
244 # Check for fop (translate .fo to e.g. pdf)
245 AC_PATH_PROG(FOP, fop)
246 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
247 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
248
249 #
250 # Look for something to convert HTML to text (for docbook/)
251 #
252 AC_PATH_PROG(ELINKS, elinks)
253 AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no")
254 AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes)
255
256 ## links: Fails as used in docbook/Makefile.am
257 ## (Rather than fixing things we'll just disable the use of links).
258 ##AC_PATH_PROG(LINKS, links)
259 ##AC_CHECK_PROG(HAVE_LINKS, links, "yes", "no")
260 ##AM_CONDITIONAL(HAVE_LINKS, test x$HAVE_LINKS = xyes)
261
262 AC_PATH_PROG(LYNX, lynx)
263 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
264 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
265
266
267 # Check for hhc (html help compiler)
268 AC_PATH_PROG(HHC, hhc.exe)
269 AC_CHECK_PROG(HAVE_HHC, hhc.exe, "yes", "no")
270 AM_CONDITIONAL(HAVE_HHC, test x$HAVE_HHC = xyes)
271
272 # Check for packaging utilities
273 # For now, we check to see if the various packaging utilites are in our
274 # path.  I'm too lazy to write code to go hunt for them.  -  Gerald
275
276 # SVR4/Solaris
277 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
278 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
279 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
280
281 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
282      -a x$HAVE_PKGTRANS = xyes ; then
283   HAVE_SVR4_PACKAGING=yes
284 else
285   HAVE_SVR4_PACKAGING=no
286 fi
287 AC_SUBST(HAVE_SVR4_PACKAGING)
288
289 # RPM
290 AC_WIRESHARK_RPM_CHECK
291 AC_SUBST(HAVE_RPM)
292
293 # Debian
294 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
295
296 # Mac OS X
297 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
298 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
299 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
300
301 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
302      -a x$HAVE_BLESS = xyes ; then
303   HAVE_OSX_PACKAGING=yes
304 else
305   HAVE_OSX_PACKAGING=no
306 fi
307 AC_SUBST(HAVE_OSX_PACKAGING)
308
309 #
310 # Try to add some additional gcc checks to CFLAGS
311 #
312 AC_ARG_ENABLE(extra-gcc-checks,
313   AC_HELP_STRING( [--enable-extra-gcc-checks],
314                   [do additional -W checks in GCC @<:@default=no@:>@]),
315 [
316         wireshark_extra_gcc_flags=$enableval
317         if test $enableval != no
318         then
319                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-pedantic)
320                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Woverflow)
321                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wlogical-op)
322                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-overlength-strings)
323 #               AC_WIRESHARK_GCC_CFLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
324 #               AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunreachable-code)
325 #               AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunsafe-loop-optimizations)
326                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-long-long)
327                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wbad-function-cast)
328                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-qual)
329                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Waddress)
330                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wattributes)
331                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdiv-by-zero)
332                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security)
333                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wignored-qualifiers)
334                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpragmas)
335                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wredundant-decls)
336                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wvla)
337                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wc++-compat)
338                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wjump-misses-init)
339                 #
340                 # epan/dissectors/packet-ncp2222.inc blocks this one
341                 # for now.
342                 #
343                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wwrite-strings)
344                 #
345                 # GLib blocks this for now.
346                 #
347                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wstrict-prototypes)
348                 #
349                 # All the registration functions block these for now.
350                 #
351                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-prototypes)
352                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-declarations)
353                 #
354                 # epan/dissectors/packet-afs.c blocks this one for now.
355                 #
356                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshadow)
357                 #
358                 # More cleanup needed for this on LP64.
359                 #
360                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshorten-64-to-32)
361         fi
362 ],)
363 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
364 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wextra) # -W is now known as -Wextra
365 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement)
366 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wendif-labels)
367 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpointer-arith)
368 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-pointer-sign)
369 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds)
370 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-align)
371 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security)
372 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wold-style-definition)
373 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-error=unused-but-set-variable)    ##  for now
374 #
375 # Use the faster pre gcc 4.5 floating point precision if available;
376 # clang doesn't error out on -f options that it doesn't know about,
377 # it just warns and ignores them, so this check doesn't cause us
378 # to omit -fexcess-precision=fast, which produces a pile of
379 # annoying warnings.
380 #
381 if test "x$CC" != "xclang" ; then
382 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fexcess-precision=fast)
383 fi
384
385 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
386 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
387 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
388 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
389 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
390 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
391
392 #
393 # If we're running GCC or clang, add '-D_U_="__attribute__((unused))"' to
394 # CFLAGS as well, so we can use _U_ to flag unused function arguments and
395 # not get warnings about them. Otherwise, add '-D_U_=""', so that _U_ used
396 # to flag an unused function argument will compile with non-GCC, non-clang
397 # compilers.
398 #
399 # XXX - other compilers?
400 #
401 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
402   CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"
403 else
404   CFLAGS="-D_U_=\"\" $CFLAGS"
405 fi
406
407 # If we're running GCC or CLang, always use FORTIFY_SOURCE=2
408 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
409 # Note: FORTIFY_SOURCE is only effective for gcc -O2 (and -O1 ?)
410 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
411   CFLAGS="-D_FORTIFY_SOURCE=2 $CFLAGS"
412 fi
413
414 #
415 # If the compiler supports GCC-style flags, enable a barrier "stop on
416 # warning".
417 # This barrier is set for a very large part of the code. However, it is
418 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
419 #
420 warnings_as_errors_default="yes"
421 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
422 AC_ARG_ENABLE(warnings-as-errors,
423   AC_HELP_STRING( [--enable-warnings-as-errors],
424                   [treat warnings as errors (only for GCC or clang) @<:@default=yes@:>@]),
425 [
426   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes" -a "x$wireshark_extra_gcc_flags" != "xyes"; then
427     with_warnings_as_errors="yes"
428     AC_MSG_RESULT(yes)
429   else
430     with_warnings_as_errors="no"
431     AC_MSG_RESULT(no)
432   fi
433 ],
434   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
435     with_warnings_as_errors="yes"
436     AC_MSG_RESULT(yes)
437   else
438     with_warnings_as_errors="no"
439     AC_MSG_RESULT(no)
440   fi
441 )
442 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
443
444 #
445 # Add any platform-specific compiler flags needed.
446 #
447 AC_MSG_CHECKING(for platform-specific compiler flags)
448 if test "x$GCC" = "xyes" ; then
449         #
450         # GCC - do any platform-specific tweaking necessary.
451         #
452         case "$host_os" in
453         solaris*)
454                 # the X11 headers don't automatically include prototype info
455                 # and a lot don't include the return type
456                 CFLAGS="$CFLAGS -Wno-return-type -DFUNCPROTO=15"
457                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
458                 ;;
459         darwin*)
460                 #
461                 # See comments above about Apple's lovely C compiler.
462                 #
463                 # NOTE: to AC_PROG_CC, "GCC" means "any compiler that
464                 # defines __GNUC__"; clang defines __GNUC__, so that
465                 # means we think clang is GCC.
466                 #
467                 # clang whines about -no-cpp-precomp being unused
468                 # so we check whether this is really clang, and
469                 # only add -no-cpp-precomp if it's not.
470                 #
471                 if test "x$CC" != "xclang" ; then
472                         CFLAGS="-no-cpp-precomp $CFLAGS"
473                         AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp)
474                 else
475                         #
476                         # Clang, clang, clang went the trolley....
477                         #
478                         AC_MSG_RESULT(none needed)
479                 fi
480                 ;;
481         *)
482                 AC_MSG_RESULT(none needed)
483                 ;;
484         esac
485 else
486         #
487         # Not GCC - assume it's the vendor's compiler.
488         #
489         case "$host_os" in
490         hpux*)
491                 #
492                 # HP's ANSI C compiler; flags suggested by Jost Martin.
493                 # "-Ae" for ANSI C plus extensions such as "long long".
494                 # "+O2", for optimization.  XXX - works with "-g"?
495                 #
496                 CFLAGS="-Ae +O2 $CFLAGS"
497                 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
498                 ;;
499         darwin*)
500                 #
501                 # It may be called "cc", but it's really a GCC derivative
502                 # with a problematic special precompiler and precompiled
503                 # headers; turn off the special precompiler, as some
504                 # apparently-legal code won't compile with its precompiled
505                 # headers.
506                 #
507                 # On the other hand, if it's called "clang", it's not a
508                 # GCC derivative, and it whines if you pass it
509                 # -no-cpp-precomp.
510                 #
511                 # XXX - is there any version of autoconf we support
512                 # where it uses another way to decide if the compiler
513                 # is GCC or not?
514                 #
515                 if test "x$CC" != "xclang" ; then
516                         CFLAGS="-no-cpp-precomp $CFLAGS"
517                         AC_MSG_RESULT(Apple CC - added -no-cpp-precomp)
518                 else
519                         #
520                         # Clang, clang, clang went the trolley....
521                         #
522                         AC_MSG_RESULT(none needed)
523                 fi
524                 ;;
525         *)
526                 AC_MSG_RESULT(none needed)
527                 ;;
528         esac
529 fi
530
531 #
532 # Add any platform-specific linker flags needed.
533 #
534 AC_MSG_CHECKING(for platform-specific linker flags)
535 case "$host_os" in
536 darwin*)
537         #
538         # Add -Wl,-single_module to the LDFLAGS used with shared
539         # libraries, to fix some error that show up in some cases;
540         # some Apple documentation recommends it for most shared
541         # libraries.
542         #
543         LDFLAGS_SHAREDLIB="-Wl,-single_module"
544         #
545         # Add -Wl,-search_paths_first to make sure that if we search
546         # directories A and B, in that order, for a given library, a
547         # non-shared version in directory A, rather than a shared
548         # version in directory B, is chosen (so we can use
549         # --with-pcap=/usr/local to force all programs to be linked
550         # with a static version installed in /usr/local/lib rather than
551         # the system version in /usr/lib).
552         #
553         LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
554         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first])
555         ;;
556 cygwin*)
557         #
558         # Shared libraries in cygwin/Win32 must never contain
559         # undefined symbols.
560         #
561         LDFLAGS="$LDFLAGS -no-undefined"
562         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
563         ;;
564 *)
565         AC_MSG_RESULT(none needed)
566         ;;
567 esac
568 AC_SUBST(LDFLAGS_SHAREDLIB)
569
570 # Control silent compiling
571 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])])
572
573 #
574 # On OS X, if we find the headers for Core Foundation, Launch Services,
575 # and Core Services, add -framework options to link with Application
576 # Services (of which Launch Services is a subframework), Core Foundation
577 # (required by the Launch Services APIs), and Core Services, so we can
578 # use them to launch a Web browser from the Help menu and to use
579 # Gestalt() to get the Mac OS X version number.
580 #
581 case "$host_os" in
582
583 darwin*)
584         AC_MSG_CHECKING([whether we can build with Core Foundation, Launch Services, and Core Services])
585         ac_save_LIBS="$LIBS"
586         ac_coreservices_frameworks="-framework CoreServices"
587         ac_launchservices_frameworks="-framework ApplicationServices -framework CoreFoundation $ac_coreservices_frameworks"
588         LIBS="$LIBS $ac_launchservices_frameworks $ac_coreservices_frameworks"
589         AC_TRY_LINK(
590            [
591 #       include <CoreFoundation/CFBase.h>
592 #       include <CoreFoundation/CFString.h>
593 #       include <CoreFoundation/CFURL.h>
594 #       include <ApplicationServices/ApplicationServices.h>
595 #       include <CoreServices/CoreServices.h>
596            ],
597            [
598         CFStringRef url_CFString;
599         CFURLRef url_CFURL;
600         OSStatus status;
601         long os_version;
602
603         url_CFString = CFStringCreateWithCString(NULL, "", kCFStringEncodingASCII);
604         url_CFURL = CFURLCreateWithString(NULL, url_CFString, NULL);
605         status = LSOpenCFURLRef(url_CFURL, NULL);
606
607         Gestalt(gestaltSystemVersion, &os_version);
608            ],
609            ac_cv_can_use_osx_frameworks=yes,
610            ac_cv_can_use_osx_frameworks=no,
611            [echo $ac_n "cross compiling; assumed OK... $ac_c"])
612         if test "$ac_cv_can_use_osx_frameworks" = yes ; then
613                 AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
614                 CORESERVICES_FRAMEWORKS="$ac_coreservices_frameworks"
615                 LAUNCHSERVICES_FRAMEWORKS="$ac_launchservices_frameworks"
616                 AC_MSG_RESULT(yes)
617         else
618                 AC_MSG_RESULT(no)
619         fi
620         LIBS="$ac_save_LIBS"
621         ;;
622 esac
623 AC_SUBST(CORESERVICES_FRAMEWORKS)
624 AC_SUBST(LAUNCHSERVICES_FRAMEWORKS)
625
626 #
627 # If using $prefix we add "$prefix/include" to the include search path
628 # and "$prefix/lib" to the library search path.
629 #
630 if test "x$prefix" != "x" ; then
631         AC_MSG_CHECKING(whether to use $prefix for headers and libraries)
632         if test -d $prefix/include ; then
633                 AC_MSG_RESULT(yes)
634                 #
635                 # Arrange that we search for header files in "$prefix/include", as
636                 # various packages we use may have been installed under "$prefix/include".
637                 #
638                 CFLAGS="$CFLAGS -I$prefix/include"
639                 CPPFLAGS="$CPPFLAGS -I$prefix/include"
640
641                 #
642                 # Arrange that we search for libraries in "$prefix/lib".
643                 #
644                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib)
645         else
646                 AC_MSG_RESULT(no)
647         fi
648 fi
649
650 dnl Look in /usr/local for header files and libraries ?
651 dnl XXX FIXME don't include /usr/local if it is already in the system
652 dnl search path as this causes gcc 3.2 on Linux to complain about a change
653 dnl of the system search order for includes
654 AC_ARG_ENABLE(usr-local,
655   AC_HELP_STRING( [--enable-usr-local],
656                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
657     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
658
659 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
660 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
661         if test -d "/usr/local"; then
662                 AC_MSG_RESULT(yes)
663                 #
664                 # Arrange that we search for header files in the source directory
665                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
666                 # as various packages we use ("libpcap", "zlib", "adns")
667                 # may have been installed under "/usr/local/include".
668                 #
669                 CFLAGS="$CFLAGS -I/usr/local/include"
670                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
671
672                 #
673                 # Arrange that we search for libraries in "/usr/local/lib".
674                 #
675                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
676         else
677                 AC_MSG_RESULT(no)
678         fi
679 else
680         AC_MSG_RESULT(no)
681 fi
682
683 #
684 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
685 # link directory.
686 #
687 case "$host_os" in
688   solaris*)
689     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
690     if test x$LD_LIBRARY_PATH != x ; then
691       LIBS="$LIBS -R$LD_LIBRARY_PATH"
692       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
693     else
694       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
695     fi
696   ;;
697 esac
698
699 #
700 # Check for versions of "sed" inadequate to handle, in libtool, a list
701 # of object files as large as the list in Wireshark.
702 #
703 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
704 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
705 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
706 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
707 # is the only "sed" that comes with Solaris that can handle Wireshark.
708 #
709 # Add any checks here that are necessary for other OSes.
710 #
711 AC_WIRESHARK_GNU_SED_CHECK
712 if test "$HAVE_GNU_SED" = no ; then
713         case "$host_os" in
714         solaris*)
715                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
716                 case `which sed` in
717                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
718                         AC_MSG_RESULT(yes)
719                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
720                         ;;
721
722                         *)
723                         AC_MSG_RESULT(no)
724                         ;;
725                 esac
726                 ;;
727
728         *)
729                 :
730                 ;;
731         esac
732 fi
733
734 # Enable/disable wireshark
735
736 AC_ARG_ENABLE(wireshark,
737   AC_HELP_STRING( [--enable-wireshark],
738                   [build GTK+-based Wireshark @<:@default=yes, if GTK+ available@:>@]),
739     enable_wireshark=$enableval,enable_wireshark=yes)
740
741 AC_ARG_ENABLE(packet-editor,
742   AC_HELP_STRING( [--enable-packet-editor],
743                   [add support for packet editor in Wireshark @<:@default=no@:>@]),
744     enable_packet_editor=$enableval,enable_packet_editor=no)
745 if test x$enable_packet_editor = xyes; then
746         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
747 fi
748
749 AC_ARG_ENABLE(threads,
750   AC_HELP_STRING( [--enable-threads],
751                   [use threads in Wireshark @<:@default=yes@:>@]),
752     enable_threads=$enableval,enable_threads=yes)
753 if test x$enable_threads = xyes; then
754         AC_DEFINE(USE_THREADS, 1, [Support for threads])
755 fi
756
757 AC_ARG_ENABLE(profile-build,
758   AC_HELP_STRING( [--enable-profile-build],
759                   [build profile-ready binaries @<:@default=no@:>@]),
760     enable_profile_build=$enableval,enable_profile_build=no)
761 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
762 AC_MSG_CHECKING(if profile builds must be generated)
763 if test "x$enable_profile_build" = "xyes" ; then
764         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
765                 AC_MSG_RESULT(yes)
766                 CFLAGS=" -pg $CFLAGS"
767         else
768                 AC_MSG_RESULT(no)
769                 echo "Building profile binaries currently only supported for GCC and clang."
770         fi
771 else
772         AC_MSG_RESULT(no)
773 fi
774
775 # Create DATAFILE_DIR #define for config.h
776 datafiledir=$datadir/wireshark
777 datafiledir=`(
778     test "x$prefix" = xNONE && prefix=$ac_default_prefix
779     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
780     # Ugly hack, but I don't see how this problem can be solved
781     # properly that DATAFILE_DIR had a value starting with
782     # "${prefix}/" instead of e.g. "/usr/local/"
783     eval eval echo "$datafiledir"
784 )`
785 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
786
787 # Create DOC_DIR #define for config.h
788 docdir=`(
789     test "x$prefix" = xNONE && prefix=$ac_default_prefix
790     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
791     # Ugly hack, but I don't see how this problem can be solved
792     # properly that DOC_DIR had a value starting with
793     # "${prefix}/" instead of e.g. "/usr/local/"
794     eval eval echo "$docdir"
795 )`
796 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
797
798 # GTK checks; we require GTK+ 2.12 or later.
799 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
800 # programs to be built with GTK+.
801 #
802 if test "x$enable_wireshark" = "xyes"; then
803 if test "x$with_gtk3" = "xyes"; then
804         AM_PATH_GTK_3_0(3.0.0,
805         [
806                 CFLAGS="$CFLAGS $GTK_CFLAGS"
807                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
808                 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK])
809         ], GTK_OK=no, gthread)
810
811 else
812         AM_PATH_GTK_2_0(2.12.0,
813         [
814                 CFLAGS="$CFLAGS $GTK_CFLAGS"
815                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
816                 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK])
817         ], GTK_OK=no, gthread)
818 fi
819 else
820         GTK_OK=no
821 fi
822
823 # GLib checks; we require GLib 2.14 or later, and require gmodule
824 # support, as we need that for dynamically loading plugins.
825 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
826 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
827 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
828 # GLIB_CFLAGS to CFLAGS.
829 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
830 # set when generating the Makefile, so we can make programs that require
831 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
832 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
833 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
834 # programs to be built with GLib.
835 #
836 if test "$GTK_OK" = "no" ; then
837         #
838         # We don't have GTK+.
839         # If they didn't explicitly say "--disable-wireshark", fail (so
840         # that, unless they explicitly indicated that they don't want
841         # Wireshark, we stop so they know they won't be getting
842         # Wireshark unless they fix the GTK+ problem).
843         #
844         if test "x$enable_wireshark" = "xyes"; then
845                 if test "x$with_gtk3" = "xyes"; then
846                         AC_MSG_ERROR([GTK+ 3.0 or later isn't available, so Wireshark can't be compiled])
847                 else
848                         AC_MSG_ERROR([GTK+ 2.12 or later isn't available, so Wireshark can't be compiled])
849                 fi
850         fi
851         wireshark_bin=""
852         wireshark_man=""
853         # Use GLIB_CFLAGS
854         AM_PATH_GLIB_2_0(2.14.0,
855         [
856                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
857                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
858         ], AC_MSG_ERROR(GLib 2.14 or later distribution not found.), gthread gmodule)
859 else
860         #
861         # We have GTK+, and thus will be building Wireshark unless the
862         # user explicitly disabled it.
863         #
864         wireshark_bin="wireshark\$(EXEEXT)"
865         wireshark_man="wireshark.1"
866         wireshark_SUBDIRS="codecs gtk"
867         # Don't use GLIB_CFLAGS
868         AM_PATH_GLIB_2_0(2.14.0, , AC_MSG_ERROR(GLib 2.14 or later distribution not found.), gthread gmodule)
869
870         CFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CFLAGS"
871         CFLAGS="-DGTK_DISABLE_DEPRECATED $CFLAGS"
872         # CFLAGS="-DGDK_DISABLE_DEPRECATED $CFLAGS"
873         if test $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -ge 20; then
874                 # Enable GSEAL when building with GTK > 2.20 and < 3.0
875                 # (Versions prior to 2.22 lacked some necessary accessors.)
876                 CFLAGS="-DGSEAL_ENABLE $CFLAGS"
877         fi
878 fi
879
880 # Error out if a glib header other than a "top level" header
881 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
882 #  is used.
883 CFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CFLAGS"
884
885 # Error out on the usage of deprecated glib functions
886 CFLAGS="-DG_DISABLE_DEPRECATED $CFLAGS"
887
888 #
889 # Check whether GLib modules are supported, to determine whether we
890 # can support plugins.
891 #
892 AC_MSG_CHECKING(whether GLib supports loadable modules)
893 ac_save_CFLAGS="$CFLAGS"
894 ac_save_LIBS="$LIBS"
895 CFLAGS="$CFLAGS $GLIB_CFLAGS"
896 LIBS="$GLIB_LIBS $LIBS"
897 AC_TRY_RUN([
898 #include <glib.h>
899 #include <gmodule.h>
900 #include <stdio.h>
901 #include <stdlib.h>
902
903 int
904 main ()
905 {
906   if (g_module_supported())
907     return 0;   /* success */
908   else
909     return 1;   /* failure */
910 }
911 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
912    [echo $ac_n "cross compiling; assumed OK... $ac_c"
913     ac_cv_glib_supports_modules=yes])
914 CFLAGS="$ac_save_CFLAGS"
915 LIBS="$ac_save_LIBS"
916 if test "$ac_cv_glib_supports_modules" = yes ; then
917   AC_MSG_RESULT(yes)
918   have_plugins=yes
919 else
920   AC_MSG_RESULT(no)
921   have_plugins=no
922 fi
923
924 #
925 # If we have <dlfcn.h>, check whether we can use dladdr to find a
926 # filename (hopefully, a full pathname, but no guarantees) for
927 # the executable.
928 #
929 if test "$ac_cv_header_dlfcn_h" = "yes"
930 then
931         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
932         ac_save_CFLAGS="$CFLAGS"
933         ac_save_LIBS="$LIBS"
934         CFLAGS="$CFLAGS $GLIB_CFLAGS"
935         LIBS="$GLIB_LIBS $LIBS"
936         AC_TRY_RUN([
937 #define _GNU_SOURCE     /* required on Linux, sigh */
938 #include <dlfcn.h>
939
940 int
941 main(void)
942 {
943         Dl_info info;
944
945         if (!dladdr((void *)main, &info))
946                 return 1;       /* failure */
947         return 0;               /* assume success */
948 }
949 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
950    [echo $ac_n "cross compiling; assumed OK... $ac_c"
951     ac_cv_dladdr_finds_executable_path=yes])
952         CFLAGS="$ac_save_CFLAGS"
953         LIBS="$ac_save_LIBS"
954         if test x$ac_cv_dladdr_finds_executable_path = xyes
955         then
956                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
957         fi
958         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
959 fi
960
961 if test "x$no_gtk" != "xyes"
962 then
963     #
964     # We have GTK+; do we want the OS X integration functions and,
965     # if so, do we have them and, if so, which versions do we have,
966     # the old Carbon-based ones or the new Cocoa-based ones?
967     #
968     AC_MSG_CHECKING(whether to use OS X integration functions)
969
970     AC_ARG_WITH(osx-integration,
971       AC_HELP_STRING( [--with-osx-integration],
972                       [use OS X integration functions @<:@default=yes, if available@:>@]),
973     [
974         if test $withval = no
975         then
976             want_osx_integration=no
977         else
978             want_osx_integration=yes
979         fi
980     ],[
981         want_osx_integration=yes
982     ])
983     if test "x$want_osx_integration" = "xno"; then
984         AC_MSG_RESULT(no)
985     else
986         AC_MSG_RESULT(yes)
987         AC_WIRESHARK_OSX_INTEGRATION_CHECK
988     fi
989 fi
990
991 AC_SUBST(wireshark_bin)
992 AC_SUBST(wireshark_man)
993
994
995 # Enable/disable tshark
996
997 AC_ARG_ENABLE(tshark,
998   AC_HELP_STRING( [--enable-tshark],
999                   [build TShark @<:@default=yes@:>@]),
1000     tshark=$enableval,enable_tshark=yes)
1001
1002 if test "x$enable_tshark" = "xyes" ; then
1003         tshark_bin="tshark\$(EXEEXT)"
1004         tshark_man="tshark.1"
1005         wiresharkfilter_man="wireshark-filter.4"
1006 else
1007         tshark_bin=""
1008         tshark_man=""
1009 fi
1010 AC_SUBST(tshark_bin)
1011 AC_SUBST(tshark_man)
1012 AC_SUBST(wiresharkfilter_man)
1013
1014
1015
1016 # Enable/disable editcap
1017
1018 AC_ARG_ENABLE(editcap,
1019   AC_HELP_STRING( [--enable-editcap],
1020                   [build editcap @<:@default=yes@:>@]),
1021     enable_editcap=$enableval,enable_editcap=yes)
1022
1023 if test "x$enable_editcap" = "xyes" ; then
1024         editcap_bin="editcap\$(EXEEXT)"
1025         editcap_man="editcap.1"
1026 else
1027         editcap_bin=""
1028         editcap_man=""
1029 fi
1030 AC_SUBST(editcap_bin)
1031 AC_SUBST(editcap_man)
1032
1033 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1034 # or not)
1035
1036 # Enable/disable capinfos
1037
1038 AC_ARG_ENABLE(capinfos,
1039   AC_HELP_STRING( [--enable-capinfos],
1040                   [build capinfos @<:@default=yes@:>@]),
1041     enable_capinfos=$enableval,enable_capinfos=yes)
1042
1043 if test "x$enable_capinfos" = "xyes" ; then
1044         capinfos_bin="capinfos\$(EXEEXT)"
1045         capinfos_man="capinfos.1"
1046 else
1047         capinfos_bin=""
1048         capinfos_man=""
1049 fi
1050 AC_SUBST(capinfos_bin)
1051 AC_SUBST(capinfos_man)
1052
1053
1054 # Enable/disable mergecap
1055
1056 AC_ARG_ENABLE(mergecap,
1057   AC_HELP_STRING( [--enable-mergecap],
1058                   [build mergecap @<:@default=yes@:>@]),
1059     enable_mergecap=$enableval,enable_mergecap=yes)
1060
1061 if test "x$enable_mergecap" = "xyes" ; then
1062         mergecap_bin="mergecap\$(EXEEXT)"
1063         mergecap_man="mergecap.1"
1064 else
1065         mergecap_bin=""
1066         mergecap_man=""
1067 fi
1068 AC_SUBST(mergecap_bin)
1069 AC_SUBST(mergecap_man)
1070
1071
1072 # Enable/disable text2pcap
1073
1074 AC_ARG_ENABLE(text2pcap,
1075   AC_HELP_STRING( [--enable-text2pcap],
1076                   [build text2pcap @<:@default=yes@:>@]),
1077     text2pcap=$enableval,enable_text2pcap=yes)
1078
1079 if test "x$enable_text2pcap" = "xyes" ; then
1080         text2pcap_bin="text2pcap\$(EXEEXT)"
1081         text2pcap_man="text2pcap.1"
1082 else
1083         text2pcap_bin=""
1084         text2pcap_man=""
1085 fi
1086 AC_SUBST(text2pcap_bin)
1087 AC_SUBST(text2pcap_man)
1088
1089 # Enable/disable idl2wrs
1090
1091 AC_ARG_ENABLE(idl2wrs,
1092   AC_HELP_STRING( [--enable-idl2wrs],
1093                   [build idl2wrs @<:@default=yes@:>@]),
1094     enable_idl2wrs=$enableval,enable_idl2wrs=yes)
1095
1096 if test "x$enable_idl2wrs" = "xyes" ; then
1097         idl2wrs_bin="idl2wrs"
1098         idl2wrs_man="idl2wrs.1"
1099 else
1100         idl2wrs_bin=""
1101         idl2wrs_man=""
1102 fi
1103 AC_SUBST(idl2wrs_bin)
1104 AC_SUBST(idl2wrs_man)
1105
1106
1107 # Enable/disable dftest
1108
1109 AC_ARG_ENABLE(dftest,
1110   AC_HELP_STRING( [--enable-dftest],
1111                   [build dftest @<:@default=yes@:>@]),
1112     enable_dftest=$enableval,enable_dftest=yes)
1113
1114 if test "x$enable_dftest" = "xyes" ; then
1115         dftest_bin="dftest\$(EXEEXT)"
1116         dftest_man="dftest.1"
1117 else
1118         dftest_bin=""
1119         dftest_man=""
1120 fi
1121 AC_SUBST(dftest_bin)
1122 AC_SUBST(dftest_man)
1123
1124
1125 # Enable/disable randpkt
1126
1127 AC_ARG_ENABLE(randpkt,
1128   AC_HELP_STRING( [--enable-randpkt],
1129                   [build randpkt @<:@default=yes@:>@]),
1130     enable_randpkt=$enableval,enable_randpkt=yes)
1131
1132 if test "x$enable_randpkt" = "xyes" ; then
1133         randpkt_bin="randpkt\$(EXEEXT)"
1134         randpkt_man="randpkt.1"
1135 else
1136         randpkt_bin=""
1137         randpkt_man=""
1138 fi
1139 AC_SUBST(randpkt_bin)
1140 AC_SUBST(randpkt_man)
1141
1142
1143
1144 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1145 dnl "gethostbyname()".
1146 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1147
1148 dnl Checks for "connect()", used as a proxy for "socket()" - and
1149 dnl "-lsocket", if we need it to get "connect()".
1150 AC_WIRESHARK_SOCKET_LIB_CHECK
1151
1152 dnl pcap check
1153 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1154
1155 AC_ARG_WITH(pcap,
1156   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1157                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1158 [
1159         if test $withval = no
1160         then
1161                 want_pcap=no
1162         elif test $withval = yes
1163         then
1164                 want_pcap=yes
1165         else
1166                 want_pcap=yes
1167                 pcap_dir=$withval
1168         fi
1169 ],[
1170         want_pcap=yes
1171         pcap_dir=
1172 ])
1173 if test "x$want_pcap" = "xno" ; then
1174         AC_MSG_RESULT(no)
1175 else
1176         AC_MSG_RESULT(yes)
1177         AC_WIRESHARK_PCAP_CHECK
1178 fi
1179
1180 # Enable/disable dumpcap
1181
1182 dnl dumpcap check
1183 AC_MSG_CHECKING(whether to build dumpcap)
1184
1185 AC_ARG_ENABLE(dumpcap,
1186   AC_HELP_STRING( [--enable-dumpcap],
1187                   [build dumpcap @<:@default=yes@:>@]),
1188     enable_dumpcap=$enableval,enable_dumpcap=yes)
1189
1190 if test "x$enable_dumpcap" = "xyes" ; then
1191         if test "x$want_pcap" = "xno" ; then
1192                 enable_dumpcap=no
1193                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1194         else
1195                 AC_MSG_RESULT(yes)
1196         fi
1197 else
1198         AC_MSG_RESULT(no)
1199 fi
1200
1201 if test "x$enable_dumpcap" = "xyes" ; then
1202         dumpcap_bin="dumpcap\$(EXEEXT)"
1203         dumpcap_man="dumpcap.1"
1204 else
1205         dumpcap_bin=""
1206         dumpcap_man=""
1207 fi
1208 AC_SUBST(dumpcap_bin)
1209 AC_SUBST(dumpcap_man)
1210
1211 # Enable/disable rawshark
1212
1213 dnl rawshark check
1214 AC_MSG_CHECKING(whether to build rawshark)
1215
1216 AC_ARG_ENABLE(rawshark,
1217   AC_HELP_STRING( [--enable-rawshark],
1218                   [build rawshark @<:@default=yes@:>@]),
1219     rawshark=$enableval,enable_rawshark=yes)
1220
1221 if test "x$enable_rawshark" = "xyes" ; then
1222         if test "x$want_pcap" = "xno" ; then
1223                 enable_rawshark=no
1224                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1225         else
1226                 AC_MSG_RESULT(yes)
1227         fi
1228 else
1229         AC_MSG_RESULT(no)
1230 fi
1231
1232 if test "x$enable_rawshark" = "xyes" ; then
1233         rawshark_bin="rawshark\$(EXEEXT)"
1234         rawshark_man="rawshark.1"
1235 else
1236         rawshark_bin=""
1237         rawshark_man=""
1238 fi
1239 AC_SUBST(rawshark_bin)
1240 AC_SUBST(rawshark_man)
1241
1242 dnl Use pcap-ng by default
1243 AC_ARG_ENABLE(pcap-ng-default,
1244   AC_HELP_STRING( [--enable-pcap-ng-default],
1245                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
1246     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1247 if test x$enable_pcap_ng_default = xyes; then
1248         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1249 fi
1250
1251 dnl pcap remote check
1252 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1253
1254 AC_ARG_WITH(pcap-remote,
1255     AC_HELP_STRING([--with-pcap-remote],
1256                    [use libpcap remote capturing (requires libpcap)]),
1257 [
1258     if test $withval = no
1259     then
1260         want_pcap_remote=no
1261     else
1262         want_pcap_remote=yes
1263     fi
1264 ],[
1265     want_pcap_remote=no
1266 ])
1267 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1268     AC_MSG_RESULT(no)
1269 else
1270     AC_MSG_RESULT(yes)
1271     AC_WIRESHARK_PCAP_REMOTE_CHECK
1272 fi
1273
1274 dnl zlib check
1275 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1276
1277 AC_ARG_WITH(zlib,
1278   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1279                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1280 [
1281         if test "x$withval" = "xno"
1282         then
1283                 want_zlib=no
1284         elif test "x$withval" = "xyes"
1285         then
1286                 want_zlib=yes
1287         else
1288                 want_zlib=yes
1289                 zlib_dir="$withval"
1290         fi
1291 ],[
1292         #
1293         # Use zlib if it's present, otherwise don't.
1294         #
1295         want_zlib=ifavailable
1296         zlib_dir=
1297 ])
1298 if test "x$want_zlib" = "xno" ; then
1299         AC_MSG_RESULT(no)
1300 else
1301         AC_MSG_RESULT(yes)
1302         AC_WIRESHARK_ZLIB_CHECK
1303         if test "x$want_zlib" = "xno" ; then
1304                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1305         else
1306                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1307                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1308                 fi
1309         fi
1310 fi
1311
1312 dnl Lua check
1313 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1314
1315 AC_ARG_WITH(lua,
1316   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1317                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1318 [
1319         if test $withval = no
1320         then
1321                 want_lua=no
1322         elif test $withval = yes
1323         then
1324                 want_lua=yes
1325         else
1326                 want_lua=yes
1327                 lua_dir=$withval
1328         fi
1329 ],[
1330         #
1331         # Use liblua by default
1332         #
1333         want_lua=ifavailable
1334         lua_dir=
1335 ])
1336 if test "x$want_lua" = "xno" ; then
1337         AC_MSG_RESULT(no)
1338 else
1339         AC_MSG_RESULT(yes)
1340         AC_WIRESHARK_LIBLUA_CHECK
1341         if test "x$want_lua" = "xno" ; then
1342                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1343         fi
1344 fi
1345 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1346
1347
1348 dnl portaudio check
1349 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1350
1351 AC_ARG_WITH(portaudio,
1352   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1353                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
1354 [
1355         if test $withval = no
1356         then
1357                 want_portaudio=no
1358         elif test $withval = yes
1359         then
1360                 want_portaudio=yes
1361         else
1362                 want_portaudio=yes
1363                 portaudio_dir=$withval
1364         fi
1365 ],[
1366         #
1367         # Use libportaudio by default
1368         #
1369         want_portaudio=ifavailable
1370         portaudio_dir=
1371 ])
1372 if test "x$want_portaudio" = "xno" ; then
1373         AC_MSG_RESULT(no)
1374 else
1375         AC_MSG_RESULT(yes)
1376         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1377         if test "x$want_portaudio" = "xno" ; then
1378                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1379         fi
1380 fi
1381 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1382
1383
1384 dnl ipv6 check
1385 AC_ARG_ENABLE(ipv6,
1386   AC_HELP_STRING( [--enable-ipv6],
1387                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
1388     enable_ipv6=$enableval,enable_ipv6=yes)
1389
1390 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1391 if test "x$enable_ipv6" = "xno" ; then
1392         AC_MSG_RESULT(no)
1393 else
1394         AC_MSG_RESULT(yes)
1395         AC_WIRESHARK_IPV6_STACK
1396 fi
1397
1398
1399 dnl Check if dumpcap should be installed with filesystem capabilities
1400 AC_PATH_PROG(SETCAP, setcap)
1401 AC_ARG_ENABLE(setcap-install,
1402   AC_HELP_STRING( [--enable-setcap-install],
1403                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1404     enable_setcap_install=$enableval,enable_setcap_install=no)
1405
1406 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1407 if test "x$enable_setcap_install" = "xno" ; then
1408         AC_MSG_RESULT(no)
1409 else
1410         if test "x$SETCAP" = "x" ; then
1411                 AC_MSG_RESULT(no. Setcap not found)
1412         elif test "x$enable_dumpcap" = "xno" ; then
1413                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1414         else
1415                 AC_MSG_RESULT(yes)
1416         fi
1417 fi
1418
1419 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1420
1421 dnl Check if dumpcap should be installed setuid
1422 AC_ARG_ENABLE(setuid-install,
1423   AC_HELP_STRING( [--enable-setuid-install],
1424                   [install dumpcap as setuid @<:@default=no@:>@]),
1425     enable_setuid_install=$enableval,enable_setuid_install=no)
1426
1427 AC_MSG_CHECKING(whether to install dumpcap setuid)
1428 if test "x$enable_setuid_install" = "xno" ; then
1429         AC_MSG_RESULT(no)
1430 else
1431         if test "x$enable_setcap_install" = "xyes" ; then
1432                 enable_setuid_install=no
1433                 AC_MSG_RESULT(no; using setcap instead)
1434         elif test "x$enable_dumpcap" = "xno" ; then
1435                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1436         else
1437                 AC_MSG_RESULT(yes)
1438         fi
1439 fi
1440
1441 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1442 AC_CHECK_FUNCS(setresuid setresgid)
1443
1444 dnl ...but our Network Operations group is named "no"!
1445 DUMPCAP_GROUP=''
1446 AC_ARG_WITH(dumpcap-group,
1447   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1448                   [restrict dumpcap to GROUP]),
1449 [
1450   if test "x$withval" = "xyes"; then
1451       AC_MSG_ERROR([No dumpcap group specified.])
1452   elif test "x$withval" != "xno"; then
1453       if test "x$enable_dumpcap" = "xno" ; then
1454           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
1455       fi
1456       AC_MSG_RESULT($withval)
1457       DUMPCAP_GROUP="$withval"
1458   fi
1459 ])
1460 AC_SUBST(DUMPCAP_GROUP)
1461 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
1462
1463 dnl libcap (not libpcap) check
1464 LIBCAP_LIBS=''
1465 AC_MSG_CHECKING(whether to use the libcap capabilities library)
1466
1467 AC_ARG_WITH(libcap,
1468   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
1469                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
1470 [
1471 if   test "x$withval" = "xno";  then
1472         want_libcap=no
1473 elif test "x$withval" = "xyes"; then
1474         want_libcap=yes
1475 elif test -d "$withval"; then
1476         want_libcap=yes
1477         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1478 fi
1479 ])
1480 if test "x$with_libcap" = "xno" ; then
1481         AC_MSG_RESULT(no)
1482 else
1483         AC_MSG_RESULT(yes)
1484         AC_WIRESHARK_LIBCAP_CHECK
1485 fi
1486 AC_SUBST(LIBCAP_LIBS)
1487
1488 dnl Checks for header files.
1489 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
1490 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)
1491 AC_CHECK_HEADERS(netinet/in.h)
1492 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
1493
1494 dnl SSL Check
1495 SSL_LIBS=''
1496 AC_MSG_CHECKING(whether to use SSL library)
1497
1498 AC_ARG_WITH(ssl,
1499   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
1500                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
1501 [
1502 if test "x$withval" = "xno";  then
1503         want_ssl=no
1504 elif test "x$withval" = "xyes"; then
1505         want_ssl=yes
1506 elif test -d "$withval"; then
1507         want_ssl=yes
1508         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1509 fi
1510 ],[
1511         want_ssl=no
1512 ])
1513 if test "x$want_ssl" = "xyes"; then
1514         AC_MSG_RESULT(yes)
1515         AC_CHECK_LIB(crypto,EVP_md5,
1516             [
1517                 SSL_LIBS=-lcrypto
1518             ],
1519             [
1520                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
1521             ])
1522 else
1523         AC_MSG_RESULT(no)
1524 fi
1525 AC_SUBST(SSL_LIBS)
1526
1527 dnl kerberos check
1528 AC_MSG_CHECKING(whether to use Kerberos library)
1529
1530 AC_ARG_WITH(krb5,
1531   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1532                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
1533 [
1534         if test $withval = no
1535         then
1536                 want_krb5=no
1537         elif test $withval = yes
1538         then
1539                 want_krb5=yes
1540         else
1541                 want_krb5=yes
1542                 krb5_dir=$withval
1543         fi
1544 ],[
1545         #
1546         # Use Kerberos library if available, otherwise don't.
1547         #
1548         want_krb5=ifavailable
1549         krb5_dir=
1550 ])
1551 if test "x$want_krb5" = "xno" ; then
1552         AC_MSG_RESULT(no)
1553 else
1554         AC_MSG_RESULT(yes)
1555         AC_WIRESHARK_KRB5_CHECK
1556 fi
1557
1558
1559 dnl c-ares Check
1560 C_ARES_LIBS=''
1561 AC_MSG_CHECKING(whether to use the c-ares library if available)
1562
1563 AC_ARG_WITH(c-ares,
1564   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
1565                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
1566 [
1567 if   test "x$withval" = "xno";  then
1568         want_c_ares=no
1569 elif test "x$withval" = "xyes"; then
1570         want_c_ares=yes
1571 elif test -d "$withval"; then
1572         want_c_ares=yes
1573         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1574 fi
1575 ])
1576 if test "x$want_c_ares" = "xno" ; then
1577         AC_MSG_RESULT(no)
1578 else
1579         AC_MSG_RESULT(yes)
1580         AC_WIRESHARK_C_ARES_CHECK
1581 fi
1582 AC_SUBST(C_ARES_LIBS)
1583
1584 dnl ADNS Check
1585 ADNS_LIBS=''
1586 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
1587
1588 AC_ARG_WITH(adns,
1589   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
1590                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
1591 [
1592 if   test "x$withval" = "xno";  then
1593         want_adns=no
1594 elif test "x$withval" = "xyes"; then
1595         want_adns=yes
1596 elif test -d "$withval"; then
1597         want_adns=yes
1598         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1599 fi
1600 ])
1601 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
1602         AC_MSG_RESULT(no)
1603 else
1604         AC_MSG_RESULT(yes)
1605         AC_WIRESHARK_ADNS_CHECK
1606 fi
1607 AC_SUBST(ADNS_LIBS)
1608
1609 dnl GEOIP Check
1610 GEOIP_LIBS=''
1611 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
1612
1613 AC_ARG_WITH(geoip,
1614   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
1615                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
1616 [
1617 if   test "x$withval" = "xno";  then
1618         want_geoip=no
1619 elif test "x$withval" = "xyes"; then
1620         want_geoip=yes
1621 elif test -d "$withval"; then
1622         want_geoip=yes
1623         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1624 fi
1625 ])
1626 if test "x$want_geoip" = "xno"; then
1627         AC_MSG_RESULT(no)
1628 else
1629         AC_MSG_RESULT(yes)
1630         AC_WIRESHARK_GEOIP_CHECK
1631 fi
1632 AC_SUBST(GEOIP_LIBS)
1633
1634 dnl Python devel Check
1635 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
1636
1637 AC_ARG_WITH(python,
1638     AC_HELP_STRING( [--with-python@<:@=DIR@:>@],
1639                     [use Python interpreter (installed in DIR, if supplied) @<:@default=yes, if available@:>@ (EXPERIMENTAL)]),
1640 [
1641         pythondir='${libdir}/wireshark/python/${VERSION}'
1642         if test "x$withval" = "xno"
1643         then
1644                 want_python=no
1645         elif test "x$withval" = "xyes"
1646         then
1647                 want_python=yes
1648         else
1649                 want_python=yes
1650                 pythondir="$withval"
1651         fi
1652 ],[
1653         #
1654         # Use the embeddable Python interpreter if it's present,
1655         # otherwise don't.
1656         #
1657         want_pythin=ifavailable
1658         pythondir='${libdir}/wireshark/python/${VERSION}'
1659 ])
1660 if test "x$want_python" = "xno" ; then
1661         AC_MSG_RESULT(no)
1662 else
1663         AC_MSG_RESULT(yes)
1664         AC_WIRESHARK_PYTHON_CHECK
1665 fi
1666 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
1667 AC_SUBST(pythondir)
1668
1669 #
1670 # Define WS_VAR_IMPORT appropriately for declarations of external
1671 # variables exported from dynamically-linked libraries.
1672 #
1673 AC_DEFINE(WS_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries])
1674
1675 #
1676 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
1677 # never return (just like Charlie on the MTA).
1678 #
1679 # Note that MSVC++ expects __declspec(noreturn) to precede the function
1680 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
1681 # follow the function name, so we need two different flavors of
1682 # noreturn tag.
1683 #
1684 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
1685
1686 AC_ARG_ENABLE(airpcap,
1687   AC_HELP_STRING( [--enable-airpcap],
1688                   [use AirPcap in Wireshark @<:@default=no@:>@]),
1689   enable_airpcap=$enableval
1690   if test x$enable_airpcap != xno; then
1691         AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1692   fi
1693 )
1694
1695 dnl Checks for typedefs, structures, and compiler characteristics.
1696 # AC_C_CONST
1697
1698 # Check how we can get the time zone abbreviation
1699 AC_WIRESHARK_TIMEZONE_ABBREV
1700
1701 # We need to know whether "struct sockaddr" has an "sa_len" member
1702 # for get_interface_list().
1703
1704 AC_WIRESHARK_STRUCT_SA_LEN
1705
1706 # We must know our byte order
1707 AC_C_BIGENDIAN
1708
1709 # Checks whether "-traditional" is needed when using "ioctl".
1710 # XXX - do we need this?
1711 AC_PROG_GCC_TRADITIONAL
1712
1713 GETOPT_LO=""
1714 AC_CHECK_FUNC(getopt,
1715   [GETOPT_LO=""
1716    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
1717   ],
1718   GETOPT_LO="wsgetopt.lo"
1719 )
1720 if test "$ac_cv_func_getopt" = no ; then
1721   GETOPT_LO="wsgetopt.lo"
1722 fi
1723 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
1724 AC_SUBST(GETOPT_LO)
1725
1726 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
1727   STRNCASECMP_LO="strncasecmp.lo")
1728 if test "$ac_cv_func_strncasecmp" = no ; then
1729   STRNCASECMP_LO="strncasecmp.lo"
1730 fi
1731 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
1732 AC_SUBST(STRNCASECMP_LO)
1733
1734 AC_CHECK_FUNCS(mkstemp mkdtemp)
1735
1736 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
1737     have_inet_aton=no)
1738 if test "$have_inet_aton" = no; then
1739   INET_ATON_LO="inet_aton.lo"
1740   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
1741 else
1742   INET_ATON_LO=""
1743 fi
1744 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
1745 AC_SUBST(INET_ATON_LO)
1746
1747 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
1748   dnl check for pre-BIND82 inet_pton() bug.
1749   AC_MSG_CHECKING(for broken inet_pton)
1750   AC_TRY_RUN([#include <sys/types.h>
1751 #include <sys/socket.h>
1752 #include <netinet/in.h>
1753 #include <arpa/inet.h>
1754 int main()
1755 {
1756 #ifdef AF_INET6
1757   char buf[16];
1758   /* this should return 0 (error) */
1759   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
1760 #else
1761   return 1;
1762 #endif
1763 }], [AC_MSG_RESULT(ok);
1764 have_inet_pton=yes], [AC_MSG_RESULT(broken);
1765 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
1766 have_inet_pton=no])],
1767 have_inet_pton=no)
1768 if test "$have_inet_pton" = no; then
1769   INET_PTON_LO="inet_pton.lo"
1770 else
1771   INET_PTON_LO=""
1772 fi
1773 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
1774 AC_SUBST(INET_PTON_LO)
1775
1776 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
1777   AC_MSG_CHECKING([for inet_ntop prototype])
1778   AC_TRY_COMPILE([#include <stdio.h>
1779 #include <sys/types.h>
1780 #include <sys/socket.h>
1781 #include <netinet/in.h>
1782 #include <arpa/inet.h>
1783
1784 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
1785     AC_MSG_RESULT(yes)
1786     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
1787     [Define if inet_ntop() prototype exists])], [
1788     AC_TRY_COMPILE([#include <stdio.h>
1789 #include <sys/types.h>
1790 #include <sys/socket.h>
1791 #include <netinet/in.h>
1792 #include <arpa/inet.h>
1793
1794 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
1795       AC_MSG_RESULT(yes)
1796       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
1797       [Define if inet_ntop() prototype exists])], [
1798       AC_MSG_RESULT(no)])])
1799   INET_NTOP_LO=""], [
1800   INET_NTOP_LO="inet_ntop.lo"
1801   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
1802   [Define if inet/v6defs.h needs to be included])])
1803 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
1804 AC_SUBST(INET_NTOP_LO)
1805
1806 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
1807   [STRPTIME_LO="strptime.lo"
1808    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
1809 ])
1810 if test "$ac_cv_func_strptime" = no ; then
1811   STRPTIME_LO="strptime.lo"
1812 fi
1813 AC_SUBST(STRPTIME_C)
1814 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
1815 AC_SUBST(STRPTIME_LO)
1816
1817 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
1818 AC_CHECK_FUNCS(issetugid)
1819 AC_CHECK_FUNCS(mmap mprotect sysconf)
1820 AC_CHECK_FUNCS(strtoll)
1821
1822 dnl blank for now, but will be used in future
1823 AC_SUBST(wireshark_SUBDIRS)
1824
1825 dnl
1826 dnl check whether plugins should be enabled and, if they should be,
1827 dnl check for plugins directory - stolen from Amanda's configure.in
1828 dnl
1829 dnl we don't wish to expand ${libdir} yet
1830 plugindir='${libdir}/wireshark/plugins/${VERSION}'
1831 AC_ARG_WITH(plugins,
1832   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
1833                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
1834 [
1835   if test "x$withval" = "xno"; then
1836     have_plugins=no
1837   elif test "x$have_plugins" = "xno"; then
1838       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
1839   elif test "x$withval" != "xyes"; then
1840       plugindir="$withval"
1841   fi
1842 ])
1843 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
1844 if test x$have_plugins = xyes
1845 then
1846   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
1847 fi
1848 AC_SUBST(plugindir)
1849 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
1850
1851 #
1852 # The plugin dissectors reside in ./plugins/PROTO/
1853 #
1854 PLUGIN_LIBS=""
1855 AC_SUBST(PLUGIN_LIBS)
1856
1857 dnl libtool defs
1858 #
1859 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
1860 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
1861 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
1862 #
1863 # With older version(s) of those tool(s), however, it's not just an
1864 # alias, and the configure scripts don't work without it.
1865 #
1866 AM_PROG_LIBTOOL
1867 AC_SUBST(LIBTOOL_DEPS)
1868
1869 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
1870 if test x$enable_static = xyes -a x$have_plugins = xyes
1871 then
1872   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
1873 fi
1874 AC_SUBST(ENABLE_STATIC)
1875
1876 dnl Save the cacheable configure results to config.cache before recursing
1877 AC_CACHE_SAVE
1878
1879 sinclude(plugins/Custom.m4) dnl
1880 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
1881
1882 sinclude(asn1/Custom.m4) dnl
1883 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
1884
1885 AM_CONFIG_HEADER(config.h)
1886 AC_OUTPUT(
1887   Makefile
1888   doxygen.cfg
1889   asn1/Makefile
1890   _CUSTOM_ASN1_AC_OUTPUT_
1891   asn1/acp133/Makefile
1892   asn1/acse/Makefile
1893   asn1/ansi_map/Makefile
1894   asn1/ansi_tcap/Makefile
1895   asn1/camel/Makefile
1896   asn1/cdt/Makefile
1897   asn1/charging_ase/Makefile
1898   asn1/cmip/Makefile
1899   asn1/cmp/Makefile
1900   asn1/crmf/Makefile
1901   asn1/cms/Makefile
1902   asn1/credssp/Makefile
1903   asn1/dap/Makefile
1904   asn1/disp/Makefile
1905   asn1/dop/Makefile
1906   asn1/dsp/Makefile
1907   asn1/ess/Makefile
1908   asn1/ftam/Makefile
1909   asn1/gnm/Makefile
1910   asn1/goose/Makefile
1911   asn1/gprscdr/Makefile
1912   asn1/gsm_map/Makefile
1913   asn1/h225/Makefile
1914   asn1/h235/Makefile
1915   asn1/h245/Makefile
1916   asn1/h248/Makefile
1917   asn1/h282/Makefile
1918   asn1/h283/Makefile
1919   asn1/h323/Makefile
1920   asn1/h450/Makefile
1921   asn1/h450-ros/Makefile
1922   asn1/h460/Makefile
1923   asn1/h501/Makefile
1924   asn1/HI2Operations/Makefile
1925   asn1/hnbap/Makefile
1926   asn1/idmp/Makefile
1927   asn1/inap/Makefile
1928   asn1/kerberos/Makefile
1929   asn1/ldap/Makefile
1930   asn1/logotypecertextn/Makefile
1931   asn1/lte-rrc/Makefile
1932   asn1/mms/Makefile
1933   asn1/mpeg-audio/Makefile
1934   asn1/mpeg-pes/Makefile
1935   asn1/nbap/Makefile
1936   asn1/ns_cert_exts/Makefile
1937   asn1/ocsp/Makefile
1938   asn1/p1/Makefile
1939   asn1/p22/Makefile
1940   asn1/p7/Makefile
1941   asn1/p772/Makefile
1942   asn1/pcap/Makefile
1943   asn1/pkcs1/Makefile
1944   asn1/pkcs12/Makefile
1945   asn1/pkinit/Makefile
1946   asn1/pkixac/Makefile
1947   asn1/pkix1explicit/Makefile
1948   asn1/pkix1implicit/Makefile
1949   asn1/pkixproxy/Makefile
1950   asn1/pkixqualified/Makefile
1951   asn1/pkixtsp/Makefile
1952   asn1/pres/Makefile
1953   asn1/q932/Makefile
1954   asn1/q932-ros/Makefile
1955   asn1/qsig/Makefile
1956   asn1/ranap/Makefile
1957   asn1/rnsap/Makefile
1958   asn1/ros/Makefile
1959   asn1/rrc/Makefile
1960   asn1/rrlp/Makefile
1961   asn1/rtse/Makefile
1962   asn1/rua/Makefile
1963   asn1/s1ap/Makefile
1964   asn1/sabp/Makefile
1965   asn1/smrse/Makefile
1966   asn1/snmp/Makefile
1967   asn1/spnego/Makefile
1968   asn1/sv/Makefile
1969   asn1/t124/Makefile
1970   asn1/t125/Makefile
1971   asn1/t38/Makefile
1972   asn1/tcap/Makefile
1973   asn1/tetra/Makefile
1974   asn1/ulp/Makefile
1975   asn1/wlancertextn/Makefile
1976   asn1/x2ap/Makefile
1977   asn1/x509af/Makefile
1978   asn1/x509ce/Makefile
1979   asn1/x509if/Makefile
1980   asn1/x509sat/Makefile
1981   asn1/x721/Makefile
1982   doc/Makefile
1983   docbook/Makefile
1984   epan/Makefile
1985   epan/crypt/Makefile
1986   epan/doxygen.cfg
1987   epan/dfilter/Makefile
1988   epan/dissectors/Makefile
1989   epan/dissectors/dcerpc/Makefile
1990   epan/dissectors/pidl/Makefile
1991   epan/ftypes/Makefile
1992   epan/wslua/Makefile
1993   epan/wspython/Makefile
1994   codecs/Makefile
1995   gtk/Makefile
1996   gtk/doxygen.cfg
1997   help/Makefile
1998   packaging/Makefile
1999   packaging/macosx/Info.plist
2000   packaging/macosx/Makefile
2001   packaging/nsis/Makefile
2002   packaging/rpm/Makefile
2003   packaging/rpm/SPECS/Makefile
2004   packaging/rpm/SPECS/wireshark.spec
2005   packaging/svr4/Makefile
2006   packaging/svr4/checkinstall
2007   packaging/svr4/pkginfo
2008   plugins/Makefile
2009   plugins/asn1/Makefile
2010   plugins/docsis/Makefile
2011   plugins/ethercat/Makefile
2012   plugins/giop/Makefile
2013   plugins/gryphon/Makefile
2014   plugins/irda/Makefile
2015   plugins/m2m/Makefile
2016   plugins/mate/Makefile
2017   plugins/opcua/Makefile
2018   plugins/profinet/Makefile
2019   plugins/stats_tree/Makefile
2020   plugins/unistim/Makefile
2021   plugins/wimax/Makefile
2022   plugins/wimaxasncp/Makefile
2023   tools/Makefile
2024   tools/idl2wrs.sh
2025   tools/lemon/Makefile
2026   wiretap/Makefile
2027   wsutil/Makefile
2028   _CUSTOM_AC_OUTPUT_
2029   ,)
2030 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2031
2032
2033 # Pretty messages
2034
2035 if test "x$enable_setcap_install" = "xyes" ; then
2036         setcap_message="yes"
2037 else
2038         setcap_message="no"
2039 fi
2040
2041
2042 if test "x$enable_setuid_install" = "xyes" ; then
2043         setuid_message="yes"
2044 else
2045         setuid_message="no"
2046 fi
2047
2048 if test "x$DUMPCAP_GROUP" = "x" ; then
2049         dumpcap_group_message="(none)"
2050 else
2051         dumpcap_group_message="$DUMPCAP_GROUP"
2052 fi
2053
2054 if test "x$want_zlib" = "xno" ; then
2055         zlib_message="no"
2056 else
2057         zlib_message="yes"
2058 fi
2059
2060 if test "x$want_lua" = "xyes" ; then
2061         lua_message="yes"
2062 else
2063         lua_message="no"
2064 fi
2065
2066 if test "x$want_python" = "xno"; then
2067         python_message="no"
2068 else
2069         python_message="yes"
2070 fi
2071
2072 if test "x$want_portaudio" = "xyes" ; then
2073         portaudio_message="yes"
2074 else
2075         portaudio_message="no"
2076 fi
2077
2078 if test "x$want_ssl" = "xno" ; then
2079         ssl_message="no"
2080 else
2081         ssl_message="yes"
2082 fi
2083
2084 if test "x$want_krb5" = "xno" ; then
2085         krb5_message="no"
2086 else
2087         krb5_message="yes ($ac_krb5_version)"
2088 fi
2089
2090 if test "x$have_good_c_ares" = "xyes" ; then
2091         c_ares_message="yes"
2092 else
2093         c_ares_message="no"
2094 fi
2095
2096 if test "x$have_good_adns" = "xyes" ; then
2097         adns_message="yes"
2098 else
2099         if test "x$have_good_c_ares" = "xyes" ; then
2100                 adns_message="no (using c-ares instead)"
2101         else
2102                 adns_message="no"
2103         fi
2104 fi
2105
2106 if test "x$have_good_libcap" = "xyes" ; then
2107         libcap_message="yes"
2108 else
2109         libcap_message="no"
2110 fi
2111
2112 if test "x$have_good_geoip" = "xyes" ; then
2113         geoip_message="yes"
2114 else
2115         geoip_message="no"
2116 fi
2117
2118 echo ""
2119 echo "The Wireshark package has been configured with the following options."
2120 echo "                    Build wireshark : $enable_wireshark"
2121 echo "                       Build tshark : $enable_tshark"
2122 echo "                     Build capinfos : $enable_capinfos"
2123 echo "                      Build editcap : $enable_editcap"
2124 echo "                      Build dumpcap : $enable_dumpcap"
2125 echo "                     Build mergecap : $enable_mergecap"
2126 echo "                    Build text2pcap : $enable_text2pcap"
2127 echo "                      Build idl2wrs : $enable_idl2wrs"
2128 echo "                      Build randpkt : $enable_randpkt"
2129 echo "                       Build dftest : $enable_dftest"
2130 echo "                     Build rawshark : $enable_rawshark"
2131 echo ""
2132 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2133 echo "  Install dumpcap with capabilities : $setcap_message"
2134 echo "             Install dumpcap setuid : $setuid_message"
2135 echo "                  Use dumpcap group : $dumpcap_group_message"
2136 echo "                        Use plugins : $have_plugins"
2137 echo "                    Use Lua library : $lua_message"
2138 echo "                 Use Python binding : $python_message"
2139 echo "                   Build rtp_player : $portaudio_message"
2140 echo "                        Use threads : $enable_threads"
2141 echo "             Build profile binaries : $enable_profile_build"
2142 echo "                   Use pcap library : $want_pcap"
2143 echo "                   Use zlib library : $zlib_message"
2144 echo "               Use kerberos library : $krb5_message"
2145 echo "                 Use c-ares library : $c_ares_message"
2146 echo "               Use GNU ADNS library : $adns_message"
2147 echo "                Use SMI MIB library : $libsmi_message"
2148 echo "             Use GNU crypto library : $gcrypt_message"
2149 echo "             Use SSL crypto library : $ssl_message"
2150 echo "           Use IPv6 name resolution : $enable_ipv6"
2151 echo "                 Use gnutls library : $tls_message"
2152 echo "     Use POSIX capabilities library : $libcap_message"
2153 echo "                  Use GeoIP library : $geoip_message"