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