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