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