Handle the case where dumpcap is compiled without thread support, which
[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.12 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.12.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.14 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.12 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.14.0,
842         [
843                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
844                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
845         ], AC_MSG_ERROR(GLib 2.14 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.14.0, , AC_MSG_ERROR(GLib 2.14 or later distribution not found.), gthread gmodule)
856 fi
857
858 #
859 # Check whether GLib modules are supported, to determine whether we
860 # can support plugins.
861 #
862 AC_MSG_CHECKING(whether GLib supports loadable modules)
863 ac_save_CFLAGS="$CFLAGS"
864 ac_save_LIBS="$LIBS"
865 CFLAGS="$CFLAGS $GLIB_CFLAGS"
866 LIBS="$GLIB_LIBS $LIBS"
867 AC_TRY_RUN([
868 #include <glib.h>
869 #include <gmodule.h>
870 #include <stdio.h>
871 #include <stdlib.h>
872
873 int
874 main ()
875 {
876   if (g_module_supported())
877     return 0;   /* success */
878   else
879     return 1;   /* failure */
880 }
881 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
882    [echo $ac_n "cross compiling; assumed OK... $ac_c"
883     ac_cv_glib_supports_modules=yes])
884 CFLAGS="$ac_save_CFLAGS"
885 LIBS="$ac_save_LIBS"
886 if test "$ac_cv_glib_supports_modules" = yes ; then
887   AC_MSG_RESULT(yes)
888   have_plugins=yes
889 else
890   AC_MSG_RESULT(no)
891   have_plugins=no
892 fi
893
894 #
895 # If we have <dlfcn.h>, check whether we can use dladdr to find a
896 # filename (hopefully, a full pathname, but no guarantees) for
897 # the executable.
898 #
899 if test "$ac_cv_header_dlfcn_h" = "yes"
900 then
901         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
902         ac_save_CFLAGS="$CFLAGS"
903         ac_save_LIBS="$LIBS"
904         CFLAGS="$CFLAGS $GLIB_CFLAGS"
905         LIBS="$GLIB_LIBS $LIBS"
906         AC_TRY_RUN([
907 #define _GNU_SOURCE     /* required on Linux, sigh */
908 #include <dlfcn.h>
909
910 int
911 main(void)
912 {
913         Dl_info info;
914
915         if (!dladdr((void *)main, &info))
916                 return 1;       /* failure */
917         return 0;               /* assume success */
918 }
919 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
920    [echo $ac_n "cross compiling; assumed OK... $ac_c"
921     ac_cv_dladdr_finds_executable_path=yes])
922         CFLAGS="$ac_save_CFLAGS"
923         LIBS="$ac_save_LIBS"
924         if test x$ac_cv_dladdr_finds_executable_path = xyes
925         then
926                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
927         fi
928         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
929 fi
930
931 if test "x$no_gtk" != "xyes"
932 then
933     #
934     # We have GTK+; do we want the OS X integration functions and,
935     # if so, do we have them and, if so, which versions do we have,
936     # the old Carbon-based ones or the new Cocoa-based ones?
937     #
938     AC_MSG_CHECKING(whether to use OS X integration functions)
939
940     AC_ARG_WITH(osx-integration,
941       AC_HELP_STRING( [--with-osx-integration],
942                       [use OS X integration functions (@<:@default=yes, if available@:>@]),
943     [
944         if test $withval = no
945         then
946             want_osx_integration=no
947         else
948             want_osx_integration=yes
949         fi
950     ],[
951         want_osx_integration=yes
952     ])
953     if test "x$want_osx_integration" = "xno"; then
954         AC_MSG_RESULT(no)
955     else
956         AC_MSG_RESULT(yes)
957         AC_WIRESHARK_OSX_INTEGRATION_CHECK
958     fi
959 fi
960
961 AC_SUBST(wireshark_bin)
962 AC_SUBST(wireshark_man)
963
964
965 # Enable/disable tshark
966
967 AC_ARG_ENABLE(tshark,
968   AC_HELP_STRING( [--enable-tshark],
969                   [build tshark.  @<:@default=yes@:>@]),
970     tshark=$enableval,enable_tshark=yes)
971
972 if test "x$enable_tshark" = "xyes" ; then
973         tshark_bin="tshark\$(EXEEXT)"
974         tshark_man="tshark.1"
975         wiresharkfilter_man="wireshark-filter.4"
976 else
977         tshark_bin=""
978         tshark_man=""
979 fi
980 AC_SUBST(tshark_bin)
981 AC_SUBST(tshark_man)
982 AC_SUBST(wiresharkfilter_man)
983
984
985
986 # Enable/disable editcap
987
988 AC_ARG_ENABLE(editcap,
989   AC_HELP_STRING( [--enable-editcap],
990                   [build editcap.  @<:@default=yes@:>@]),
991     enable_editcap=$enableval,enable_editcap=yes)
992
993 if test "x$enable_editcap" = "xyes" ; then
994         editcap_bin="editcap\$(EXEEXT)"
995         editcap_man="editcap.1"
996 else
997         editcap_bin=""
998         editcap_man=""
999 fi
1000 AC_SUBST(editcap_bin)
1001 AC_SUBST(editcap_man)
1002
1003 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1004 # or not)
1005
1006 # Enable/disable capinfos
1007
1008 AC_ARG_ENABLE(capinfos,
1009   AC_HELP_STRING( [--enable-capinfos],
1010                   [build capinfos.  @<:@default=yes@:>@]),
1011     enable_capinfos=$enableval,enable_capinfos=yes)
1012
1013 if test "x$enable_capinfos" = "xyes" ; then
1014         capinfos_bin="capinfos\$(EXEEXT)"
1015         capinfos_man="capinfos.1"
1016 else
1017         capinfos_bin=""
1018         capinfos_man=""
1019 fi
1020 AC_SUBST(capinfos_bin)
1021 AC_SUBST(capinfos_man)
1022
1023
1024 # Enable/disable mergecap
1025
1026 AC_ARG_ENABLE(mergecap,
1027   AC_HELP_STRING( [--enable-mergecap],
1028                   [build mergecap.  @<:@default=yes@:>@]),
1029     enable_mergecap=$enableval,enable_mergecap=yes)
1030
1031 if test "x$enable_mergecap" = "xyes" ; then
1032         mergecap_bin="mergecap\$(EXEEXT)"
1033         mergecap_man="mergecap.1"
1034 else
1035         mergecap_bin=""
1036         mergecap_man=""
1037 fi
1038 AC_SUBST(mergecap_bin)
1039 AC_SUBST(mergecap_man)
1040
1041
1042 # Enable/disable text2pcap
1043
1044 AC_ARG_ENABLE(text2pcap,
1045   AC_HELP_STRING( [--enable-text2pcap],
1046                   [build text2pcap.  @<:@default=yes@:>@]),
1047     text2pcap=$enableval,enable_text2pcap=yes)
1048
1049 if test "x$enable_text2pcap" = "xyes" ; then
1050         text2pcap_bin="text2pcap\$(EXEEXT)"
1051         text2pcap_man="text2pcap.1"
1052 else
1053         text2pcap_bin=""
1054         text2pcap_man=""
1055 fi
1056 AC_SUBST(text2pcap_bin)
1057 AC_SUBST(text2pcap_man)
1058
1059 # Enable/disable idl2wrs
1060
1061 AC_ARG_ENABLE(idl2wrs,
1062   AC_HELP_STRING( [--enable-idl2wrs],
1063                   [build idl2wrs.  @<:@default=yes@:>@]),
1064     enable_idl2wrs=$enableval,enable_idl2wrs=yes)
1065
1066 if test "x$enable_idl2wrs" = "xyes" ; then
1067         idl2wrs_bin="idl2wrs"
1068         idl2wrs_man="idl2wrs.1"
1069 else
1070         idl2wrs_bin=""
1071         idl2wrs_man=""
1072 fi
1073 AC_SUBST(idl2wrs_bin)
1074 AC_SUBST(idl2wrs_man)
1075
1076
1077 # Enable/disable dftest
1078
1079 AC_ARG_ENABLE(dftest,
1080   AC_HELP_STRING( [--enable-dftest],
1081                   [build dftest.  @<:@default=yes@:>@]),
1082     enable_dftest=$enableval,enable_dftest=yes)
1083
1084 if test "x$enable_dftest" = "xyes" ; then
1085         dftest_bin="dftest\$(EXEEXT)"
1086         dftest_man="dftest.1"
1087 else
1088         dftest_bin=""
1089         dftest_man=""
1090 fi
1091 AC_SUBST(dftest_bin)
1092 AC_SUBST(dftest_man)
1093
1094
1095 # Enable/disable randpkt
1096
1097 AC_ARG_ENABLE(randpkt,
1098   AC_HELP_STRING( [--enable-randpkt],
1099                   [build randpkt.  @<:@default=yes@:>@]),
1100     enable_randpkt=$enableval,enable_randpkt=yes)
1101
1102 if test "x$enable_randpkt" = "xyes" ; then
1103         randpkt_bin="randpkt\$(EXEEXT)"
1104         randpkt_man="randpkt.1"
1105 else
1106         randpkt_bin=""
1107         randpkt_man=""
1108 fi
1109 AC_SUBST(randpkt_bin)
1110 AC_SUBST(randpkt_man)
1111
1112
1113
1114 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1115 dnl "gethostbyname()".
1116 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1117
1118 dnl Checks for "connect()", used as a proxy for "socket()" - and
1119 dnl "-lsocket", if we need it to get "connect()".
1120 AC_WIRESHARK_SOCKET_LIB_CHECK
1121
1122 dnl pcap check
1123 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1124
1125 AC_ARG_WITH(pcap,
1126   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1127                   [use libpcap for packet capturing.  @<:@default=yes@:>@]),
1128 [
1129         if test $withval = no
1130         then
1131                 want_pcap=no
1132         elif test $withval = yes
1133         then
1134                 want_pcap=yes
1135         else
1136                 want_pcap=yes
1137                 pcap_dir=$withval
1138         fi
1139 ],[
1140         want_pcap=yes
1141         pcap_dir=
1142 ])
1143 if test "x$want_pcap" = "xno" ; then
1144         AC_MSG_RESULT(no)
1145 else
1146         AC_MSG_RESULT(yes)
1147         AC_WIRESHARK_PCAP_CHECK
1148 fi
1149
1150 # Enable/disable dumpcap
1151
1152 dnl dumpcap check
1153 AC_MSG_CHECKING(whether to build dumpcap)
1154
1155 AC_ARG_ENABLE(dumpcap,
1156   AC_HELP_STRING( [--enable-dumpcap],
1157                   [build dumpcap.  @<:@default=yes@:>@]),
1158     enable_dumpcap=$enableval,enable_dumpcap=yes)
1159
1160 if test "x$enable_dumpcap" = "xyes" ; then
1161         if test "x$want_pcap" = "xno" ; then
1162                 enable_dumpcap=no
1163                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1164         else
1165                 AC_MSG_RESULT(yes)
1166         fi
1167 else
1168         AC_MSG_RESULT(no)
1169 fi
1170
1171 if test "x$enable_dumpcap" = "xyes" ; then
1172         dumpcap_bin="dumpcap\$(EXEEXT)"
1173         dumpcap_man="dumpcap.1"
1174 else
1175         dumpcap_bin=""
1176         dumpcap_man=""
1177 fi
1178 AC_SUBST(dumpcap_bin)
1179 AC_SUBST(dumpcap_man)
1180
1181 # Enable/disable rawshark
1182
1183 dnl rawshark check
1184 AC_MSG_CHECKING(whether to build rawshark)
1185
1186 AC_ARG_ENABLE(rawshark,
1187   AC_HELP_STRING( [--enable-rawshark],
1188                   [build rawshark.  @<:@default=yes@:>@]),
1189     rawshark=$enableval,enable_rawshark=yes)
1190
1191 if test "x$enable_rawshark" = "xyes" ; then
1192         if test "x$want_pcap" = "xno" ; then
1193                 enable_rawshark=no
1194                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1195         else
1196                 AC_MSG_RESULT(yes)
1197         fi
1198 else
1199         AC_MSG_RESULT(no)
1200 fi
1201
1202 if test "x$enable_rawshark" = "xyes" ; then
1203         rawshark_bin="rawshark\$(EXEEXT)"
1204         rawshark_man="rawshark.1"
1205 else
1206         rawshark_bin=""
1207         rawshark_man=""
1208 fi
1209 AC_SUBST(rawshark_bin)
1210 AC_SUBST(rawshark_man)
1211
1212 dnl Use pcap-ng by default
1213 AC_ARG_ENABLE(pcap-ng-default,
1214   AC_HELP_STRING( [--enable-pcap-ng-default],
1215                   [use the pcap-ng file format by default instead of pcap.  @<:@default=yes@:>@]),
1216     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1217 if test x$enable_pcap_ng_default = xyes; then
1218         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1219 fi
1220
1221 dnl pcap remote check
1222 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1223
1224 AC_ARG_WITH(pcap-remote,
1225     AC_HELP_STRING([--with-pcap-remote],
1226                    [use libpcap remote capturing (requires libpcap)]),
1227 [
1228     if test $withval = no
1229     then
1230         want_pcap_remote=no
1231     else
1232         want_pcap_remote=yes
1233     fi
1234 ],[
1235     want_pcap_remote=no
1236 ])
1237 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1238     AC_MSG_RESULT(no)
1239 else
1240     AC_MSG_RESULT(yes)
1241     AC_WIRESHARK_PCAP_REMOTE_CHECK
1242 fi
1243
1244 dnl zlib check
1245 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1246
1247 AC_ARG_WITH(zlib,
1248   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1249                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression .  @<:@default=yes, if available@:>@]),
1250 [
1251         if test "x$withval" = "xno"
1252         then
1253                 want_zlib=no
1254         elif test "x$withval" = "xyes"
1255         then
1256                 want_zlib=yes
1257         else
1258                 want_zlib=yes
1259                 zlib_dir="$withval"
1260         fi
1261 ],[
1262         #
1263         # Use zlib if it's present, otherwise don't.
1264         #
1265         want_zlib=ifavailable
1266         zlib_dir=
1267 ])
1268 if test "x$want_zlib" = "xno" ; then
1269         AC_MSG_RESULT(no)
1270 else
1271         AC_MSG_RESULT(yes)
1272         AC_WIRESHARK_ZLIB_CHECK
1273         if test "x$want_zlib" = "xno" ; then
1274                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1275         else
1276                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1277                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1278                 fi
1279         fi
1280 fi
1281
1282 dnl pcre check
1283 AC_MSG_CHECKING(whether to use libpcre for regular expressions in dfilters)
1284
1285 AC_ARG_WITH(pcre,
1286   AC_HELP_STRING( [--with-pcre@<:@=DIR@:>@],
1287                   [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=no@:>@]),
1288 [
1289         if test $withval = no
1290         then
1291                 want_pcre=no
1292         elif test $withval = yes
1293         then
1294                 want_pcre=yes
1295         else
1296                 want_pcre=yes
1297                 pcre_dir=$withval
1298         fi
1299 ],[
1300         want_pcre=no
1301         pcre_dir=
1302 ])
1303 if test "x$want_pcre" = "xno" ; then
1304         AC_MSG_RESULT(no)
1305 else
1306         AC_MSG_RESULT(yes)
1307         AC_WIRESHARK_LIBPCRE_CHECK
1308         if test "x$want_pcre" = "xno" ; then
1309                 AC_MSG_RESULT(libpcre not found)
1310         fi
1311 fi
1312
1313
1314 dnl Lua check
1315 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1316
1317 AC_ARG_WITH(lua,
1318   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1319                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin.  @<:@default=yes, if available@:>@]),
1320 [
1321         if test $withval = no
1322         then
1323                 want_lua=no
1324         elif test $withval = yes
1325         then
1326                 want_lua=yes
1327         else
1328                 want_lua=yes
1329                 lua_dir=$withval
1330         fi
1331 ],[
1332         #
1333         # Use liblua by default
1334         #
1335         want_lua=ifavailable
1336         lua_dir=
1337 ])
1338 if test "x$want_lua" = "xno" ; then
1339         AC_MSG_RESULT(no)
1340 else
1341         AC_MSG_RESULT(yes)
1342         AC_WIRESHARK_LIBLUA_CHECK
1343         if test "x$want_lua" = "xno" ; then
1344                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1345         fi
1346 fi
1347 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1348
1349
1350 dnl portaudio check
1351 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1352
1353 AC_ARG_WITH(portaudio,
1354   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1355                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player.  @<:@default=yes, if available@:>@]),
1356 [
1357         if test $withval = no
1358         then
1359                 want_portaudio=no
1360         elif test $withval = yes
1361         then
1362                 want_portaudio=yes
1363         else
1364                 want_portaudio=yes
1365                 portaudio_dir=$withval
1366         fi
1367 ],[
1368         #
1369         # Use libportaudio by default
1370         #
1371         want_portaudio=ifavailable
1372         portaudio_dir=
1373 ])
1374 if test "x$want_portaudio" = "xno" ; then
1375         AC_MSG_RESULT(no)
1376 else
1377         AC_MSG_RESULT(yes)
1378         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1379         if test "x$want_portaudio" = "xno" ; then
1380                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1381         fi
1382 fi
1383 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1384
1385
1386 dnl ipv6 check
1387 AC_ARG_ENABLE(ipv6,
1388   AC_HELP_STRING( [--enable-ipv6],
1389                   [use ipv6 name resolution, if available.  @<:@default=yes@:>@]),
1390     enable_ipv6=$enableval,enable_ipv6=yes)
1391
1392 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1393 if test "x$enable_ipv6" = "xno" ; then
1394         AC_MSG_RESULT(no)
1395 else
1396         AC_MSG_RESULT(yes)
1397         AC_WIRESHARK_IPV6_STACK
1398 fi
1399
1400
1401 dnl Check if dumpcap should be installed with filesystem capabilities
1402 AC_PATH_PROG(SETCAP, setcap)
1403 AC_ARG_ENABLE(setcap-install,
1404   AC_HELP_STRING( [--enable-setcap-install],
1405                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1406     enable_setcap_install=$enableval,enable_setcap_install=no)
1407
1408 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1409 if test "x$enable_setcap_install" = "xno" ; then
1410         AC_MSG_RESULT(no)
1411 else
1412         if test "x$SETCAP" = "x" ; then
1413                 AC_MSG_RESULT(no. Setcap not found)
1414         elif test "x$enable_dumpcap" = "xno" ; then
1415                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1416         else
1417                 AC_MSG_RESULT(yes)
1418         fi
1419 fi
1420
1421 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1422
1423 dnl Check if dumpcap should be installed setuid
1424 AC_ARG_ENABLE(setuid-install,
1425   AC_HELP_STRING( [--enable-setuid-install],
1426                   [install dumpcap as setuid @<:@default=no@:>@]),
1427     enable_setuid_install=$enableval,enable_setuid_install=no)
1428
1429 AC_MSG_CHECKING(whether to install dumpcap setuid)
1430 if test "x$enable_setuid_install" = "xno" ; then
1431         AC_MSG_RESULT(no)
1432 else
1433         if test "x$enable_setcap_install" = "xyes" ; then
1434                 enable_setuid_install=no
1435                 AC_MSG_RESULT(no; using setcap instead)
1436         elif test "x$enable_dumpcap" = "xno" ; then
1437                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1438         else
1439                 AC_MSG_RESULT(yes)
1440         fi
1441 fi
1442
1443 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1444 AC_CHECK_FUNCS(setresuid setresgid)
1445
1446 dnl ...but our Network Operations group is named "no"!
1447 DUMPCAP_GROUP=''
1448 AC_ARG_WITH(dumpcap-group,
1449   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1450                   [restrict dumpcap to GROUP]),
1451 [
1452   if test "x$withval" = "xyes"; then
1453       AC_MSG_ERROR([No dumpcap group specified.])
1454   elif test "x$withval" != "xno"; then
1455       if test "x$enable_dumpcap" = "xno" ; then
1456           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
1457       fi
1458       AC_MSG_RESULT($withval)
1459       DUMPCAP_GROUP="$withval"
1460   fi
1461 ])
1462 AC_SUBST(DUMPCAP_GROUP)
1463 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
1464
1465 dnl libcap (not libpcap) check
1466 LIBCAP_LIBS=''
1467 AC_MSG_CHECKING(whether to use the libcap capabilities library)
1468
1469 AC_ARG_WITH(libcap,
1470   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
1471                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management.   @<:@default=yes, if present@:>@]),
1472 [
1473 if   test "x$withval" = "xno";  then
1474         want_libcap=no
1475 elif test "x$withval" = "xyes"; then
1476         want_libcap=yes
1477 elif test -d "$withval"; then
1478         want_libcap=yes
1479         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1480 fi
1481 ])
1482 if test "x$with_libcap" = "xno" ; then
1483         AC_MSG_RESULT(no)
1484 else
1485         AC_MSG_RESULT(yes)
1486         AC_WIRESHARK_LIBCAP_CHECK
1487 fi
1488 AC_SUBST(LIBCAP_LIBS)
1489
1490 dnl Checks for header files.
1491 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
1492 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)
1493 AC_CHECK_HEADERS(netinet/in.h)
1494 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
1495
1496 dnl SSL Check
1497 SSL_LIBS=''
1498 AC_MSG_CHECKING(whether to use SSL library)
1499
1500 AC_ARG_WITH(ssl,
1501   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
1502                   [use SSL crypto library (located in directory DIR, if supplied).   @<:@default=no@:>@]),
1503 [
1504 if test "x$withval" = "xno";  then
1505         want_ssl=no
1506 elif test "x$withval" = "xyes"; then
1507         want_ssl=yes
1508 elif test -d "$withval"; then
1509         want_ssl=yes
1510         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1511 fi
1512 ],[
1513         want_ssl=no
1514 ])
1515 if test "x$want_ssl" = "xyes"; then
1516         AC_MSG_RESULT(yes)
1517         AC_CHECK_LIB(crypto,EVP_md5,
1518             [
1519                 SSL_LIBS=-lcrypto
1520             ],
1521             [
1522                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
1523             ])
1524 else
1525         AC_MSG_RESULT(no)
1526 fi
1527 AC_SUBST(SSL_LIBS)
1528
1529 dnl kerberos check
1530 AC_MSG_CHECKING(whether to use kerberos)
1531
1532 AC_ARG_WITH(krb5,
1533   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1534                   [use kerberos (located in directory DIR, if supplied) to use in kerberos dissection  @<:@default=yes@:>@]),
1535 [
1536         if test $withval = no
1537         then
1538                 want_krb5=no
1539         elif test $withval = yes
1540         then
1541                 want_krb5=yes
1542         else
1543                 want_krb5=yes
1544                 krb5_dir=$withval
1545         fi
1546 ],[
1547         #
1548         # Use kerberos if specified, otherwise don't.
1549         #
1550         want_krb5=ifavailable
1551         krb5_dir=
1552 ])
1553 if test "x$want_krb5" = "xno" ; then
1554         AC_MSG_RESULT(no)
1555 else
1556         AC_MSG_RESULT(yes)
1557         AC_WIRESHARK_KRB5_CHECK
1558 fi
1559
1560
1561 dnl c-ares Check
1562 C_ARES_LIBS=''
1563 AC_MSG_CHECKING(whether to use the c-ares library if available)
1564
1565 AC_ARG_WITH(c-ares,
1566   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
1567                   [use c-ares (located in directory DIR, if supplied). Supersedes --with-adns.   @<:@default=yes, if present@:>@]),
1568 [
1569 if   test "x$withval" = "xno";  then
1570         want_c_ares=no
1571 elif test "x$withval" = "xyes"; then
1572         want_c_ares=yes
1573 elif test -d "$withval"; then
1574         want_c_ares=yes
1575         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1576 fi
1577 ])
1578 if test "x$want_c_ares" = "xno" ; then
1579         AC_MSG_RESULT(no)
1580 else
1581         AC_MSG_RESULT(yes)
1582         AC_WIRESHARK_C_ARES_CHECK
1583 fi
1584 AC_SUBST(C_ARES_LIBS)
1585
1586 dnl ADNS Check
1587 ADNS_LIBS=''
1588 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
1589
1590 AC_ARG_WITH(adns,
1591   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
1592                   [use GNU ADNS (located in directory DIR, if supplied).   @<:@default=yes, if present@:>@]),
1593 [
1594 if   test "x$withval" = "xno";  then
1595         want_adns=no
1596 elif test "x$withval" = "xyes"; then
1597         want_adns=yes
1598 elif test -d "$withval"; then
1599         want_adns=yes
1600         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1601 fi
1602 ])
1603 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
1604         AC_MSG_RESULT(no)
1605 else
1606         AC_MSG_RESULT(yes)
1607         AC_WIRESHARK_ADNS_CHECK
1608 fi
1609 AC_SUBST(ADNS_LIBS)
1610
1611 dnl GEOIP Check
1612 GEOIP_LIBS=''
1613 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
1614
1615 AC_ARG_WITH(geoip,
1616   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
1617                   [use GeoIP (located in directory DIR, if supplied).   @<:@default=yes, if present@:>@]),
1618 [
1619 if   test "x$withval" = "xno";  then
1620         want_geoip=no
1621 elif test "x$withval" = "xyes"; then
1622         want_geoip=yes
1623 elif test -d "$withval"; then
1624         want_geoip=yes
1625         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1626 fi
1627 ])
1628 if test "x$want_geoip" = "xno"; then
1629         AC_MSG_RESULT(no)
1630 else
1631         AC_MSG_RESULT(yes)
1632         AC_WIRESHARK_GEOIP_CHECK
1633 fi
1634 AC_SUBST(GEOIP_LIBS)
1635
1636 dnl Python devel Check
1637 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
1638
1639 AC_ARG_WITH(python,
1640     AC_HELP_STRING( [--with-python@<:@=DIR@:>@],
1641                     [use Python interpreter (installed in DIR, if supplied). @<:@default=yes, if available@:>@ (EXPERIMENTAL)]),
1642 [
1643         pythondir='${libdir}/wireshark/python/${VERSION}'
1644         if test "x$withval" = "xno"
1645         then
1646                 want_python=no
1647         elif test "x$withval" = "xyes"
1648         then
1649                 want_python=yes
1650         else
1651                 want_python=yes
1652                 pythondir="$withval"
1653         fi
1654 ],[
1655         #
1656         # Use the embeddable Python interpreter if it's present,
1657         # otherwise don't.
1658         #
1659         want_pythin=ifavailable
1660         pythondir='${libdir}/wireshark/python/${VERSION}'
1661 ])
1662 if test "x$want_python" = "xno" ; then
1663         AC_MSG_RESULT(no)
1664 else
1665         AC_MSG_RESULT(yes)
1666         AC_WIRESHARK_PYTHON_CHECK
1667 fi
1668 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
1669 AC_SUBST(pythondir)
1670
1671 #
1672 # Define WS_VAR_IMPORT appropriately for declarations of external
1673 # variables exported from dynamically-linked libraries.
1674 #
1675 AC_DEFINE(WS_VAR_IMPORT, extern, [Define as the string to precede external variable declarations in dynamically-linked libraries])
1676
1677 #
1678 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
1679 # never return (just like Charlie on the MTA).
1680 #
1681 # Note that MSVC++ expects __declspec(noreturn) to precede the function
1682 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
1683 # follow the function name, so we need two different flavors of
1684 # noreturn tag.
1685 #
1686 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
1687
1688 AC_ARG_ENABLE(airpcap,
1689   AC_HELP_STRING( [--enable-airpcap],
1690                   [use airpcap in wireshark.  @<:@default=no@:>@]),
1691   enable_airpcap=$enableval
1692   if test x$enable_airpcap != xno; then
1693         AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1694   fi
1695 )
1696
1697 dnl Checks for typedefs, structures, and compiler characteristics.
1698 # AC_C_CONST
1699
1700 # Check how we can get the time zone abbreviation
1701 AC_WIRESHARK_TIMEZONE_ABBREV
1702
1703 # We need to know whether "struct sockaddr" has an "sa_len" member
1704 # for get_interface_list().
1705
1706 AC_WIRESHARK_STRUCT_SA_LEN
1707
1708 # We must know our byte order
1709 AC_C_BIGENDIAN
1710
1711 # Checks whether "-traditional" is needed when using "ioctl".
1712 # XXX - do we need this?
1713 AC_PROG_GCC_TRADITIONAL
1714
1715 GETOPT_LO=""
1716 AC_CHECK_FUNC(getopt,
1717   [GETOPT_LO=""
1718    AC_DEFINE(HAVE_GETOPT_H, 1, [Define to 1 if you have the <getopt.h> header file.])
1719   ],
1720   GETOPT_LO="wsgetopt.lo"
1721 )
1722 if test "$ac_cv_func_getopt" = no ; then
1723   GETOPT_LO="wsgetopt.lo"
1724 fi
1725 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
1726 AC_SUBST(GETOPT_LO)
1727
1728 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
1729   STRNCASECMP_LO="strncasecmp.lo")
1730 if test "$ac_cv_func_strncasecmp" = no ; then
1731   STRNCASECMP_LO="strncasecmp.lo"
1732 fi
1733 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
1734 AC_SUBST(STRNCASECMP_LO)
1735
1736 AC_CHECK_FUNCS(mkstemp mkdtemp)
1737
1738 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
1739     have_inet_aton=no)
1740 if test "$have_inet_aton" = no; then
1741   INET_ATON_LO="inet_aton.lo"
1742   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
1743 else
1744   INET_ATON_LO=""
1745 fi
1746 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
1747 AC_SUBST(INET_ATON_LO)
1748
1749 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
1750   dnl check for pre-BIND82 inet_pton() bug.
1751   AC_MSG_CHECKING(for broken inet_pton)
1752   AC_TRY_RUN([#include <sys/types.h>
1753 #include <sys/socket.h>
1754 #include <netinet/in.h>
1755 #include <arpa/inet.h>
1756 int main()
1757 {
1758 #ifdef AF_INET6
1759   char buf[16];
1760   /* this should return 0 (error) */
1761   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
1762 #else
1763   return 1;
1764 #endif
1765 }], [AC_MSG_RESULT(ok);
1766 have_inet_pton=yes], [AC_MSG_RESULT(broken);
1767 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
1768 have_inet_pton=no])],
1769 have_inet_pton=no)
1770 if test "$have_inet_pton" = no; then
1771   INET_PTON_LO="inet_pton.lo"
1772 else
1773   INET_PTON_LO=""
1774 fi
1775 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
1776 AC_SUBST(INET_PTON_LO)
1777
1778 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
1779   AC_MSG_CHECKING([for inet_ntop prototype])
1780   AC_TRY_COMPILE([#include <stdio.h>
1781 #include <sys/types.h>
1782 #include <sys/socket.h>
1783 #include <netinet/in.h>
1784 #include <arpa/inet.h>
1785
1786 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
1787     AC_MSG_RESULT(yes)
1788     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
1789     [Define if inet_ntop() prototype exists])], [
1790     AC_TRY_COMPILE([#include <stdio.h>
1791 #include <sys/types.h>
1792 #include <sys/socket.h>
1793 #include <netinet/in.h>
1794 #include <arpa/inet.h>
1795
1796 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
1797       AC_MSG_RESULT(yes)
1798       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
1799       [Define if inet_ntop() prototype exists])], [
1800       AC_MSG_RESULT(no)])])
1801   INET_NTOP_LO=""], [
1802   INET_NTOP_LO="inet_ntop.lo"
1803   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
1804   [Define if inet/v6defs.h needs to be included])])
1805 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
1806 AC_SUBST(INET_NTOP_LO)
1807
1808 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
1809   [STRPTIME_LO="strptime.lo"
1810    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
1811 ])
1812 if test "$ac_cv_func_strptime" = no ; then
1813   STRPTIME_LO="strptime.lo"
1814 fi
1815 AC_SUBST(STRPTIME_C)
1816 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
1817 AC_SUBST(STRPTIME_LO)
1818
1819 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
1820 AC_CHECK_FUNCS(issetugid)
1821 AC_CHECK_FUNCS(mmap mprotect sysconf)
1822 AC_CHECK_FUNCS(strtoll)
1823
1824 dnl blank for now, but will be used in future
1825 AC_SUBST(wireshark_SUBDIRS)
1826
1827 dnl
1828 dnl check whether plugins should be enabled and, if they should be,
1829 dnl check for plugins directory - stolen from Amanda's configure.in
1830 dnl
1831 dnl we don't wish to expand ${libdir} yet
1832 plugindir='${libdir}/wireshark/plugins/${VERSION}'
1833 AC_ARG_WITH(plugins,
1834   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
1835                   [support plugins (installed in DIR, if supplied).   @<:@default=yes, if possible@:>@]),
1836 [
1837   if test "x$withval" = "xno"; then
1838     have_plugins=no
1839   elif test "x$have_plugins" = "xno"; then
1840       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
1841   elif test "x$withval" != "xyes"; then
1842       plugindir="$withval"
1843   fi
1844 ])
1845 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
1846 if test x$have_plugins = xyes
1847 then
1848   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
1849 fi
1850 AC_SUBST(plugindir)
1851 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
1852
1853 #
1854 # The plugin dissectors reside in ./plugins/PROTO/
1855 #
1856 PLUGIN_LIBS=""
1857 AC_SUBST(PLUGIN_LIBS)
1858
1859 dnl libtool defs
1860 #
1861 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
1862 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
1863 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
1864 #
1865 # With older version(s) of those tool(s), however, it's not just an
1866 # alias, and the configure scripts don't work without it.
1867 #
1868 AM_PROG_LIBTOOL
1869 AC_SUBST(LIBTOOL_DEPS)
1870
1871 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
1872 if test x$enable_static = xyes -a x$have_plugins = xyes
1873 then
1874   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
1875 fi
1876 AC_SUBST(ENABLE_STATIC)
1877
1878 dnl Save the cacheable configure results to config.cache before recursing
1879 AC_CACHE_SAVE
1880
1881 sinclude(plugins/Custom.m4) dnl
1882 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
1883
1884 sinclude(asn1/Custom.m4) dnl
1885 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
1886
1887 AM_CONFIG_HEADER(config.h)
1888 AC_OUTPUT(
1889   Makefile
1890   doxygen.cfg
1891   asn1/Makefile
1892   _CUSTOM_ASN1_AC_OUTPUT_
1893   asn1/acp133/Makefile
1894   asn1/acse/Makefile
1895   asn1/ansi_map/Makefile
1896   asn1/ansi_tcap/Makefile
1897   asn1/camel/Makefile
1898   asn1/cdt/Makefile
1899   asn1/charging_ase/Makefile
1900   asn1/cmip/Makefile
1901   asn1/cmp/Makefile
1902   asn1/crmf/Makefile
1903   asn1/cms/Makefile
1904   asn1/dap/Makefile
1905   asn1/disp/Makefile
1906   asn1/dop/Makefile
1907   asn1/dsp/Makefile
1908   asn1/ess/Makefile
1909   asn1/ftam/Makefile
1910   asn1/gnm/Makefile
1911   asn1/goose/Makefile
1912   asn1/gprscdr/Makefile
1913   asn1/gsm_map/Makefile
1914   asn1/h225/Makefile
1915   asn1/h235/Makefile
1916   asn1/h245/Makefile
1917   asn1/h248/Makefile
1918   asn1/h282/Makefile
1919   asn1/h283/Makefile
1920   asn1/h323/Makefile
1921   asn1/h450/Makefile
1922   asn1/h450-ros/Makefile
1923   asn1/h460/Makefile
1924   asn1/h501/Makefile
1925   asn1/HI2Operations/Makefile
1926   asn1/hnbap/Makefile
1927   asn1/idmp/Makefile
1928   asn1/inap/Makefile
1929   asn1/kerberos/Makefile
1930   asn1/ldap/Makefile
1931   asn1/logotypecertextn/Makefile
1932   asn1/lte-rrc/Makefile
1933   asn1/mms/Makefile
1934   asn1/mpeg-audio/Makefile
1935   asn1/mpeg-pes/Makefile
1936   asn1/nbap/Makefile
1937   asn1/ns_cert_exts/Makefile
1938   asn1/ocsp/Makefile
1939   asn1/p1/Makefile
1940   asn1/p22/Makefile
1941   asn1/p7/Makefile
1942   asn1/p772/Makefile
1943   asn1/pcap/Makefile
1944   asn1/pkcs1/Makefile
1945   asn1/pkcs12/Makefile
1946   asn1/pkinit/Makefile
1947   asn1/pkixac/Makefile
1948   asn1/pkix1explicit/Makefile
1949   asn1/pkix1implicit/Makefile
1950   asn1/pkixproxy/Makefile
1951   asn1/pkixqualified/Makefile
1952   asn1/pkixtsp/Makefile
1953   asn1/pres/Makefile
1954   asn1/q932/Makefile
1955   asn1/q932-ros/Makefile
1956   asn1/qsig/Makefile
1957   asn1/ranap/Makefile
1958   asn1/rnsap/Makefile
1959   asn1/ros/Makefile
1960   asn1/rrc/Makefile
1961   asn1/rrlp/Makefile
1962   asn1/rtse/Makefile
1963   asn1/rua/Makefile
1964   asn1/s1ap/Makefile
1965   asn1/sabp/Makefile
1966   asn1/smrse/Makefile
1967   asn1/snmp/Makefile
1968   asn1/spnego/Makefile
1969   asn1/sv/Makefile
1970   asn1/t125/Makefile
1971   asn1/t38/Makefile
1972   asn1/tcap/Makefile
1973   asn1/tetra/Makefile
1974   asn1/ulp/Makefile
1975   asn1/wlancertextn/Makefile
1976   asn1/x2ap/Makefile
1977   asn1/x509af/Makefile
1978   asn1/x509ce/Makefile
1979   asn1/x509if/Makefile
1980   asn1/x509sat/Makefile
1981   asn1/x721/Makefile
1982   doc/Makefile
1983   docbook/Makefile
1984   epan/Makefile
1985   epan/crc/Makefile
1986   epan/crypt/Makefile
1987   epan/doxygen.cfg
1988   epan/dfilter/Makefile
1989   epan/dissectors/Makefile
1990   epan/dissectors/dcerpc/Makefile
1991   epan/dissectors/pidl/Makefile
1992   epan/ftypes/Makefile
1993   epan/wslua/Makefile
1994   epan/wspython/Makefile
1995   codecs/Makefile
1996   gtk/Makefile
1997   gtk/doxygen.cfg
1998   help/Makefile
1999   packaging/Makefile
2000   packaging/macosx/Info.plist
2001   packaging/macosx/Makefile
2002   packaging/nsis/Makefile
2003   packaging/rpm/Makefile
2004   packaging/rpm/SPECS/Makefile
2005   packaging/rpm/SPECS/wireshark.spec
2006   packaging/svr4/Makefile
2007   packaging/svr4/checkinstall
2008   packaging/svr4/pkginfo
2009   plugins/Makefile
2010   plugins/asn1/Makefile
2011   plugins/docsis/Makefile
2012   plugins/ethercat/Makefile
2013   plugins/giop/Makefile
2014   plugins/gryphon/Makefile
2015   plugins/irda/Makefile
2016   plugins/m2m/Makefile
2017   plugins/mate/Makefile
2018   plugins/opcua/Makefile
2019   plugins/profinet/Makefile
2020   plugins/stats_tree/Makefile
2021   plugins/unistim/Makefile
2022   plugins/wimax/Makefile
2023   plugins/wimaxasncp/Makefile
2024   tools/Makefile
2025   tools/idl2wrs.sh
2026   tools/lemon/Makefile
2027   wiretap/Makefile
2028   wsutil/Makefile
2029   _CUSTOM_AC_OUTPUT_
2030   ,)
2031 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2032
2033
2034 # Pretty messages
2035
2036 if test "x$enable_setcap_install" = "xyes" ; then
2037         setcap_message="yes"
2038 else
2039         setcap_message="no"
2040 fi
2041
2042
2043 if test "x$enable_setuid_install" = "xyes" ; then
2044         setuid_message="yes"
2045 else
2046         setuid_message="no"
2047 fi
2048
2049 if test "x$DUMPCAP_GROUP" = "x" ; then
2050         dumpcap_group_message="(none)"
2051 else
2052         dumpcap_group_message="$DUMPCAP_GROUP"
2053 fi
2054
2055 if test "x$want_zlib" = "xno" ; then
2056         zlib_message="no"
2057 else
2058         zlib_message="yes"
2059 fi
2060
2061 if test "x$want_pcre" = "xno" ; then
2062         pcre_message="no (using GRegex instead)"
2063 else
2064         pcre_message="yes"
2065 fi
2066
2067 if test "x$want_lua" = "xyes" ; then
2068         lua_message="yes"
2069 else
2070         lua_message="no"
2071 fi
2072
2073 if test "x$want_python" = "xno"; then
2074         python_message="no"
2075 else
2076         python_message="yes"
2077 fi
2078
2079 if test "x$want_portaudio" = "xyes" ; then
2080         portaudio_message="yes"
2081 else
2082         portaudio_message="no"
2083 fi
2084
2085 if test "x$want_ssl" = "xno" ; then
2086         ssl_message="no"
2087 else
2088         ssl_message="yes"
2089 fi
2090
2091 if test "x$want_krb5" = "xno" ; then
2092         krb5_message="no"
2093 else
2094         krb5_message="yes ($ac_krb5_version)"
2095 fi
2096
2097 if test "x$have_good_c_ares" = "xyes" ; then
2098         c_ares_message="yes"
2099 else
2100         c_ares_message="no"
2101 fi
2102
2103 if test "x$have_good_adns" = "xyes" ; then
2104         adns_message="yes"
2105 else
2106         if test "x$have_good_c_ares" = "xyes" ; then
2107                 adns_message="no (using c-ares instead)"
2108         else
2109                 adns_message="no"
2110         fi
2111 fi
2112
2113 if test "x$have_good_libcap" = "xyes" ; then
2114         libcap_message="yes"
2115 else
2116         libcap_message="no"
2117 fi
2118
2119 if test "x$have_good_geoip" = "xyes" ; then
2120         geoip_message="yes"
2121 else
2122         geoip_message="no"
2123 fi
2124
2125 echo ""
2126 echo "The Wireshark package has been configured with the following options."
2127 echo "                    Build wireshark : $enable_wireshark"
2128 echo "                       Build tshark : $enable_tshark"
2129 echo "                     Build capinfos : $enable_capinfos"
2130 echo "                      Build editcap : $enable_editcap"
2131 echo "                      Build dumpcap : $enable_dumpcap"
2132 echo "                     Build mergecap : $enable_mergecap"
2133 echo "                    Build text2pcap : $enable_text2pcap"
2134 echo "                      Build idl2wrs : $enable_idl2wrs"
2135 echo "                      Build randpkt : $enable_randpkt"
2136 echo "                       Build dftest : $enable_dftest"
2137 echo "                     Build rawshark : $enable_rawshark"
2138 echo ""
2139 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
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"