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