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