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