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