Add the release date for GTK+ 3.8.0.
[metze/wireshark/wip.git] / configure.ac
1 # $Id$
2 #
3
4 m4_define([version_major], [1])
5 m4_define([version_minor], [9])
6 m4_define([version_micro], [2])
7 m4_define([version_micro_extra], version_micro)
8 m4_append([version_micro_extra], [])
9
10 AC_INIT(wireshark, [version_major.version_minor.version_micro_extra], http://bugs.wireshark.org/, , http://www.wireshark.org/)
11
12 # Minimum autoconf version we require.
13 AC_PREREQ(2.60)
14 # Variable expansion doesn't work in AC_PREREQ()
15 AC_MIN_VERSION=2.60
16 AC_SUBST(AC_MIN_VERSION)
17
18 dnl Check for CPU / vendor / OS
19 dnl The user is encouraged to use either `AC_CANONICAL_BUILD', or
20 dnl `AC_CANONICAL_HOST', or `AC_CANONICAL_TARGET', depending on the
21 dnl needs.  Using `AC_CANONICAL_TARGET' is enough to run the two other
22 dnl macros.
23 dnl
24 dnl As nothing in the Wireshark is itself a build tool (we are not,
25 dnl for example, a compiler that generates machine code), we probably
26 dnl don't need AC_CANONICAL_TARGET, so, in theory, we should be able
27 dnl to use AC_CANONICAL_BUILD and AC_CANONICAL_HOST - or perhaps just
28 dnl AC_CANONICAL_HOST - instead.  Note that we do have tools, such as
29 dnl lemon, that need to be built for the build machine, not for the
30 dnl host machine, so we might need both.
31 dnl
32 dnl This has to be done *after* AC_INIT, otherwise autogen.sh fails.
33
34 dnl AC_CANONICAL_BUILD
35 dnl AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
37
38 AM_INIT_AUTOMAKE([1.9 tar-ustar dist-bzip2 no-dist-gzip])
39
40 # Make Wireshark's version available in config.h
41 AC_DEFINE(VERSION_MAJOR, version_major, [Wireshark's major version])
42 AC_DEFINE(VERSION_MINOR, version_minor, [Wireshark's minor version])
43 AC_DEFINE(VERSION_MICRO, version_micro, [Wireshark's micro version])
44
45 AM_DISABLE_STATIC
46
47 dnl Checks for programs.
48 AC_PROG_CC
49 AM_PROG_CC_C_O
50 AC_PROG_CXX
51 AC_PROG_CPP
52 dnl Work around libtool bug (fixed in the version 1.5a?)
53 AC_DEFUN([AC_PROVIDE_AC_LIBTOOL_DLOPEN], )
54 AC_LIBTOOL_DLOPEN
55 AC_PROG_LIBTOOL
56 AC_PATH_PROG(PERL, perl)
57 #
58 # XXX - should autogen.sh check for YACC/Bison and Flex?  A user building
59 # from a distribution tarball shouldn't have to have YACC/Bison or Flex,
60 # as the tarball should contain the results of running YACC/Bison on .y
61 # files and running Flex on .l files, but a user building from SVN
62 # will have to run YACC/Bison and Flex to process those files.
63 #
64 # On the other hand, what about users who use a distribution tarball to
65 # do development?  They *shouldn't* - that's what the SVN repository is
66 # for - but they might.  They'd get errors if they modify a .y or .l
67 # file and try to do a build - but the error should tell them that they
68 # need to get YACC/Bison and/or Flex.
69 #
70 # Then again, getting them shouldn't be too big of a burden.
71 #
72 # XXX - is the same true of pod2man and pod2html, or are they needed
73 # even when building from a distribution tarball?
74 #
75 #
76 AC_PROG_YACC
77 AC_PATH_PROG(YACCDUMMY, $YACC)
78 if test "x$YACCDUMMY" = x
79 then
80         AC_MSG_ERROR(I couldn't find yacc (or bison or ...); make sure it's installed and in your path)
81 fi
82 AM_PROG_LEX
83 AC_PATH_PROG(LEX, flex)
84 if test "x$LEX" = x
85 then
86         AC_MSG_ERROR(I couldn't find flex; make sure it's installed and in your path)
87 fi
88 AC_PATH_PROG(POD2MAN, pod2man)
89 if test "x$POD2MAN" = x
90 then
91         #
92         # The alternative is not to build the man pages....
93         #
94         AC_MSG_ERROR(I couldn't find pod2man; make sure it's installed and in your path)
95 fi
96 AC_PATH_PROG(POD2HTML, pod2html)
97 if test "x$POD2HTML" = x
98 then
99         #
100         # The alternative is not to build the HTML man pages....
101         #
102         AC_MSG_ERROR(I couldn't find pod2html; make sure it's installed and in your path)
103 fi
104
105 #
106 # XXX - this looks for various HTML viewers on the host, not the target;
107 # we really want to know what's available on the target, for cross-builds.
108 # That would probably require us to, at run time, look for xdg-open and,
109 # if we don't find it, look for mozilla, htmlview, etc.
110 #
111 AC_PATH_PROG(HTML_VIEWER, xdg-open)
112 if test "x$HTML_VIEWER" != x
113 then
114         #
115         # XXX - the HTML_VIEWER shell variable is the full path of xdg-open.
116         # Define some variable to be that, so we just run that?
117         #
118         AC_DEFINE(HAVE_XDG_OPEN, 1, [Define if we have xdg-open])
119
120         #
121         # XXX - we have to define HTML_VIEWER for the prefs.c code that
122         # sets the default value of the Web browser preference, even
123         # though that preference won't be offered.
124         #
125         AC_DEFINE_UNQUOTED(HTML_VIEWER, "xdg-open", [HTML viewer, e.g. mozilla])
126 else
127         AC_PATH_PROG(HTML_VIEWER, htmlview)
128         if test "x$HTML_VIEWER" = x
129         then
130                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "mozilla", [HTML viewer, e.g. mozilla])
131         else
132                 AC_DEFINE_UNQUOTED(HTML_VIEWER, "htmlview", [HTML viewer, e.g. mozilla])
133         fi
134 fi
135
136 AC_SUBST(PERL)
137 AC_SUBST(LEX)
138 AC_SUBST(POD2MAN)
139 AC_SUBST(POD2HTML)
140 AC_SUBST(XMLLINT)
141
142 #
143 # Set "ac_supports_gcc_flags" if the compiler is known to support GCC-style
144 # flags such as -pedantic, -W warning flags and -f feature flags.  Currently,
145 # we assume GCC and clang do; other compilers should be added here.
146 #
147 # This is done to avoid getting tripped up by compilers that support
148 # those flags but give them a different meaning.
149 #
150 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
151         ac_supports_gcc_flags=yes
152 fi
153
154 #
155 # Set "ac_supports_W_linker_passthrough" if the compiler is known to
156 # support "-Wl,{options}" to pass options through to the linker.
157 # Currently, we assume GCC, xlc, and clang do; other compilers should
158 # be added here.
159 #
160 if test "x$GCC" = "xyes" -o "x$CC" = "xxlc" -o "x$CC" = "xclang" ; then
161         ac_supports_W_linker_passthrough=yes
162 fi
163
164 #
165 # Set "ac_supports_attribute_unused" if the compiler is known to
166 # support "__attribute__(unused)".
167 # Currently, we assume GCC and clang do; other compilers should
168 # be added here.
169 #
170 # XXX - do this with a compiler test?
171 #
172 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
173         ac_supports_W_linker_passthrough=yes
174 fi
175
176 if test "x$CC_FOR_BUILD" = x
177 then
178        CC_FOR_BUILD=$CC
179 fi
180 AC_SUBST(CC_FOR_BUILD)
181 AC_SUBST(CFLAGS_FOR_BUILD)
182
183 # Check for doxygen
184 AC_PATH_PROG(DOXYGEN, doxygen)
185 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, "yes", "no")
186 AM_CONDITIONAL(HAVE_DOXYGEN, test x$HAVE_DOXYGEN = xyes)
187
188 #
189 # Try to arrange for large file support.
190 #
191 AC_SYS_LARGEFILE
192
193 # GnuTLS
194 # Version 3.0 switched from LGPLv2.1+ to LGPLv3+.
195 tls_message="no"
196 AC_ARG_WITH([gnutls],
197   AC_HELP_STRING( [--with-gnutls=@<:@yes/no@:>@],
198                   [use GnuTLS library @<:@default=yes@:>@]),
199   with_gnutls="$withval", with_gnutls="yes")
200 if test "x$with_gnutls" = "xyes"; then
201   PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 1.2.0 gnutls < 3],
202         [
203                 echo "GnuTLS found, enabling SSL decryption"
204                 AC_DEFINE(HAVE_LIBGNUTLS, 1, [Define to use GnuTLS library])
205                 tls_message="yes"
206         ]
207         , [
208                 echo "GnuTLS not found, disabling SSL decryption"
209                 tls_message="no"
210         ]
211   )
212 fi
213
214 # libgrypt
215 gcrypt_message="no"
216 AC_ARG_WITH([gcrypt],
217   AC_HELP_STRING( [--with-gcrypt=@<:@yes/no@:>@],
218                   [use gcrypt library @<:@default=yes@:>@]),
219   with_gcrypt="$withval", with_gcrypt="yes")
220 if test "x$with_gcrypt" = "xyes"; then
221   AM_PATH_LIBGCRYPT(1.1.92,
222         [
223                 echo "libgcrypt found, enabling ipsec decryption"
224                 AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define to use libgcrypt])
225                 gcrypt_message="yes"
226         ]
227         , [
228                 if test x$libgcrypt_config_prefix != x ; then
229                         AC_MSG_ERROR([[libgcrypt not found; install libgcrypt-devel package for your system]])
230                 else
231                         echo "libgcrypt not found, disabling ipsec decryption"
232                         gcrypt_message="no"
233                 fi
234         ]
235   )
236 fi
237
238 AC_ARG_WITH([qt],
239   AC_HELP_STRING( [--with-qt=@<:@yes/no@:>@],
240                   [use Qt instead of GTK+ @<:@default=no@:>@]),
241   with_qt="$withval", with_qt="no")
242
243 AC_ARG_WITH(libnl,
244   AC_HELP_STRING([--with-libnl@<:@=VERSION@:>@],
245                  [use libnl (force version VERSION, if supplied) @<:@default: yes, if available@:>@]),
246 [
247         if test "x$withval" = "xno"
248         then
249                 want_libnl=no
250         elif test "x$withval" = "xyes"
251         then
252                 want_libnl=yes
253                 libnl_version=any
254         elif test "x$withval" = "x1"
255         then
256                 want_libnl=yes
257                 libnl_version=1
258         elif test "x$withval" = "x2"
259         then
260                 want_libnl=yes
261                 libnl_version=2
262         elif test "x$withval" = "x3"
263         then
264                 want_libnl=yes
265                 libnl_version=3
266         else
267                 AC_MSG_ERROR(["$withval" is not a valid argument to --with-libnl])
268         fi
269 ],[
270         #
271         # Use libnl if it's present, otherwise don't.
272         #
273         want_libnl=ifavailable
274         libnl_version=any
275 ])
276 #
277 # Libnl is Linux-specific.
278 #
279 libnl_message="no"
280 case "$host_os" in
281 linux*)
282         AC_MSG_CHECKING(whether to use libnl for various network interface purposes)
283
284         if test x$want_libnl = "xno"; then
285                 AC_MSG_RESULT(no)
286         else
287                 AC_MSG_RESULT(yes)
288                 #
289                 # Test for specific libnl versions only if no version
290                 # was specified by the user or if the version in question
291                 # was requested by the user.
292                 #
293                 if test x$libnl_version = "xany" -o x$libnl_version = "x3"; then
294                         PKG_CHECK_MODULES(LIBNL3, [libnl-route-3.0 >= 3.0 libnl-genl-3.0] >= 3.0, [have_libnl3=yes], [have_libnl3=no])
295                 fi
296                 if test x$libnl_version = "xany" -o x$libnl_version = "x2"; then
297                         PKG_CHECK_MODULES(LIBNL2, libnl-2.0 >= 2.0, [have_libnl2=yes], [have_libnl2=no])
298                 fi
299                 if test x$libnl_version = "xany" -o x$libnl_version = "x1"; then
300                         PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0, [have_libnl1=yes], [have_libnl1=no])
301                 fi
302                 if (test "${have_libnl3}" = "yes"); then
303                         CFLAGS="$CFLAGS $LIBNL3_CFLAGS"
304                         LIBS="$LIBS $LIBNL3_LIBS"
305                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
306                         AC_DEFINE(HAVE_LIBNL3, 1, [libnl version 3])
307                         libnl_message="yes (v3)"
308                         enable_airpcap=no
309                 elif (test "${have_libnl2}" = "yes"); then
310                         CFLAGS="$CFLAGS $LIBNL2_CFLAGS"
311                         LIBS="$LIBS $LIBNL2_LIBS"
312                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
313                         AC_DEFINE(HAVE_LIBNL2, 1, [libnl version 2])
314                         libnl_message="yes (v2)"
315                         enable_airpcap=no
316                 elif (test "${have_libnl1}" = "yes"); then
317                         CFLAGS="$CFLAGS $LIBNL1_CFLAGS"
318                         LIBS="$LIBS $LIBNL1_LIBS"
319                         AC_DEFINE(HAVE_LIBNL, 1, [Enable libnl support])
320                         AC_DEFINE(HAVE_LIBNL1, 1, [libnl version 1])
321                         libnl_message="yes (v1)"
322                         enable_airpcap=no
323                 else
324                         if test x$want_libnl = "xyes"; then
325                                 case "$libnl_version" in
326
327                                 any)
328                                         AC_MSG_ERROR("I couldn't find libnl even though you manually enabled it.")
329                                         ;;
330
331                                 *)
332                                         AC_MSG_ERROR("I couldn't find libnl version $libnl_version even though you manually enabled it.")
333                                         ;;
334                                 esac
335                         fi
336                 fi
337         fi
338
339         AC_MSG_CHECKING([if nl80211.h is new enough])
340           AC_TRY_COMPILE([#include <linux/nl80211.h>],
341             [int x = NL80211_FREQUENCY_ATTR_MAX_TX_POWER;
342                 x = NL80211_ATTR_SUPPORTED_IFTYPES;
343                 x = NL80211_ATTR_SUPPORTED_COMMANDS;
344                 x = NL80211_ATTR_WIPHY_FREQ;
345                 x = NL80211_CHAN_NO_HT;],
346             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211, 1, [nl80211.h is new enough])],
347             [AC_MSG_RESULT(no)])
348
349         AC_MSG_CHECKING([for NL80211_SET_CHANNEL])
350           AC_TRY_COMPILE([#include <linux/nl80211.h>],
351             [enum nl80211_commands x = NL80211_CMD_SET_CHANNEL;],
352             [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NL80211_CMD_SET_CHANNEL, 1, [SET_CHANNEL is supported])],
353             [AC_MSG_RESULT(no)])
354         ;;
355
356 *)
357         if test x$want_libnl != "xno" -a x$want_libnl != "xifavailable"; then
358                 AC_MSG_WARN([libnl is Linux-specific, ignoring --with-libnl])
359         fi
360 esac
361
362 AC_ARG_WITH([gtk3],
363   AC_HELP_STRING( [--with-gtk3=@<:@yes/no@:>@],
364                   [use GTK+ 3.0 instead of 2.0 @<:@default=no@:>@]),
365   with_gtk3="$withval", with_gtk3="no")
366
367 # libsmi
368 # FIXME: currently the path argument to with-libsmi is being ignored
369 AX_LIBSMI
370
371 #
372 # Program paths
373 #
374
375 # Check for a2x (convert asciidoc to another format)
376 AC_PATH_PROG(A2X, a2x)
377 AC_CHECK_PROG(HAVE_A2X, a2x, "yes", "no")
378 AM_CONDITIONAL(HAVE_A2X, test x$HAVE_A2X = xyes)
379
380 AC_PATH_PROG(DESKTOP_FILE_INSTALL, desktop-file-install)
381
382 # Want to control a tape drive? Use mt. Want to convert HTML to text?
383 # Uhhhhh... elinks? lynx? w3m? pandoc? html2text?
384 AC_PATH_PROG(ELINKS, elinks)
385 AC_CHECK_PROG(HAVE_ELINKS, elinks, "yes", "no")
386 AM_CONDITIONAL(HAVE_ELINKS, test x$HAVE_ELINKS = xyes)
387
388 # Check for fop (translate .fo to e.g. pdf)
389 AC_PATH_PROG(FOP, fop)
390 AC_CHECK_PROG(HAVE_FOP, fop, "yes", "no")
391 AM_CONDITIONAL(HAVE_FOP, test x$HAVE_FOP = xyes)
392
393 # Check for lynx (html -> text)
394 AC_PATH_PROG(LYNX, lynx)
395 AC_CHECK_PROG(HAVE_LYNX, lynx, "yes", "no")
396 AM_CONDITIONAL(HAVE_LYNX, test x$HAVE_LYNX = xyes)
397
398 AC_PATH_PROG(PYTHON, python)
399
400 # Check for w3m (html -> text)
401 AC_PATH_PROG(W3M, w3m)
402 AC_CHECK_PROG(HAVE_W3M, w3m, "yes", "no")
403 AM_CONDITIONAL(HAVE_W3M, test x$HAVE_W3M = xyes)
404
405 # Check for xmllint
406 AC_PATH_PROG(XMLLINT, xmllint)
407 AC_CHECK_PROG(HAVE_XMLLINT, xmllint, "yes", "no")
408 AM_CONDITIONAL(HAVE_XMLLINT, test x$HAVE_XMLLINT = xyes)
409
410 # Check for xsltproc
411 AC_PATH_PROG(XSLTPROC, xsltproc)
412 AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, "yes", "no")
413 AM_CONDITIONAL(HAVE_XSLTPROC, test x$HAVE_XSLTPROC = xyes)
414
415
416 # Check for packaging utilities
417 # For now, we check to see if the various packaging utilites are in our
418 # path.  I'm too lazy to write code to go hunt for them.  -  Gerald
419
420 # SVR4/Solaris
421 AC_CHECK_PROG(HAVE_PKGPROTO, pkgproto, "yes", "no")
422 AC_CHECK_PROG(HAVE_PKGMK, pkgmk, "yes", "no")
423 AC_CHECK_PROG(HAVE_PKGTRANS, pkgtrans, "yes", "no")
424
425 if test x$HAVE_PKGPROTO = xyes -a x$HAVE_PKGMK = xyes \
426      -a x$HAVE_PKGTRANS = xyes ; then
427   HAVE_SVR4_PACKAGING=yes
428 else
429   HAVE_SVR4_PACKAGING=no
430 fi
431 AC_SUBST(HAVE_SVR4_PACKAGING)
432
433 # RPM
434 AC_WIRESHARK_RPM_CHECK
435 AC_SUBST(HAVE_RPM)
436
437 # Debian
438 AC_CHECK_PROG(HAVE_DPKG_BUILDPACKAGE, dpkg-buildpackage, "yes", "no")
439
440 # Mac OS X
441 AC_CHECK_PROG(HAVE_XCODEBUILD, xcodebuild, "yes", "no")
442 AC_CHECK_PROG(HAVE_HDIUTIL, hdiutil, "yes", "no")
443 AC_CHECK_PROG(HAVE_BLESS, bless, "yes", "no")
444
445 if test x$HAVE_XCODEBUILD = xyes -a x$HAVE_HDIUTIL = xyes \
446      -a x$HAVE_BLESS = xyes ; then
447   HAVE_OSX_PACKAGING=yes
448 else
449   HAVE_OSX_PACKAGING=no
450 fi
451 AC_SUBST(HAVE_OSX_PACKAGING)
452
453 #
454 # Try to add some additional gcc checks to CFLAGS
455 #
456 AC_ARG_ENABLE(extra-gcc-checks,
457   AC_HELP_STRING( [--enable-extra-gcc-checks],
458                   [do additional -W checks in GCC @<:@default=no@:>@]),
459 [
460         wireshark_extra_gcc_flags=$enableval
461         if test $enableval != no
462         then
463                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-pedantic)
464                 #
465                 # Various code blocks this one.
466                 #
467                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Woverflow)
468                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fstrict-overflow -Wstrict-overflow=4)
469                 #
470                 # Some memset() calls to clear out structures
471                 # on the stack are getting flagged as "will never
472                 # be executed" by this, at least by Apple's
473                 # i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on
474                 # Apple Inc. build 5658) (LLVM build 2336.11.00), for
475                 # some unknown reason.
476                 #
477                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunreachable-code)
478                 #
479                 # Due to various places where APIs we don't control
480                 # require us to cast away constness, we can probably
481                 # never enable these ones with -Werror.
482                 #
483                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-qual)
484                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wbad-function-cast, C)
485                 #
486                 # Some generated ASN.1 dissectors block this one;
487                 # multiple function declarations for the same
488                 # function are being generated.
489                 #
490                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wredundant-decls)
491                 #
492                 # Some loops are safe, but it's hard to convince the
493                 # compiler of that.
494                 #
495                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wunsafe-loop-optimizations)
496                 #
497                 # All the registration functions block these for now.
498                 #
499                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-prototypes)
500                 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wmissing-declarations)
501         fi
502 ],)
503 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
504 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wextra) # -W is now known as -Wextra
505 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdeclaration-after-statement, C)
506 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wendif-labels)
507 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpointer-arith)
508 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-pointer-sign, C)
509 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds)
510 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wcast-align)
511 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wformat-security)
512 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wold-style-definition, C)
513 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshorten-64-to-32)
514 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wstrict-prototypes, C)
515 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wjump-misses-init, C)
516 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wvla)
517 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Waddress)
518 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Warray-bounds)
519 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wattributes)
520 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wdiv-by-zero)
521 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wignored-qualifiers)
522 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wpragmas)
523 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-overlength-strings)
524 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wwrite-strings)
525 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-long-long)
526 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wc++-compat, C)
527
528 #
529 # XXX - OK for C++?
530 #
531 # Make sure -Wshadow doesn't complain about variables in function and
532 # function pointer declarations shadowing other variables; if not, don't
533 # turn it on, as some versions of GCC (including the one in at least
534 # some Xcode versions that came with Mac OS X 10.5) complain about
535 # that.
536 #
537 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wshadow, C,
538   [
539 extern int bar(int a);
540 extern int foo(int);
541
542 int
543 foo(int a)
544 {
545         int (*fptr)(int a) = bar;
546
547         return fptr(a) * 2;
548 }
549   ],
550   [warns about variables in function declarations shadowing other variables])
551
552 # Unfortunately some versions of gcc generate logical-op warnings when strchr()
553 # is given a constant string.
554 # gcc versions 4.3.2 and 4.4.5 are known to have the problem.
555 AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wlogical-op, C,
556   [
557 #include <string.h>
558
559 int foo(const char *, int);
560 int bar(void);
561
562 int
563 foo(const char *sep, int c)
564 {
565         if (strchr (sep, c) != NULL)
566                 return 1;
567         else
568                 return 0;
569 }
570
571 int
572 bar(void)
573 {
574         return foo("<", 'a');
575 }
576   ],
577   [generates warnings from strchr()])
578
579
580 ## AC_WIRESHARK_GCC_CFLAGS_CHECK(-Wno-error=unused-but-set-variable)
581
582 #
583 # Use the faster pre gcc 4.5 floating point precision if available;
584 # clang doesn't error out on -f options that it doesn't know about,
585 # it just warns and ignores them, so this check doesn't cause us
586 # to omit -fexcess-precision=fast, which produces a pile of
587 # annoying warnings.
588 #
589 if test "x$CC" != "xclang" ; then
590   AC_WIRESHARK_GCC_CFLAGS_CHECK(-fexcess-precision=fast)
591 fi
592
593 CFLAGS_before_fvhidden=$CFLAGS
594 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fvisibility=hidden)
595 if test "x$CLFAGS" = "x$CFLAGS_before_fvhidden"
596 then
597         # TODO add other ways of hiding symbols
598         AC_MSG_WARN(Compiler will export all symbols from shared libraries)
599 fi
600
601 AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--as-needed])
602 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,-M])
603 ###AC_WIRESHARK_LDFLAGS_CHECK([-Wl,--cref])
604 # AC_WIRESHARK_LDFLAGS_CHECK([-flto])
605 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhopr])
606 # AC_WIRESHARK_LDFLAGS_CHECK([-fwhole-program])
607
608 #
609 # Put -fPIE in PIE_CFLAGS and -pie in PIE_LDFLAGS if we can use them,
610 # so that we can build dumpcap PIE - it may run with elevated
611 # privileges, and using PIE means the OS can run it at random locations
612 # in the address space to make attacks more difficult.
613 #
614 CFLAGS_before_pie=$CFLAGS
615 AC_WIRESHARK_GCC_CFLAGS_CHECK(-fPIE, C)
616 if test "x$CLFAGS" != "x$CFLAGS_before_pie"
617 then
618         # Restore CFLAGS
619         CFLAGS=$CFLAGS_before_pie
620
621         LDFLAGS_before_pie=$LDFLAGS
622         AC_WIRESHARK_LDFLAGS_CHECK([-fPIE -pie])
623         if test "x$LDFLAGS" != "x$LDFLAGS_before_pie"
624         then
625                 # We can use PIE
626                 PIE_CFLAGS="-fPIE"
627                 PIE_LDFLAGS="-pie"
628
629                 # Restore LDFLAGS
630                 LDFLAGS=$LDFLAGS_before_pie
631         fi
632
633 fi
634 AC_SUBST(PIE_CFLAGS)
635 AC_SUBST(PIE_LDFLAGS)
636
637 #
638 # If we're running GCC or clang define _U_ to be "__attribute__((unused))"
639 # so we can use _U_ to flag unused function parameters and not get warnings
640 # about them. Otherwise, define _U_ to be an empty string so that _U_ used
641 # to flag an unused function parameters will compile with other compilers.
642 #
643 # XXX - similar hints for other compilers?
644 #
645 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
646   AC_DEFINE(_U_, __attribute__((unused)), [Hint to the compiler that a function parameters is not used])
647 else
648   AC_DEFINE(_U_, , [Hint to the compiler that a function parameters is not used])
649 fi
650
651 # If we're running GCC or CLang, use FORTIFY_SOURCE=2
652 #  (only if the GCC 'optimization level' > 0).
653 #
654 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
655 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
656 #
657 # Note: FORTIFY_SOURCE is only effective for gcc optimization level > 0 (-O1, etc)
658 AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
659
660 #
661 # If the compiler supports GCC-style flags, enable a barrier "stop on
662 # warning".
663 # This barrier is set for a very large part of the code. However, it is
664 # typically not set for "generated" code  (flex, ans2wrs, idl2wrs, ...)
665 #
666 warnings_as_errors_default="yes"
667 AC_MSG_CHECKING(whether we should treat compiler warnings as errors)
668 AC_ARG_ENABLE(warnings-as-errors,
669   AC_HELP_STRING( [--enable-warnings-as-errors],
670                   [treat warnings as errors (only for GCC or clang) @<:@default=yes, unless extra warnings are enabled@:>@]),
671 [
672   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$enableval" = "xyes"; then
673     with_warnings_as_errors="yes"
674     AC_MSG_RESULT(yes)
675   else
676     with_warnings_as_errors="no"
677     AC_MSG_RESULT(no)
678   fi
679 ],
680 [
681   if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
682     with_warnings_as_errors="yes"
683     AC_MSG_RESULT(yes)
684   else
685     with_warnings_as_errors="no"
686     AC_MSG_RESULT(no)
687   fi
688 ]
689 )
690 AM_CONDITIONAL(HAVE_WARNINGS_AS_ERRORS, test "x$with_warnings_as_errors" = "xyes")
691
692 #
693 # Add any platform-specific compiler flags needed.
694 #
695 AC_MSG_CHECKING(for platform-specific compiler flags)
696 if test "x$GCC" = "xyes" ; then
697         #
698         # GCC - do any platform-specific tweaking necessary.
699         #
700         case "$host_os" in
701         solaris*)
702                 # the X11 headers don't automatically include prototype info
703                 # and a lot don't include the return type
704                 CPPFLAGS="$CPPFLAGS -DFUNCPROTO=15"
705                 CFLAGS="$CFLAGS -Wno-return-type"
706                 CXXFLAGS="$CXXFLAGS -Wno-return-type"
707                 AC_MSG_RESULT(GCC on Solaris - added -Wno-return-type -DFUNCPROTO=15)
708                 ;;
709         *)
710                 AC_MSG_RESULT(none needed)
711                 ;;
712         esac
713 else
714         #
715         # Not GCC - assume it's the vendor's compiler.
716         #
717         case "$host_os" in
718         hpux*)
719                 #
720                 # HP's ANSI C compiler; flags suggested by Jost Martin.
721                 # "-Ae" for ANSI C plus extensions such as "long long".
722                 # "+O2", for optimization.  XXX - works with "-g"?
723                 #
724                 # HP's ANSI C++ compiler doesn't support "-Ae", but
725                 # does support "+O2", at least according to the
726                 # documentation I can find online.
727                 #
728                 CFLAGS="-Ae +O2 $CFLAGS"
729                 CFLAGS_FOR_BUILD="-Ae +O2 $CFLAGS"
730                 CXXFLAGS="+O2 $CFLAGS"
731                 AC_MSG_RESULT(HP ANSI C compiler - added -Ae +O2)
732                 ;;
733         *)
734                 AC_MSG_RESULT(none needed)
735                 ;;
736         esac
737 fi
738
739 #
740 # Add any platform-specific linker flags needed.
741 #
742 AC_MSG_CHECKING(for platform-specific linker flags)
743 case "$host_os" in
744 darwin*)
745         #
746         # Add -Wl,-single_module to the LDFLAGS used with shared
747         # libraries, to fix some error that show up in some cases;
748         # some Apple documentation recommends it for most shared
749         # libraries.
750         #
751         LDFLAGS_SHAREDLIB="-Wl,-single_module"
752         #
753         # Add -Wl,-search_paths_first to make sure that if we search
754         # directories A and B, in that order, for a given library, a
755         # non-shared version in directory A, rather than a shared
756         # version in directory B, is chosen (so we can use
757         # --with-pcap=/usr/local to force all programs to be linked
758         # with a static version installed in /usr/local/lib rather than
759         # the system version in /usr/lib).
760         #
761         LDFLAGS="-Wl,-search_paths_first $LDFLAGS"
762         AC_MSG_RESULT([Apple linker - added -Wl,-single_module and -Wl,-search_paths_first])
763         ;;
764 cygwin*)
765         #
766         # Shared libraries in cygwin/Win32 must never contain
767         # undefined symbols.
768         #
769         LDFLAGS="$LDFLAGS -no-undefined"
770         AC_MSG_RESULT(CygWin GNU ld - added -no-undefined)
771         ;;
772 *)
773         AC_MSG_RESULT(none needed)
774         ;;
775 esac
776 AC_SUBST(LDFLAGS_SHAREDLIB)
777
778 # Enable silent builds by default
779 # Verbose builds can be enabled with "./configure
780 # --enable-silent-rules ..." or "make V=1 ..."
781 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
782   [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
783
784 #
785 # On "Darwin", which we assume to mean "OS X" rather than "iOS" or
786 # "just Darwin" (as we don't currently support iOS, and as I don't
787 # think you can build and run "just Darwin" as an OS for PCs), we
788 # arrange to build some programs with Application Services so they
789 # can launch Web browsers and Finder windows, arrange to build some
790 # programs with System Configuration so they can get "friendly names"
791 # and other information about interfaces, and build any programs that
792 # use either of those frameworks or that report version information
793 # with Core Foundation as the frameworks in question use it and as we
794 # get version information from plists and thus need Core Foundation
795 # to process those plists.
796 #
797 case "$host_os" in
798
799 darwin*)
800         AC_DEFINE(HAVE_OS_X_FRAMEWORKS, 1, [Define to 1 if you have OS X frameworks])
801         APPLICATIONSERVICES_FRAMEWORKS="-framework ApplicationServices"
802         SYSTEMCONFIGURATION_FRAMEWORKS="-framework SystemConfiguration"
803         COREFOUNDATION_FRAMEWORKS="-framework CoreFoundation"
804
805         #
806         # OK, so we have the OS X frameworks; do they include
807         # CFPropertyListCreateWithStream, or do we have
808         # to fall back on CFPropertyListCreateFromStream?
809         # (They only differ in the error return, which we
810         # don't care about.  And, no, we shouldn't just
811         # use CFPropertyListCreateFromStream, because it's
812         # deprecated in newer releases.)
813         #
814         ac_save_LIBS="$LIBS"
815         LIBS="$LIBS $COREFOUNDATION_FRAMEWORKS"
816         AC_CHECK_FUNCS(CFPropertyListCreateWithStream)
817         LIBS="$ac_save_LIBS"
818         ;;
819 esac
820 AC_SUBST(APPLICATIONSERVICES_FRAMEWORKS)
821 AC_SUBST(SYSTEMCONFIGURATION_FRAMEWORKS)
822 AC_SUBST(COREFOUNDATION_FRAMEWORKS)
823
824 #
825 # If using $prefix we add "$prefix/include" to the include search path
826 # and "$prefix/lib" to the library search path.
827 #
828 if test "x$prefix" != "x" ; then
829         AC_MSG_CHECKING(whether to use $prefix for headers and libraries)
830         if test -d $prefix/include ; then
831                 AC_MSG_RESULT(yes)
832                 #
833                 # Arrange that we search for header files in "$prefix/include", as
834                 # various packages we use may have been installed under "$prefix/include".
835                 #
836                 CPPFLAGS="$CPPFLAGS -I$prefix/include"
837
838                 #
839                 # Arrange that we search for libraries in "$prefix/lib".
840                 #
841                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib)
842         else
843                 AC_MSG_RESULT(no)
844         fi
845 fi
846
847 dnl Look in /usr/local for header files and libraries ?
848 dnl XXX FIXME don't include /usr/local if it is already in the system
849 dnl search path as this causes gcc 3.2 on Linux to complain about a change
850 dnl of the system search order for includes
851 AC_ARG_ENABLE(usr-local,
852   AC_HELP_STRING( [--enable-usr-local],
853                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
854     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
855
856 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
857 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
858         if test -d "/usr/local"; then
859                 AC_MSG_RESULT(yes)
860                 #
861                 # Arrange that we search for header files in the source directory
862                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
863                 # as various packages we use ("libpcap", "zlib", "adns")
864                 # may have been installed under "/usr/local/include".
865                 #
866                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
867
868                 #
869                 # Arrange that we search for libraries in "/usr/local/lib".
870                 #
871                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
872         else
873                 AC_MSG_RESULT(no)
874         fi
875 else
876         AC_MSG_RESULT(no)
877 fi
878
879 #
880 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
881 # link directory.
882 #
883 case "$host_os" in
884   solaris*)
885     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
886     if test x$LD_LIBRARY_PATH != x ; then
887       LIBS="$LIBS -R$LD_LIBRARY_PATH"
888       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
889     else
890       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
891     fi
892   ;;
893 esac
894
895 #
896 # Check for versions of "sed" inadequate to handle, in libtool, a list
897 # of object files as large as the list in Wireshark.
898 #
899 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
900 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
901 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
902 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
903 # is the only "sed" that comes with Solaris that can handle Wireshark.
904 #
905 # Add any checks here that are necessary for other OSes.
906 #
907 AC_WIRESHARK_GNU_SED_CHECK
908 if test "$HAVE_GNU_SED" = no ; then
909         case "$host_os" in
910         solaris*)
911                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
912                 case `which sed` in
913                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
914                         AC_MSG_RESULT(yes)
915                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
916                         ;;
917
918                         *)
919                         AC_MSG_RESULT(no)
920                         ;;
921                 esac
922                 ;;
923
924         *)
925                 :
926                 ;;
927         esac
928 fi
929
930 # Enable/disable wireshark
931
932 AC_ARG_ENABLE(wireshark,
933   AC_HELP_STRING( [--enable-wireshark],
934                   [build GTK+-based Wireshark @<:@default=yes, if GTK+ available@:>@]),
935     enable_wireshark=$enableval,enable_wireshark=yes)
936
937 AC_ARG_ENABLE(packet-editor,
938   AC_HELP_STRING( [--enable-packet-editor],
939                   [add support for packet editor in Wireshark @<:@default=no@:>@]),
940     enable_packet_editor=$enableval,enable_packet_editor=no)
941 if test x$enable_packet_editor = xyes; then
942         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
943 fi
944
945 AC_ARG_ENABLE(profile-build,
946   AC_HELP_STRING( [--enable-profile-build],
947                   [build profile-ready binaries @<:@default=no@:>@]),
948     enable_profile_build=$enableval,enable_profile_build=no)
949 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
950 AC_MSG_CHECKING(if profile builds must be generated)
951 if test "x$enable_profile_build" = "xyes" ; then
952         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
953                 AC_MSG_RESULT(yes)
954                 CFLAGS=" -pg $CFLAGS"
955                 CXXFLAGS=" -pg $CXXFLAGS"
956         else
957                 AC_MSG_RESULT(no)
958                 echo "Building profile binaries currently only supported for GCC and clang."
959         fi
960 else
961         AC_MSG_RESULT(no)
962 fi
963
964 # Create DATAFILE_DIR #define for config.h
965 datafiledir=$datadir/wireshark
966 datafiledir=`(
967     test "x$prefix" = xNONE && prefix=$ac_default_prefix
968     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
969     # Ugly hack, but I don't see how this problem can be solved
970     # properly that DATAFILE_DIR had a value starting with
971     # "${prefix}/" instead of e.g. "/usr/local/"
972     eval eval echo "$datafiledir"
973 )`
974 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
975
976 # Create DOC_DIR #define for config.h
977 docdir=`(
978     test "x$prefix" = xNONE && prefix=$ac_default_prefix
979     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
980     # Ugly hack, but I don't see how this problem can be solved
981     # properly that DOC_DIR had a value starting with
982     # "${prefix}/" instead of e.g. "/usr/local/"
983     eval eval echo "$docdir"
984 )`
985 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
986
987 GTK2_MIN_VERSION=2.12.0
988 AC_SUBST(GTK2_MIN_VERSION)
989 GTK3_MIN_VERSION=3.0.0
990 AC_SUBST(GTK3_MIN_VERSION)
991 QT_MIN_VERSION=4.6.0
992 AC_SUBST(QT_MIN_VERSION)
993 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
994 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
995 #
996 # We only do those if we're going to be building Wireshark;
997 # otherwise, we don't have any GUI to build, so we don't use
998 # GTK+ or Qt.
999 #
1000 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
1001 # force all programs to be built with GTK+ or Qt.
1002 #
1003 # Release dates for GTK+ versions:
1004 # 2.12.0: 14 Sep 2007
1005 # 2.14.0: 04 Sep 2008
1006 # 2.16.0: 13 Mar 2009
1007 # 2.18.0: 23 Sep 2009
1008 # 2.20.0: 23 Mar 2010
1009 # 2.22.0: 23 Sep 2010
1010 # 2.24.0: 30 Jan 2011
1011 # 3.0.0:  10 Feb 2011
1012 # 3.2.0:  25 Sep 2011
1013 # 3.4.0:  26 Mar 2012
1014 # 3.6.0:  24 Sep 2012
1015 # 3.8.0:  25 Mar 2012
1016
1017 if test "x$enable_wireshark" = "xyes"; then
1018         if test "x$with_qt" = "xyes"; then
1019
1020                 AC_MSG_CHECKING(whether we have a working C++ compiler)
1021                 AC_LANG_PUSH([C++])
1022                 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
1023                         [AC_MSG_RESULT(yes)],
1024                         [
1025                          AC_MSG_RESULT(no)
1026                          AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1027                         ])
1028                 AC_LANG_POP([C++])
1029
1030                 AM_PATH_QT($QT_MIN_VERSION,
1031                 [
1032                         CFLAGS="$CFLAGS $Qt_CFLAGS"
1033                         CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1034                         have_qt=yes
1035                 ]
1036                 , [AC_MSG_ERROR([Qt is not available])])
1037
1038                 #
1039                 # XXX - greasy hack to make ui/gtk/recent.c
1040                 # compile.
1041                 #
1042                 CPPFLAGS="-DQT_GUI_LIB"
1043
1044                 #
1045                 # We don't know whether we have GTK+, but we
1046                 # won't be using it, so it's as if we don't
1047                 # have it.
1048                 #
1049                 have_gtk=no
1050         else
1051                 #
1052                 # Not Qt - either GTK+ 3.x or 2.x.
1053                 #
1054                 if test "x$with_gtk3" = "xyes"; then
1055                         AM_PATH_GTK_3_0(3.0.0,
1056                         [
1057                                 CFLAGS="$CFLAGS $GTK_CFLAGS"
1058                                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1059                                 have_gtk=yes
1060                                 AC_DEFINE(HAVE_GTK, 1,
1061                                     [Define to 1 if compiling with GTK])
1062                         ], have_gtk=no)
1063
1064                 else
1065                         AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1066                         [
1067                                 CFLAGS="$CFLAGS $GTK_CFLAGS"
1068                                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1069                                 have_gtk=yes
1070                                 AC_DEFINE(HAVE_GTK, 1,
1071                                     [Define to 1 if compiling with GTK])
1072                         ], have_gtk=no)
1073                 fi
1074         fi
1075 else
1076         have_qt=no
1077         have_gtk=no
1078 fi
1079
1080 GLIB_MIN_VERSION=2.14.0
1081 AC_SUBST(GLIB_MIN_VERSION)
1082 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1083 # support, as we need that for dynamically loading plugins.
1084 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1085 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1086 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1087 # GLIB_CFLAGS to CFLAGS.
1088 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1089 # set when generating the Makefile, so we can make programs that require
1090 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1091 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1092 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1093 # programs to be built with GLib.
1094 #
1095 # Release dates for GLib versions:
1096 # 2.14.0: 03 Aug 2007
1097 # 2.16.0: 10 Mar 2008
1098 # 2.18.0: 02 Sep 2008
1099 # 2.20.0: 13 Mar 2009
1100 # 2.22.0: 22 Sep 2009
1101 # 2.24.0: 28 Mar 2010
1102 # 2.26.0: 27 Sep 2010
1103 # 2.28.0: 08 Feb 2011
1104 # 2.30.0: 27 Sep 2011
1105 # 2.32.0: 24 Mar 2012
1106 # 2.34.0: 24 Sep 2012
1107
1108 have_wireshark_cxx="false"
1109 if test "$have_gtk" = "no" ; then
1110         #
1111         # We don't have GTK+.
1112         #
1113         if test "$have_qt" = "yes" ; then
1114                 #
1115                 # However, we do have Qt, and thus will be building
1116                 # Wireshark (if the user had explicitly disabled
1117                 # Wireshark, we wouldn't have looked for Qt, so we
1118                 # wouldn't think we had it, and thus wouldn't be here).
1119                 #
1120                 wireshark_bin="wireshark\$(EXEEXT)"
1121                 # Give automake a hint that it needs to use c++ linking.
1122                 have_wireshark_cxx="yes"
1123                 wireshark_man="wireshark.1"
1124                 wireshark_SUBDIRS="codecs ui/qt"
1125         else
1126                 #
1127                 # We don't have Qt, either, which means we have no UI
1128                 # toolkit.
1129                 #
1130                 # If they didn't explicitly say "--disable-wireshark",
1131                 # fail (so that, unless they explicitly indicated that
1132                 # they don't want Wireshark, we stop so they know they
1133                 # won't be getting Wireshark unless they fix the GTK+/Qt
1134                 # problem).
1135                 #
1136                 if test "x$enable_wireshark" = "xyes"; then
1137                         if test "x$with_gtk3" = "xyes"; then
1138                                 AC_MSG_ERROR([GTK+ $GTK3_MIN_VERSION or later isn't available, so Wireshark can't be compiled])
1139                         else
1140                                 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1141                         fi
1142                 fi
1143                 wireshark_bin=""
1144                 wireshark_man=""
1145         fi
1146         # Use GLIB_CFLAGS
1147         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1148         [
1149                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1150                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1151         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1152 else
1153         #
1154         # We have GTK+, and thus will be building Wireshark (if the user
1155         # had explicitly disabled Wireshark, we wouldn't have looked for
1156         # GTK+, so we wouldn't think we had it, and thus wouldn't be here).
1157         #
1158         wireshark_bin="wireshark\$(EXEEXT)"
1159         wireshark_man="wireshark.1"
1160         wireshark_SUBDIRS="codecs ui/gtk"
1161         # Don't use GLIB_CFLAGS
1162         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1163
1164         CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1165         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1166         CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1167         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1168         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1169                 # Enable GSEAL when building with GTK > 2.20
1170                 # (Versions prior to 2.22 lacked some necessary accessors.)
1171                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1172         fi
1173 fi
1174
1175 #
1176 # "make dist" requires that we have the Qt build tools.
1177 #
1178 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1179 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1180 # installed; if they're still doing that in current Fedora releases,
1181 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1182 #
1183 AC_PATH_PROG(UIC, uic)
1184 if test "x$UIC" = x
1185 then
1186         AC_PATH_PROG(UIC, uic-qt4)
1187         if test "x$UIC" = x
1188         then
1189                 if test "x$with_qt" = "xyes"; then
1190                         #
1191                         # If you want to build with Qt, you'd better
1192                         # have uic.
1193                         #
1194                         AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1195                 else
1196                         #
1197                         # We shouldn't fail here, as the user's not
1198                         # building with Qt, and we shouldn't force them
1199                         # to have Qt installed if they're not doing so.
1200                         # "make dist" will fail if they do that, but
1201                         # we don't know whether they'll be doing that,
1202                         # so this is the best we can do.
1203                         #
1204                         UIC=uic
1205                 fi
1206         fi
1207 fi
1208 AC_SUBST(UIC)
1209 AC_PATH_PROG(MOC, moc)
1210 if test "x$MOC" = x
1211 then
1212         AC_PATH_PROG(MOC, moc-qt4)
1213         if test "x$MOC" = x
1214         then
1215                 if test "x$with_qt" = "xyes"; then
1216                         #
1217                         # If you want to build with Qt, you'd better
1218                         # have moc.
1219                         #
1220                         AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1221                 else
1222                         #
1223                         # We shouldn't fail here, as the user's not
1224                         # building with Qt, and we shouldn't force them
1225                         # to have Qt installed if they're not doing so.
1226                         # "make dist" will fail if they do that, but
1227                         # we don't know whether they'll be doing that,
1228                         # so this is the best we can do.
1229                         #
1230                         MIC=moc
1231                 fi
1232         fi
1233 fi
1234 AC_SUBST(MOC)
1235
1236 # Error out if a glib header other than a "top level" header
1237 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1238 #  is used.
1239 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1240
1241 # Error out on the usage of deprecated glib functions
1242 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1243
1244 #
1245 # Check whether GLib modules are supported, to determine whether we
1246 # can support plugins.
1247 #
1248 AC_MSG_CHECKING(whether GLib supports loadable modules)
1249 ac_save_CFLAGS="$CFLAGS"
1250 ac_save_LIBS="$LIBS"
1251 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1252 LIBS="$GLIB_LIBS $LIBS"
1253 AC_TRY_RUN([
1254 #include <glib.h>
1255 #include <gmodule.h>
1256 #include <stdio.h>
1257 #include <stdlib.h>
1258
1259 int
1260 main ()
1261 {
1262   if (g_module_supported())
1263     return 0;   /* success */
1264   else
1265     return 1;   /* failure */
1266 }
1267 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1268    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1269     ac_cv_glib_supports_modules=yes])
1270 CFLAGS="$ac_save_CFLAGS"
1271 LIBS="$ac_save_LIBS"
1272 if test "$ac_cv_glib_supports_modules" = yes ; then
1273   AC_MSG_RESULT(yes)
1274   have_plugins=yes
1275 else
1276   AC_MSG_RESULT(no)
1277   have_plugins=no
1278 fi
1279
1280 #
1281 # If we have <dlfcn.h>, check whether we can use dladdr to find a
1282 # filename (hopefully, a full pathname, but no guarantees) for
1283 # the executable.
1284 #
1285 if test "$ac_cv_header_dlfcn_h" = "yes"
1286 then
1287         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
1288         ac_save_CFLAGS="$CFLAGS"
1289         ac_save_LIBS="$LIBS"
1290         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1291         LIBS="$GLIB_LIBS $LIBS"
1292         AC_TRY_RUN([
1293 #define _GNU_SOURCE     /* required on Linux, sigh */
1294 #include <dlfcn.h>
1295
1296 int
1297 main(void)
1298 {
1299         Dl_info info;
1300
1301         if (!dladdr((void *)main, &info))
1302                 return 1;       /* failure */
1303         return 0;               /* assume success */
1304 }
1305 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
1306    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1307     ac_cv_dladdr_finds_executable_path=yes])
1308         CFLAGS="$ac_save_CFLAGS"
1309         LIBS="$ac_save_LIBS"
1310         if test x$ac_cv_dladdr_finds_executable_path = xyes
1311         then
1312                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
1313         fi
1314         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
1315 fi
1316
1317 #
1318 # Check whether GLib's printf supports thousands grouping. (This might
1319 # be different from the system's printf since GLib can optionally use
1320 # its own printf implementation.)
1321 #
1322 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1323 ac_save_CFLAGS="$CFLAGS"
1324 ac_save_LIBS="$LIBS"
1325 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1326 LIBS="$GLIB_LIBS $LIBS"
1327 AC_TRY_RUN([
1328 #include <glib.h>
1329 #include <locale.h>
1330 #include <stdio.h>
1331 #include <string.h>
1332
1333 int
1334 main ()
1335 {
1336   gchar *str;
1337   setlocale(LC_ALL, "en_US.UTF-8");
1338   str = g_strdup_printf("%'u", 123456);
1339   return (strcmp (str, "123,456") != 0);
1340 }
1341 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1342    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1343     ac_cv_glib_supports_printf_grouping=no])
1344 CFLAGS="$ac_save_CFLAGS"
1345 LIBS="$ac_save_LIBS"
1346 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1347   AC_MSG_RESULT(yes)
1348   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1349 else
1350   AC_MSG_RESULT(no)
1351 fi
1352
1353 if test "x$have_gtk" = "xyes"
1354 then
1355     #
1356     # We have GTK+; do we want the OS X integration functions and,
1357     # if so, do we have them and, if so, which versions do we have,
1358     # the old Carbon-based ones or the new Cocoa-based ones?
1359     #
1360     AC_MSG_CHECKING(whether to use OS X integration functions)
1361
1362     AC_ARG_WITH(osx-integration,
1363       AC_HELP_STRING( [--with-osx-integration],
1364                       [use OS X integration functions @<:@default=yes, if available@:>@]),
1365     [
1366         if test $withval = no
1367         then
1368             want_osx_integration=no
1369         else
1370             want_osx_integration=yes
1371         fi
1372     ],[
1373         want_osx_integration=yes
1374     ])
1375     if test "x$want_osx_integration" = "xno"; then
1376         AC_MSG_RESULT(no)
1377     else
1378         AC_MSG_RESULT(yes)
1379         AC_WIRESHARK_OSX_INTEGRATION_CHECK
1380     fi
1381 fi
1382
1383 AC_SUBST(wireshark_bin)
1384 AC_SUBST(wireshark_man)
1385 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1386 AM_CONDITIONAL(HAVE_WIRESHARK_CXX, test "$have_wireshark_cxx" = "yes")
1387
1388
1389 # Enable/disable tshark
1390
1391 AC_ARG_ENABLE(tshark,
1392   AC_HELP_STRING( [--enable-tshark],
1393                   [build TShark @<:@default=yes@:>@]),
1394     tshark=$enableval,enable_tshark=yes)
1395
1396 if test "x$enable_tshark" = "xyes" ; then
1397         tshark_bin="tshark\$(EXEEXT)"
1398         tshark_man="tshark.1"
1399         wiresharkfilter_man="wireshark-filter.4"
1400 else
1401         tshark_bin=""
1402         tshark_man=""
1403 fi
1404 AC_SUBST(tshark_bin)
1405 AC_SUBST(tshark_man)
1406 AC_SUBST(wiresharkfilter_man)
1407
1408
1409
1410 # Enable/disable editcap
1411
1412 AC_ARG_ENABLE(editcap,
1413   AC_HELP_STRING( [--enable-editcap],
1414                   [build editcap @<:@default=yes@:>@]),
1415     enable_editcap=$enableval,enable_editcap=yes)
1416
1417 if test "x$enable_editcap" = "xyes" ; then
1418         editcap_bin="editcap\$(EXEEXT)"
1419         editcap_man="editcap.1"
1420 else
1421         editcap_bin=""
1422         editcap_man=""
1423 fi
1424 AC_SUBST(editcap_bin)
1425 AC_SUBST(editcap_man)
1426
1427 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1428 # or not)
1429
1430 # Enable/disable capinfos
1431
1432 AC_ARG_ENABLE(capinfos,
1433   AC_HELP_STRING( [--enable-capinfos],
1434                   [build capinfos @<:@default=yes@:>@]),
1435     enable_capinfos=$enableval,enable_capinfos=yes)
1436
1437 if test "x$enable_capinfos" = "xyes" ; then
1438         capinfos_bin="capinfos\$(EXEEXT)"
1439         capinfos_man="capinfos.1"
1440 else
1441         capinfos_bin=""
1442         capinfos_man=""
1443 fi
1444 AC_SUBST(capinfos_bin)
1445 AC_SUBST(capinfos_man)
1446
1447
1448 # Enable/disable mergecap
1449
1450 AC_ARG_ENABLE(mergecap,
1451   AC_HELP_STRING( [--enable-mergecap],
1452                   [build mergecap @<:@default=yes@:>@]),
1453     enable_mergecap=$enableval,enable_mergecap=yes)
1454
1455 if test "x$enable_mergecap" = "xyes" ; then
1456         mergecap_bin="mergecap\$(EXEEXT)"
1457         mergecap_man="mergecap.1"
1458 else
1459         mergecap_bin=""
1460         mergecap_man=""
1461 fi
1462 AC_SUBST(mergecap_bin)
1463 AC_SUBST(mergecap_man)
1464
1465
1466 # Enable/disable reordercap
1467
1468 AC_ARG_ENABLE(reordercap,
1469   AC_HELP_STRING( [--enable-reordercap],
1470                   [build reordercap @<:@default=yes@:>@]),
1471     enable_reordercap=$enableval,enable_reordercap=yes)
1472
1473 if test "x$enable_reordercap" = "xyes" ; then
1474         reordercap_bin="reordercap\$(EXEEXT)"
1475         reordercap_man="reordercap.1"
1476 else
1477         reordercap_bin=""
1478         reordercap_man=""
1479 fi
1480 AC_SUBST(reordercap_bin)
1481 AC_SUBST(reordercap_man)
1482
1483
1484 # Enable/disable text2pcap
1485
1486 AC_ARG_ENABLE(text2pcap,
1487   AC_HELP_STRING( [--enable-text2pcap],
1488                   [build text2pcap @<:@default=yes@:>@]),
1489     text2pcap=$enableval,enable_text2pcap=yes)
1490
1491 if test "x$enable_text2pcap" = "xyes" ; then
1492         text2pcap_bin="text2pcap\$(EXEEXT)"
1493         text2pcap_man="text2pcap.1"
1494 else
1495         text2pcap_bin=""
1496         text2pcap_man=""
1497 fi
1498 AC_SUBST(text2pcap_bin)
1499 AC_SUBST(text2pcap_man)
1500
1501
1502 # Enable/disable dftest
1503
1504 AC_ARG_ENABLE(dftest,
1505   AC_HELP_STRING( [--enable-dftest],
1506                   [build dftest @<:@default=yes@:>@]),
1507     enable_dftest=$enableval,enable_dftest=yes)
1508
1509 if test "x$enable_dftest" = "xyes" ; then
1510         dftest_bin="dftest\$(EXEEXT)"
1511         dftest_man="dftest.1"
1512 else
1513         dftest_bin=""
1514         dftest_man=""
1515 fi
1516 AC_SUBST(dftest_bin)
1517 AC_SUBST(dftest_man)
1518
1519
1520 # Enable/disable randpkt
1521
1522 AC_ARG_ENABLE(randpkt,
1523   AC_HELP_STRING( [--enable-randpkt],
1524                   [build randpkt @<:@default=yes@:>@]),
1525     enable_randpkt=$enableval,enable_randpkt=yes)
1526
1527 if test "x$enable_randpkt" = "xyes" ; then
1528         randpkt_bin="randpkt\$(EXEEXT)"
1529         randpkt_man="randpkt.1"
1530 else
1531         randpkt_bin=""
1532         randpkt_man=""
1533 fi
1534 AC_SUBST(randpkt_bin)
1535 AC_SUBST(randpkt_man)
1536
1537
1538
1539 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1540 dnl "gethostbyname()".
1541 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1542
1543 dnl Checks for "connect()", used as a proxy for "socket()" - and
1544 dnl "-lsocket", if we need it to get "connect()".
1545 AC_WIRESHARK_SOCKET_LIB_CHECK
1546
1547 dnl pcap check
1548 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1549
1550 AC_ARG_WITH(pcap,
1551   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1552                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1553 [
1554         if test $withval = no
1555         then
1556                 want_pcap=no
1557         elif test $withval = yes
1558         then
1559                 want_pcap=yes
1560         else
1561                 want_pcap=yes
1562                 pcap_dir=$withval
1563         fi
1564 ],[
1565         want_pcap=yes
1566         pcap_dir=
1567 ])
1568 if test "x$want_pcap" = "xno" ; then
1569         AC_MSG_RESULT(no)
1570 else
1571         AC_MSG_RESULT(yes)
1572         AC_WIRESHARK_PCAP_CHECK
1573 fi
1574
1575
1576 dnl Check for airpcap
1577 AC_MSG_CHECKING(whether to include airpcap support)
1578 AC_ARG_ENABLE(airpcap,
1579   AC_HELP_STRING( [--enable-airpcap],
1580                   [use AirPcap in Wireshark @<:@default=yes@:>@]),
1581   enable_airpcap=$enableval, enable_airpcap=yes)
1582
1583 if test x$enable_airpcap = xyes; then
1584         if test "x$want_pcap" = "xno" ; then
1585                 enable_airpcap=no
1586                 AC_MSG_RESULT(pcap not available - disabling airpcap)
1587         else
1588                 AC_MSG_RESULT(yes)
1589                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1590         fi
1591 else
1592         AC_MSG_RESULT(no)
1593 fi
1594
1595
1596 dnl dumpcap check
1597 AC_MSG_CHECKING(whether to build dumpcap)
1598
1599 AC_ARG_ENABLE(dumpcap,
1600   AC_HELP_STRING( [--enable-dumpcap],
1601                   [build dumpcap @<:@default=yes@:>@]),
1602     enable_dumpcap=$enableval,enable_dumpcap=yes)
1603
1604 if test "x$enable_dumpcap" = "xyes" ; then
1605         if test "x$want_pcap" = "xno" ; then
1606                 enable_dumpcap=no
1607                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1608         else
1609                 AC_MSG_RESULT(yes)
1610         fi
1611 else
1612         AC_MSG_RESULT(no)
1613 fi
1614
1615 if test "x$enable_dumpcap" = "xyes" ; then
1616         dumpcap_bin="dumpcap\$(EXEEXT)"
1617         dumpcap_man="dumpcap.1"
1618 else
1619         dumpcap_bin=""
1620         dumpcap_man=""
1621 fi
1622 AC_SUBST(dumpcap_bin)
1623 AC_SUBST(dumpcap_man)
1624
1625 # Enable/disable rawshark
1626
1627 dnl rawshark check
1628 AC_MSG_CHECKING(whether to build rawshark)
1629
1630 AC_ARG_ENABLE(rawshark,
1631   AC_HELP_STRING( [--enable-rawshark],
1632                   [build rawshark @<:@default=yes@:>@]),
1633     rawshark=$enableval,enable_rawshark=yes)
1634
1635 if test "x$enable_rawshark" = "xyes" ; then
1636         if test "x$want_pcap" = "xno" ; then
1637                 enable_rawshark=no
1638                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1639         else
1640                 AC_MSG_RESULT(yes)
1641         fi
1642 else
1643         AC_MSG_RESULT(no)
1644 fi
1645
1646 if test "x$enable_rawshark" = "xyes" ; then
1647         rawshark_bin="rawshark\$(EXEEXT)"
1648         rawshark_man="rawshark.1"
1649 else
1650         rawshark_bin=""
1651         rawshark_man=""
1652 fi
1653 AC_SUBST(rawshark_bin)
1654 AC_SUBST(rawshark_man)
1655
1656 dnl Use pcap-ng by default
1657 AC_ARG_ENABLE(pcap-ng-default,
1658   AC_HELP_STRING( [--enable-pcap-ng-default],
1659                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
1660     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1661 if test x$enable_pcap_ng_default = xyes; then
1662         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1663 fi
1664
1665 dnl pcap remote check
1666 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1667
1668 AC_ARG_WITH(pcap-remote,
1669     AC_HELP_STRING([--with-pcap-remote],
1670                    [use libpcap remote capturing (requires libpcap)]),
1671 [
1672     if test $withval = no
1673     then
1674         want_pcap_remote=no
1675     else
1676         want_pcap_remote=yes
1677     fi
1678 ],[
1679     want_pcap_remote=no
1680 ])
1681 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1682     AC_MSG_RESULT(no)
1683 else
1684     AC_MSG_RESULT(yes)
1685     AC_WIRESHARK_PCAP_REMOTE_CHECK
1686 fi
1687
1688 dnl zlib check
1689 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1690
1691 AC_ARG_WITH(zlib,
1692   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1693                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1694 [
1695         if test "x$withval" = "xno"
1696         then
1697                 want_zlib=no
1698         elif test "x$withval" = "xyes"
1699         then
1700                 want_zlib=yes
1701         else
1702                 want_zlib=yes
1703                 zlib_dir="$withval"
1704         fi
1705 ],[
1706         #
1707         # Use zlib if it's present, otherwise don't.
1708         #
1709         want_zlib=ifavailable
1710         zlib_dir=
1711 ])
1712 if test "x$want_zlib" = "xno" ; then
1713         AC_MSG_RESULT(no)
1714 else
1715         AC_MSG_RESULT(yes)
1716         AC_WIRESHARK_ZLIB_CHECK
1717         if test "x$want_zlib" = "xno" ; then
1718                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1719         else
1720                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1721                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1722                 fi
1723         fi
1724 fi
1725
1726 dnl Lua check
1727 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1728
1729 AC_ARG_WITH(lua,
1730   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1731                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1732 [
1733         if test $withval = no
1734         then
1735                 want_lua=no
1736         elif test $withval = yes
1737         then
1738                 want_lua=yes
1739         else
1740                 want_lua=yes
1741                 lua_dir=$withval
1742         fi
1743 ],[
1744         #
1745         # Use liblua by default
1746         #
1747         want_lua=ifavailable
1748         lua_dir=
1749 ])
1750 if test "x$want_lua" = "xno" ; then
1751         AC_MSG_RESULT(no)
1752 else
1753         AC_MSG_RESULT(yes)
1754         AC_WIRESHARK_LIBLUA_CHECK
1755         if test "x$want_lua" = "xno" ; then
1756                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1757         fi
1758 fi
1759 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1760
1761
1762 dnl portaudio check
1763 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1764
1765 AC_ARG_WITH(portaudio,
1766   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1767                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
1768 [
1769         if test $withval = no
1770         then
1771                 want_portaudio=no
1772         elif test $withval = yes
1773         then
1774                 want_portaudio=yes
1775         else
1776                 want_portaudio=yes
1777                 portaudio_dir=$withval
1778         fi
1779 ],[
1780         #
1781         # Use libportaudio by default
1782         #
1783         want_portaudio=ifavailable
1784         portaudio_dir=
1785 ])
1786 if test "x$want_portaudio" = "xno" ; then
1787         AC_MSG_RESULT(no)
1788 else
1789         AC_MSG_RESULT(yes)
1790         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1791         if test "x$want_portaudio" = "xno" ; then
1792                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1793         fi
1794 fi
1795 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1796
1797
1798 dnl ipv6 check
1799 AC_ARG_ENABLE(ipv6,
1800   AC_HELP_STRING( [--enable-ipv6],
1801                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
1802     enable_ipv6=$enableval,enable_ipv6=yes)
1803
1804 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1805 if test "x$enable_ipv6" = "xno" ; then
1806         AC_MSG_RESULT(no)
1807 else
1808         AC_MSG_RESULT(yes)
1809         AC_WIRESHARK_IPV6_STACK
1810 fi
1811
1812
1813 dnl Check if dumpcap should be installed with filesystem capabilities
1814 AC_PATH_PROG(SETCAP, setcap)
1815 AC_ARG_ENABLE(setcap-install,
1816   AC_HELP_STRING( [--enable-setcap-install],
1817                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1818     enable_setcap_install=$enableval,enable_setcap_install=no)
1819
1820 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1821 if test "x$enable_setcap_install" = "xno" ; then
1822         AC_MSG_RESULT(no)
1823 else
1824         if test "x$SETCAP" = "x" ; then
1825                 AC_MSG_RESULT(no. Setcap not found)
1826         elif test "x$enable_dumpcap" = "xno" ; then
1827                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1828         else
1829                 AC_MSG_RESULT(yes)
1830         fi
1831 fi
1832
1833 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1834
1835 dnl Check if dumpcap should be installed setuid
1836 AC_ARG_ENABLE(setuid-install,
1837   AC_HELP_STRING( [--enable-setuid-install],
1838                   [install dumpcap as setuid @<:@default=no@:>@]),
1839     enable_setuid_install=$enableval,enable_setuid_install=no)
1840
1841 AC_MSG_CHECKING(whether to install dumpcap setuid)
1842 if test "x$enable_setuid_install" = "xno" ; then
1843         AC_MSG_RESULT(no)
1844 else
1845         if test "x$enable_setcap_install" = "xyes" ; then
1846                 enable_setuid_install=no
1847                 AC_MSG_RESULT(no; using setcap instead)
1848         elif test "x$enable_dumpcap" = "xno" ; then
1849                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1850         else
1851                 AC_MSG_RESULT(yes)
1852         fi
1853 fi
1854
1855 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1856 AC_CHECK_FUNCS(setresuid setresgid)
1857
1858 dnl ...but our Network Operations group is named "no"!
1859 DUMPCAP_GROUP=''
1860 AC_ARG_WITH(dumpcap-group,
1861   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1862                   [restrict dumpcap to GROUP]),
1863 [
1864   if test "x$withval" = "xyes"; then
1865       AC_MSG_ERROR([No dumpcap group specified.])
1866   elif test "x$withval" != "xno"; then
1867       if test "x$enable_dumpcap" = "xno" ; then
1868           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
1869       fi
1870       AC_MSG_RESULT($withval)
1871       DUMPCAP_GROUP="$withval"
1872   fi
1873 ])
1874 AC_SUBST(DUMPCAP_GROUP)
1875 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
1876
1877 dnl libcap (not libpcap) check
1878 LIBCAP_LIBS=''
1879 AC_MSG_CHECKING(whether to use the libcap capabilities library)
1880
1881 AC_ARG_WITH(libcap,
1882   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
1883                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
1884 [
1885 if   test "x$withval" = "xno";  then
1886         want_libcap=no
1887 elif test "x$withval" = "xyes"; then
1888         want_libcap=yes
1889 elif test -d "$withval"; then
1890         want_libcap=yes
1891         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1892 fi
1893 ])
1894 if test "x$with_libcap" = "xno" ; then
1895         AC_MSG_RESULT(no)
1896 else
1897         AC_MSG_RESULT(yes)
1898         AC_WIRESHARK_LIBCAP_CHECK
1899 fi
1900 AC_SUBST(LIBCAP_LIBS)
1901
1902 dnl Checks for header files.
1903 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
1904 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)
1905 AC_CHECK_HEADERS(netinet/in.h)
1906 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
1907
1908 dnl SSL Check
1909 SSL_LIBS=''
1910 AC_MSG_CHECKING(whether to use SSL library)
1911
1912 AC_ARG_WITH(ssl,
1913   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
1914                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
1915 [
1916 if test "x$withval" = "xno";  then
1917         want_ssl=no
1918 elif test "x$withval" = "xyes"; then
1919         want_ssl=yes
1920 elif test -d "$withval"; then
1921         want_ssl=yes
1922         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1923 fi
1924 ],[
1925         want_ssl=no
1926 ])
1927 if test "x$want_ssl" = "xyes"; then
1928         AC_MSG_RESULT(yes)
1929         AC_CHECK_LIB(crypto,EVP_md5,
1930             [
1931                 SSL_LIBS=-lcrypto
1932             ],
1933             [
1934                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
1935             ])
1936 else
1937         AC_MSG_RESULT(no)
1938 fi
1939 AC_SUBST(SSL_LIBS)
1940
1941 dnl kerberos check
1942 AC_MSG_CHECKING(whether to use Kerberos library)
1943
1944 AC_ARG_WITH(krb5,
1945   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1946                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
1947 [
1948         if test $withval = no
1949         then
1950                 want_krb5=no
1951         elif test $withval = yes
1952         then
1953                 want_krb5=yes
1954         else
1955                 want_krb5=yes
1956                 krb5_dir=$withval
1957         fi
1958 ],[
1959         #
1960         # Use Kerberos library if available, otherwise don't.
1961         #
1962         want_krb5=ifavailable
1963         krb5_dir=
1964 ])
1965 if test "x$want_krb5" = "xno" ; then
1966         AC_MSG_RESULT(no)
1967 else
1968         AC_MSG_RESULT(yes)
1969         AC_WIRESHARK_KRB5_CHECK
1970 fi
1971
1972
1973 dnl c-ares Check
1974 C_ARES_LIBS=''
1975 AC_MSG_CHECKING(whether to use the c-ares library if available)
1976
1977 AC_ARG_WITH(c-ares,
1978   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
1979                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
1980 [
1981 if   test "x$withval" = "xno";  then
1982         want_c_ares=no
1983 elif test "x$withval" = "xyes"; then
1984         want_c_ares=yes
1985 elif test -d "$withval"; then
1986         want_c_ares=yes
1987         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1988 fi
1989 ])
1990 if test "x$want_c_ares" = "xno" ; then
1991         AC_MSG_RESULT(no)
1992 else
1993         AC_MSG_RESULT(yes)
1994         AC_WIRESHARK_C_ARES_CHECK
1995 fi
1996 AC_SUBST(C_ARES_LIBS)
1997
1998 dnl ADNS Check
1999 ADNS_LIBS=''
2000 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
2001
2002 AC_ARG_WITH(adns,
2003   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
2004                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2005 [
2006 if   test "x$withval" = "xno";  then
2007         want_adns=no
2008 elif test "x$withval" = "xyes"; then
2009         want_adns=yes
2010 elif test -d "$withval"; then
2011         want_adns=yes
2012         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2013 fi
2014 ])
2015 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
2016         AC_MSG_RESULT(no)
2017 else
2018         AC_MSG_RESULT(yes)
2019         AC_WIRESHARK_ADNS_CHECK
2020 fi
2021 AC_SUBST(ADNS_LIBS)
2022
2023 dnl GEOIP Check
2024 GEOIP_LIBS=''
2025 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2026
2027 AC_ARG_WITH(geoip,
2028   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2029                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2030 [
2031 if   test "x$withval" = "xno";  then
2032         want_geoip=no
2033 elif test "x$withval" = "xyes"; then
2034         want_geoip=yes
2035 elif test -d "$withval"; then
2036         want_geoip=yes
2037         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2038 fi
2039 ])
2040 if test "x$want_geoip" = "xno"; then
2041         AC_MSG_RESULT(no)
2042 else
2043         AC_MSG_RESULT(yes)
2044         AC_WIRESHARK_GEOIP_CHECK
2045 fi
2046 AC_SUBST(GEOIP_LIBS)
2047
2048 dnl Python devel Check
2049 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2050
2051 AC_ARG_WITH(python,
2052     AC_HELP_STRING( [--with-python@<:@=DIR@:>@],
2053                     [use Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@ (BROKEN/UNSTABLE)]),
2054 [
2055         pythondir='${libdir}/wireshark/python/${VERSION}'
2056         if test "x$withval" = "xno"
2057         then
2058                 want_python=no
2059         elif test "x$withval" = "xyes"
2060         then
2061                 want_python=yes
2062         else
2063                 want_python=yes
2064                 pythondir="$withval"
2065         fi
2066 ],[
2067         # By default (user didn't explicitly enable Python), don't enable
2068         # Python support.
2069         #
2070         want_python=no
2071         #pythondir='${libdir}/wireshark/python/${VERSION}'
2072 ])
2073 if test "x$want_python" = "xno" ; then
2074         AC_MSG_RESULT(no)
2075 else
2076         AC_MSG_RESULT(yes)
2077         AC_WIRESHARK_PYTHON_CHECK
2078 fi
2079 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2080 AC_SUBST(pythondir)
2081
2082 #
2083 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2084 # never return (just like Charlie on the MTA).
2085 #
2086 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2087 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2088 # follow the function name, so we need two different flavors of
2089 # noreturn tag.
2090 #
2091 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2092
2093 dnl Checks for typedefs, structures, and compiler characteristics.
2094 # AC_C_CONST
2095
2096 # Check how we can get the time zone abbreviation
2097 AC_WIRESHARK_TIMEZONE_ABBREV
2098
2099 # We need to know whether "struct stat" has an "st_flags" member
2100 # for file_user_immutable().
2101
2102 AC_WIRESHARK_STRUCT_ST_FLAGS
2103
2104 # We need to know whether "struct sockaddr" has an "sa_len" member
2105 # for get_interface_list().
2106
2107 AC_WIRESHARK_STRUCT_SA_LEN
2108
2109 # We must know our byte order
2110 AC_C_BIGENDIAN
2111
2112 # Checks whether "-traditional" is needed when using "ioctl".
2113 # XXX - do we need this?
2114 AC_PROG_GCC_TRADITIONAL
2115
2116 GETOPT_LO=""
2117 AC_CHECK_FUNC(getopt,
2118   [GETOPT_LO=""
2119    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2120   ],
2121   GETOPT_LO="wsgetopt.lo"
2122 )
2123 if test "$ac_cv_func_getopt" = no ; then
2124   GETOPT_LO="wsgetopt.lo"
2125 fi
2126 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2127 AC_SUBST(GETOPT_LO)
2128
2129 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2130   STRNCASECMP_LO="strncasecmp.lo")
2131 if test "$ac_cv_func_strncasecmp" = no ; then
2132   STRNCASECMP_LO="strncasecmp.lo"
2133 fi
2134 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2135 AC_SUBST(STRNCASECMP_LO)
2136
2137 AC_CHECK_FUNCS(mkstemp mkdtemp)
2138
2139 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2140     have_inet_aton=no)
2141 if test "$have_inet_aton" = no; then
2142   INET_ATON_LO="inet_aton.lo"
2143   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
2144 else
2145   INET_ATON_LO=""
2146 fi
2147 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2148 AC_SUBST(INET_ATON_LO)
2149
2150 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2151   dnl check for pre-BIND82 inet_pton() bug.
2152   AC_MSG_CHECKING(for broken inet_pton)
2153   AC_TRY_RUN([#include <sys/types.h>
2154 #include <sys/socket.h>
2155 #include <netinet/in.h>
2156 #include <arpa/inet.h>
2157 int main()
2158 {
2159 #ifdef AF_INET6
2160   char buf[16];
2161   /* this should return 0 (error) */
2162   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2163 #else
2164   return 1;
2165 #endif
2166 }], [AC_MSG_RESULT(ok);
2167 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2168 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2169 have_inet_pton=no])],
2170 have_inet_pton=no)
2171 if test "$have_inet_pton" = no; then
2172   INET_PTON_LO="inet_pton.lo"
2173 else
2174   INET_PTON_LO=""
2175 fi
2176 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2177 AC_SUBST(INET_PTON_LO)
2178
2179 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2180   AC_MSG_CHECKING([for inet_ntop prototype])
2181   AC_TRY_COMPILE([#include <stdio.h>
2182 #include <sys/types.h>
2183 #include <sys/socket.h>
2184 #include <netinet/in.h>
2185 #include <arpa/inet.h>
2186
2187 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2188     AC_MSG_RESULT(yes)
2189     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2190     [Define if inet_ntop() prototype exists])], [
2191     AC_TRY_COMPILE([#include <stdio.h>
2192 #include <sys/types.h>
2193 #include <sys/socket.h>
2194 #include <netinet/in.h>
2195 #include <arpa/inet.h>
2196
2197 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2198       AC_MSG_RESULT(yes)
2199       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2200       [Define if inet_ntop() prototype exists])], [
2201       AC_MSG_RESULT(no)])])
2202   INET_NTOP_LO=""], [
2203   INET_NTOP_LO="inet_ntop.lo"
2204   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2205   [Define if inet/v6defs.h needs to be included])])
2206 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2207 AC_SUBST(INET_NTOP_LO)
2208
2209 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2210   [STRPTIME_LO="strptime.lo"
2211    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2212 ])
2213 if test "$ac_cv_func_strptime" = no ; then
2214   STRPTIME_LO="strptime.lo"
2215 fi
2216 AC_SUBST(STRPTIME_C)
2217 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2218 AC_SUBST(STRPTIME_LO)
2219
2220 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2221 AC_CHECK_FUNCS(issetugid)
2222 AC_CHECK_FUNCS(mmap mprotect sysconf)
2223 AC_CHECK_FUNCS(strtoll)
2224
2225 dnl blank for now, but will be used in future
2226 AC_SUBST(wireshark_SUBDIRS)
2227
2228 dnl
2229 dnl check whether plugins should be enabled and, if they should be,
2230 dnl check for plugins directory - stolen from Amanda's configure.ac
2231 dnl
2232 dnl we don't wish to expand ${libdir} yet
2233 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2234 AC_ARG_WITH(plugins,
2235   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2236                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2237 [
2238   if test "x$withval" = "xno"; then
2239     have_plugins=no
2240   elif test "x$have_plugins" = "xno"; then
2241       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2242   elif test "x$withval" != "xyes"; then
2243       plugindir="$withval"
2244   fi
2245 ])
2246 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2247 if test x$have_plugins = xyes
2248 then
2249   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2250 fi
2251 AC_SUBST(plugindir)
2252 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2253
2254 #
2255 # The plugin dissectors reside in ./plugins/PROTO/
2256 #
2257 PLUGIN_LIBS=""
2258 AC_SUBST(PLUGIN_LIBS)
2259
2260 #
2261 # Check if (emem) memory allocations must be 8-byte aligned.
2262 # I haven't been able to write C code that reliably makes that determination
2263 # (different versions of GCC with or without optimization give different
2264 # results) so just assume everything except (32-bit) x86 needs 8-byte
2265 # alignment (64-bit platforms either require 8-byte alignment for pointers
2266 # and 64-bit integral data types or may get better performance from that;
2267 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2268 # platforms would only require it, or get better performance from it,
2269 # for 64-bit floating-point values.).
2270 #
2271 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2272 case $host_cpu in
2273         i386|i486|i586|i686)
2274                 AC_MSG_RESULT(no)
2275                 ;;
2276         *)
2277                 AC_MSG_RESULT(yes)
2278                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2279                 ;;
2280 esac
2281
2282 dnl libtool defs
2283 #
2284 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2285 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2286 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2287 #
2288 # With older version(s) of those tool(s), however, it's not just an
2289 # alias, and the configure scripts don't work without it.
2290 #
2291 AM_PROG_LIBTOOL
2292 AC_SUBST(LIBTOOL_DEPS)
2293
2294 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2295 if test x$enable_static = xyes -a x$have_plugins = xyes
2296 then
2297   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2298 fi
2299 AC_SUBST(ENABLE_STATIC)
2300
2301 dnl Save the cacheable configure results to config.cache before recursing
2302 AC_CACHE_SAVE
2303
2304 sinclude(plugins/Custom.m4) dnl
2305 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2306
2307 sinclude(asn1/Custom.m4) dnl
2308 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2309
2310 AC_CONFIG_HEADERS(config.h)
2311 AC_OUTPUT(
2312   Makefile
2313   doxygen.cfg
2314   asn1/Makefile
2315   _CUSTOM_ASN1_AC_OUTPUT_
2316   asn1/acp133/Makefile
2317   asn1/acse/Makefile
2318   asn1/ansi_map/Makefile
2319   asn1/ansi_tcap/Makefile
2320   asn1/c1222/Makefile
2321   asn1/camel/Makefile
2322   asn1/cdt/Makefile
2323   asn1/charging_ase/Makefile
2324   asn1/cmip/Makefile
2325   asn1/cmp/Makefile
2326   asn1/crmf/Makefile
2327   asn1/cms/Makefile
2328   asn1/credssp/Makefile
2329   asn1/dap/Makefile
2330   asn1/disp/Makefile
2331   asn1/dop/Makefile
2332   asn1/dsp/Makefile
2333   asn1/ess/Makefile
2334   asn1/ftam/Makefile
2335   asn1/gnm/Makefile
2336   asn1/goose/Makefile
2337   asn1/gprscdr/Makefile
2338   asn1/gsm_map/Makefile
2339   asn1/h225/Makefile
2340   asn1/h235/Makefile
2341   asn1/h245/Makefile
2342   asn1/h248/Makefile
2343   asn1/h282/Makefile
2344   asn1/h283/Makefile
2345   asn1/h323/Makefile
2346   asn1/h450/Makefile
2347   asn1/h450-ros/Makefile
2348   asn1/h460/Makefile
2349   asn1/h501/Makefile
2350   asn1/HI2Operations/Makefile
2351   asn1/hnbap/Makefile
2352   asn1/idmp/Makefile
2353   asn1/inap/Makefile
2354   asn1/isdn-sup/Makefile
2355   asn1/kerberos/Makefile
2356   asn1/lcsap/Makefile
2357   asn1/ldap/Makefile
2358   asn1/logotypecertextn/Makefile
2359   asn1/lpp/Makefile
2360   asn1/lppa/Makefile
2361   asn1/lppe/Makefile
2362   asn1/lte-rrc/Makefile
2363   asn1/m3ap/Makefile
2364   asn1/mms/Makefile
2365   asn1/mpeg-audio/Makefile
2366   asn1/mpeg-pes/Makefile
2367   asn1/nbap/Makefile
2368   asn1/ns_cert_exts/Makefile
2369   asn1/ocsp/Makefile
2370   asn1/p1/Makefile
2371   asn1/p22/Makefile
2372   asn1/p7/Makefile
2373   asn1/p772/Makefile
2374   asn1/pcap/Makefile
2375   asn1/pkcs1/Makefile
2376   asn1/pkcs12/Makefile
2377   asn1/pkinit/Makefile
2378   asn1/pkixac/Makefile
2379   asn1/pkix1explicit/Makefile
2380   asn1/pkix1implicit/Makefile
2381   asn1/pkixproxy/Makefile
2382   asn1/pkixqualified/Makefile
2383   asn1/pkixtsp/Makefile
2384   asn1/pres/Makefile
2385   asn1/q932/Makefile
2386   asn1/q932-ros/Makefile
2387   asn1/qsig/Makefile
2388   asn1/ranap/Makefile
2389   asn1/rnsap/Makefile
2390   asn1/ros/Makefile
2391   asn1/rrc/Makefile
2392   asn1/rrlp/Makefile
2393   asn1/rtse/Makefile
2394   asn1/rua/Makefile
2395   asn1/s1ap/Makefile
2396   asn1/sabp/Makefile
2397   asn1/sbc-ap/Makefile
2398   asn1/smrse/Makefile
2399   asn1/snmp/Makefile
2400   asn1/spnego/Makefile
2401   asn1/sv/Makefile
2402   asn1/t124/Makefile
2403   asn1/t125/Makefile
2404   asn1/t38/Makefile
2405   asn1/tcap/Makefile
2406   asn1/tetra/Makefile
2407   asn1/ulp/Makefile
2408   asn1/wlancertextn/Makefile
2409   asn1/x2ap/Makefile
2410   asn1/x509af/Makefile
2411   asn1/x509ce/Makefile
2412   asn1/x509if/Makefile
2413   asn1/x509sat/Makefile
2414   asn1/x721/Makefile
2415   doc/Makefile
2416   docbook/Makefile
2417   epan/Makefile
2418   epan/crypt/Makefile
2419   epan/doxygen.cfg
2420   epan/dfilter/Makefile
2421   epan/dissectors/Makefile
2422   epan/dissectors/dcerpc/Makefile
2423   epan/dissectors/pidl/Makefile
2424   epan/ftypes/Makefile
2425   epan/wmem/Makefile
2426   epan/wslua/Makefile
2427   epan/wspython/Makefile
2428   codecs/Makefile
2429   ui/Makefile
2430   ui/doxygen.cfg
2431   ui/gtk/Makefile
2432   ui/gtk/doxygen.cfg
2433   ui/cli/Makefile
2434   ui/qt/Makefile
2435   ui/qt/doxygen.cfg
2436   help/Makefile
2437   packaging/Makefile
2438   packaging/macosx/Info.plist
2439   packaging/macosx/Makefile
2440   packaging/macosx/osx-dmg.sh
2441   packaging/nsis/Makefile
2442   packaging/rpm/Makefile
2443   packaging/rpm/SPECS/Makefile
2444   packaging/rpm/SPECS/wireshark.spec
2445   packaging/svr4/Makefile
2446   packaging/svr4/checkinstall
2447   packaging/svr4/pkginfo
2448   plugins/Makefile
2449   plugins/asn1/Makefile
2450   plugins/docsis/Makefile
2451   plugins/ethercat/Makefile
2452   plugins/gryphon/Makefile
2453   plugins/irda/Makefile
2454   plugins/m2m/Makefile
2455   plugins/mate/Makefile
2456   plugins/opcua/Makefile
2457   plugins/profinet/Makefile
2458   plugins/stats_tree/Makefile
2459   plugins/unistim/Makefile
2460   plugins/wimax/Makefile
2461   plugins/wimaxasncp/Makefile
2462   plugins/wimaxmacphy/Makefile
2463   tools/Makefile
2464   tools/lemon/Makefile
2465   wiretap/Makefile
2466   wsutil/Makefile
2467   _CUSTOM_AC_OUTPUT_
2468   ,)
2469 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2470
2471
2472 # Pretty messages
2473
2474 if test "x$have_qt" = "xyes"; then
2475         gui_lib_message=" (with Qt)"
2476 else
2477         if test "x$have_gtk" = "xyes"; then
2478                 if test "x$with_gtk3" = "xyes"; then
2479                         gui_lib_message=" (with GTK+ 3"
2480                 else
2481                         gui_lib_message=" (with GTK+ 2"
2482                 fi
2483                 if test "x$have_ige_mac" = "xyes"; then
2484                         gui_lib_message="$gui_lib_message and Mac OS X integration)"
2485                 else
2486                         gui_lib_message="$gui_lib_message)"
2487                 fi
2488         fi
2489 fi
2490
2491 if test "x$enable_setcap_install" = "xyes" ; then
2492         setcap_message="yes"
2493 else
2494         setcap_message="no"
2495 fi
2496
2497 if test "x$enable_setuid_install" = "xyes" ; then
2498         setuid_message="yes"
2499 else
2500         setuid_message="no"
2501 fi
2502
2503 if test "x$DUMPCAP_GROUP" = "x" ; then
2504         dumpcap_group_message="(none)"
2505 else
2506         dumpcap_group_message="$DUMPCAP_GROUP"
2507 fi
2508
2509 if test "x$want_zlib" = "xno" ; then
2510         zlib_message="no"
2511 else
2512         zlib_message="yes"
2513 fi
2514
2515 if test "x$want_lua" = "xyes" ; then
2516         lua_message="yes"
2517 else
2518         lua_message="no"
2519 fi
2520
2521 if test "x$want_python" = "xno"; then
2522         python_message="no"
2523 else
2524         python_message="yes"
2525 fi
2526
2527 if test "x$want_portaudio" = "xyes" ; then
2528         portaudio_message="yes"
2529 else
2530         portaudio_message="no"
2531 fi
2532
2533 if test "x$want_ssl" = "xno" ; then
2534         ssl_message="no"
2535 else
2536         ssl_message="yes"
2537 fi
2538
2539 if test "x$want_krb5" = "xno" ; then
2540         krb5_message="no"
2541 else
2542         krb5_message="yes ($ac_krb5_version)"
2543 fi
2544
2545 if test "x$have_good_c_ares" = "xyes" ; then
2546         c_ares_message="yes"
2547 else
2548         c_ares_message="no"
2549 fi
2550
2551 if test "x$have_good_adns" = "xyes" ; then
2552         adns_message="yes"
2553 else
2554         if test "x$have_good_c_ares" = "xyes" ; then
2555                 adns_message="no (using c-ares instead)"
2556         else
2557                 adns_message="no"
2558         fi
2559 fi
2560
2561 if test "x$have_good_libcap" = "xyes" ; then
2562         libcap_message="yes"
2563 else
2564         libcap_message="no"
2565 fi
2566
2567 if test "x$have_good_geoip" = "xyes" ; then
2568         geoip_message="yes"
2569 else
2570         geoip_message="no"
2571 fi
2572
2573 echo ""
2574 echo "The Wireshark package has been configured with the following options."
2575 echo "                    Build wireshark : $enable_wireshark""$gui_lib_message"
2576 echo "                       Build tshark : $enable_tshark"
2577 echo "                     Build capinfos : $enable_capinfos"
2578 echo "                      Build editcap : $enable_editcap"
2579 echo "                      Build dumpcap : $enable_dumpcap"
2580 echo "                     Build mergecap : $enable_mergecap"
2581 echo "                   Build reordercap : $enable_reordercap"
2582 echo "                    Build text2pcap : $enable_text2pcap"
2583 echo "                      Build randpkt : $enable_randpkt"
2584 echo "                       Build dftest : $enable_dftest"
2585 echo "                     Build rawshark : $enable_rawshark"
2586 echo ""
2587 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2588 echo "  Install dumpcap with capabilities : $setcap_message"
2589 echo "             Install dumpcap setuid : $setuid_message"
2590 echo "                  Use dumpcap group : $dumpcap_group_message"
2591 echo "                        Use plugins : $have_plugins"
2592 echo "                    Use Lua library : $lua_message"
2593 echo "                 Use Python binding : $python_message"
2594 echo "                   Build rtp_player : $portaudio_message"
2595 echo "             Build profile binaries : $enable_profile_build"
2596 echo "                   Use pcap library : $want_pcap"
2597 echo "                   Use zlib library : $zlib_message"
2598 echo "               Use kerberos library : $krb5_message"
2599 echo "                 Use c-ares library : $c_ares_message"
2600 echo "               Use GNU ADNS library : $adns_message"
2601 echo "                Use SMI MIB library : $libsmi_message"
2602 echo "             Use GNU crypto library : $gcrypt_message"
2603 echo "             Use SSL crypto library : $ssl_message"
2604 echo "           Use IPv6 name resolution : $enable_ipv6"
2605 echo "                 Use gnutls library : $tls_message"
2606 echo "     Use POSIX capabilities library : $libcap_message"
2607 echo "                  Use GeoIP library : $geoip_message"
2608 echo "                     Use nl library : $libnl_message"