Fix Dead Store (Dead nested assignment) Warning found by Clang
[obnox/wireshark/wip.git] / configure.in
1 # $Id$
2 #
3 AC_PREREQ(2.60)
4
5 AC_INIT(wireshark, 1.5.2)
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(-Warray-bounds)
331                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wattributes)
332                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement)
333                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdiv-by-zero)
334                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security)
335                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wignored-qualifiers)
336                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpragmas)
337                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wredundant-decls)
338                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wvla)
339                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wc++-compat)
340                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wjump-misses-init)
341                 #
342                 # epan/dissectors/packet-ncp2222.inc blocks this one
343                 # for now.
344                 #
345                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wwrite-strings)
346                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wstrict-prototypes)
347                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-declarations)
348                 #
349                 # epan/dissectors/packet-afs.c blocks this one for now.
350                 #
351                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshadow)
352                 #
353                 # More cleanup needed for this on LP64.
354                 #
355                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshorten-64-to-32)
356         fi
357 ],)
358 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
359 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wextra) # -W is now known as -Wextra
360 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement)
361 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wendif-labels)
362 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpointer-arith)
363 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-pointer-sign)
364 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds)
365 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-align)
366 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security)
367 # Use the faster pre gcc 4.5 floating point precision
368 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fexcess-precision=fast)
369
370 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
371 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
372 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
373 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
374 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
375 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
376
377 #
378 # If we're running GCC or clang, add '-D_U_="__attribute__((unused))"' to
379 # CFLAGS as well, so we can use _U_ to flag unused function arguments and
380 # not get warnings about them. Otherwise, add '-D_U_=""', so that _U_ used
381 # to flag an unused function argument will compile with non-GCC, non-clang
382 # compilers.
383 #
384 # XXX - other compilers?
385 #
386 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
387   CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"
388 else
389   CFLAGS="-D_U_=\"\" $CFLAGS"
390 fi
391
392 #
393 # If the compiler supports GCC-style flags, enable a barrier "stop on
394 # warning".
395 # This barrier is set for a very large part of the code. However, it is
396 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
397 #
398 warnings_as_errors_default="yes"
399 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
400 AC_ARG_ENABLE(warnings-as-errors,
401   AC_HELP_STRING( [--enable-warnings-as-errors],
402                   [Treat warnings as errors (only for GCC or clang). @<:@default=yes@:>@]),
403 [
404   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes" -a "x$wireshark_extra_gcc_flags" != "xyes"; then
405     with_warnings_as_errors="yes"
406     AC_MSG_RESULT(yes)
407   else
408     with_warnings_as_errors="no"
409     AC_MSG_RESULT(no)
410   fi
411 ],
412   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
413     with_warnings_as_errors="yes"
414     AC_MSG_RESULT(yes)
415   else
416     with_warnings_as_errors="no"
417     AC_MSG_RESULT(no)
418   fi
419 )
420 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
421
422 #
423 # Add any platform-specific compiler flags needed.
424 #
425 AC_MSG_CHECKING(for platform-specific compiler flags)
426 if test "x$GCC" = "xyes" ; then
427         #
428         # GCC - do any platform-specific tweaking necessary.
429         #
430         case "$host_os" in
431         solaris*)
432                 # the X11 headers don't automatically include prototype info
433                 # and a lot don't include the return type
434                 CFLAGS="$CFLAGS -Wno-return-type -DFUNCPROTO=15"
435                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
436                 ;;
437         darwin*)
438                 #
439                 # See comments above about Apple's lovely C compiler.
440                 #
441                 # NOTE: to AC_PROG_CC, "GCC" means "any compiler that
442                 # defines __GNUC__"; clang defines __GNUC__, so that
443                 # means we think clang is GCC.
444                 #
445                 # clang whines about -no-cpp-precomp being unused
446                 # so we check whether this is really clang, and
447                 # only add -no-cpp-precomp if it's not.
448                 #
449                 if test "x$CC" != "xclang" ; then
450                         CFLAGS="-no-cpp-precomp $CFLAGS"
451                         AC_MSG_RESULT(Apple GCC - added -no-cpp-precomp)
452                 else
453                         #
454                         # Clang, clang, clang went the trolley....
455                         #
456                         AC_MSG_RESULT(none needed)
457                 fi
458                 ;;
459         *)
460                 AC_MSG_RESULT(none needed)
461                 ;;
462         esac
463 else
464         #
465         # Not GCC - assume it's the vendor's compiler.
466         #
467         case "$host_os" in
468         hpux*)
469                 #
470                 # HP's ANSI C compiler; flags suggested by Jost Martin.
471                 # "-Ae" for ANSI C plus extensions such as "long long".
472                 # "+O2", for optimization.  XXX - works with "-g"?
473                 #
474                 CFLAGS="-Ae +O2 $CFLAGS"
475                 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
476                 ;;
477         darwin*)
478                 #
479                 # It may be called "cc", but it's really a GCC derivative
480                 # with a problematic special precompiler and precompiled
481                 # headers; turn off the special precompiler, as some
482                 # apparently-legal code won't compile with its precompiled
483                 # headers.
484                 #
485                 # On the other hand, if it's called "clang", it's not a
486                 # GCC derivative, and it whines if you pass it
487                 # -no-cpp-precomp.
488                 #
489                 # XXX - is there any version of autoconf we support
490                 # where it uses another way to decide if the compiler
491                 # is GCC or not?
492                 #
493                 if test "x$CC" != "xclang" ; then
494                         CFLAGS="-no-cpp-precomp $CFLAGS"
495                         AC_MSG_RESULT(Apple CC - added -no-cpp-precomp)
496                 else
497                         #
498                         # Clang, clang, clang went the trolley....
499                         #
500                         AC_MSG_RESULT(none needed)
501                 fi
502                 ;;
503         *)
504                 AC_MSG_RESULT(none needed)
505                 ;;
506         esac
507 fi
508
509 #
510 # Add any platform-specific linker flags needed.
511 #
512 AC_MSG_CHECKING(for platform-specific linker flags)
513 case "$host_os" in
514 darwin*)
515         #
516         # Add -Wl,-single_module to the LDFLAGS used with shared
517         # libraries, to fix some error that show up in some cases;
518         # some Apple documentation recommends it for most shared
519         # libraries.
520         #
521         LDFLAGS_SHAREDLIB="-Wl,-single_module"
522         #
523         # Add -Wl,-search_paths_first to make sure that if we search
524         # directories A and B, in that order, for a given library, a
525         # non-shared version in directory A, rather than a shared
526         # version in directory B, is chosen (so we can use
527         # --with-pcap=/usr/local to force all programs to be linked
528         # with a static version installed in /usr/local/lib rather than
529         # the system version in /usr/lib).
530         #
531         LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
532         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first])
533         ;;
534 cygwin*)
535         #
536         # Shared libraries in cygwin/Win32 must never contain
537         # undefined symbols.
538         #
539         LDFLAGS="$LDFLAGS -no-undefined"
540         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
541         ;;
542 *)
543         AC_MSG_RESULT(none needed)
544         ;;
545 esac
546 AC_SUBST(LDFLAGS_SHAREDLIB)
547
548 # Control silent compiling
549 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])])
550
551 #
552 # On OS X, if we find the headers for Core Foundation, Launch Services,
553 # and Core Services, add -framework options to link with Application
554 # Services (of which Launch Services is a subframework), Core Foundation
555 # (required by the Launch Services APIs), and Core Services, so we can
556 # use them to launch a Web browser from the Help menu and to use
557 # Gestalt() to get the Mac OS X version number.
558 #
559 case "$host_os" in
560
561 darwin*)
562         AC_MSG_CHECKING([whether we can build with Core Foundation, Launch Services, and Core Services])
563         ac_save_LIBS="$LIBS"
564         ac_coreservices_frameworks="-framework CoreServices"
565         ac_launchservices_frameworks="-framework ApplicationServices -framework CoreFoundation $ac_coreservices_frameworks"
566         LIBS="$LIBS $ac_launchservices_frameworks $ac_coreservices_frameworks"
567         AC_TRY_LINK(
568            [
569 #       include <CoreFoundation/CFBase.h>
570 #       include <CoreFoundation/CFString.h>
571 #       include <CoreFoundation/CFURL.h>
572 #       include <ApplicationServices/ApplicationServices.h>
573 #       include <CoreServices/CoreServices.h>
574            ],
575            [
576         CFStringRef url_CFString;
577         CFURLRef url_CFURL;
578         OSStatus status;
579         long os_version;
580
581         url_CFString = CFStringCreateWithCString(NULL, "", kCFStringEncodingASCII);
582         url_CFURL = CFURLCreateWithString(NULL, url_CFString, NULL);
583         status = LSOpenCFURLRef(url_CFURL, NULL);
584
585         Gestalt(gestaltSystemVersion, &os_version);
586            ],
587            ac_cv_can_use_osx_frameworks=yes,
588            ac_cv_can_use_osx_frameworks=no,
589            [echo $ac_n "cross compiling; assumed OK... $ac_c"])
590         if test "$ac_cv_can_use_osx_frameworks" = yes ; then
591                 AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
592                 CORESERVICES_FRAMEWORKS="$ac_coreservices_frameworks"
593                 LAUNCHSERVICES_FRAMEWORKS="$ac_launchservices_frameworks"
594                 AC_MSG_RESULT(yes)
595         else
596                 AC_MSG_RESULT(no)
597         fi
598         LIBS="$ac_save_LIBS"
599         ;;
600 esac
601 AC_SUBST(CORESERVICES_FRAMEWORKS)
602 AC_SUBST(LAUNCHSERVICES_FRAMEWORKS)
603
604 #
605 # If using $prefix we add "$prefix/include" to the include search path
606 # and "$prefix/lib" to the library search path.
607 #
608 if test "x$prefix" != "x" ; then
609         AC_MSG_CHECKING(whether to use $prefix for headers and libraries)
610         if test -d $prefix/include ; then
611                 AC_MSG_RESULT(yes)
612                 #
613                 # Arrange that we search for header files in "$prefix/include", as
614                 # various packages we use may have been installed under "$prefix/include".
615                 #
616                 CFLAGS="$CFLAGS -I$prefix/include"
617                 CPPFLAGS="$CPPFLAGS -I$prefix/include"
618
619                 #
620                 # Arrange that we search for libraries in "$prefix/lib".
621                 #
622                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib)
623         else
624                 AC_MSG_RESULT(no)
625         fi
626 fi
627
628 dnl Look in /usr/local for header files and libraries ?
629 dnl XXX FIXME don't include /usr/local if it is already in the system
630 dnl search path as this causes gcc 3.2 on Linux to complain about a change
631 dnl of the system search order for includes
632 AC_ARG_ENABLE(usr-local,
633   AC_HELP_STRING( [--enable-usr-local],
634                   [look for headers and libs in /usr/local tree.  @<:@default=yes@:>@]),
635     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
636
637 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
638 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
639         if test -d "/usr/local"; then
640                 AC_MSG_RESULT(yes)
641                 #
642                 # Arrange that we search for header files in the source directory
643                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
644                 # as various packages we use ("libpcap", "zlib", "adns", "pcre")
645                 # may have been installed under "/usr/local/include".
646                 #
647                 CFLAGS="$CFLAGS -I/usr/local/include"
648                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
649
650                 #
651                 # Arrange that we search for libraries in "/usr/local/lib".
652                 #
653                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
654         else
655                 AC_MSG_RESULT(no)
656         fi
657 else
658         AC_MSG_RESULT(no)
659 fi
660
661 #
662 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
663 # link directory.
664 #
665 case "$host_os" in
666   solaris*)
667     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
668     if test x$LD_LIBRARY_PATH != x ; then
669       LIBS="$LIBS -R$LD_LIBRARY_PATH"
670       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
671     else
672       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
673     fi
674   ;;
675 esac
676
677 #
678 # Check for versions of "sed" inadequate to handle, in libtool, a list
679 # of object files as large as the list in Wireshark.
680 #
681 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
682 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
683 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
684 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
685 # is the only "sed" that comes with Solaris that can handle Wireshark.
686 #
687 # Add any checks here that are necessary for other OSes.
688 #
689 AC_WIRESHARK_GNU_SED_CHECK
690 if test "$HAVE_GNU_SED" = no ; then
691         case "$host_os" in
692         solaris*)
693                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
694                 case `which sed` in
695                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
696                         AC_MSG_RESULT(yes)
697                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
698                         ;;
699
700                         *)
701                         AC_MSG_RESULT(no)
702                         ;;
703                 esac
704                 ;;
705
706         *)
707                 :
708                 ;;
709         esac
710 fi
711
712 # Enable/disable tshark
713
714 AC_ARG_ENABLE(wireshark,
715   AC_HELP_STRING( [--enable-wireshark],
716                   [build GTK+-based wireshark.  @<:@default=yes, if GTK+ available@:>@]),
717     enable_wireshark=$enableval,enable_wireshark=yes)
718
719 AC_ARG_ENABLE(threads,
720   AC_HELP_STRING( [--enable-threads],
721                   [use threads in wireshark.  @<:@default=no@:>@]),
722     enable_threads=$enableval,enable_threads=no)
723 AM_CONDITIONAL(USE_THREADS, test x$enable_threads = xyes)
724
725 AC_ARG_ENABLE(profile-build,
726   AC_HELP_STRING( [--enable-profile-build],
727                   [build profile-ready binaries.  @<:@default=no@:>@]),
728     enable_profile_build=$enableval,enable_profile_build=no)
729 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
730 AC_MSG_CHECKING(if profile builds must be generated)
731 if test "x$enable_profile_build" = "xyes" ; then
732         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
733                 AC_MSG_RESULT(yes)
734                 CFLAGS=" -pg $CFLAGS"
735         else
736                 AC_MSG_RESULT(no)
737                 echo "Building profile binaries currently only supported for GCC and clang."
738         fi
739 else
740         AC_MSG_RESULT(no)
741 fi
742
743 # Create DATAFILE_DIR #define for config.h
744 datafiledir=$datadir/wireshark
745 datafiledir=`(
746     test "x$prefix" = xNONE && prefix=$ac_default_prefix
747     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
748     # Ugly hack, but I don't see how this problem can be solved
749     # properly that DATAFILE_DIR had a value starting with
750     # "${prefix}/" instead of e.g. "/usr/local/"
751     eval eval echo "$datafiledir"
752 )`
753 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
754
755 # Create DOC_DIR #define for config.h
756 docdir=`(
757     test "x$prefix" = xNONE && prefix=$ac_default_prefix
758     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
759     # Ugly hack, but I don't see how this problem can be solved
760     # properly that DOC_DIR had a value starting with
761     # "${prefix}/" instead of e.g. "/usr/local/"
762     eval eval echo "$docdir"
763 )`
764 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
765
766 # GTK checks; we require GTK+ 2.4 or later.
767 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
768 # programs to be built with GTK+.
769 #
770 if test "x$enable_wireshark" = "xyes"; then
771 if test "x$with_gtk3" = "xyes"; then
772         AM_PATH_GTK_3_0(3.0.0,
773         [
774                 CFLAGS="$CFLAGS $GTK_CFLAGS"
775                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
776                 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK])
777         ], GTK_OK=no, gthread)
778
779 else
780         AM_PATH_GTK_2_0(2.4.0,
781         [
782                 CFLAGS="$CFLAGS $GTK_CFLAGS"
783                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
784                 AC_DEFINE(HAVE_GTK, 1, [Define to 1 if compiling with GTK])
785         ], GTK_OK=no, gthread)
786 fi
787 else
788         GTK_OK=no
789 fi
790
791 # GLib checks; we require GLib 2.4 or later, and require gmodule
792 # support, as we need that for dynamically loading plugins.
793 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
794 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
795 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
796 # GLIB_CFLAGS to CFLAGS.
797 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
798 # set when generating the Makefile, so we can make programs that require
799 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
800 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
801 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
802 # programs to be built with GLib.
803 #
804 if test "$GTK_OK" = "no" ; then
805         #
806         # We don't have GTK+.
807         # If they didn't explicitly say "--disable-wireshark", fail (so
808         # that, unless they explicitly indicated that they don't want
809         # Wireshark, we stop so they know they won't be getting
810         # Wireshark unless they fix the GTK+ problem).
811         #
812         if test "x$enable_wireshark" = "xyes"; then
813                 AC_MSG_ERROR([GTK+ 2.4 or later isn't available, so Wireshark can't be compiled])
814         fi
815         wireshark_bin=""
816         wireshark_man=""
817         # Use GLIB_CFLAGS
818         AM_PATH_GLIB_2_0(2.4.0,
819         [
820                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
821                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
822         ], AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gmodule)
823 else
824         #
825         # We have GTK+, and thus will be building Wireshark unless the
826         # user explicitly disabled it.
827         #
828         wireshark_bin="wireshark\$(EXEEXT)"
829         wireshark_man="wireshark.1"
830         wireshark_SUBDIRS="codecs gtk"
831         # Don't use GLIB_CFLAGS
832         AM_PATH_GLIB_2_0(2.4.0, , AC_MSG_ERROR(GLib 2.4 or later distribution not found.), gmodule)
833 fi
834
835 #
836 # Check whether GLib includes GRegex support.
837 # We just assume that everybody builds GLib 2.14.0 and later
838 # with GRegex support; it's possible to compile GLib without
839 # GRegex but it doesn't look as if anyone does.
840 #
841 AC_MSG_CHECKING(for GLIB - version >= 2.14.0)
842 if test x$PKG_CONFIG != xno ; then
843     ## don't try to run the test against uninstalled libtool libs
844     if $PKG_CONFIG --uninstalled $pkg_config_args; then
845         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
846         enable_glibtest=no
847     fi
848
849     if $PKG_CONFIG --atleast-version 2.14.0 glib-2.0; then
850         have_gregex=yes
851     else
852         have_gregex=no
853     fi
854     AC_MSG_RESULT($have_gregex)
855 fi
856
857 #
858 # Check whether GLib modules are supported, to determine whether we
859 # can support plugins.
860 #
861 AC_MSG_CHECKING(whether GLib supports loadable modules)
862 ac_save_CFLAGS="$CFLAGS"
863 ac_save_LIBS="$LIBS"
864 CFLAGS="$CFLAGS $GLIB_CFLAGS"
865 LIBS="$GLIB_LIBS $LIBS"
866 AC_TRY_RUN([
867 #include <glib.h>
868 #include <gmodule.h>
869 #include <stdio.h>
870 #include <stdlib.h>
871
872 int
873 main ()
874 {
875   if (g_module_supported())
876     return 0;   /* success */
877   else
878     return 1;   /* failure */
879 }
880 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
881    [echo $ac_n "cross compiling; assumed OK... $ac_c"
882     ac_cv_glib_supports_modules=yes])
883 CFLAGS="$ac_save_CFLAGS"
884 LIBS="$ac_save_LIBS"
885 if test "$ac_cv_glib_supports_modules" = yes ; then
886   AC_MSG_RESULT(yes)
887   have_plugins=yes
888 else
889   AC_MSG_RESULT(no)
890   have_plugins=no
891 fi
892
893 #
894 # If we have <dlfcn.h>, check whether we can use dladdr to find a
895 # filename (hopefully, a full pathname, but no guarantees) for
896 # the executable.
897 #
898 if test "$ac_cv_header_dlfcn_h" = "yes"
899 then
900         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
901         ac_save_CFLAGS="$CFLAGS"
902         ac_save_LIBS="$LIBS"
903         CFLAGS="$CFLAGS $GLIB_CFLAGS"
904         LIBS="$GLIB_LIBS $LIBS"
905         AC_TRY_RUN([
906 #define _GNU_SOURCE     /* required on Linux, sigh */
907 #include <dlfcn.h>
908
909 int
910 main(void)
911 {
912         Dl_info info;
913
914         if (!dladdr((void *)main, &info))
915                 return 1;       /* failure */
916         return 0;               /* assume success */
917 }
918 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
919    [echo $ac_n "cross compiling; assumed OK... $ac_c"
920     ac_cv_dladdr_finds_executable_path=yes])
921         CFLAGS="$ac_save_CFLAGS"
922         LIBS="$ac_save_LIBS"
923         if test x$ac_cv_dladdr_finds_executable_path = xyes
924         then
925                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
926         fi
927         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
928 fi
929
930 if test "x$no_gtk" != "xyes"
931 then
932     #
933     # We have GTK+; do we want the OS X integration functions and,
934     # if so, do we have them and, if so, which versions do we have,
935     # the old Carbon-based ones or the new Cocoa-based ones?
936     #
937     AC_MSG_CHECKING(whether to use OS X integration functions)
938
939     AC_ARG_WITH(osx-integration,
940       AC_HELP_STRING( [--with-osx-integration],
941                       [use OS X integration functions (@<:@default=yes, if available@:>@]),
942     [
943         if test $withval = no
944         then
945             want_osx_integration=no
946         else
947             want_osx_integration=yes
948         fi
949     ],[
950         want_osx_integration=yes
951     ])
952     if test "x$want_osx_integration" = "xno"; then
953         AC_MSG_RESULT(no)
954     else
955         AC_MSG_RESULT(yes)
956         AC_WIRESHARK_OSX_INTEGRATION_CHECK
957     fi
958 fi
959
960 AC_SUBST(wireshark_bin)
961 AC_SUBST(wireshark_man)
962
963
964 # Enable/disable tshark
965
966 AC_ARG_ENABLE(tshark,
967   AC_HELP_STRING( [--enable-tshark],
968                   [build tshark.  @<:@default=yes@:>@]),
969     tshark=$enableval,enable_tshark=yes)
970
971 if test "x$enable_tshark" = "xyes" ; then
972         tshark_bin="tshark\$(EXEEXT)"
973         tshark_man="tshark.1"
974         wiresharkfilter_man="wireshark-filter.4"
975 else
976         tshark_bin=""
977         tshark_man=""
978 fi
979 AC_SUBST(tshark_bin)
980 AC_SUBST(tshark_man)
981 AC_SUBST(wiresharkfilter_man)
982
983
984
985 # Enable/disable editcap
986
987 AC_ARG_ENABLE(editcap,
988   AC_HELP_STRING( [--enable-editcap],
989                   [build editcap.  @<:@default=yes@:>@]),
990     enable_editcap=$enableval,enable_editcap=yes)
991
992 if test "x$enable_editcap" = "xyes" ; then
993         editcap_bin="editcap\$(EXEEXT)"
994         editcap_man="editcap.1"
995 else
996         editcap_bin=""
997         editcap_man=""
998 fi
999 AC_SUBST(editcap_bin)
1000 AC_SUBST(editcap_man)
1001
1002 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1003 # or not)
1004
1005 # Enable/disable capinfos
1006
1007 AC_ARG_ENABLE(capinfos,
1008   AC_HELP_STRING( [--enable-capinfos],
1009                   [build capinfos.  @<:@default=yes@:>@]),
1010     enable_capinfos=$enableval,enable_capinfos=yes)
1011
1012 if test "x$enable_capinfos" = "xyes" ; then
1013         capinfos_bin="capinfos\$(EXEEXT)"
1014         capinfos_man="capinfos.1"
1015 else
1016         capinfos_bin=""
1017         capinfos_man=""
1018 fi
1019 AC_SUBST(capinfos_bin)
1020 AC_SUBST(capinfos_man)
1021
1022
1023 # Enable/disable mergecap
1024
1025 AC_ARG_ENABLE(mergecap,
1026   AC_HELP_STRING( [--enable-mergecap],
1027                   [build mergecap.  @<:@default=yes@:>@]),
1028     enable_mergecap=$enableval,enable_mergecap=yes)
1029
1030 if test "x$enable_mergecap" = "xyes" ; then
1031         mergecap_bin="mergecap\$(EXEEXT)"
1032         mergecap_man="mergecap.1"
1033 else
1034         mergecap_bin=""
1035         mergecap_man=""
1036 fi
1037 AC_SUBST(mergecap_bin)
1038 AC_SUBST(mergecap_man)
1039
1040
1041 # Enable/disable text2pcap
1042
1043 AC_ARG_ENABLE(text2pcap,
1044   AC_HELP_STRING( [--enable-text2pcap],
1045                   [build text2pcap.  @<:@default=yes@:>@]),
1046     text2pcap=$enableval,enable_text2pcap=yes)
1047
1048 if test "x$enable_text2pcap" = "xyes" ; then
1049         text2pcap_bin="text2pcap\$(EXEEXT)"
1050         text2pcap_man="text2pcap.1"
1051 else
1052         text2pcap_bin=""
1053         text2pcap_man=""
1054 fi
1055 AC_SUBST(text2pcap_bin)
1056 AC_SUBST(text2pcap_man)
1057
1058 # Enable/disable idl2wrs
1059
1060 AC_ARG_ENABLE(idl2wrs,
1061   AC_HELP_STRING( [--enable-idl2wrs],
1062                   [build idl2wrs.  @<:@default=yes@:>@]),
1063     enable_idl2wrs=$enableval,enable_idl2wrs=yes)
1064
1065 if test "x$enable_idl2wrs" = "xyes" ; then
1066         idl2wrs_bin="idl2wrs"
1067         idl2wrs_man="idl2wrs.1"
1068 else
1069         idl2wrs_bin=""
1070         idl2wrs_man=""
1071 fi
1072 AC_SUBST(idl2wrs_bin)
1073 AC_SUBST(idl2wrs_man)
1074
1075
1076 # Enable/disable dftest
1077
1078 AC_ARG_ENABLE(dftest,
1079   AC_HELP_STRING( [--enable-dftest],
1080                   [build dftest.  @<:@default=yes@:>@]),
1081     enable_dftest=$enableval,enable_dftest=yes)
1082
1083 if test "x$enable_dftest" = "xyes" ; then
1084         dftest_bin="dftest\$(EXEEXT)"
1085         dftest_man="dftest.1"
1086 else
1087         dftest_bin=""
1088         dftest_man=""
1089 fi
1090 AC_SUBST(dftest_bin)
1091 AC_SUBST(dftest_man)
1092
1093
1094 # Enable/disable randpkt
1095
1096 AC_ARG_ENABLE(randpkt,
1097   AC_HELP_STRING( [--enable-randpkt],
1098                   [build randpkt.  @<:@default=yes@:>@]),
1099     enable_randpkt=$enableval,enable_randpkt=yes)
1100
1101 if test "x$enable_randpkt" = "xyes" ; then
1102         randpkt_bin="randpkt\$(EXEEXT)"
1103         randpkt_man="randpkt.1"
1104 else
1105         randpkt_bin=""
1106         randpkt_man=""
1107 fi
1108 AC_SUBST(randpkt_bin)
1109 AC_SUBST(randpkt_man)
1110
1111
1112
1113 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1114 dnl "gethostbyname()".
1115 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1116
1117 dnl Checks for "connect()", used as a proxy for "socket()" - and
1118 dnl "-lsocket", if we need it to get "connect()".
1119 AC_WIRESHARK_SOCKET_LIB_CHECK
1120
1121 dnl pcap check
1122 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1123
1124 AC_ARG_WITH(pcap,
1125   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1126                   [use libpcap for packet capturing.  @<:@default=yes@:>@]),
1127 [
1128         if test $withval = no
1129         then
1130                 want_pcap=no
1131         elif test $withval = yes
1132         then
1133                 want_pcap=yes
1134         else
1135                 want_pcap=yes
1136                 pcap_dir=$withval
1137         fi
1138 ],[
1139         want_pcap=yes
1140         pcap_dir=
1141 ])
1142 if test "x$want_pcap" = "xno" ; then
1143         AC_MSG_RESULT(no)
1144 else
1145         AC_MSG_RESULT(yes)
1146         AC_WIRESHARK_PCAP_CHECK
1147 fi
1148
1149 # Enable/disable dumpcap
1150
1151 dnl dumpcap check
1152 AC_MSG_CHECKING(whether to build dumpcap)
1153
1154 AC_ARG_ENABLE(dumpcap,
1155   AC_HELP_STRING( [--enable-dumpcap],
1156                   [build dumpcap.  @<:@default=yes@:>@]),
1157     enable_dumpcap=$enableval,enable_dumpcap=yes)
1158
1159 if test "x$enable_dumpcap" = "xyes" ; then
1160         if test "x$want_pcap" = "xno" ; then
1161                 enable_dumpcap=no
1162                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1163         else
1164                 AC_MSG_RESULT(yes)
1165         fi
1166 else
1167         AC_MSG_RESULT(no)
1168 fi
1169
1170 if test "x$enable_dumpcap" = "xyes" ; then
1171         dumpcap_bin="dumpcap\$(EXEEXT)"
1172         dumpcap_man="dumpcap.1"
1173 else
1174         dumpcap_bin=""
1175         dumpcap_man=""
1176 fi
1177 AC_SUBST(dumpcap_bin)
1178 AC_SUBST(dumpcap_man)
1179
1180 # Enable/disable rawshark
1181
1182 dnl rawshark check
1183 AC_MSG_CHECKING(whether to build rawshark)
1184
1185 AC_ARG_ENABLE(rawshark,
1186   AC_HELP_STRING( [--enable-rawshark],
1187                   [build rawshark.  @<:@default=yes@:>@]),
1188     rawshark=$enableval,enable_rawshark=yes)
1189
1190 if test "x$enable_rawshark" = "xyes" ; then
1191         if test "x$want_pcap" = "xno" ; then
1192                 enable_rawshark=no
1193                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1194         else
1195                 AC_MSG_RESULT(yes)
1196         fi
1197 else
1198         AC_MSG_RESULT(no)
1199 fi
1200
1201 if test "x$enable_rawshark" = "xyes" ; then
1202         rawshark_bin="rawshark\$(EXEEXT)"
1203         rawshark_man="rawshark.1"
1204 else
1205         rawshark_bin=""
1206         rawshark_man=""
1207 fi
1208 AC_SUBST(rawshark_bin)
1209 AC_SUBST(rawshark_man)
1210
1211
1212 dnl pcap remote check
1213 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1214
1215 AC_ARG_WITH(pcap-remote,
1216     AC_HELP_STRING([--with-pcap-remote],
1217                    [use libpcap remote capturing (requires libpcap)]),
1218 [
1219     if test $withval = no
1220     then
1221         want_pcap_remote=no
1222     else
1223         want_pcap_remote=yes
1224     fi
1225 ],[
1226     want_pcap_remote=no
1227 ])
1228 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1229     AC_MSG_RESULT(no)
1230 else
1231     AC_MSG_RESULT(yes)
1232     AC_WIRESHARK_PCAP_REMOTE_CHECK
1233 fi
1234
1235 dnl zlib check
1236 AC_MSG_CHECKING(whether to use zlib for reading compressed capture files)
1237
1238 AC_ARG_WITH(zlib,
1239   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1240                  [use zlib (located in directory DIR, if supplied) to read compressed data.  @<:@default=yes, if available@:>@]),
1241 [
1242         if test $withval = no
1243         then
1244                 want_zlib=no
1245         elif test $withval = yes
1246         then
1247                 want_zlib=yes
1248         else
1249                 want_zlib=yes
1250                 zlib_dir=$withval
1251         fi
1252 ],[
1253         #
1254         # Use zlib if it's present, otherwise don't.
1255         #
1256         want_zlib=ifavailable
1257         zlib_dir=
1258 ])
1259 if test "x$want_zlib" = "xno" ; then
1260         AC_MSG_RESULT(no)
1261 else
1262         AC_MSG_RESULT(yes)
1263         AC_WIRESHARK_ZLIB_CHECK
1264         if test "x$want_zlib" = "xno" ; then
1265                 AC_MSG_RESULT(zlib not found - disabling compressed capture file support)
1266         fi
1267 fi
1268
1269 if test "x$want_zlib" != "xno" ; then
1270         AC_CHECK_LIB(z, gzclearerr,
1271         [
1272                 AC_DEFINE(HAVE_GZCLEARERR, 1, [Define if we have gzclearerr])
1273         ])
1274 fi
1275
1276 dnl pcre check
1277 AC_MSG_CHECKING(whether to use libpcre for regular expressions in dfilters)
1278
1279 AC_ARG_WITH(pcre,
1280   AC_HELP_STRING( [--with-pcre@<:@=DIR@:>@],
1281                   [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@:>@]),
1282 [
1283         if test $withval = no
1284         then
1285                 want_pcre=no
1286         elif test $withval = yes
1287         then
1288                 want_pcre=yes
1289         else
1290                 want_pcre=yes
1291                 pcre_dir=$withval
1292         fi
1293 ],[
1294         #
1295         # Use libpcre if it's present and GRegex isn't, otherwise don't.
1296         #
1297         if test $have_gregex = yes ; then
1298                 want_pcre=no
1299         else
1300                 want_pcre=ifavailable
1301         fi
1302         pcre_dir=
1303 ])
1304 if test "x$want_pcre" = "xno" ; then
1305         AC_MSG_RESULT(no)
1306 else
1307         AC_MSG_RESULT(yes)
1308         AC_WIRESHARK_LIBPCRE_CHECK
1309         if test "x$want_pcre" = "xno" ; then
1310                 AC_MSG_RESULT(libpcre not found - disabling support for perl compatible regular expressions in dfilters)
1311         fi
1312 fi
1313
1314
1315 dnl lua check
1316 AC_MSG_CHECKING(whether to use liblua for the lua scripting plugin)
1317
1318 AC_ARG_WITH(lua,
1319   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1320                   [use liblua (located in directory DIR, if supplied) for the lua scripting plugin.  @<:@default=yes, if available@:>@]),
1321 [
1322         if test $withval = no
1323         then
1324                 want_lua=no
1325         elif test $withval = yes
1326         then
1327                 want_lua=yes
1328         else
1329                 want_lua=yes
1330                 lua_dir=$withval
1331         fi
1332 ],[
1333         #
1334         # Use liblua by default
1335         #
1336         want_lua=ifavailable
1337         lua_dir=
1338 ])
1339 if test "x$want_lua" = "xno" ; then
1340         AC_MSG_RESULT(no)
1341 else
1342         AC_MSG_RESULT(yes)
1343         AC_WIRESHARK_LIBLUA_CHECK
1344         if test "x$want_lua" = "xno" ; then
1345                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1346         fi
1347 fi
1348 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1349
1350
1351 dnl portaudio check
1352 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1353
1354 AC_ARG_WITH(portaudio,
1355   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1356                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player.  @<:@default=yes, if available@:>@]),
1357 [
1358         if test $withval = no
1359         then
1360                 want_portaudio=no
1361         elif test $withval = yes
1362         then
1363                 want_portaudio=yes
1364         else
1365                 want_portaudio=yes
1366                 portaudio_dir=$withval
1367         fi
1368 ],[
1369         #
1370         # Use libportaudio by default
1371         #
1372         want_portaudio=ifavailable
1373         portaudio_dir=
1374 ])
1375 if test "x$want_portaudio" = "xno" ; then
1376         AC_MSG_RESULT(no)
1377 else
1378         AC_MSG_RESULT(yes)
1379         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1380         if test "x$want_portaudio" = "xno" ; then
1381                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1382         fi
1383 fi
1384 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1385
1386
1387 dnl ipv6 check
1388 AC_ARG_ENABLE(ipv6,
1389   AC_HELP_STRING( [--enable-ipv6],
1390                   [use ipv6 name resolution, if available.  @<:@default=yes@:>@]),
1391     enable_ipv6=$enableval,enable_ipv6=yes)
1392
1393 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1394 if test "x$enable_ipv6" = "xno" ; then
1395         AC_MSG_RESULT(no)
1396 else
1397         AC_MSG_RESULT(yes)
1398         AC_WIRESHARK_IPV6_STACK
1399 fi
1400
1401
1402 dnl Check if dumpcap should be installed with filesystem capabilities
1403 AC_PATH_PROG(SETCAP, setcap)
1404 AC_ARG_ENABLE(setcap-install,
1405   AC_HELP_STRING( [--enable-setcap-install],
1406                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1407     enable_setcap_install=$enableval,enable_setcap_install=no)
1408
1409 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1410 if test "x$enable_setcap_install" = "xno" ; then
1411         AC_MSG_RESULT(no)
1412 else
1413         if test "x$SETCAP" = "x" ; then
1414                 AC_MSG_RESULT(no. Setcap not found)
1415         elif test "x$enable_dumpcap" = "xno" ; then
1416                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1417         else
1418                 AC_MSG_RESULT(yes)
1419         fi
1420 fi
1421
1422 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1423
1424 dnl Check if dumpcap should be installed setuid
1425 AC_ARG_ENABLE(setuid-install,
1426   AC_HELP_STRING( [--enable-setuid-install],
1427                   [install dumpcap as setuid @<:@default=no@:>@]),
1428     enable_setuid_install=$enableval,enable_setuid_install=no)
1429
1430 AC_MSG_CHECKING(whether to install dumpcap setuid)
1431 if test "x$enable_setuid_install" = "xno" ; then
1432         AC_MSG_RESULT(no)
1433 else
1434         if test "x$enable_setcap_install" = "xyes" ; then
1435                 enable_setuid_install=no
1436                 AC_MSG_RESULT(no; using setcap instead)
1437         elif test "x$enable_dumpcap" = "xno" ; then
1438                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1439         else
1440                 AC_MSG_RESULT(yes)
1441         fi
1442 fi
1443
1444 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1445 AC_CHECK_FUNCS(setresuid setresgid)
1446
1447 dnl ...but our Network Operations group is named "no"!
1448 DUMPCAP_GROUP=''
1449 AC_ARG_WITH(dumpcap-group,
1450   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1451                   [restrict dumpcap to GROUP]),
1452 [
1453   if test "x$withval" = "xyes"; then
1454       AC_MSG_ERROR([No dumpcap group specified.])
1455   elif test "x$withval" != "xno"; then
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)
1529
1530 AC_ARG_WITH(krb5,
1531   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1532                   [use kerberos (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 if specified, 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_ARG_WITH(python,
1636     AC_HELP_STRING( [--with-python@<:@=DIR@:>@],
1637                     [use python interpreter (installed in DIR, if supplied). @<:@default=yes@:>@ (EXPERIMENTAL)]),
1638 [
1639 pythondir='${libdir}/wireshark/python/${VERSION}'
1640 if test "x$withval" = "xno"; then
1641   want_python=no
1642 elif test "x$withval" != "xyes"; then
1643   pythondir="$withval"
1644   want_python=yes
1645   AC_WIRESHARK_PYTHON_CHECK
1646 else
1647   want_python=yes
1648   AC_WIRESHARK_PYTHON_CHECK
1649 fi
1650 ])
1651 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python = xyes)
1652 AC_SUBST(pythondir)
1653
1654 #
1655 # Define WS_VAR_IMPORT appropriately for declarations of external
1656 # variables exported from dynamically-linked libraries.
1657 #
1658 AC_DEFINE(WS_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries])
1659
1660 #
1661 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
1662 # never return (just like Charlie on the MTA).
1663 #
1664 # Note that MSVC++ expects __declspec(noreturn) to precede the function
1665 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
1666 # follow the function name, so we need two different flavors of
1667 # noreturn tag.
1668 #
1669 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
1670
1671 AC_ARG_ENABLE(airpcap,
1672   AC_HELP_STRING( [--enable-airpcap],
1673                   [use airpcap in wireshark.  @<:@default=yes@:>@]),
1674   enable_airpcap=$enableval
1675   if test x$enable_airpcap != xno; then
1676         AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1677   fi
1678 )
1679 #
1680 # Define HAVE_AIRPDCAP
1681 # We'll want to remove this eventually.
1682 #
1683 AC_DEFINE(HAVE_AIRPDCAP, 1, [Enable AirPDcap (WPA/WPA2 decryption)])
1684
1685 dnl Checks for typedefs, structures, and compiler characteristics.
1686 # AC_C_CONST
1687
1688 # Check how we can get the time zone abbreviation
1689 AC_WIRESHARK_TIMEZONE_ABBREV
1690
1691 # We need to know whether "struct sockaddr" has an "sa_len" member
1692 # for get_interface_list().
1693
1694 AC_WIRESHARK_STRUCT_SA_LEN
1695
1696 # We must know our byte order
1697 AC_C_BIGENDIAN
1698
1699 # Checks whether "-traditional" is needed when using "ioctl".
1700 # XXX - do we need this?
1701 AC_PROG_GCC_TRADITIONAL
1702
1703 GETOPT_LO=""
1704 AC_CHECK_FUNC(getopt,
1705   [GETOPT_LO=""
1706    AC_DEFINE(HAVE_GETOPT_H, 1, [Define to 1 if you have the <getopt.h> header file.])
1707   ],
1708   GETOPT_LO="wsgetopt.lo"
1709 )
1710 if test "$ac_cv_func_getopt" = no ; then
1711   GETOPT_LO="wsgetopt.lo"
1712 fi
1713 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
1714 AC_SUBST(GETOPT_LO)
1715
1716 AC_CHECK_FUNC(strerror, STRERROR_LO="",
1717   [STRERROR_LO="strerror.lo"
1718    AC_DEFINE(NEED_STRERROR_H, 1, [Define if strerror.h needs to be included])
1719 ])
1720 if test "$ac_cv_func_strerror" = no ; then
1721   STRERROR_LO="strerror.lo"
1722 fi
1723 AM_CONDITIONAL(NEED_STRERROR_LO, test "x$ac_cv_func_strerror" = "xno")
1724 AC_SUBST(STRERROR_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 AM_CONFIG_HEADER(config.h)
1883 AC_OUTPUT(
1884   Makefile
1885   doxygen.cfg
1886   asn1/Makefile
1887   asn1/acp133/Makefile
1888   asn1/acse/Makefile
1889   asn1/ansi_map/Makefile
1890   asn1/ansi_tcap/Makefile
1891   asn1/camel/Makefile
1892   asn1/cdt/Makefile
1893   asn1/charging_ase/Makefile
1894   asn1/cmip/Makefile
1895   asn1/cmp/Makefile
1896   asn1/crmf/Makefile
1897   asn1/cms/Makefile
1898   asn1/dap/Makefile
1899   asn1/disp/Makefile
1900   asn1/dop/Makefile
1901   asn1/dsp/Makefile
1902   asn1/ess/Makefile
1903   asn1/ftam/Makefile
1904   asn1/gnm/Makefile
1905   asn1/goose/Makefile
1906   asn1/gprscdr/Makefile
1907   asn1/gsm_map/Makefile
1908   asn1/h225/Makefile
1909   asn1/h235/Makefile
1910   asn1/h245/Makefile
1911   asn1/h248/Makefile
1912   asn1/h282/Makefile
1913   asn1/h283/Makefile
1914   asn1/h323/Makefile
1915   asn1/h450/Makefile
1916   asn1/h450-ros/Makefile
1917   asn1/h460/Makefile
1918   asn1/h501/Makefile
1919   asn1/HI2Operations/Makefile
1920   asn1/hnbap/Makefile
1921   asn1/idmp/Makefile
1922   asn1/inap/Makefile
1923   asn1/kerberos/Makefile
1924   asn1/ldap/Makefile
1925   asn1/logotypecertextn/Makefile
1926   asn1/lte-rrc/Makefile
1927   asn1/mms/Makefile
1928   asn1/mpeg-audio/Makefile
1929   asn1/mpeg-pes/Makefile
1930   asn1/nbap/Makefile
1931   asn1/ns_cert_exts/Makefile
1932   asn1/ocsp/Makefile
1933   asn1/p1/Makefile
1934   asn1/p22/Makefile
1935   asn1/p7/Makefile
1936   asn1/p772/Makefile
1937   asn1/pcap/Makefile
1938   asn1/pkcs1/Makefile
1939   asn1/pkcs12/Makefile
1940   asn1/pkinit/Makefile
1941   asn1/pkixac/Makefile
1942   asn1/pkix1explicit/Makefile
1943   asn1/pkix1implicit/Makefile
1944   asn1/pkixproxy/Makefile
1945   asn1/pkixqualified/Makefile
1946   asn1/pkixtsp/Makefile
1947   asn1/pres/Makefile
1948   asn1/q932/Makefile
1949   asn1/q932-ros/Makefile
1950   asn1/qsig/Makefile
1951   asn1/ranap/Makefile
1952   asn1/rnsap/Makefile
1953   asn1/ros/Makefile
1954   asn1/rrc/Makefile
1955   asn1/rrlp/Makefile
1956   asn1/rtse/Makefile
1957   asn1/rua/Makefile
1958   asn1/s1ap/Makefile
1959   asn1/sabp/Makefile
1960   asn1/smrse/Makefile
1961   asn1/snmp/Makefile
1962   asn1/spnego/Makefile
1963   asn1/sv/Makefile
1964   asn1/t125/Makefile
1965   asn1/t38/Makefile
1966   asn1/tcap/Makefile
1967   asn1/tetra/Makefile
1968   asn1/ulp/Makefile
1969   asn1/wlancertextn/Makefile
1970   asn1/x2ap/Makefile
1971   asn1/x509af/Makefile
1972   asn1/x509ce/Makefile
1973   asn1/x509if/Makefile
1974   asn1/x509sat/Makefile
1975   asn1/x721/Makefile
1976   doc/Makefile
1977   docbook/Makefile
1978   epan/Makefile
1979   epan/crc/Makefile
1980   epan/crypt/Makefile
1981   epan/doxygen.cfg
1982   epan/dfilter/Makefile
1983   epan/dissectors/Makefile
1984   epan/dissectors/dcerpc/Makefile
1985   epan/dissectors/pidl/Makefile
1986   epan/ftypes/Makefile
1987   epan/wslua/Makefile
1988   epan/wspython/Makefile
1989   codecs/Makefile
1990   gtk/Makefile
1991   gtk/doxygen.cfg
1992   help/Makefile
1993   packaging/Makefile
1994   packaging/macosx/Info.plist
1995   packaging/macosx/Makefile
1996   packaging/nsis/Makefile
1997   packaging/rpm/Makefile
1998   packaging/rpm/SPECS/Makefile
1999   packaging/rpm/SPECS/wireshark.spec
2000   packaging/svr4/Makefile
2001   packaging/svr4/checkinstall
2002   packaging/svr4/pkginfo
2003   plugins/Makefile
2004   plugins/asn1/Makefile
2005   plugins/docsis/Makefile
2006   plugins/ethercat/Makefile
2007   plugins/giop/Makefile
2008   plugins/gryphon/Makefile
2009   plugins/interlink/Makefile
2010   plugins/irda/Makefile
2011   plugins/m2m/Makefile
2012   plugins/mate/Makefile
2013   plugins/opcua/Makefile
2014   plugins/profinet/Makefile
2015   plugins/sercosiii/Makefile
2016   plugins/stats_tree/Makefile
2017   plugins/unistim/Makefile
2018   plugins/wimax/Makefile
2019   plugins/wimaxasncp/Makefile
2020   tools/Makefile
2021   tools/idl2wrs.sh
2022   tools/lemon/Makefile
2023   wiretap/Makefile
2024   wsutil/Makefile
2025   _CUSTOM_AC_OUTPUT_
2026   ,)
2027 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2028
2029
2030 # Pretty messages
2031
2032 if test "x$enable_setcap_install" = "xyes" ; then
2033         setcap_message="yes"
2034 else
2035         setcap_message="no"
2036 fi
2037
2038
2039 if test "x$enable_setuid_install" = "xyes" ; then
2040         setuid_message="yes"
2041 else
2042         setuid_message="no"
2043 fi
2044
2045 if test "x$DUMPCAP_GROUP" = "x" ; then
2046         dumpcap_group_message="(none)"
2047 else
2048         dumpcap_group_message="$DUMPCAP_GROUP"
2049 fi
2050
2051 if test "x$want_zlib" = "xno" ; then
2052         zlib_message="no"
2053 else
2054         zlib_message="yes"
2055 fi
2056
2057 if test "x$want_pcre" = "xno" ; then
2058         if test $have_gregex = yes
2059         then
2060                 pcre_message="no (using GRegex instead)"
2061         else
2062                 pcre_message="no"
2063         fi
2064 else
2065         pcre_message="yes"
2066 fi
2067
2068 if test "x$want_lua" = "xyes" ; then
2069         lua_message="yes"
2070 else
2071         lua_message="no"
2072 fi
2073
2074 if test "x$want_python" = "xyes"; then
2075         python_message="yes"
2076 else
2077         python_message="no"
2078 fi
2079
2080 if test "x$want_portaudio" = "xyes" ; then
2081         portaudio_message="yes"
2082 else
2083         portaudio_message="no"
2084 fi
2085
2086 if test "x$want_ssl" = "xno" ; then
2087         ssl_message="no"
2088 else
2089         ssl_message="yes"
2090 fi
2091
2092 if test "x$want_krb5" = "xno" ; then
2093         krb5_message="no"
2094 else
2095         krb5_message="yes ($ac_krb5_version)"
2096 fi
2097
2098 if test "x$have_good_c_ares" = "xyes" ; then
2099         c_ares_message="yes"
2100 else
2101         c_ares_message="no"
2102 fi
2103
2104 if test "x$have_good_adns" = "xyes" ; then
2105         adns_message="yes"
2106 else
2107         if test "x$have_good_c_ares" = "xyes" ; then
2108                 adns_message="no (using c-ares instead)"
2109         else
2110                 adns_message="no"
2111         fi
2112 fi
2113
2114 if test "x$have_good_libcap" = "xyes" ; then
2115         libcap_message="yes"
2116 else
2117         libcap_message="no"
2118 fi
2119
2120 if test "x$have_good_geoip" = "xyes" ; then
2121         geoip_message="yes"
2122 else
2123         geoip_message="no"
2124 fi
2125
2126 echo ""
2127 echo "The Wireshark package has been configured with the following options."
2128 echo "                    Build wireshark : $enable_wireshark"
2129 echo "                       Build tshark : $enable_tshark"
2130 echo "                     Build capinfos : $enable_capinfos"
2131 echo "                      Build editcap : $enable_editcap"
2132 echo "                      Build dumpcap : $enable_dumpcap"
2133 echo "                     Build mergecap : $enable_mergecap"
2134 echo "                    Build text2pcap : $enable_text2pcap"
2135 echo "                      Build idl2wrs : $enable_idl2wrs"
2136 echo "                      Build randpkt : $enable_randpkt"
2137 echo "                       Build dftest : $enable_dftest"
2138 echo "                     Build rawshark : $enable_rawshark"
2139 echo ""
2140 echo "  Install dumpcap with capabilities : $setcap_message"
2141 echo "             Install dumpcap setuid : $setuid_message"
2142 echo "                  Use dumpcap group : $dumpcap_group_message"
2143 echo "                        Use plugins : $have_plugins"
2144 echo "                    Use lua library : $lua_message"
2145 echo "                 Use python binding : $python_message"
2146 echo "                   Build rtp_player : $portaudio_message"
2147 echo "                        Use threads : $enable_threads"
2148 echo "             Build profile binaries : $enable_profile_build"
2149 echo "                   Use pcap library : $want_pcap"
2150 echo "                   Use zlib library : $zlib_message"
2151 echo "                   Use pcre library : $pcre_message"
2152 echo "               Use kerberos library : $krb5_message"
2153 echo "                 Use c-ares library : $c_ares_message"
2154 echo "               Use GNU ADNS library : $adns_message"
2155 echo "                Use SMI MIB library : $libsmi_message"
2156 echo "             Use GNU crypto library : $gcrypt_message"
2157 echo "             Use SSL crypto library : $ssl_message"
2158 echo "           Use IPv6 name resolution : $enable_ipv6"
2159 echo "                 Use gnutls library : $tls_message"
2160 echo "     Use POSIX capabilities library : $libcap_message"
2161 echo "                  Use GeoIP library : $geoip_message"