Don't return offset when it is the end of Extended Capability IE (Only use break)
[obnox/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 # gnu tls
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
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 #
408 # If the compiler supports GCC-style flags, enable a barrier "stop on
409 # warning".
410 # This barrier is set for a very large part of the code. However, it is
411 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
412 #
413 warnings_as_errors_default="yes"
414 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
415 AC_ARG_ENABLE(warnings-as-errors,
416   AC_HELP_STRING( [--enable-warnings-as-errors],
417                   [Treat warnings as errors (only for GCC or clang). @<:@default=yes@:>@]),
418 [
419   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes" -a "x$wireshark_extra_gcc_flags" != "xyes"; then
420     with_warnings_as_errors="yes"
421     AC_MSG_RESULT(yes)
422   else
423     with_warnings_as_errors="no"
424     AC_MSG_RESULT(no)
425   fi
426 ],
427   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
428     with_warnings_as_errors="yes"
429     AC_MSG_RESULT(yes)
430   else
431     with_warnings_as_errors="no"
432     AC_MSG_RESULT(no)
433   fi
434 )
435 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
436
437 #
438 # Add any platform-specific compiler flags needed.
439 #
440 AC_MSG_CHECKING(for platform-specific compiler flags)
441 if test "x$GCC" = "xyes" ; then
442         #
443         # GCC - do any platform-specific tweaking necessary.
444         #
445         case "$host_os" in
446         solaris*)
447                 # the X11 headers don't automatically include prototype info
448                 # and a lot don't include the return type
449                 CFLAGS="$CFLAGS -Wno-return-type -DFUNCPROTO=15"
450                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
451                 ;;
452         darwin*)
453                 #
454                 # See comments above about Apple's lovely C compiler.
455                 #
456                 # NOTE: to AC_PROG_CC, "GCC" means "any compiler that
457                 # defines __GNUC__"; clang defines __GNUC__, so that
458                 # means we think clang is GCC.
459                 #
460                 # clang whines about -no-cpp-precomp being unused
461                 # so we check whether this is really clang, and
462                 # only add -no-cpp-precomp if it's not.
463                 #
464                 if test "x$CC" != "xclang" ; then
465                         CFLAGS="-no-cpp-precomp $CFLAGS"
466                         AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp)
467                 else
468                         #
469                         # Clang, clang, clang went the trolley....
470                         #
471                         AC_MSG_RESULT(none needed)
472                 fi
473                 ;;
474         *)
475                 AC_MSG_RESULT(none needed)
476                 ;;
477         esac
478 else
479         #
480         # Not GCC - assume it's the vendor's compiler.
481         #
482         case "$host_os" in
483         hpux*)
484                 #
485                 # HP's ANSI C compiler; flags suggested by Jost Martin.
486                 # "-Ae" for ANSI C plus extensions such as "long long".
487                 # "+O2", for optimization.  XXX - works with "-g"?
488                 #
489                 CFLAGS="-Ae +O2 $CFLAGS"
490                 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
491                 ;;
492         darwin*)
493                 #
494                 # It may be called "cc", but it's really a GCC derivative
495                 # with a problematic special precompiler and precompiled
496                 # headers; turn off the special precompiler, as some
497                 # apparently-legal code won't compile with its precompiled
498                 # headers.
499                 #
500                 # On the other hand, if it's called "clang", it's not a
501                 # GCC derivative, and it whines if you pass it
502                 # -no-cpp-precomp.
503                 #
504                 # XXX - is there any version of autoconf we support
505                 # where it uses another way to decide if the compiler
506                 # is GCC or not?
507                 #
508                 if test "x$CC" != "xclang" ; then
509                         CFLAGS="-no-cpp-precomp $CFLAGS"
510                         AC_MSG_RESULT(Apple CC - added -no-cpp-precomp)
511                 else
512                         #
513                         # Clang, clang, clang went the trolley....
514                         #
515                         AC_MSG_RESULT(none needed)
516                 fi
517                 ;;
518         *)
519                 AC_MSG_RESULT(none needed)
520                 ;;
521         esac
522 fi
523
524 #
525 # Add any platform-specific linker flags needed.
526 #
527 AC_MSG_CHECKING(for platform-specific linker flags)
528 case "$host_os" in
529 darwin*)
530         #
531         # Add -Wl,-single_module to the LDFLAGS used with shared
532         # libraries, to fix some error that show up in some cases;
533         # some Apple documentation recommends it for most shared
534         # libraries.
535         #
536         LDFLAGS_SHAREDLIB="-Wl,-single_module"
537         #
538         # Add -Wl,-search_paths_first to make sure that if we search
539         # directories A and B, in that order, for a given library, a
540         # non-shared version in directory A, rather than a shared
541         # version in directory B, is chosen (so we can use
542         # --with-pcap=/usr/local to force all programs to be linked
543         # with a static version installed in /usr/local/lib rather than
544         # the system version in /usr/lib).
545         #
546         LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
547         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first])
548         ;;
549 cygwin*)
550         #
551         # Shared libraries in cygwin/Win32 must never contain
552         # undefined symbols.
553         #
554         LDFLAGS="$LDFLAGS -no-undefined"
555         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
556         ;;
557 *)
558         AC_MSG_RESULT(none needed)
559         ;;
560 esac
561 AC_SUBST(LDFLAGS_SHAREDLIB)
562
563 # Control silent compiling
564 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])])
565
566 #
567 # On OS X, if we find the headers for Core Foundation, Launch Services,
568 # and Core Services, add -framework options to link with Application
569 # Services (of which Launch Services is a subframework), Core Foundation
570 # (required by the Launch Services APIs), and Core Services, so we can
571 # use them to launch a Web browser from the Help menu and to use
572 # Gestalt() to get the Mac OS X version number.
573 #
574 case "$host_os" in
575
576 darwin*)
577         AC_MSG_CHECKING([whether we can build with Core Foundation, Launch Services, and Core Services])
578         ac_save_LIBS="$LIBS"
579         ac_coreservices_frameworks="-framework CoreServices"
580         ac_launchservices_frameworks="-framework ApplicationServices -framework CoreFoundation $ac_coreservices_frameworks"
581         LIBS="$LIBS $ac_launchservices_frameworks $ac_coreservices_frameworks"
582         AC_TRY_LINK(
583            [
584 #       include <CoreFoundation/CFBase.h>
585 #       include <CoreFoundation/CFString.h>
586 #       include <CoreFoundation/CFURL.h>
587 #       include <ApplicationServices/ApplicationServices.h>
588 #       include <CoreServices/CoreServices.h>
589            ],
590            [
591         CFStringRef url_CFString;
592         CFURLRef url_CFURL;
593         OSStatus status;
594         long os_version;
595
596         url_CFString = CFStringCreateWithCString(NULL, "", kCFStringEncodingASCII);
597         url_CFURL = CFURLCreateWithString(NULL, url_CFString, NULL);
598         status = LSOpenCFURLRef(url_CFURL, NULL);
599
600         Gestalt(gestaltSystemVersion, &os_version);
601            ],
602            ac_cv_can_use_osx_frameworks=yes,
603            ac_cv_can_use_osx_frameworks=no,
604            [echo $ac_n "cross compiling; assumed OK... $ac_c"])
605         if test "$ac_cv_can_use_osx_frameworks" = yes ; then
606                 AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
607                 CORESERVICES_FRAMEWORKS="$ac_coreservices_frameworks"
608                 LAUNCHSERVICES_FRAMEWORKS="$ac_launchservices_frameworks"
609                 AC_MSG_RESULT(yes)
610         else
611                 AC_MSG_RESULT(no)
612         fi
613         LIBS="$ac_save_LIBS"
614         ;;
615 esac
616 AC_SUBST(CORESERVICES_FRAMEWORKS)
617 AC_SUBST(LAUNCHSERVICES_FRAMEWORKS)
618
619 #
620 # If using $prefix we add "$prefix/include" to the include search path
621 # and "$prefix/lib" to the library search path.
622 #
623 if test "x$prefix" != "x" ; then
624         AC_MSG_CHECKING(whether to use $prefix for headers and libraries)
625         if test -d $prefix/include ; then
626                 AC_MSG_RESULT(yes)
627                 #
628                 # Arrange that we search for header files in "$prefix/include", as
629                 # various packages we use may have been installed under "$prefix/include".
630                 #
631                 CFLAGS="$CFLAGS -I$prefix/include"
632                 CPPFLAGS="$CPPFLAGS -I$prefix/include"
633
634                 #
635                 # Arrange that we search for libraries in "$prefix/lib".
636                 #
637                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib)
638         else
639                 AC_MSG_RESULT(no)
640         fi
641 fi
642
643 dnl Look in /usr/local for header files and libraries ?
644 dnl XXX FIXME don't include /usr/local if it is already in the system
645 dnl search path as this causes gcc 3.2 on Linux to complain about a change
646 dnl of the system search order for includes
647 AC_ARG_ENABLE(usr-local,
648   AC_HELP_STRING( [--enable-usr-local],
649                   [look for headers and libs in /usr/local tree.  @<:@default=yes@:>@]),
650     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
651
652 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
653 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
654         if test -d "/usr/local"; then
655                 AC_MSG_RESULT(yes)
656                 #
657                 # Arrange that we search for header files in the source directory
658                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
659                 # as various packages we use ("libpcap", "zlib", "adns", "pcre")
660                 # may have been installed under "/usr/local/include".
661                 #
662                 CFLAGS="$CFLAGS -I/usr/local/include"
663                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
664
665                 #
666                 # Arrange that we search for libraries in "/usr/local/lib".
667                 #
668                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
669         else
670                 AC_MSG_RESULT(no)
671         fi
672 else
673         AC_MSG_RESULT(no)
674 fi
675
676 #
677 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
678 # link directory.
679 #
680 case "$host_os" in
681   solaris*)
682     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
683     if test x$LD_LIBRARY_PATH != x ; then
684       LIBS="$LIBS -R$LD_LIBRARY_PATH"
685       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
686     else
687       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
688     fi
689   ;;
690 esac
691
692 #
693 # Check for versions of "sed" inadequate to handle, in libtool, a list
694 # of object files as large as the list in Wireshark.
695 #
696 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
697 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
698 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
699 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
700 # is the only "sed" that comes with Solaris that can handle Wireshark.
701 #
702 # Add any checks here that are necessary for other OSes.
703 #
704 AC_WIRESHARK_GNU_SED_CHECK
705 if test "$HAVE_GNU_SED" = no ; then
706         case "$host_os" in
707         solaris*)
708                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
709                 case `which sed` in
710                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
711                         AC_MSG_RESULT(yes)
712                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
713                         ;;
714
715                         *)
716                         AC_MSG_RESULT(no)
717                         ;;
718                 esac
719                 ;;
720
721         *)
722                 :
723                 ;;
724         esac
725 fi
726
727 # Enable/disable tshark
728
729 AC_ARG_ENABLE(wireshark,
730   AC_HELP_STRING( [--enable-wireshark],
731                   [build GTK+-based wireshark.  @<:@default=yes, if GTK+ available@:>@]),
732     enable_wireshark=$enableval,enable_wireshark=yes)
733
734 AC_ARG_ENABLE(packet-editor,
735   AC_HELP_STRING( [--enable-packet-editor],
736                   [add support for packet editor in wireshark.  @<:@default=no@:>@]),
737     enable_packet_editor=$enableval,enable_packet_editor=no)
738 if test x$enable_packet_editor = xyes; then
739         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
740 fi
741
742 AC_ARG_ENABLE(threads,
743   AC_HELP_STRING( [--enable-threads],
744                   [use threads in wireshark.  @<:@default=no@:>@]),
745     enable_threads=$enableval,enable_threads=no)
746 AM_CONDITIONAL(USE_THREADS, test x$enable_threads = xyes)
747
748 AC_ARG_ENABLE(profile-build,
749   AC_HELP_STRING( [--enable-profile-build],
750                   [build profile-ready binaries.  @<:@default=no@:>@]),
751     enable_profile_build=$enableval,enable_profile_build=no)
752 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
753 AC_MSG_CHECKING(if profile builds must be generated)
754 if test "x$enable_profile_build" = "xyes" ; then
755         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
756                 AC_MSG_RESULT(yes)
757                 CFLAGS=" -pg $CFLAGS"
758         else
759                 AC_MSG_RESULT(no)
760                 echo "Building profile binaries currently only supported for GCC and clang."
761         fi
762 else
763         AC_MSG_RESULT(no)
764 fi
765
766 # Create DATAFILE_DIR #define for config.h
767 datafiledir=$datadir/wireshark
768 datafiledir=`(
769     test "x$prefix" = xNONE && prefix=$ac_default_prefix
770     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
771     # Ugly hack, but I don't see how this problem can be solved
772     # properly that DATAFILE_DIR had a value starting with
773     # "${prefix}/" instead of e.g. "/usr/local/"
774     eval eval echo "$datafiledir"
775 )`
776 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
777
778 # Create DOC_DIR #define for config.h
779 docdir=`(
780     test "x$prefix" = xNONE && prefix=$ac_default_prefix
781     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
782     # Ugly hack, but I don't see how this problem can be solved
783     # properly that DOC_DIR had a value starting with
784     # "${prefix}/" instead of e.g. "/usr/local/"
785     eval eval echo "$docdir"
786 )`
787 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
788
789 # GTK checks; we require GTK+ 2.4 or later.
790 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
791 # programs to be built with GTK+.
792 #
793 if test "x$enable_wireshark" = "xyes"; then
794 if test "x$with_gtk3" = "xyes"; then
795         AM_PATH_GTK_3_0(3.0.0,
796         [
797                 CFLAGS="$CFLAGS $GTK_CFLAGS"
798                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
799                 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK])
800         ], GTK_OK=no, gthread)
801
802 else
803         AM_PATH_GTK_2_0(2.4.0,
804         [
805                 CFLAGS="$CFLAGS $GTK_CFLAGS"
806                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
807                 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK])
808         ], GTK_OK=no, gthread)
809 fi
810 else
811         GTK_OK=no
812 fi
813
814 # GLib checks; we require GLib 2.4 or later, and require gmodule
815 # support, as we need that for dynamically loading plugins.
816 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
817 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
818 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
819 # GLIB_CFLAGS to CFLAGS.
820 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
821 # set when generating the Makefile, so we can make programs that require
822 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
823 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
824 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
825 # programs to be built with GLib.
826 #
827 if test "$GTK_OK" = "no" ; then
828         #
829         # We don't have GTK+.
830         # If they didn't explicitly say "--disable-wireshark", fail (so
831         # that, unless they explicitly indicated that they don't want
832         # Wireshark, we stop so they know they won't be getting
833         # Wireshark unless they fix the GTK+ problem).
834         #
835         if test "x$enable_wireshark" = "xyes"; then
836                 AC_MSG_ERROR([GTK+ 2.4 or later isn't available, so Wireshark can't be compiled])
837         fi
838         wireshark_bin=""
839         wireshark_man=""
840         # Use GLIB_CFLAGS
841         AM_PATH_GLIB_2_0(2.4.0,
842         [
843                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
844                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
845         ], AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gthread gmodule)
846 else
847         #
848         # We have GTK+, and thus will be building Wireshark unless the
849         # user explicitly disabled it.
850         #
851         wireshark_bin="wireshark\$(EXEEXT)"
852         wireshark_man="wireshark.1"
853         wireshark_SUBDIRS="codecs gtk"
854         # Don't use GLIB_CFLAGS
855         AM_PATH_GLIB_2_0(2.4.0, , AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gthread gmodule)
856 fi
857
858 #
859 # Check whether GLib includes GRegex support.
860 # We just assume that everybody builds GLib 2.14.0 and later
861 # with GRegex support; it's possible to compile GLib without
862 # GRegex but it doesn't look as if anyone does.
863 #
864 AC_MSG_CHECKING(for GLIB - version >= 2.14.0)
865 if test x$PKG_CONFIG != xno ; then
866     ## don't try to run the test against uninstalled libtool libs
867     if $PKG_CONFIG --uninstalled $pkg_config_args; then
868         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
869         enable_glibtest=no
870     fi
871
872     if $PKG_CONFIG --atleast-version 2.14.0 glib-2.0; then
873         have_gregex=yes
874     else
875         have_gregex=no
876     fi
877     AC_MSG_RESULT($have_gregex)
878 fi
879
880 #
881 # Check whether GLib modules are supported, to determine whether we
882 # can support plugins.
883 #
884 AC_MSG_CHECKING(whether GLib supports loadable modules)
885 ac_save_CFLAGS="$CFLAGS"
886 ac_save_LIBS="$LIBS"
887 CFLAGS="$CFLAGS $GLIB_CFLAGS"
888 LIBS="$GLIB_LIBS $LIBS"
889 AC_TRY_RUN([
890 #include <glib.h>
891 #include <gmodule.h>
892 #include <stdio.h>
893 #include <stdlib.h>
894
895 int
896 main ()
897 {
898   if (g_module_supported())
899     return 0;   /* success */
900   else
901     return 1;   /* failure */
902 }
903 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
904    [echo $ac_n "cross compiling; assumed OK... $ac_c"
905     ac_cv_glib_supports_modules=yes])
906 CFLAGS="$ac_save_CFLAGS"
907 LIBS="$ac_save_LIBS"
908 if test "$ac_cv_glib_supports_modules" = yes ; then
909   AC_MSG_RESULT(yes)
910   have_plugins=yes
911 else
912   AC_MSG_RESULT(no)
913   have_plugins=no
914 fi
915
916 #
917 # If we have <dlfcn.h>, check whether we can use dladdr to find a
918 # filename (hopefully, a full pathname, but no guarantees) for
919 # the executable.
920 #
921 if test "$ac_cv_header_dlfcn_h" = "yes"
922 then
923         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
924         ac_save_CFLAGS="$CFLAGS"
925         ac_save_LIBS="$LIBS"
926         CFLAGS="$CFLAGS $GLIB_CFLAGS"
927         LIBS="$GLIB_LIBS $LIBS"
928         AC_TRY_RUN([
929 #define _GNU_SOURCE     /* required on Linux, sigh */
930 #include <dlfcn.h>
931
932 int
933 main(void)
934 {
935         Dl_info info;
936
937         if (!dladdr((void *)main, &info))
938                 return 1;       /* failure */
939         return 0;               /* assume success */
940 }
941 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
942    [echo $ac_n "cross compiling; assumed OK... $ac_c"
943     ac_cv_dladdr_finds_executable_path=yes])
944         CFLAGS="$ac_save_CFLAGS"
945         LIBS="$ac_save_LIBS"
946         if test x$ac_cv_dladdr_finds_executable_path = xyes
947         then
948                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
949         fi
950         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
951 fi
952
953 if test "x$no_gtk" != "xyes"
954 then
955     #
956     # We have GTK+; do we want the OS X integration functions and,
957     # if so, do we have them and, if so, which versions do we have,
958     # the old Carbon-based ones or the new Cocoa-based ones?
959     #
960     AC_MSG_CHECKING(whether to use OS X integration functions)
961
962     AC_ARG_WITH(osx-integration,
963       AC_HELP_STRING( [--with-osx-integration],
964                       [use OS X integration functions (@<:@default=yes, if available@:>@]),
965     [
966         if test $withval = no
967         then
968             want_osx_integration=no
969         else
970             want_osx_integration=yes
971         fi
972     ],[
973         want_osx_integration=yes
974     ])
975     if test "x$want_osx_integration" = "xno"; then
976         AC_MSG_RESULT(no)
977     else
978         AC_MSG_RESULT(yes)
979         AC_WIRESHARK_OSX_INTEGRATION_CHECK
980     fi
981 fi
982
983 AC_SUBST(wireshark_bin)
984 AC_SUBST(wireshark_man)
985
986
987 # Enable/disable tshark
988
989 AC_ARG_ENABLE(tshark,
990   AC_HELP_STRING( [--enable-tshark],
991                   [build tshark.  @<:@default=yes@:>@]),
992     tshark=$enableval,enable_tshark=yes)
993
994 if test "x$enable_tshark" = "xyes" ; then
995         tshark_bin="tshark\$(EXEEXT)"
996         tshark_man="tshark.1"
997         wiresharkfilter_man="wireshark-filter.4"
998 else
999         tshark_bin=""
1000         tshark_man=""
1001 fi
1002 AC_SUBST(tshark_bin)
1003 AC_SUBST(tshark_man)
1004 AC_SUBST(wiresharkfilter_man)
1005
1006
1007
1008 # Enable/disable editcap
1009
1010 AC_ARG_ENABLE(editcap,
1011   AC_HELP_STRING( [--enable-editcap],
1012                   [build editcap.  @<:@default=yes@:>@]),
1013     enable_editcap=$enableval,enable_editcap=yes)
1014
1015 if test "x$enable_editcap" = "xyes" ; then
1016         editcap_bin="editcap\$(EXEEXT)"
1017         editcap_man="editcap.1"
1018 else
1019         editcap_bin=""
1020         editcap_man=""
1021 fi
1022 AC_SUBST(editcap_bin)
1023 AC_SUBST(editcap_man)
1024
1025 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1026 # or not)
1027
1028 # Enable/disable capinfos
1029
1030 AC_ARG_ENABLE(capinfos,
1031   AC_HELP_STRING( [--enable-capinfos],
1032                   [build capinfos.  @<:@default=yes@:>@]),
1033     enable_capinfos=$enableval,enable_capinfos=yes)
1034
1035 if test "x$enable_capinfos" = "xyes" ; then
1036         capinfos_bin="capinfos\$(EXEEXT)"
1037         capinfos_man="capinfos.1"
1038 else
1039         capinfos_bin=""
1040         capinfos_man=""
1041 fi
1042 AC_SUBST(capinfos_bin)
1043 AC_SUBST(capinfos_man)
1044
1045
1046 # Enable/disable mergecap
1047
1048 AC_ARG_ENABLE(mergecap,
1049   AC_HELP_STRING( [--enable-mergecap],
1050                   [build mergecap.  @<:@default=yes@:>@]),
1051     enable_mergecap=$enableval,enable_mergecap=yes)
1052
1053 if test "x$enable_mergecap" = "xyes" ; then
1054         mergecap_bin="mergecap\$(EXEEXT)"
1055         mergecap_man="mergecap.1"
1056 else
1057         mergecap_bin=""
1058         mergecap_man=""
1059 fi
1060 AC_SUBST(mergecap_bin)
1061 AC_SUBST(mergecap_man)
1062
1063
1064 # Enable/disable text2pcap
1065
1066 AC_ARG_ENABLE(text2pcap,
1067   AC_HELP_STRING( [--enable-text2pcap],
1068                   [build text2pcap.  @<:@default=yes@:>@]),
1069     text2pcap=$enableval,enable_text2pcap=yes)
1070
1071 if test "x$enable_text2pcap" = "xyes" ; then
1072         text2pcap_bin="text2pcap\$(EXEEXT)"
1073         text2pcap_man="text2pcap.1"
1074 else
1075         text2pcap_bin=""
1076         text2pcap_man=""
1077 fi
1078 AC_SUBST(text2pcap_bin)
1079 AC_SUBST(text2pcap_man)
1080
1081 # Enable/disable idl2wrs
1082
1083 AC_ARG_ENABLE(idl2wrs,
1084   AC_HELP_STRING( [--enable-idl2wrs],
1085                   [build idl2wrs.  @<:@default=yes@:>@]),
1086     enable_idl2wrs=$enableval,enable_idl2wrs=yes)
1087
1088 if test "x$enable_idl2wrs" = "xyes" ; then
1089         idl2wrs_bin="idl2wrs"
1090         idl2wrs_man="idl2wrs.1"
1091 else
1092         idl2wrs_bin=""
1093         idl2wrs_man=""
1094 fi
1095 AC_SUBST(idl2wrs_bin)
1096 AC_SUBST(idl2wrs_man)
1097
1098
1099 # Enable/disable dftest
1100
1101 AC_ARG_ENABLE(dftest,
1102   AC_HELP_STRING( [--enable-dftest],
1103                   [build dftest.  @<:@default=yes@:>@]),
1104     enable_dftest=$enableval,enable_dftest=yes)
1105
1106 if test "x$enable_dftest" = "xyes" ; then
1107         dftest_bin="dftest\$(EXEEXT)"
1108         dftest_man="dftest.1"
1109 else
1110         dftest_bin=""
1111         dftest_man=""
1112 fi
1113 AC_SUBST(dftest_bin)
1114 AC_SUBST(dftest_man)
1115
1116
1117 # Enable/disable randpkt
1118
1119 AC_ARG_ENABLE(randpkt,
1120   AC_HELP_STRING( [--enable-randpkt],
1121                   [build randpkt.  @<:@default=yes@:>@]),
1122     enable_randpkt=$enableval,enable_randpkt=yes)
1123
1124 if test "x$enable_randpkt" = "xyes" ; then
1125         randpkt_bin="randpkt\$(EXEEXT)"
1126         randpkt_man="randpkt.1"
1127 else
1128         randpkt_bin=""
1129         randpkt_man=""
1130 fi
1131 AC_SUBST(randpkt_bin)
1132 AC_SUBST(randpkt_man)
1133
1134
1135
1136 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1137 dnl "gethostbyname()".
1138 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1139
1140 dnl Checks for "connect()", used as a proxy for "socket()" - and
1141 dnl "-lsocket", if we need it to get "connect()".
1142 AC_WIRESHARK_SOCKET_LIB_CHECK
1143
1144 dnl pcap check
1145 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1146
1147 AC_ARG_WITH(pcap,
1148   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1149                   [use libpcap for packet capturing.  @<:@default=yes@:>@]),
1150 [
1151         if test $withval = no
1152         then
1153                 want_pcap=no
1154         elif test $withval = yes
1155         then
1156                 want_pcap=yes
1157         else
1158                 want_pcap=yes
1159                 pcap_dir=$withval
1160         fi
1161 ],[
1162         want_pcap=yes
1163         pcap_dir=
1164 ])
1165 if test "x$want_pcap" = "xno" ; then
1166         AC_MSG_RESULT(no)
1167 else
1168         AC_MSG_RESULT(yes)
1169         AC_WIRESHARK_PCAP_CHECK
1170 fi
1171
1172 # Enable/disable dumpcap
1173
1174 dnl dumpcap check
1175 AC_MSG_CHECKING(whether to build dumpcap)
1176
1177 AC_ARG_ENABLE(dumpcap,
1178   AC_HELP_STRING( [--enable-dumpcap],
1179                   [build dumpcap.  @<:@default=yes@:>@]),
1180     enable_dumpcap=$enableval,enable_dumpcap=yes)
1181
1182 if test "x$enable_dumpcap" = "xyes" ; then
1183         if test "x$want_pcap" = "xno" ; then
1184                 enable_dumpcap=no
1185                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1186         else
1187                 AC_MSG_RESULT(yes)
1188         fi
1189 else
1190         AC_MSG_RESULT(no)
1191 fi
1192
1193 if test "x$enable_dumpcap" = "xyes" ; then
1194         dumpcap_bin="dumpcap\$(EXEEXT)"
1195         dumpcap_man="dumpcap.1"
1196 else
1197         dumpcap_bin=""
1198         dumpcap_man=""
1199 fi
1200 AC_SUBST(dumpcap_bin)
1201 AC_SUBST(dumpcap_man)
1202
1203 # Enable/disable rawshark
1204
1205 dnl rawshark check
1206 AC_MSG_CHECKING(whether to build rawshark)
1207
1208 AC_ARG_ENABLE(rawshark,
1209   AC_HELP_STRING( [--enable-rawshark],
1210                   [build rawshark.  @<:@default=yes@:>@]),
1211     rawshark=$enableval,enable_rawshark=yes)
1212
1213 if test "x$enable_rawshark" = "xyes" ; then
1214         if test "x$want_pcap" = "xno" ; then
1215                 enable_rawshark=no
1216                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1217         else
1218                 AC_MSG_RESULT(yes)
1219         fi
1220 else
1221         AC_MSG_RESULT(no)
1222 fi
1223
1224 if test "x$enable_rawshark" = "xyes" ; then
1225         rawshark_bin="rawshark\$(EXEEXT)"
1226         rawshark_man="rawshark.1"
1227 else
1228         rawshark_bin=""
1229         rawshark_man=""
1230 fi
1231 AC_SUBST(rawshark_bin)
1232 AC_SUBST(rawshark_man)
1233
1234
1235 dnl pcap remote check
1236 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1237
1238 AC_ARG_WITH(pcap-remote,
1239     AC_HELP_STRING([--with-pcap-remote],
1240                    [use libpcap remote capturing (requires libpcap)]),
1241 [
1242     if test $withval = no
1243     then
1244         want_pcap_remote=no
1245     else
1246         want_pcap_remote=yes
1247     fi
1248 ],[
1249     want_pcap_remote=no
1250 ])
1251 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1252     AC_MSG_RESULT(no)
1253 else
1254     AC_MSG_RESULT(yes)
1255     AC_WIRESHARK_PCAP_REMOTE_CHECK
1256 fi
1257
1258 dnl zlib check
1259 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1260
1261 AC_ARG_WITH(zlib,
1262   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1263                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression .  @<:@default=yes, if available@:>@]),
1264 [
1265         if test $withval = no
1266         then
1267                 want_zlib=no
1268         elif test $withval = yes
1269         then
1270                 want_zlib=yes
1271         else
1272                 want_zlib=yes
1273                 zlib_dir=$withval
1274         fi
1275 ],[
1276         #
1277         # Use zlib if it's present, otherwise don't.
1278         #
1279         want_zlib=ifavailable
1280         zlib_dir=
1281 ])
1282 if test "x$want_zlib" = "xno" ; then
1283         AC_MSG_RESULT(no)
1284 else
1285         AC_MSG_RESULT(yes)
1286         AC_WIRESHARK_ZLIB_CHECK
1287         if test "x$want_zlib" = "xno" ; then
1288                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1289         else
1290                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1291                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1292                 fi
1293         fi
1294 fi
1295
1296 dnl pcre check
1297 AC_MSG_CHECKING(whether to use libpcre for regular expressions in dfilters)
1298
1299 AC_ARG_WITH(pcre,
1300   AC_HELP_STRING( [--with-pcre@<:@=DIR@:>@],
1301                   [use libpcre (located in directory DIR, if supplied) to use in dfilter regular expressions. Not needed if you have GLib 2.14 or later. @<:@default=yes, if available and GLib < 2.14@:>@]),
1302 [
1303         if test $withval = no
1304         then
1305                 want_pcre=no
1306         elif test $withval = yes
1307         then
1308                 want_pcre=yes
1309         else
1310                 want_pcre=yes
1311                 pcre_dir=$withval
1312         fi
1313 ],[
1314         #
1315         # Use libpcre if it's present and GRegex isn't, otherwise don't.
1316         #
1317         if test $have_gregex = yes ; then
1318                 want_pcre=no
1319         else
1320                 want_pcre=ifavailable
1321         fi
1322         pcre_dir=
1323 ])
1324 if test "x$want_pcre" = "xno" ; then
1325         AC_MSG_RESULT(no)
1326 else
1327         AC_MSG_RESULT(yes)
1328         AC_WIRESHARK_LIBPCRE_CHECK
1329         if test "x$want_pcre" = "xno" ; then
1330                 AC_MSG_RESULT(libpcre not found - disabling support for perl compatible regular expressions in dfilters)
1331         fi
1332 fi
1333
1334
1335 dnl lua check
1336 AC_MSG_CHECKING(whether to use liblua for the lua scripting plugin)
1337
1338 AC_ARG_WITH(lua,
1339   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1340                   [use liblua (located in directory DIR, if supplied) for the lua scripting plugin.  @<:@default=yes, if available@:>@]),
1341 [
1342         if test $withval = no
1343         then
1344                 want_lua=no
1345         elif test $withval = yes
1346         then
1347                 want_lua=yes
1348         else
1349                 want_lua=yes
1350                 lua_dir=$withval
1351         fi
1352 ],[
1353         #
1354         # Use liblua by default
1355         #
1356         want_lua=ifavailable
1357         lua_dir=
1358 ])
1359 if test "x$want_lua" = "xno" ; then
1360         AC_MSG_RESULT(no)
1361 else
1362         AC_MSG_RESULT(yes)
1363         AC_WIRESHARK_LIBLUA_CHECK
1364         if test "x$want_lua" = "xno" ; then
1365                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1366         fi
1367 fi
1368 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1369
1370
1371 dnl portaudio check
1372 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1373
1374 AC_ARG_WITH(portaudio,
1375   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1376                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player.  @<:@default=yes, if available@:>@]),
1377 [
1378         if test $withval = no
1379         then
1380                 want_portaudio=no
1381         elif test $withval = yes
1382         then
1383                 want_portaudio=yes
1384         else
1385                 want_portaudio=yes
1386                 portaudio_dir=$withval
1387         fi
1388 ],[
1389         #
1390         # Use libportaudio by default
1391         #
1392         want_portaudio=ifavailable
1393         portaudio_dir=
1394 ])
1395 if test "x$want_portaudio" = "xno" ; then
1396         AC_MSG_RESULT(no)
1397 else
1398         AC_MSG_RESULT(yes)
1399         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1400         if test "x$want_portaudio" = "xno" ; then
1401                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1402         fi
1403 fi
1404 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1405
1406
1407 dnl ipv6 check
1408 AC_ARG_ENABLE(ipv6,
1409   AC_HELP_STRING( [--enable-ipv6],
1410                   [use ipv6 name resolution, if available.  @<:@default=yes@:>@]),
1411     enable_ipv6=$enableval,enable_ipv6=yes)
1412
1413 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1414 if test "x$enable_ipv6" = "xno" ; then
1415         AC_MSG_RESULT(no)
1416 else
1417         AC_MSG_RESULT(yes)
1418         AC_WIRESHARK_IPV6_STACK
1419 fi
1420
1421
1422 dnl Check if dumpcap should be installed with filesystem capabilities
1423 AC_PATH_PROG(SETCAP, setcap)
1424 AC_ARG_ENABLE(setcap-install,
1425   AC_HELP_STRING( [--enable-setcap-install],
1426                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1427     enable_setcap_install=$enableval,enable_setcap_install=no)
1428
1429 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1430 if test "x$enable_setcap_install" = "xno" ; then
1431         AC_MSG_RESULT(no)
1432 else
1433         if test "x$SETCAP" = "x" ; then
1434                 AC_MSG_RESULT(no. Setcap not found)
1435         elif test "x$enable_dumpcap" = "xno" ; then
1436                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1437         else
1438                 AC_MSG_RESULT(yes)
1439         fi
1440 fi
1441
1442 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1443
1444 dnl Check if dumpcap should be installed setuid
1445 AC_ARG_ENABLE(setuid-install,
1446   AC_HELP_STRING( [--enable-setuid-install],
1447                   [install dumpcap as setuid @<:@default=no@:>@]),
1448     enable_setuid_install=$enableval,enable_setuid_install=no)
1449
1450 AC_MSG_CHECKING(whether to install dumpcap setuid)
1451 if test "x$enable_setuid_install" = "xno" ; then
1452         AC_MSG_RESULT(no)
1453 else
1454         if test "x$enable_setcap_install" = "xyes" ; then
1455                 enable_setuid_install=no
1456                 AC_MSG_RESULT(no; using setcap instead)
1457         elif test "x$enable_dumpcap" = "xno" ; then
1458                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1459         else
1460                 AC_MSG_RESULT(yes)
1461         fi
1462 fi
1463
1464 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1465 AC_CHECK_FUNCS(setresuid setresgid)
1466
1467 dnl ...but our Network Operations group is named "no"!
1468 DUMPCAP_GROUP=''
1469 AC_ARG_WITH(dumpcap-group,
1470   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1471                   [restrict dumpcap to GROUP]),
1472 [
1473   if test "x$withval" = "xyes"; then
1474       AC_MSG_ERROR([No dumpcap group specified.])
1475   elif test "x$withval" != "xno"; then
1476       if test "x$enable_dumpcap" = "xno" ; then
1477           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
1478       fi
1479       AC_MSG_RESULT($withval)
1480       DUMPCAP_GROUP="$withval"
1481   fi
1482 ])
1483 AC_SUBST(DUMPCAP_GROUP)
1484 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
1485
1486 dnl libcap (not libpcap) check
1487 LIBCAP_LIBS=''
1488 AC_MSG_CHECKING(whether to use the libcap capabilities library)
1489
1490 AC_ARG_WITH(libcap,
1491   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
1492                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management.   @<:@default=yes, if present@:>@]),
1493 [
1494 if   test "x$withval" = "xno";  then
1495         want_libcap=no
1496 elif test "x$withval" = "xyes"; then
1497         want_libcap=yes
1498 elif test -d "$withval"; then
1499         want_libcap=yes
1500         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1501 fi
1502 ])
1503 if test "x$with_libcap" = "xno" ; then
1504         AC_MSG_RESULT(no)
1505 else
1506         AC_MSG_RESULT(yes)
1507         AC_WIRESHARK_LIBCAP_CHECK
1508 fi
1509 AC_SUBST(LIBCAP_LIBS)
1510
1511 dnl Checks for header files.
1512 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
1513 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)
1514 AC_CHECK_HEADERS(netinet/in.h)
1515 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
1516
1517 dnl SSL Check
1518 SSL_LIBS=''
1519 AC_MSG_CHECKING(whether to use SSL library)
1520
1521 AC_ARG_WITH(ssl,
1522   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
1523                   [use SSL crypto library (located in directory DIR, if supplied).   @<:@default=no@:>@]),
1524 [
1525 if test "x$withval" = "xno";  then
1526         want_ssl=no
1527 elif test "x$withval" = "xyes"; then
1528         want_ssl=yes
1529 elif test -d "$withval"; then
1530         want_ssl=yes
1531         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1532 fi
1533 ],[
1534         want_ssl=no
1535 ])
1536 if test "x$want_ssl" = "xyes"; then
1537         AC_MSG_RESULT(yes)
1538         AC_CHECK_LIB(crypto,EVP_md5,
1539             [
1540                 SSL_LIBS=-lcrypto
1541             ],
1542             [
1543                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
1544             ])
1545 else
1546         AC_MSG_RESULT(no)
1547 fi
1548 AC_SUBST(SSL_LIBS)
1549
1550 dnl kerberos check
1551 AC_MSG_CHECKING(whether to use kerberos)
1552
1553 AC_ARG_WITH(krb5,
1554   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1555                   [use kerberos (located in directory DIR, if supplied) to use in kerberos dissection  @<:@default=yes@:>@]),
1556 [
1557         if test $withval = no
1558         then
1559                 want_krb5=no
1560         elif test $withval = yes
1561         then
1562                 want_krb5=yes
1563         else
1564                 want_krb5=yes
1565                 krb5_dir=$withval
1566         fi
1567 ],[
1568         #
1569         # Use kerberos if specified, otherwise don't.
1570         #
1571         want_krb5=ifavailable
1572         krb5_dir=
1573 ])
1574 if test "x$want_krb5" = "xno" ; then
1575         AC_MSG_RESULT(no)
1576 else
1577         AC_MSG_RESULT(yes)
1578         AC_WIRESHARK_KRB5_CHECK
1579 fi
1580
1581
1582 dnl c-ares Check
1583 C_ARES_LIBS=''
1584 AC_MSG_CHECKING(whether to use the c-ares library if available)
1585
1586 AC_ARG_WITH(c-ares,
1587   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
1588                   [use c-ares (located in directory DIR, if supplied). Supersedes --with-adns.   @<:@default=yes, if present@:>@]),
1589 [
1590 if   test "x$withval" = "xno";  then
1591         want_c_ares=no
1592 elif test "x$withval" = "xyes"; then
1593         want_c_ares=yes
1594 elif test -d "$withval"; then
1595         want_c_ares=yes
1596         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1597 fi
1598 ])
1599 if test "x$want_c_ares" = "xno" ; then
1600         AC_MSG_RESULT(no)
1601 else
1602         AC_MSG_RESULT(yes)
1603         AC_WIRESHARK_C_ARES_CHECK
1604 fi
1605 AC_SUBST(C_ARES_LIBS)
1606
1607 dnl ADNS Check
1608 ADNS_LIBS=''
1609 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
1610
1611 AC_ARG_WITH(adns,
1612   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
1613                   [use GNU ADNS (located in directory DIR, if supplied).   @<:@default=yes, if present@:>@]),
1614 [
1615 if   test "x$withval" = "xno";  then
1616         want_adns=no
1617 elif test "x$withval" = "xyes"; then
1618         want_adns=yes
1619 elif test -d "$withval"; then
1620         want_adns=yes
1621         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1622 fi
1623 ])
1624 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
1625         AC_MSG_RESULT(no)
1626 else
1627         AC_MSG_RESULT(yes)
1628         AC_WIRESHARK_ADNS_CHECK
1629 fi
1630 AC_SUBST(ADNS_LIBS)
1631
1632 dnl GEOIP Check
1633 GEOIP_LIBS=''
1634 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
1635
1636 AC_ARG_WITH(geoip,
1637   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
1638                   [use GeoIP (located in directory DIR, if supplied).   @<:@default=yes, if present@:>@]),
1639 [
1640 if   test "x$withval" = "xno";  then
1641         want_geoip=no
1642 elif test "x$withval" = "xyes"; then
1643         want_geoip=yes
1644 elif test -d "$withval"; then
1645         want_geoip=yes
1646         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1647 fi
1648 ])
1649 if test "x$want_geoip" = "xno"; then
1650         AC_MSG_RESULT(no)
1651 else
1652         AC_MSG_RESULT(yes)
1653         AC_WIRESHARK_GEOIP_CHECK
1654 fi
1655 AC_SUBST(GEOIP_LIBS)
1656
1657 dnl Python devel Check
1658 AC_ARG_WITH(python,
1659     AC_HELP_STRING( [--with-python@<:@=DIR@:>@],
1660                     [use python interpreter (installed in DIR, if supplied). @<:@default=yes@:>@ (EXPERIMENTAL)]),
1661 [
1662 pythondir='${libdir}/wireshark/python/${VERSION}'
1663 if test "x$withval" = "xno"; then
1664   want_python=no
1665 elif test "x$withval" != "xyes"; then
1666   pythondir="$withval"
1667   want_python=yes
1668   AC_WIRESHARK_PYTHON_CHECK
1669 else
1670   want_python=yes
1671   AC_WIRESHARK_PYTHON_CHECK
1672 fi
1673 ])
1674 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python = xyes)
1675 AC_SUBST(pythondir)
1676
1677 #
1678 # Define WS_VAR_IMPORT appropriately for declarations of external
1679 # variables exported from dynamically-linked libraries.
1680 #
1681 AC_DEFINE(WS_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries])
1682
1683 #
1684 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
1685 # never return (just like Charlie on the MTA).
1686 #
1687 # Note that MSVC++ expects __declspec(noreturn) to precede the function
1688 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
1689 # follow the function name, so we need two different flavors of
1690 # noreturn tag.
1691 #
1692 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
1693
1694 AC_ARG_ENABLE(airpcap,
1695   AC_HELP_STRING( [--enable-airpcap],
1696                   [use airpcap in wireshark.  @<:@default=no@:>@]),
1697   enable_airpcap=$enableval
1698   if test x$enable_airpcap != xno; then
1699         AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1700   fi
1701 )
1702 #
1703 # Define HAVE_AIRPDCAP
1704 # We'll want to remove this eventually.
1705 #
1706 AC_DEFINE(HAVE_AIRPDCAP, 1, [Enable AirPDcap (WPA/WPA2 decryption)])
1707
1708 dnl Checks for typedefs, structures, and compiler characteristics.
1709 # AC_C_CONST
1710
1711 # Check how we can get the time zone abbreviation
1712 AC_WIRESHARK_TIMEZONE_ABBREV
1713
1714 # We need to know whether "struct sockaddr" has an "sa_len" member
1715 # for get_interface_list().
1716
1717 AC_WIRESHARK_STRUCT_SA_LEN
1718
1719 # We must know our byte order
1720 AC_C_BIGENDIAN
1721
1722 # Checks whether "-traditional" is needed when using "ioctl".
1723 # XXX - do we need this?
1724 AC_PROG_GCC_TRADITIONAL
1725
1726 GETOPT_LO=""
1727 AC_CHECK_FUNC(getopt,
1728   [GETOPT_LO=""
1729    AC_DEFINE(HAVE_GETOPT_H, 1, [Define to 1 if you have the <getopt.h> header file.])
1730   ],
1731   GETOPT_LO="wsgetopt.lo"
1732 )
1733 if test "$ac_cv_func_getopt" = no ; then
1734   GETOPT_LO="wsgetopt.lo"
1735 fi
1736 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
1737 AC_SUBST(GETOPT_LO)
1738
1739 AC_CHECK_FUNC(strerror, STRERROR_LO="",
1740   [STRERROR_LO="strerror.lo"
1741    AC_DEFINE(NEED_STRERROR_H, 1, [Define if strerror.h needs to be included])
1742 ])
1743 if test "$ac_cv_func_strerror" = no ; then
1744   STRERROR_LO="strerror.lo"
1745 fi
1746 AM_CONDITIONAL(NEED_STRERROR_LO, test "x$ac_cv_func_strerror" = "xno")
1747 AC_SUBST(STRERROR_LO)
1748
1749 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
1750   STRNCASECMP_LO="strncasecmp.lo")
1751 if test "$ac_cv_func_strncasecmp" = no ; then
1752   STRNCASECMP_LO="strncasecmp.lo"
1753 fi
1754 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
1755 AC_SUBST(STRNCASECMP_LO)
1756
1757 AC_CHECK_FUNCS(mkstemp mkdtemp)
1758
1759 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
1760     have_inet_aton=no)
1761 if test "$have_inet_aton" = no; then
1762   INET_ATON_LO="inet_aton.lo"
1763   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
1764 else
1765   INET_ATON_LO=""
1766 fi
1767 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
1768 AC_SUBST(INET_ATON_LO)
1769
1770 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
1771   dnl check for pre-BIND82 inet_pton() bug.
1772   AC_MSG_CHECKING(for broken inet_pton)
1773   AC_TRY_RUN([#include <sys/types.h>
1774 #include <sys/socket.h>
1775 #include <netinet/in.h>
1776 #include <arpa/inet.h>
1777 int main()
1778 {
1779 #ifdef AF_INET6
1780   char buf[16];
1781   /* this should return 0 (error) */
1782   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
1783 #else
1784   return 1;
1785 #endif
1786 }], [AC_MSG_RESULT(ok);
1787 have_inet_pton=yes], [AC_MSG_RESULT(broken);
1788 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
1789 have_inet_pton=no])],
1790 have_inet_pton=no)
1791 if test "$have_inet_pton" = no; then
1792   INET_PTON_LO="inet_pton.lo"
1793 else
1794   INET_PTON_LO=""
1795 fi
1796 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
1797 AC_SUBST(INET_PTON_LO)
1798
1799 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
1800   AC_MSG_CHECKING([for inet_ntop prototype])
1801   AC_TRY_COMPILE([#include <stdio.h>
1802 #include <sys/types.h>
1803 #include <sys/socket.h>
1804 #include <netinet/in.h>
1805 #include <arpa/inet.h>
1806
1807 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
1808     AC_MSG_RESULT(yes)
1809     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
1810     [Define if inet_ntop() prototype exists])], [
1811     AC_TRY_COMPILE([#include <stdio.h>
1812 #include <sys/types.h>
1813 #include <sys/socket.h>
1814 #include <netinet/in.h>
1815 #include <arpa/inet.h>
1816
1817 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
1818       AC_MSG_RESULT(yes)
1819       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
1820       [Define if inet_ntop() prototype exists])], [
1821       AC_MSG_RESULT(no)])])
1822   INET_NTOP_LO=""], [
1823   INET_NTOP_LO="inet_ntop.lo"
1824   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
1825   [Define if inet/v6defs.h needs to be included])])
1826 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
1827 AC_SUBST(INET_NTOP_LO)
1828
1829 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
1830   [STRPTIME_LO="strptime.lo"
1831    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
1832 ])
1833 if test "$ac_cv_func_strptime" = no ; then
1834   STRPTIME_LO="strptime.lo"
1835 fi
1836 AC_SUBST(STRPTIME_C)
1837 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
1838 AC_SUBST(STRPTIME_LO)
1839
1840 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
1841 AC_CHECK_FUNCS(issetugid)
1842 AC_CHECK_FUNCS(mmap mprotect sysconf)
1843 AC_CHECK_FUNCS(strtoll)
1844
1845 dnl blank for now, but will be used in future
1846 AC_SUBST(wireshark_SUBDIRS)
1847
1848 dnl
1849 dnl check whether plugins should be enabled and, if they should be,
1850 dnl check for plugins directory - stolen from Amanda's configure.in
1851 dnl
1852 dnl we don't wish to expand ${libdir} yet
1853 plugindir='${libdir}/wireshark/plugins/${VERSION}'
1854 AC_ARG_WITH(plugins,
1855   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
1856                   [support plugins (installed in DIR, if supplied).   @<:@default=yes, if possible@:>@]),
1857 [
1858   if test "x$withval" = "xno"; then
1859     have_plugins=no
1860   elif test "x$have_plugins" = "xno"; then
1861       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
1862   elif test "x$withval" != "xyes"; then
1863       plugindir="$withval"
1864   fi
1865 ])
1866 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
1867 if test x$have_plugins = xyes
1868 then
1869   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
1870 fi
1871 AC_SUBST(plugindir)
1872 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
1873
1874 #
1875 # The plugin dissectors reside in ./plugins/PROTO/
1876 #
1877 PLUGIN_LIBS=""
1878 AC_SUBST(PLUGIN_LIBS)
1879
1880 dnl libtool defs
1881 #
1882 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
1883 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
1884 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
1885 #
1886 # With older version(s) of those tool(s), however, it's not just an
1887 # alias, and the configure scripts don't work without it.
1888 #
1889 AM_PROG_LIBTOOL
1890 AC_SUBST(LIBTOOL_DEPS)
1891
1892 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
1893 if test x$enable_static = xyes -a x$have_plugins = xyes
1894 then
1895   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
1896 fi
1897 AC_SUBST(ENABLE_STATIC)
1898
1899 dnl Save the cacheable configure results to config.cache before recursing
1900 AC_CACHE_SAVE
1901
1902 sinclude(plugins/Custom.m4) dnl
1903 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
1904
1905 sinclude(asn1/Custom.m4) dnl
1906 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
1907
1908 AM_CONFIG_HEADER(config.h)
1909 AC_OUTPUT(
1910   Makefile
1911   doxygen.cfg
1912   asn1/Makefile
1913   _CUSTOM_ASN1_AC_OUTPUT_
1914   asn1/acp133/Makefile
1915   asn1/acse/Makefile
1916   asn1/ansi_map/Makefile
1917   asn1/ansi_tcap/Makefile
1918   asn1/camel/Makefile
1919   asn1/cdt/Makefile
1920   asn1/charging_ase/Makefile
1921   asn1/cmip/Makefile
1922   asn1/cmp/Makefile
1923   asn1/crmf/Makefile
1924   asn1/cms/Makefile
1925   asn1/dap/Makefile
1926   asn1/disp/Makefile
1927   asn1/dop/Makefile
1928   asn1/dsp/Makefile
1929   asn1/ess/Makefile
1930   asn1/ftam/Makefile
1931   asn1/gnm/Makefile
1932   asn1/goose/Makefile
1933   asn1/gprscdr/Makefile
1934   asn1/gsm_map/Makefile
1935   asn1/h225/Makefile
1936   asn1/h235/Makefile
1937   asn1/h245/Makefile
1938   asn1/h248/Makefile
1939   asn1/h282/Makefile
1940   asn1/h283/Makefile
1941   asn1/h323/Makefile
1942   asn1/h450/Makefile
1943   asn1/h450-ros/Makefile
1944   asn1/h460/Makefile
1945   asn1/h501/Makefile
1946   asn1/HI2Operations/Makefile
1947   asn1/hnbap/Makefile
1948   asn1/idmp/Makefile
1949   asn1/inap/Makefile
1950   asn1/kerberos/Makefile
1951   asn1/ldap/Makefile
1952   asn1/logotypecertextn/Makefile
1953   asn1/lte-rrc/Makefile
1954   asn1/mms/Makefile
1955   asn1/mpeg-audio/Makefile
1956   asn1/mpeg-pes/Makefile
1957   asn1/nbap/Makefile
1958   asn1/ns_cert_exts/Makefile
1959   asn1/ocsp/Makefile
1960   asn1/p1/Makefile
1961   asn1/p22/Makefile
1962   asn1/p7/Makefile
1963   asn1/p772/Makefile
1964   asn1/pcap/Makefile
1965   asn1/pkcs1/Makefile
1966   asn1/pkcs12/Makefile
1967   asn1/pkinit/Makefile
1968   asn1/pkixac/Makefile
1969   asn1/pkix1explicit/Makefile
1970   asn1/pkix1implicit/Makefile
1971   asn1/pkixproxy/Makefile
1972   asn1/pkixqualified/Makefile
1973   asn1/pkixtsp/Makefile
1974   asn1/pres/Makefile
1975   asn1/q932/Makefile
1976   asn1/q932-ros/Makefile
1977   asn1/qsig/Makefile
1978   asn1/ranap/Makefile
1979   asn1/rnsap/Makefile
1980   asn1/ros/Makefile
1981   asn1/rrc/Makefile
1982   asn1/rrlp/Makefile
1983   asn1/rtse/Makefile
1984   asn1/rua/Makefile
1985   asn1/s1ap/Makefile
1986   asn1/sabp/Makefile
1987   asn1/smrse/Makefile
1988   asn1/snmp/Makefile
1989   asn1/spnego/Makefile
1990   asn1/sv/Makefile
1991   asn1/t125/Makefile
1992   asn1/t38/Makefile
1993   asn1/tcap/Makefile
1994   asn1/tetra/Makefile
1995   asn1/ulp/Makefile
1996   asn1/wlancertextn/Makefile
1997   asn1/x2ap/Makefile
1998   asn1/x509af/Makefile
1999   asn1/x509ce/Makefile
2000   asn1/x509if/Makefile
2001   asn1/x509sat/Makefile
2002   asn1/x721/Makefile
2003   doc/Makefile
2004   docbook/Makefile
2005   epan/Makefile
2006   epan/crc/Makefile
2007   epan/crypt/Makefile
2008   epan/doxygen.cfg
2009   epan/dfilter/Makefile
2010   epan/dissectors/Makefile
2011   epan/dissectors/dcerpc/Makefile
2012   epan/dissectors/pidl/Makefile
2013   epan/ftypes/Makefile
2014   epan/wslua/Makefile
2015   epan/wspython/Makefile
2016   codecs/Makefile
2017   gtk/Makefile
2018   gtk/doxygen.cfg
2019   help/Makefile
2020   packaging/Makefile
2021   packaging/macosx/Info.plist
2022   packaging/macosx/Makefile
2023   packaging/nsis/Makefile
2024   packaging/rpm/Makefile
2025   packaging/rpm/SPECS/Makefile
2026   packaging/rpm/SPECS/wireshark.spec
2027   packaging/svr4/Makefile
2028   packaging/svr4/checkinstall
2029   packaging/svr4/pkginfo
2030   plugins/Makefile
2031   plugins/asn1/Makefile
2032   plugins/docsis/Makefile
2033   plugins/ethercat/Makefile
2034   plugins/giop/Makefile
2035   plugins/gryphon/Makefile
2036   plugins/interlink/Makefile
2037   plugins/irda/Makefile
2038   plugins/m2m/Makefile
2039   plugins/mate/Makefile
2040   plugins/opcua/Makefile
2041   plugins/profinet/Makefile
2042   plugins/sercosiii/Makefile
2043   plugins/stats_tree/Makefile
2044   plugins/unistim/Makefile
2045   plugins/wimax/Makefile
2046   plugins/wimaxasncp/Makefile
2047   tools/Makefile
2048   tools/idl2wrs.sh
2049   tools/lemon/Makefile
2050   wiretap/Makefile
2051   wsutil/Makefile
2052   _CUSTOM_AC_OUTPUT_
2053   ,)
2054 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2055
2056
2057 # Pretty messages
2058
2059 if test "x$enable_setcap_install" = "xyes" ; then
2060         setcap_message="yes"
2061 else
2062         setcap_message="no"
2063 fi
2064
2065
2066 if test "x$enable_setuid_install" = "xyes" ; then
2067         setuid_message="yes"
2068 else
2069         setuid_message="no"
2070 fi
2071
2072 if test "x$DUMPCAP_GROUP" = "x" ; then
2073         dumpcap_group_message="(none)"
2074 else
2075         dumpcap_group_message="$DUMPCAP_GROUP"
2076 fi
2077
2078 if test "x$want_zlib" = "xno" ; then
2079         zlib_message="no"
2080 else
2081         zlib_message="yes"
2082 fi
2083
2084 if test "x$want_pcre" = "xno" ; then
2085         if test $have_gregex = yes
2086         then
2087                 pcre_message="no (using GRegex instead)"
2088         else
2089                 pcre_message="no"
2090         fi
2091 else
2092         pcre_message="yes"
2093 fi
2094
2095 if test "x$want_lua" = "xyes" ; then
2096         lua_message="yes"
2097 else
2098         lua_message="no"
2099 fi
2100
2101 if test "x$want_python" = "xyes"; then
2102         python_message="yes"
2103 else
2104         python_message="no"
2105 fi
2106
2107 if test "x$want_portaudio" = "xyes" ; then
2108         portaudio_message="yes"
2109 else
2110         portaudio_message="no"
2111 fi
2112
2113 if test "x$want_ssl" = "xno" ; then
2114         ssl_message="no"
2115 else
2116         ssl_message="yes"
2117 fi
2118
2119 if test "x$want_krb5" = "xno" ; then
2120         krb5_message="no"
2121 else
2122         krb5_message="yes ($ac_krb5_version)"
2123 fi
2124
2125 if test "x$have_good_c_ares" = "xyes" ; then
2126         c_ares_message="yes"
2127 else
2128         c_ares_message="no"
2129 fi
2130
2131 if test "x$have_good_adns" = "xyes" ; then
2132         adns_message="yes"
2133 else
2134         if test "x$have_good_c_ares" = "xyes" ; then
2135                 adns_message="no (using c-ares instead)"
2136         else
2137                 adns_message="no"
2138         fi
2139 fi
2140
2141 if test "x$have_good_libcap" = "xyes" ; then
2142         libcap_message="yes"
2143 else
2144         libcap_message="no"
2145 fi
2146
2147 if test "x$have_good_geoip" = "xyes" ; then
2148         geoip_message="yes"
2149 else
2150         geoip_message="no"
2151 fi
2152
2153 echo ""
2154 echo "The Wireshark package has been configured with the following options."
2155 echo "                    Build wireshark : $enable_wireshark"
2156 echo "                       Build tshark : $enable_tshark"
2157 echo "                     Build capinfos : $enable_capinfos"
2158 echo "                      Build editcap : $enable_editcap"
2159 echo "                      Build dumpcap : $enable_dumpcap"
2160 echo "                     Build mergecap : $enable_mergecap"
2161 echo "                    Build text2pcap : $enable_text2pcap"
2162 echo "                      Build idl2wrs : $enable_idl2wrs"
2163 echo "                      Build randpkt : $enable_randpkt"
2164 echo "                       Build dftest : $enable_dftest"
2165 echo "                     Build rawshark : $enable_rawshark"
2166 echo ""
2167 echo "  Install dumpcap with capabilities : $setcap_message"
2168 echo "             Install dumpcap setuid : $setuid_message"
2169 echo "                  Use dumpcap group : $dumpcap_group_message"
2170 echo "                        Use plugins : $have_plugins"
2171 echo "                    Use lua library : $lua_message"
2172 echo "                 Use python binding : $python_message"
2173 echo "                   Build rtp_player : $portaudio_message"
2174 echo "                        Use threads : $enable_threads"
2175 echo "             Build profile binaries : $enable_profile_build"
2176 echo "                   Use pcap library : $want_pcap"
2177 echo "                   Use zlib library : $zlib_message"
2178 echo "                   Use pcre library : $pcre_message"
2179 echo "               Use kerberos library : $krb5_message"
2180 echo "                 Use c-ares library : $c_ares_message"
2181 echo "               Use GNU ADNS library : $adns_message"
2182 echo "                Use SMI MIB library : $libsmi_message"
2183 echo "             Use GNU crypto library : $gcrypt_message"
2184 echo "             Use SSL crypto library : $ssl_message"
2185 echo "           Use IPv6 name resolution : $enable_ipv6"
2186 echo "                 Use gnutls library : $tls_message"
2187 echo "     Use POSIX capabilities library : $libcap_message"
2188 echo "                  Use GeoIP library : $geoip_message"