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