Remove searching in $prefix for packages as requested in bug 6011 and bug 7926.
[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 dnl Look in /usr/local for header files and libraries ?
825 dnl XXX FIXME don't include /usr/local if it is already in the system
826 dnl search path as this causes gcc 3.2 on Linux to complain about a change
827 dnl of the system search order for includes
828 AC_ARG_ENABLE(usr-local,
829   AC_HELP_STRING( [--enable-usr-local],
830                   [look for headers and libs in /usr/local tree @<:@default=yes@:>@]),
831     ac_cv_enable_usr_local=$enableval,ac_cv_enable_usr_local=yes)
832
833 AC_MSG_CHECKING(whether to use /usr/local for headers and libraries)
834 if test "x$ac_cv_enable_usr_local" = "xyes" ; then
835         if test -d "/usr/local"; then
836                 AC_MSG_RESULT(yes)
837                 #
838                 # Arrange that we search for header files in the source directory
839                 # and in its "wiretap" subdirectory, as well as in "/usr/local/include",
840                 # as various packages we use ("libpcap", "zlib", "adns")
841                 # may have been installed under "/usr/local/include".
842                 #
843                 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
844
845                 #
846                 # Arrange that we search for libraries in "/usr/local/lib".
847                 #
848                 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, /usr/local/lib)
849         else
850                 AC_MSG_RESULT(no)
851         fi
852 else
853         AC_MSG_RESULT(no)
854 fi
855
856 #
857 # If we're running Solaris, and LD_LIBRARY_PATH is defined, add it as a
858 # link directory.
859 #
860 case "$host_os" in
861   solaris*)
862     AC_MSG_CHECKING(for LD_LIBRARY_PATH, since you appear to be running Solaris)
863     if test x$LD_LIBRARY_PATH != x ; then
864       LIBS="$LIBS -R$LD_LIBRARY_PATH"
865       AC_MSG_RESULT(yes -- added LD_LIBRARY_PATH to run-time linker path)
866     else
867       AC_MSG_RESULT(no -- this may be a problem in a few seconds)
868     fi
869   ;;
870 esac
871
872 #
873 # Check for versions of "sed" inadequate to handle, in libtool, a list
874 # of object files as large as the list in Wireshark.
875 #
876 # On Solaris, we check for "/bin/sed", "/usr/bin/sed", and "/usr/ucb/sed",
877 # as both "/usr/bin/sed" (which is also "/bin/sed", as "/bin" is just a
878 # symlink to "/usr/bin", but people may have "/bin" before "/usr/bin" in
879 # their search path) and "/usr/ucb/sed" are inadequate; "/usr/xpg4/bin/sed"
880 # is the only "sed" that comes with Solaris that can handle Wireshark.
881 #
882 # Add any checks here that are necessary for other OSes.
883 #
884 AC_WIRESHARK_GNU_SED_CHECK
885 if test "$HAVE_GNU_SED" = no ; then
886         case "$host_os" in
887         solaris*)
888                 AC_MSG_CHECKING(whether one of /usr/bin/sed or /bin/sed or /usr/ucb/sed will be used)
889                 case `which sed` in
890                         /bin/sed|/usr/bin/sed|/usr/ucb/sed)
891                         AC_MSG_RESULT(yes)
892                         AC_MSG_ERROR([change your path to search /usr/xpg4/bin or directory containing GNU sed before /usr/bin (and /bin and /usr/ucb)])
893                         ;;
894
895                         *)
896                         AC_MSG_RESULT(no)
897                         ;;
898                 esac
899                 ;;
900
901         *)
902                 :
903                 ;;
904         esac
905 fi
906
907 # Enable/disable wireshark
908
909 AC_ARG_ENABLE(wireshark,
910   AC_HELP_STRING( [--enable-wireshark],
911                   [build GTK+-based Wireshark @<:@default=yes, if GTK+ available@:>@]),
912     enable_wireshark=$enableval,enable_wireshark=yes)
913
914 AC_ARG_ENABLE(packet-editor,
915   AC_HELP_STRING( [--enable-packet-editor],
916                   [add support for packet editor in Wireshark @<:@default=no@:>@]),
917     enable_packet_editor=$enableval,enable_packet_editor=no)
918 if test x$enable_packet_editor = xyes; then
919         AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor])
920 fi
921
922 AC_ARG_ENABLE(profile-build,
923   AC_HELP_STRING( [--enable-profile-build],
924                   [build profile-ready binaries @<:@default=no@:>@]),
925     enable_profile_build=$enableval,enable_profile_build=no)
926 AM_CONDITIONAL(USE_PROFILE_BUILD, test x$enable_profile_build = xyes)
927 AC_MSG_CHECKING(if profile builds must be generated)
928 if test "x$enable_profile_build" = "xyes" ; then
929         if test "x$GCC" = "xyes" -o "x$CLANG" = "xyes" ; then
930                 AC_MSG_RESULT(yes)
931                 CFLAGS=" -pg $CFLAGS"
932                 CXXFLAGS=" -pg $CXXFLAGS"
933         else
934                 AC_MSG_RESULT(no)
935                 echo "Building profile binaries currently only supported for GCC and clang."
936         fi
937 else
938         AC_MSG_RESULT(no)
939 fi
940
941 # Create DATAFILE_DIR #define for config.h
942 datafiledir=$datadir/wireshark
943 datafiledir=`(
944     test "x$prefix" = xNONE && prefix=$ac_default_prefix
945     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
946     # Ugly hack, but I don't see how this problem can be solved
947     # properly that DATAFILE_DIR had a value starting with
948     # "${prefix}/" instead of e.g. "/usr/local/"
949     eval eval echo "$datafiledir"
950 )`
951 AC_DEFINE_UNQUOTED(DATAFILE_DIR,"$datafiledir", [Directory for data])
952
953 # Create DOC_DIR #define for config.h
954 docdir=`(
955     test "x$prefix" = xNONE && prefix=$ac_default_prefix
956     test "x$exec_prefix" = xNONE && exec_prefix=${prefix}
957     # Ugly hack, but I don't see how this problem can be solved
958     # properly that DOC_DIR had a value starting with
959     # "${prefix}/" instead of e.g. "/usr/local/"
960     eval eval echo "$docdir"
961 )`
962 AC_DEFINE_UNQUOTED(DOC_DIR, "$docdir", [Directory for docs])
963
964 GTK2_MIN_VERSION=2.12.0
965 AC_SUBST(GTK2_MIN_VERSION)
966 GTK3_MIN_VERSION=3.0.0
967 AC_SUBST(GTK3_MIN_VERSION)
968 QT_MIN_VERSION=4.6.0
969 AC_SUBST(QT_MIN_VERSION)
970 # GTK+ and Qt checks; we require GTK+ $GTK2_MIN_VERSION or later or
971 # GTK3_MIN_VERSION or later or Qt $QT_MIN_VERSION or later.
972 #
973 # We only do those if we're going to be building Wireshark;
974 # otherwise, we don't have any GUI to build, so we don't use
975 # GTK+ or Qt.
976 #
977 # We don't add $GTK_LIBS or $Qt_LIBS to LIBS, because we don't want to
978 # force all programs to be built with GTK+ or Qt.
979 #
980 # Release dates for GTK+ versions:
981 # 2.12.0: 14 Sep 2007
982 # 2.14.0: 04 Sep 2008
983 # 2.16.0: 13 Mar 2009
984 # 2.18.0: 23 Sep 2009
985 # 2.20.0: 23 Mar 2010
986 # 2.22.0: 23 Sep 2010
987 # 2.24.0: 30 Jan 2011
988 # 3.0.0:  10 Feb 2011
989 # 3.2.0:  25 Sep 2011
990 # 3.4.0:  26 Mar 2012
991 # 3.6.0:  24 Sep 2012
992 # 3.8.0:  25 Mar 2013
993
994 if test "x$enable_wireshark" = "xyes"; then
995         if test "x$with_qt" = "xyes"; then
996
997                 AC_MSG_CHECKING(whether we have a working C++ compiler)
998                 AC_LANG_PUSH([C++])
999                 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
1000                         [AC_MSG_RESULT(yes)],
1001                         [
1002                          AC_MSG_RESULT(no)
1003                          AC_MSG_ERROR(Need a working C++ compiler to build Wireshark with Qt)
1004                         ])
1005                 AC_LANG_POP([C++])
1006
1007                 AM_PATH_QT($QT_MIN_VERSION,
1008                 [
1009                         CFLAGS="$CFLAGS $Qt_CFLAGS"
1010                         CXXFLAGS="$CXXFLAGS $Qt_CFLAGS"
1011                         have_qt=yes
1012                 ]
1013                 , [AC_MSG_ERROR([Qt is not available])])
1014
1015                 #
1016                 # XXX - greasy hack to make ui/gtk/recent.c
1017                 # compile.
1018                 #
1019                 CPPFLAGS="-DQT_GUI_LIB"
1020
1021                 #
1022                 # We don't know whether we have GTK+, but we
1023                 # won't be using it, so it's as if we don't
1024                 # have it.
1025                 #
1026                 have_gtk=no
1027         else
1028                 #
1029                 # Not Qt - either GTK+ 3.x or 2.x.
1030                 #
1031                 if test "x$with_gtk3" = "xyes"; then
1032                         AM_PATH_GTK_3_0(3.0.0,
1033                         [
1034                                 CFLAGS="$CFLAGS $GTK_CFLAGS"
1035                                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1036                                 have_gtk=yes
1037                                 AC_DEFINE(HAVE_GTK, 1,
1038                                     [Define to 1 if compiling with GTK])
1039                         ], have_gtk=no)
1040
1041                 else
1042                         AM_PATH_GTK_2_0($GTK2_MIN_VERSION,
1043                         [
1044                                 CFLAGS="$CFLAGS $GTK_CFLAGS"
1045                                 CXXFLAGS="$CXXFLAGS $GTK_CFLAGS"
1046                                 have_gtk=yes
1047                                 AC_DEFINE(HAVE_GTK, 1,
1048                                     [Define to 1 if compiling with GTK])
1049                         ], have_gtk=no)
1050                 fi
1051         fi
1052 else
1053         have_qt=no
1054         have_gtk=no
1055 fi
1056
1057 GLIB_MIN_VERSION=2.14.0
1058 AC_SUBST(GLIB_MIN_VERSION)
1059 # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule
1060 # support, as we need that for dynamically loading plugins.
1061 # If we found GTK+, this doesn't add GLIB_CFLAGS to CFLAGS, because
1062 # AM_PATH_GTK will add GTK_CFLAGS to CFLAGS, and GTK_CFLAGS is a
1063 # superset of GLIB_CFLAGS.  If we didn't find GTK+, it does add
1064 # GLIB_CFLAGS to CFLAGS.
1065 # However, this means that both @GLIB_LIBS@ and @GTK_LIBS@ will be
1066 # set when generating the Makefile, so we can make programs that require
1067 # only GLib link with @GLIB_LIBS@ and make programs that require GTK+
1068 # link with @GTK_LIBS@ (which includes @GLIB_LIBS@).
1069 # We don't add $GLIB_LIBS to LIBS, because we don't want to force all
1070 # programs to be built with GLib.
1071 #
1072 # Release dates for GLib versions:
1073 # 2.14.0: 03 Aug 2007
1074 # 2.16.0: 10 Mar 2008
1075 # 2.18.0: 02 Sep 2008
1076 # 2.20.0: 13 Mar 2009
1077 # 2.22.0: 22 Sep 2009
1078 # 2.24.0: 28 Mar 2010
1079 # 2.26.0: 27 Sep 2010
1080 # 2.28.0: 08 Feb 2011
1081 # 2.30.0: 27 Sep 2011
1082 # 2.32.0: 24 Mar 2012
1083 # 2.34.0: 24 Sep 2012
1084
1085 have_wireshark_cxx="false"
1086 if test "$have_gtk" = "no" ; then
1087         #
1088         # We don't have GTK+.
1089         #
1090         if test "$have_qt" = "yes" ; then
1091                 #
1092                 # However, we do have Qt, and thus will be building
1093                 # Wireshark (if the user had explicitly disabled
1094                 # Wireshark, we wouldn't have looked for Qt, so we
1095                 # wouldn't think we had it, and thus wouldn't be here).
1096                 #
1097                 wireshark_bin="wireshark\$(EXEEXT)"
1098                 # Give automake a hint that it needs to use c++ linking.
1099                 have_wireshark_cxx="yes"
1100                 wireshark_man="wireshark.1"
1101                 wireshark_SUBDIRS="codecs ui/qt"
1102         else
1103                 #
1104                 # We don't have Qt, either, which means we have no UI
1105                 # toolkit.
1106                 #
1107                 # If they didn't explicitly say "--disable-wireshark",
1108                 # fail (so that, unless they explicitly indicated that
1109                 # they don't want Wireshark, we stop so they know they
1110                 # won't be getting Wireshark unless they fix the GTK+/Qt
1111                 # problem).
1112                 #
1113                 if test "x$enable_wireshark" = "xyes"; then
1114                         if test "x$with_gtk3" = "xyes"; then
1115                                 AC_MSG_ERROR([GTK+ $GTK3_MIN_VERSION or later isn't available, so Wireshark can't be compiled])
1116                         else
1117                                 AC_MSG_ERROR([Neither Qt nor GTK+ $GTK2_MIN_VERSION or later are available, so Wireshark can't be compiled])
1118                         fi
1119                 fi
1120                 wireshark_bin=""
1121                 wireshark_man=""
1122         fi
1123         # Use GLIB_CFLAGS
1124         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION,
1125         [
1126                 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1127                 CXXFLAGS="$CXXFLAGS $GLIB_CFLAGS"
1128         ], AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1129 else
1130         #
1131         # We have GTK+, and thus will be building Wireshark (if the user
1132         # had explicitly disabled Wireshark, we wouldn't have looked for
1133         # GTK+, so we wouldn't think we had it, and thus wouldn't be here).
1134         #
1135         wireshark_bin="wireshark\$(EXEEXT)"
1136         wireshark_man="wireshark.1"
1137         wireshark_SUBDIRS="codecs ui/gtk"
1138         # Don't use GLIB_CFLAGS
1139         AM_PATH_GLIB_2_0($GLIB_MIN_VERSION, , AC_MSG_ERROR(GLib $GLIB_MIN_VERSION or later distribution not found.), gthread gmodule)
1140
1141         CPPFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CPPFLAGS"
1142         CPPFLAGS="-DGDK_DISABLE_DEPRECATED $CPPFLAGS"
1143         CPPFLAGS="-DGTK_DISABLE_DEPRECATED $CPPFLAGS"
1144         CPPFLAGS="-DGTK_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1145         if test ! \( $gtk_config_major_version -eq 2 -a $gtk_config_minor_version -lt 20 \) ; then
1146                 # Enable GSEAL when building with GTK > 2.20
1147                 # (Versions prior to 2.22 lacked some necessary accessors.)
1148                 CPPFLAGS="-DGSEAL_ENABLE $CPPFLAGS"
1149         fi
1150 fi
1151
1152 #
1153 # "make dist" requires that we have the Qt build tools.
1154 #
1155 # Annoyingly, at least on Fedora 16, uic and moc are named XXX-qt4
1156 # rather than just XXX, perhaps to allow Qt 3 and Qt 4 tools to be
1157 # installed; if they're still doing that in current Fedora releases,
1158 # perhaps there will also be XXX-qt5 when they pick up Qt 5.
1159 #
1160 AC_PATH_PROG(UIC, uic)
1161 if test "x$UIC" = x
1162 then
1163         AC_PATH_PROG(UIC, uic-qt4)
1164         if test "x$UIC" = x
1165         then
1166                 if test "x$with_qt" = "xyes"; then
1167                         #
1168                         # If you want to build with Qt, you'd better
1169                         # have uic.
1170                         #
1171                         AC_MSG_ERROR(I couldn't find uic or uic-qt4; make sure it's installed and in your path)
1172                 else
1173                         #
1174                         # We shouldn't fail here, as the user's not
1175                         # building with Qt, and we shouldn't force them
1176                         # to have Qt installed if they're not doing so.
1177                         # "make dist" will fail if they do that, but
1178                         # we don't know whether they'll be doing that,
1179                         # so this is the best we can do.
1180                         #
1181                         UIC=uic
1182                 fi
1183         fi
1184 fi
1185 AC_SUBST(UIC)
1186 AC_PATH_PROG(MOC, moc)
1187 if test "x$MOC" = x
1188 then
1189         AC_PATH_PROG(MOC, moc-qt4)
1190         if test "x$MOC" = x
1191         then
1192                 if test "x$with_qt" = "xyes"; then
1193                         #
1194                         # If you want to build with Qt, you'd better
1195                         # have moc.
1196                         #
1197                         AC_MSG_ERROR(I couldn't find moc or moc-qt4; make sure it's installed and in your path)
1198                 else
1199                         #
1200                         # We shouldn't fail here, as the user's not
1201                         # building with Qt, and we shouldn't force them
1202                         # to have Qt installed if they're not doing so.
1203                         # "make dist" will fail if they do that, but
1204                         # we don't know whether they'll be doing that,
1205                         # so this is the best we can do.
1206                         #
1207                         MIC=moc
1208                 fi
1209         fi
1210 fi
1211 AC_SUBST(MOC)
1212
1213 # Error out if a glib header other than a "top level" header
1214 #  (glib.h, glib-object.h, gio.h) or certain other headers( e.g.,gmodule.h)
1215 #  is used.
1216 CPPFLAGS="-DG_DISABLE_SINGLE_INCLUDES $CPPFLAGS"
1217
1218 # Error out on the usage of deprecated glib functions
1219 CPPFLAGS="-DG_DISABLE_DEPRECATED $CPPFLAGS"
1220
1221 #
1222 # Check whether GLib modules are supported, to determine whether we
1223 # can support plugins.
1224 #
1225 AC_MSG_CHECKING(whether GLib supports loadable modules)
1226 ac_save_CFLAGS="$CFLAGS"
1227 ac_save_LIBS="$LIBS"
1228 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1229 LIBS="$GLIB_LIBS $LIBS"
1230 AC_TRY_RUN([
1231 #include <glib.h>
1232 #include <gmodule.h>
1233 #include <stdio.h>
1234 #include <stdlib.h>
1235
1236 int
1237 main ()
1238 {
1239   if (g_module_supported())
1240     return 0;   /* success */
1241   else
1242     return 1;   /* failure */
1243 }
1244 ], ac_cv_glib_supports_modules=yes, ac_cv_glib_supports_modules=no,
1245    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1246     ac_cv_glib_supports_modules=yes])
1247 CFLAGS="$ac_save_CFLAGS"
1248 LIBS="$ac_save_LIBS"
1249 if test "$ac_cv_glib_supports_modules" = yes ; then
1250   AC_MSG_RESULT(yes)
1251   have_plugins=yes
1252 else
1253   AC_MSG_RESULT(no)
1254   have_plugins=no
1255 fi
1256
1257 #
1258 # If we have <dlfcn.h>, check whether we can use dladdr to find a
1259 # filename (hopefully, a full pathname, but no guarantees) for
1260 # the executable.
1261 #
1262 if test "$ac_cv_header_dlfcn_h" = "yes"
1263 then
1264         AC_MSG_CHECKING(whether dladdr can be used to find the pathname of an executable)
1265         ac_save_CFLAGS="$CFLAGS"
1266         ac_save_LIBS="$LIBS"
1267         CFLAGS="$CFLAGS $GLIB_CFLAGS"
1268         LIBS="$GLIB_LIBS $LIBS"
1269         AC_TRY_RUN([
1270 #define _GNU_SOURCE     /* required on Linux, sigh */
1271 #include <dlfcn.h>
1272
1273 int
1274 main(void)
1275 {
1276         Dl_info info;
1277
1278         if (!dladdr((void *)main, &info))
1279                 return 1;       /* failure */
1280         return 0;               /* assume success */
1281 }
1282 ], ac_cv_dladdr_finds_executable_path=yes, ac_cv_dladdr_finds_executable_path=no,
1283    [echo $ac_n "cross compiling; assumed OK... $ac_c"
1284     ac_cv_dladdr_finds_executable_path=yes])
1285         CFLAGS="$ac_save_CFLAGS"
1286         LIBS="$ac_save_LIBS"
1287         if test x$ac_cv_dladdr_finds_executable_path = xyes
1288         then
1289                 AC_DEFINE(DLADDR_FINDS_EXECUTABLE_PATH, 1, [Define if dladdr can be used to find the path of the executable])
1290         fi
1291         AC_MSG_RESULT($ac_cv_dladdr_finds_executable_path)
1292 fi
1293
1294 #
1295 # Check whether GLib's printf supports thousands grouping. (This might
1296 # be different from the system's printf since GLib can optionally use
1297 # its own printf implementation.)
1298 #
1299 AC_MSG_CHECKING(whether GLib supports POSIX/XSI thousands grouping)
1300 ac_save_CFLAGS="$CFLAGS"
1301 ac_save_LIBS="$LIBS"
1302 CFLAGS="$CFLAGS $GLIB_CFLAGS"
1303 LIBS="$GLIB_LIBS $LIBS"
1304 AC_TRY_RUN([
1305 #include <glib.h>
1306 #include <locale.h>
1307 #include <stdio.h>
1308 #include <string.h>
1309
1310 int
1311 main ()
1312 {
1313   gchar *str;
1314   setlocale(LC_ALL, "en_US.UTF-8");
1315   str = g_strdup_printf("%'u", 123456);
1316   return (strcmp (str, "123,456") != 0);
1317 }
1318 ], ac_cv_glib_supports_printf_grouping=yes, ac_cv_glib_supports_printf_grouping=no,
1319    [echo $ac_n "cross compiling; playing it safe... $ac_c"
1320     ac_cv_glib_supports_printf_grouping=no])
1321 CFLAGS="$ac_save_CFLAGS"
1322 LIBS="$ac_save_LIBS"
1323 if test "$ac_cv_glib_supports_printf_grouping" = yes ; then
1324   AC_MSG_RESULT(yes)
1325   AC_DEFINE(HAVE_GLIB_PRINTF_GROUPING, 1, [Define if your printf() function supports thousands grouping.])
1326 else
1327   AC_MSG_RESULT(no)
1328 fi
1329
1330 if test "x$have_gtk" = "xyes"
1331 then
1332     #
1333     # We have GTK+; do we want the OS X integration functions and,
1334     # if so, do we have them and, if so, which versions do we have,
1335     # the old Carbon-based ones or the new Cocoa-based ones?
1336     #
1337     AC_MSG_CHECKING(whether to use OS X integration functions)
1338
1339     AC_ARG_WITH(osx-integration,
1340       AC_HELP_STRING( [--with-osx-integration],
1341                       [use OS X integration functions @<:@default=yes, if available@:>@]),
1342     [
1343         if test $withval = no
1344         then
1345             want_osx_integration=no
1346         else
1347             want_osx_integration=yes
1348         fi
1349     ],[
1350         want_osx_integration=yes
1351     ])
1352     if test "x$want_osx_integration" = "xno"; then
1353         AC_MSG_RESULT(no)
1354     else
1355         AC_MSG_RESULT(yes)
1356         AC_WIRESHARK_OSX_INTEGRATION_CHECK
1357     fi
1358 fi
1359
1360 AC_SUBST(wireshark_bin)
1361 AC_SUBST(wireshark_man)
1362 AM_CONDITIONAL(HAVE_Qt, test "$have_qt" = "yes")
1363 AM_CONDITIONAL(HAVE_WIRESHARK_CXX, test "$have_wireshark_cxx" = "yes")
1364
1365
1366 # Enable/disable tshark
1367
1368 AC_ARG_ENABLE(tshark,
1369   AC_HELP_STRING( [--enable-tshark],
1370                   [build TShark @<:@default=yes@:>@]),
1371     tshark=$enableval,enable_tshark=yes)
1372
1373 if test "x$enable_tshark" = "xyes" ; then
1374         tshark_bin="tshark\$(EXEEXT)"
1375         tshark_man="tshark.1"
1376         wiresharkfilter_man="wireshark-filter.4"
1377 else
1378         tshark_bin=""
1379         tshark_man=""
1380 fi
1381 AC_SUBST(tshark_bin)
1382 AC_SUBST(tshark_man)
1383 AC_SUBST(wiresharkfilter_man)
1384
1385
1386
1387 # Enable/disable editcap
1388
1389 AC_ARG_ENABLE(editcap,
1390   AC_HELP_STRING( [--enable-editcap],
1391                   [build editcap @<:@default=yes@:>@]),
1392     enable_editcap=$enableval,enable_editcap=yes)
1393
1394 if test "x$enable_editcap" = "xyes" ; then
1395         editcap_bin="editcap\$(EXEEXT)"
1396         editcap_man="editcap.1"
1397 else
1398         editcap_bin=""
1399         editcap_man=""
1400 fi
1401 AC_SUBST(editcap_bin)
1402 AC_SUBST(editcap_man)
1403
1404 # Enabling/disabling of dumpcap is done later (after we know if we have PCAP
1405 # or not)
1406
1407 # Enable/disable capinfos
1408
1409 AC_ARG_ENABLE(capinfos,
1410   AC_HELP_STRING( [--enable-capinfos],
1411                   [build capinfos @<:@default=yes@:>@]),
1412     enable_capinfos=$enableval,enable_capinfos=yes)
1413
1414 if test "x$enable_capinfos" = "xyes" ; then
1415         capinfos_bin="capinfos\$(EXEEXT)"
1416         capinfos_man="capinfos.1"
1417 else
1418         capinfos_bin=""
1419         capinfos_man=""
1420 fi
1421 AC_SUBST(capinfos_bin)
1422 AC_SUBST(capinfos_man)
1423
1424
1425 # Enable/disable mergecap
1426
1427 AC_ARG_ENABLE(mergecap,
1428   AC_HELP_STRING( [--enable-mergecap],
1429                   [build mergecap @<:@default=yes@:>@]),
1430     enable_mergecap=$enableval,enable_mergecap=yes)
1431
1432 if test "x$enable_mergecap" = "xyes" ; then
1433         mergecap_bin="mergecap\$(EXEEXT)"
1434         mergecap_man="mergecap.1"
1435 else
1436         mergecap_bin=""
1437         mergecap_man=""
1438 fi
1439 AC_SUBST(mergecap_bin)
1440 AC_SUBST(mergecap_man)
1441
1442
1443 # Enable/disable reordercap
1444
1445 AC_ARG_ENABLE(reordercap,
1446   AC_HELP_STRING( [--enable-reordercap],
1447                   [build reordercap @<:@default=yes@:>@]),
1448     enable_reordercap=$enableval,enable_reordercap=yes)
1449
1450 if test "x$enable_reordercap" = "xyes" ; then
1451         reordercap_bin="reordercap\$(EXEEXT)"
1452         reordercap_man="reordercap.1"
1453 else
1454         reordercap_bin=""
1455         reordercap_man=""
1456 fi
1457 AC_SUBST(reordercap_bin)
1458 AC_SUBST(reordercap_man)
1459
1460
1461 # Enable/disable text2pcap
1462
1463 AC_ARG_ENABLE(text2pcap,
1464   AC_HELP_STRING( [--enable-text2pcap],
1465                   [build text2pcap @<:@default=yes@:>@]),
1466     text2pcap=$enableval,enable_text2pcap=yes)
1467
1468 if test "x$enable_text2pcap" = "xyes" ; then
1469         text2pcap_bin="text2pcap\$(EXEEXT)"
1470         text2pcap_man="text2pcap.1"
1471 else
1472         text2pcap_bin=""
1473         text2pcap_man=""
1474 fi
1475 AC_SUBST(text2pcap_bin)
1476 AC_SUBST(text2pcap_man)
1477
1478
1479 # Enable/disable dftest
1480
1481 AC_ARG_ENABLE(dftest,
1482   AC_HELP_STRING( [--enable-dftest],
1483                   [build dftest @<:@default=yes@:>@]),
1484     enable_dftest=$enableval,enable_dftest=yes)
1485
1486 if test "x$enable_dftest" = "xyes" ; then
1487         dftest_bin="dftest\$(EXEEXT)"
1488         dftest_man="dftest.1"
1489 else
1490         dftest_bin=""
1491         dftest_man=""
1492 fi
1493 AC_SUBST(dftest_bin)
1494 AC_SUBST(dftest_man)
1495
1496
1497 # Enable/disable randpkt
1498
1499 AC_ARG_ENABLE(randpkt,
1500   AC_HELP_STRING( [--enable-randpkt],
1501                   [build randpkt @<:@default=yes@:>@]),
1502     enable_randpkt=$enableval,enable_randpkt=yes)
1503
1504 if test "x$enable_randpkt" = "xyes" ; then
1505         randpkt_bin="randpkt\$(EXEEXT)"
1506         randpkt_man="randpkt.1"
1507 else
1508         randpkt_bin=""
1509         randpkt_man=""
1510 fi
1511 AC_SUBST(randpkt_bin)
1512 AC_SUBST(randpkt_man)
1513
1514
1515
1516 dnl Checks for "gethostbyname()" - and "-lnsl", if we need it to get
1517 dnl "gethostbyname()".
1518 AC_WIRESHARK_GETHOSTBY_LIB_CHECK
1519
1520 dnl Checks for "connect()", used as a proxy for "socket()" - and
1521 dnl "-lsocket", if we need it to get "connect()".
1522 AC_WIRESHARK_SOCKET_LIB_CHECK
1523
1524 dnl pcap check
1525 AC_MSG_CHECKING(whether to use libpcap for packet capture)
1526
1527 AC_ARG_WITH(pcap,
1528   AC_HELP_STRING( [--with-pcap@<:@=DIR@:>@],
1529                   [use libpcap for packet capturing @<:@default=yes@:>@]),
1530 [
1531         if test $withval = no
1532         then
1533                 want_pcap=no
1534         elif test $withval = yes
1535         then
1536                 want_pcap=yes
1537         else
1538                 want_pcap=yes
1539                 pcap_dir=$withval
1540         fi
1541 ],[
1542         want_pcap=yes
1543         pcap_dir=
1544 ])
1545 if test "x$want_pcap" = "xno" ; then
1546         AC_MSG_RESULT(no)
1547 else
1548         AC_MSG_RESULT(yes)
1549         AC_WIRESHARK_PCAP_CHECK
1550 fi
1551
1552
1553 dnl Check for airpcap
1554 AC_MSG_CHECKING(whether to include airpcap support)
1555 AC_ARG_ENABLE(airpcap,
1556   AC_HELP_STRING( [--enable-airpcap],
1557                   [use AirPcap in Wireshark @<:@default=yes@:>@]),
1558   enable_airpcap=$enableval, enable_airpcap=yes)
1559
1560 if test x$enable_airpcap = xyes; then
1561         if test "x$want_pcap" = "xno" ; then
1562                 enable_airpcap=no
1563                 AC_MSG_RESULT(pcap not available - disabling airpcap)
1564         else
1565                 AC_MSG_RESULT(yes)
1566                 AC_DEFINE(HAVE_AIRPCAP, 1, [Enable AirPcap])
1567         fi
1568 else
1569         AC_MSG_RESULT(no)
1570 fi
1571
1572
1573 dnl dumpcap check
1574 AC_MSG_CHECKING(whether to build dumpcap)
1575
1576 AC_ARG_ENABLE(dumpcap,
1577   AC_HELP_STRING( [--enable-dumpcap],
1578                   [build dumpcap @<:@default=yes@:>@]),
1579     enable_dumpcap=$enableval,enable_dumpcap=yes)
1580
1581 if test "x$enable_dumpcap" = "xyes" ; then
1582         if test "x$want_pcap" = "xno" ; then
1583                 enable_dumpcap=no
1584                 AC_MSG_RESULT(pcap not available - disabling dumpcap)
1585         else
1586                 AC_MSG_RESULT(yes)
1587         fi
1588 else
1589         AC_MSG_RESULT(no)
1590 fi
1591
1592 if test "x$enable_dumpcap" = "xyes" ; then
1593         dumpcap_bin="dumpcap\$(EXEEXT)"
1594         dumpcap_man="dumpcap.1"
1595 else
1596         dumpcap_bin=""
1597         dumpcap_man=""
1598 fi
1599 AC_SUBST(dumpcap_bin)
1600 AC_SUBST(dumpcap_man)
1601
1602 # Enable/disable rawshark
1603
1604 dnl rawshark check
1605 AC_MSG_CHECKING(whether to build rawshark)
1606
1607 AC_ARG_ENABLE(rawshark,
1608   AC_HELP_STRING( [--enable-rawshark],
1609                   [build rawshark @<:@default=yes@:>@]),
1610     rawshark=$enableval,enable_rawshark=yes)
1611
1612 if test "x$enable_rawshark" = "xyes" ; then
1613         if test "x$want_pcap" = "xno" ; then
1614                 enable_rawshark=no
1615                 AC_MSG_RESULT(pcap not available - disabling rawshark)
1616         else
1617                 AC_MSG_RESULT(yes)
1618         fi
1619 else
1620         AC_MSG_RESULT(no)
1621 fi
1622
1623 if test "x$enable_rawshark" = "xyes" ; then
1624         rawshark_bin="rawshark\$(EXEEXT)"
1625         rawshark_man="rawshark.1"
1626 else
1627         rawshark_bin=""
1628         rawshark_man=""
1629 fi
1630 AC_SUBST(rawshark_bin)
1631 AC_SUBST(rawshark_man)
1632
1633 dnl Use pcap-ng by default
1634 AC_ARG_ENABLE(pcap-ng-default,
1635   AC_HELP_STRING( [--enable-pcap-ng-default],
1636                   [use the pcap-ng file format by default instead of pcap @<:@default=yes@:>@]),
1637     enable_pcap_ng_default=$enableval,enable_pcap_ng_default=yes)
1638 if test x$enable_pcap_ng_default = xyes; then
1639         AC_DEFINE(PCAP_NG_DEFAULT, 1, [Support for pcap-ng])
1640 fi
1641
1642 dnl pcap remote check
1643 AC_MSG_CHECKING(whether to use libpcap remote capturing feature)
1644
1645 AC_ARG_WITH(pcap-remote,
1646     AC_HELP_STRING([--with-pcap-remote],
1647                    [use libpcap remote capturing (requires libpcap)]),
1648 [
1649     if test $withval = no
1650     then
1651         want_pcap_remote=no
1652     else
1653         want_pcap_remote=yes
1654     fi
1655 ],[
1656     want_pcap_remote=no
1657 ])
1658 if test "x$want_pcap_remote" = "xno" -o "x$want_pcap" = "xno" ; then
1659     AC_MSG_RESULT(no)
1660 else
1661     AC_MSG_RESULT(yes)
1662     AC_WIRESHARK_PCAP_REMOTE_CHECK
1663 fi
1664
1665 dnl zlib check
1666 AC_MSG_CHECKING(whether to use zlib for gzip compression and decompression)
1667
1668 AC_ARG_WITH(zlib,
1669   AC_HELP_STRING([--with-zlib@<:@=DIR@:>@],
1670                  [use zlib (located in directory DIR, if supplied) for gzip compression and decompression @<:@default=yes, if available@:>@]),
1671 [
1672         if test "x$withval" = "xno"
1673         then
1674                 want_zlib=no
1675         elif test "x$withval" = "xyes"
1676         then
1677                 want_zlib=yes
1678         else
1679                 want_zlib=yes
1680                 zlib_dir="$withval"
1681         fi
1682 ],[
1683         #
1684         # Use zlib if it's present, otherwise don't.
1685         #
1686         want_zlib=ifavailable
1687         zlib_dir=
1688 ])
1689 if test "x$want_zlib" = "xno" ; then
1690         AC_MSG_RESULT(no)
1691 else
1692         AC_MSG_RESULT(yes)
1693         AC_WIRESHARK_ZLIB_CHECK
1694         if test "x$want_zlib" = "xno" ; then
1695                 AC_MSG_RESULT(zlib not found - disabling gzip compression and decompression)
1696         else
1697                 if test "x$ac_cv_func_inflatePrime" = "xno" ; then
1698                         AC_MSG_RESULT(inflatePrime not found in zlib - disabling gzipped capture file support)
1699                 fi
1700         fi
1701 fi
1702
1703 dnl Lua check
1704 AC_MSG_CHECKING(whether to use liblua for the Lua scripting plugin)
1705
1706 AC_ARG_WITH(lua,
1707   AC_HELP_STRING( [--with-lua@<:@=DIR@:>@],
1708                   [use liblua (located in directory DIR, if supplied) for the Lua scripting plugin @<:@default=yes, if available@:>@]),
1709 [
1710         if test $withval = no
1711         then
1712                 want_lua=no
1713         elif test $withval = yes
1714         then
1715                 want_lua=yes
1716         else
1717                 want_lua=yes
1718                 lua_dir=$withval
1719         fi
1720 ],[
1721         #
1722         # Use liblua by default
1723         #
1724         want_lua=ifavailable
1725         lua_dir=
1726 ])
1727 if test "x$want_lua" = "xno" ; then
1728         AC_MSG_RESULT(no)
1729 else
1730         AC_MSG_RESULT(yes)
1731         AC_WIRESHARK_LIBLUA_CHECK
1732         if test "x$want_lua" = "xno" ; then
1733                 AC_MSG_RESULT(liblua not found - disabling support for the lua scripting plugin)
1734         fi
1735 fi
1736 AM_CONDITIONAL(HAVE_LIBLUA, test x$want_lua = xyes)
1737
1738
1739 dnl portaudio check
1740 AC_MSG_CHECKING(whether to use libportaudio for the rtp_player)
1741
1742 AC_ARG_WITH(portaudio,
1743   AC_HELP_STRING( [--with-portaudio@<:@=DIR@:>@],
1744                   [use libportaudio (located in directory DIR, if supplied) for the rtp_player @<:@default=yes, if available@:>@]),
1745 [
1746         if test $withval = no
1747         then
1748                 want_portaudio=no
1749         elif test $withval = yes
1750         then
1751                 want_portaudio=yes
1752         else
1753                 want_portaudio=yes
1754                 portaudio_dir=$withval
1755         fi
1756 ],[
1757         #
1758         # Use libportaudio by default
1759         #
1760         want_portaudio=ifavailable
1761         portaudio_dir=
1762 ])
1763 if test "x$want_portaudio" = "xno" ; then
1764         AC_MSG_RESULT(no)
1765 else
1766         AC_MSG_RESULT(yes)
1767         AC_WIRESHARK_LIBPORTAUDIO_CHECK
1768         if test "x$want_portaudio" = "xno" ; then
1769                 AC_MSG_RESULT(libportaudio not found - disabling support for the rtp_player)
1770         fi
1771 fi
1772 AM_CONDITIONAL(HAVE_LIBPORTAUDIO, test x$want_portaudio = xyes)
1773
1774
1775 dnl ipv6 check
1776 AC_ARG_ENABLE(ipv6,
1777   AC_HELP_STRING( [--enable-ipv6],
1778                   [use IPv6 name resolution, if available @<:@default=yes@:>@]),
1779     enable_ipv6=$enableval,enable_ipv6=yes)
1780
1781 AC_MSG_CHECKING(whether to enable ipv6 name resolution if available)
1782 if test "x$enable_ipv6" = "xno" ; then
1783         AC_MSG_RESULT(no)
1784 else
1785         AC_MSG_RESULT(yes)
1786         AC_WIRESHARK_IPV6_STACK
1787 fi
1788
1789
1790 dnl Check if dumpcap should be installed with filesystem capabilities
1791 AC_PATH_PROG(SETCAP, setcap)
1792 AC_ARG_ENABLE(setcap-install,
1793   AC_HELP_STRING( [--enable-setcap-install],
1794                   [install dumpcap with cap_net_admin and cap_net_raw @<:@default=no@:>@]),
1795     enable_setcap_install=$enableval,enable_setcap_install=no)
1796
1797 AC_MSG_CHECKING(whether to install dumpcap with cap_net_admin and cap_net_raw capabilities)
1798 if test "x$enable_setcap_install" = "xno" ; then
1799         AC_MSG_RESULT(no)
1800 else
1801         if test "x$SETCAP" = "x" ; then
1802                 AC_MSG_RESULT(no. Setcap not found)
1803         elif test "x$enable_dumpcap" = "xno" ; then
1804                 AC_MSG_ERROR(Setcap install works only with dumpcap but dumpcap is disabled)
1805         else
1806                 AC_MSG_RESULT(yes)
1807         fi
1808 fi
1809
1810 AM_CONDITIONAL(SETCAP_INSTALL, test x$enable_setcap_install = xyes)
1811
1812 dnl Check if dumpcap should be installed setuid
1813 AC_ARG_ENABLE(setuid-install,
1814   AC_HELP_STRING( [--enable-setuid-install],
1815                   [install dumpcap as setuid @<:@default=no@:>@]),
1816     enable_setuid_install=$enableval,enable_setuid_install=no)
1817
1818 AC_MSG_CHECKING(whether to install dumpcap setuid)
1819 if test "x$enable_setuid_install" = "xno" ; then
1820         AC_MSG_RESULT(no)
1821 else
1822         if test "x$enable_setcap_install" = "xyes" ; then
1823                 enable_setuid_install=no
1824                 AC_MSG_RESULT(no; using setcap instead)
1825         elif test "x$enable_dumpcap" = "xno" ; then
1826                 AC_MSG_ERROR(Setuid install works only with dumpcap but dumpcap is disabled)
1827         else
1828                 AC_MSG_RESULT(yes)
1829         fi
1830 fi
1831
1832 AM_CONDITIONAL(SETUID_INSTALL, test x$enable_setuid_install = xyes)
1833 AC_CHECK_FUNCS(setresuid setresgid)
1834
1835 dnl ...but our Network Operations group is named "no"!
1836 DUMPCAP_GROUP=''
1837 AC_ARG_WITH(dumpcap-group,
1838   AC_HELP_STRING( [--with-dumpcap-group=GROUP],
1839                   [restrict dumpcap to GROUP]),
1840 [
1841   if test "x$withval" = "xyes"; then
1842       AC_MSG_ERROR([No dumpcap group specified.])
1843   elif test "x$withval" != "xno"; then
1844       if test "x$enable_dumpcap" = "xno" ; then
1845           AC_MSG_ERROR(dumpcap group install works only with dumpcap but dumpcap is disabled)
1846       fi
1847       AC_MSG_RESULT($withval)
1848       DUMPCAP_GROUP="$withval"
1849   fi
1850 ])
1851 AC_SUBST(DUMPCAP_GROUP)
1852 AM_CONDITIONAL(HAVE_DUMPCAP_GROUP, test x$DUMPCAP_GROUP != x)
1853
1854 dnl libcap (not libpcap) check
1855 LIBCAP_LIBS=''
1856 AC_MSG_CHECKING(whether to use the libcap capabilities library)
1857
1858 AC_ARG_WITH(libcap,
1859   AC_HELP_STRING( [--with-libcap@<:@=DIR@:>@],
1860                   [use libcap (located in directory DIR, if supplied) for POSIX.1e capabilities management @<:@default=yes, if present@:>@]),
1861 [
1862 if   test "x$withval" = "xno";  then
1863         want_libcap=no
1864 elif test "x$withval" = "xyes"; then
1865         want_libcap=yes
1866 elif test -d "$withval"; then
1867         want_libcap=yes
1868         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1869 fi
1870 ])
1871 if test "x$with_libcap" = "xno" ; then
1872         AC_MSG_RESULT(no)
1873 else
1874         AC_MSG_RESULT(yes)
1875         AC_WIRESHARK_LIBCAP_CHECK
1876 fi
1877 AC_SUBST(LIBCAP_LIBS)
1878
1879 dnl Checks for header files.
1880 AC_CHECK_HEADERS(direct.h dirent.h fcntl.h grp.h inttypes.h netdb.h pwd.h stdarg.h stddef.h unistd.h)
1881 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)
1882 AC_CHECK_HEADERS(netinet/in.h)
1883 AC_CHECK_HEADERS(arpa/inet.h arpa/nameser.h)
1884
1885 dnl SSL Check
1886 SSL_LIBS=''
1887 AC_MSG_CHECKING(whether to use SSL library)
1888
1889 AC_ARG_WITH(ssl,
1890   AC_HELP_STRING( [--with-ssl@<:@=DIR@:>@],
1891                   [use SSL crypto library (located in directory DIR, if supplied) @<:@default=no@:>@]),
1892 [
1893 if test "x$withval" = "xno";  then
1894         want_ssl=no
1895 elif test "x$withval" = "xyes"; then
1896         want_ssl=yes
1897 elif test -d "$withval"; then
1898         want_ssl=yes
1899         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1900 fi
1901 ],[
1902         want_ssl=no
1903 ])
1904 if test "x$want_ssl" = "xyes"; then
1905         AC_MSG_RESULT(yes)
1906         AC_CHECK_LIB(crypto,EVP_md5,
1907             [
1908                 SSL_LIBS=-lcrypto
1909             ],
1910             [
1911                 AC_MSG_ERROR([SSL crypto library was requested, but is not available])
1912             ])
1913 else
1914         AC_MSG_RESULT(no)
1915 fi
1916 AC_SUBST(SSL_LIBS)
1917
1918 dnl kerberos check
1919 AC_MSG_CHECKING(whether to use Kerberos library)
1920
1921 AC_ARG_WITH(krb5,
1922   AC_HELP_STRING( [--with-krb5@<:@=DIR@:>@],
1923                   [use Kerberos library (located in directory DIR, if supplied) to use in Kerberos dissection @<:@default=yes@:>@]),
1924 [
1925         if test $withval = no
1926         then
1927                 want_krb5=no
1928         elif test $withval = yes
1929         then
1930                 want_krb5=yes
1931         else
1932                 want_krb5=yes
1933                 krb5_dir=$withval
1934         fi
1935 ],[
1936         #
1937         # Use Kerberos library if available, otherwise don't.
1938         #
1939         want_krb5=ifavailable
1940         krb5_dir=
1941 ])
1942 if test "x$want_krb5" = "xno" ; then
1943         AC_MSG_RESULT(no)
1944 else
1945         AC_MSG_RESULT(yes)
1946         AC_WIRESHARK_KRB5_CHECK
1947 fi
1948
1949
1950 dnl c-ares Check
1951 C_ARES_LIBS=''
1952 AC_MSG_CHECKING(whether to use the c-ares library if available)
1953
1954 AC_ARG_WITH(c-ares,
1955   AC_HELP_STRING( [--with-c-ares@<:@=DIR@:>@],
1956                   [use c-ares (located in directory DIR, if supplied) - supersedes --with-adns @<:@default=yes, if present@:>@]),
1957 [
1958 if   test "x$withval" = "xno";  then
1959         want_c_ares=no
1960 elif test "x$withval" = "xyes"; then
1961         want_c_ares=yes
1962 elif test -d "$withval"; then
1963         want_c_ares=yes
1964         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1965 fi
1966 ])
1967 if test "x$want_c_ares" = "xno" ; then
1968         AC_MSG_RESULT(no)
1969 else
1970         AC_MSG_RESULT(yes)
1971         AC_WIRESHARK_C_ARES_CHECK
1972 fi
1973 AC_SUBST(C_ARES_LIBS)
1974
1975 dnl ADNS Check
1976 ADNS_LIBS=''
1977 AC_MSG_CHECKING(whether to use the GNU ADNS library if available)
1978
1979 AC_ARG_WITH(adns,
1980   AC_HELP_STRING( [--with-adns@<:@=DIR@:>@],
1981                   [use GNU ADNS (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
1982 [
1983 if   test "x$withval" = "xno";  then
1984         want_adns=no
1985 elif test "x$withval" = "xyes"; then
1986         want_adns=yes
1987 elif test -d "$withval"; then
1988         want_adns=yes
1989         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
1990 fi
1991 ])
1992 if test "x$want_adns" = "xno" -o "x$have_good_c_ares" = "xyes" ; then
1993         AC_MSG_RESULT(no)
1994 else
1995         AC_MSG_RESULT(yes)
1996         AC_WIRESHARK_ADNS_CHECK
1997 fi
1998 AC_SUBST(ADNS_LIBS)
1999
2000 dnl GEOIP Check
2001 GEOIP_LIBS=''
2002 AC_MSG_CHECKING(whether to use the GeoIP IP address mapping library if available)
2003
2004 AC_ARG_WITH(geoip,
2005   AC_HELP_STRING( [--with-geoip@<:@=DIR@:>@],
2006                   [use GeoIP (located in directory DIR, if supplied) @<:@default=yes, if present@:>@]),
2007 [
2008 if   test "x$withval" = "xno";  then
2009         want_geoip=no
2010 elif test "x$withval" = "xyes"; then
2011         want_geoip=yes
2012 elif test -d "$withval"; then
2013         want_geoip=yes
2014         AC_WIRESHARK_ADD_DASH_L(LDFLAGS, ${withval}/lib)
2015 fi
2016 ])
2017 if test "x$want_geoip" = "xno"; then
2018         AC_MSG_RESULT(no)
2019 else
2020         AC_MSG_RESULT(yes)
2021         AC_WIRESHARK_GEOIP_CHECK
2022 fi
2023 AC_SUBST(GEOIP_LIBS)
2024
2025 dnl Python devel Check
2026 AC_MSG_CHECKING(whether to use the Python interpreter for scripting)
2027
2028 AC_ARG_WITH(python,
2029     AC_HELP_STRING( [--with-python@<:@=DIR@:>@],
2030                     [use Python interpreter (installed in DIR, if supplied) @<:@default=no@:>@ (BROKEN/UNSTABLE)]),
2031 [
2032         pythondir='${libdir}/wireshark/python/${VERSION}'
2033         if test "x$withval" = "xno"
2034         then
2035                 want_python=no
2036         elif test "x$withval" = "xyes"
2037         then
2038                 want_python=yes
2039         else
2040                 want_python=yes
2041                 pythondir="$withval"
2042         fi
2043 ],[
2044         # By default (user didn't explicitly enable Python), don't enable
2045         # Python support.
2046         #
2047         want_python=no
2048         #pythondir='${libdir}/wireshark/python/${VERSION}'
2049 ])
2050 if test "x$want_python" = "xno" ; then
2051         AC_MSG_RESULT(no)
2052 else
2053         AC_MSG_RESULT(yes)
2054         AC_WIRESHARK_PYTHON_CHECK
2055 fi
2056 AM_CONDITIONAL(HAVE_LIBPY, test x$want_python != xno)
2057 AC_SUBST(pythondir)
2058
2059 #
2060 # Define WS_MSVC_NORETURN appropriately for declarations of routines that
2061 # never return (just like Charlie on the MTA).
2062 #
2063 # Note that MSVC++ expects __declspec(noreturn) to precede the function
2064 # name and GCC, as far as I know, expects __attribute__((noreturn)) to
2065 # follow the function name, so we need two different flavors of
2066 # noreturn tag.
2067 #
2068 AC_DEFINE(WS_MSVC_NORETURN,, [Define as the string to precede declarations of routines that never return])
2069
2070 dnl Checks for typedefs, structures, and compiler characteristics.
2071 # AC_C_CONST
2072
2073 # Check how we can get the time zone abbreviation
2074 AC_WIRESHARK_TIMEZONE_ABBREV
2075
2076 # We need to know whether "struct stat" has an "st_flags" member
2077 # for file_user_immutable().
2078
2079 AC_WIRESHARK_STRUCT_ST_FLAGS
2080
2081 # We need to know whether "struct sockaddr" has an "sa_len" member
2082 # for get_interface_list().
2083
2084 AC_WIRESHARK_STRUCT_SA_LEN
2085
2086 # We must know our byte order
2087 AC_C_BIGENDIAN
2088
2089 # Checks whether "-traditional" is needed when using "ioctl".
2090 # XXX - do we need this?
2091 AC_PROG_GCC_TRADITIONAL
2092
2093 GETOPT_LO=""
2094 AC_CHECK_FUNC(getopt,
2095   [GETOPT_LO=""
2096    AC_DEFINE(HAVE_GETOPT, 1, [Define to 1 if you have the getopt function.])
2097   ],
2098   GETOPT_LO="wsgetopt.lo"
2099 )
2100 if test "$ac_cv_func_getopt" = no ; then
2101   GETOPT_LO="wsgetopt.lo"
2102 fi
2103 AM_CONDITIONAL(NEED_GETOPT_LO, test "x$ac_cv_func_getopt" = "xno")
2104 AC_SUBST(GETOPT_LO)
2105
2106 AC_CHECK_FUNC(strncasecmp, STRNCASECMP_LO="",
2107   STRNCASECMP_LO="strncasecmp.lo")
2108 if test "$ac_cv_func_strncasecmp" = no ; then
2109   STRNCASECMP_LO="strncasecmp.lo"
2110 fi
2111 AM_CONDITIONAL(NEED_STRNCASECMP_LO, test "x$ac_cv_func_strncasecmp" = "xno")
2112 AC_SUBST(STRNCASECMP_LO)
2113
2114 AC_CHECK_FUNCS(mkstemp mkdtemp)
2115
2116 AC_SEARCH_LIBS(inet_aton, [socket nsl], have_inet_aton=yes,
2117     have_inet_aton=no)
2118 if test "$have_inet_aton" = no; then
2119   INET_ATON_LO="inet_aton.lo"
2120   AC_DEFINE(NEED_INET_ATON_H, 1, [Define if inet/aton.h needs to be included])
2121 else
2122   INET_ATON_LO=""
2123 fi
2124 AM_CONDITIONAL(NEED_INET_ATON_LO, test "x$have_inet_aton" = "xno")
2125 AC_SUBST(INET_ATON_LO)
2126
2127 AC_SEARCH_LIBS(inet_pton, [socket nsl], [
2128   dnl check for pre-BIND82 inet_pton() bug.
2129   AC_MSG_CHECKING(for broken inet_pton)
2130   AC_TRY_RUN([#include <sys/types.h>
2131 #include <sys/socket.h>
2132 #include <netinet/in.h>
2133 #include <arpa/inet.h>
2134 int main()
2135 {
2136 #ifdef AF_INET6
2137   char buf[16];
2138   /* this should return 0 (error) */
2139   return inet_pton(AF_INET6, "0:1:2:3:4:5:6:7:", buf);
2140 #else
2141   return 1;
2142 #endif
2143 }], [AC_MSG_RESULT(ok);
2144 have_inet_pton=yes], [AC_MSG_RESULT(broken);
2145 have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken);
2146 have_inet_pton=no])],
2147 have_inet_pton=no)
2148 if test "$have_inet_pton" = no; then
2149   INET_PTON_LO="inet_pton.lo"
2150 else
2151   INET_PTON_LO=""
2152 fi
2153 AM_CONDITIONAL(NEED_INET_PTON_LO, test "x$have_inet_pton" = "xno")
2154 AC_SUBST(INET_PTON_LO)
2155
2156 AC_SEARCH_LIBS(inet_ntop, [socket nsl], [
2157   AC_MSG_CHECKING([for inet_ntop prototype])
2158   AC_TRY_COMPILE([#include <stdio.h>
2159 #include <sys/types.h>
2160 #include <sys/socket.h>
2161 #include <netinet/in.h>
2162 #include <arpa/inet.h>
2163
2164 extern const char *inet_ntop(int, const void *, char *, size_t);],, [
2165     AC_MSG_RESULT(yes)
2166     AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2167     [Define if inet_ntop() prototype exists])], [
2168     AC_TRY_COMPILE([#include <stdio.h>
2169 #include <sys/types.h>
2170 #include <sys/socket.h>
2171 #include <netinet/in.h>
2172 #include <arpa/inet.h>
2173
2174 extern const char *inet_ntop(int, const void *, char *, socklen_t);],, [
2175       AC_MSG_RESULT(yes)
2176       AC_DEFINE(HAVE_INET_NTOP_PROTO, 1,
2177       [Define if inet_ntop() prototype exists])], [
2178       AC_MSG_RESULT(no)])])
2179   INET_NTOP_LO=""], [
2180   INET_NTOP_LO="inet_ntop.lo"
2181   AC_DEFINE(NEED_INET_V6DEFS_H, 1,
2182   [Define if inet/v6defs.h needs to be included])])
2183 AM_CONDITIONAL(NEED_INET_NTOP_LO, test "x$INET_NTOP_LO" != "x")
2184 AC_SUBST(INET_NTOP_LO)
2185
2186 AC_CHECK_FUNC(strptime, STRPTIME_LO="",
2187   [STRPTIME_LO="strptime.lo"
2188    AC_DEFINE(NEED_STRPTIME_H, 1, [Define if strptime.h needs to be included])
2189 ])
2190 if test "$ac_cv_func_strptime" = no ; then
2191   STRPTIME_LO="strptime.lo"
2192 fi
2193 AC_SUBST(STRPTIME_C)
2194 AM_CONDITIONAL(NEED_STRPTIME_LO, test "x$ac_cv_func_strptime" = "no")
2195 AC_SUBST(STRPTIME_LO)
2196
2197 AC_CHECK_FUNCS(getprotobynumber gethostbyname2)
2198 AC_CHECK_FUNCS(issetugid)
2199 AC_CHECK_FUNCS(mmap mprotect sysconf)
2200 AC_CHECK_FUNCS(strtoll)
2201
2202 dnl blank for now, but will be used in future
2203 AC_SUBST(wireshark_SUBDIRS)
2204
2205 dnl
2206 dnl check whether plugins should be enabled and, if they should be,
2207 dnl check for plugins directory - stolen from Amanda's configure.ac
2208 dnl
2209 dnl we don't wish to expand ${libdir} yet
2210 plugindir='${libdir}/wireshark/plugins/${VERSION}'
2211 AC_ARG_WITH(plugins,
2212   AC_HELP_STRING( [--with-plugins@<:@=DIR@:>@],
2213                   [support plugins (installed in DIR, if supplied) @<:@default=yes, if possible@:>@]),
2214 [
2215   if test "x$withval" = "xno"; then
2216     have_plugins=no
2217   elif test "x$have_plugins" = "xno"; then
2218       AC_MSG_ERROR([GLib on this platform doesn't support loadable modules, so you can't enable plugins.])
2219   elif test "x$withval" != "xyes"; then
2220       plugindir="$withval"
2221   fi
2222 ])
2223 AM_CONDITIONAL(HAVE_PLUGINS, test "x$have_plugins" = "xyes")
2224 if test x$have_plugins = xyes
2225 then
2226   AC_DEFINE(HAVE_PLUGINS, 1, [Define if plugins are enabled])
2227 fi
2228 AC_SUBST(plugindir)
2229 CPPFLAGS="$CPPFLAGS '-DPLUGIN_DIR=\"\$(plugindir)\"'"
2230
2231 #
2232 # The plugin dissectors reside in ./plugins/PROTO/
2233 #
2234 PLUGIN_LIBS=""
2235 AC_SUBST(PLUGIN_LIBS)
2236
2237 #
2238 # Check if (emem) memory allocations must be 8-byte aligned.
2239 # I haven't been able to write C code that reliably makes that determination
2240 # (different versions of GCC with or without optimization give different
2241 # results) so just assume everything except (32-bit) x86 needs 8-byte
2242 # alignment (64-bit platforms either require 8-byte alignment for pointers
2243 # and 64-bit integral data types or may get better performance from that;
2244 # 64-bit x86 will get 8-byte alignment from G_MEM_ALIGN anyway.  32-bit
2245 # platforms would only require it, or get better performance from it,
2246 # for 64-bit floating-point values.).
2247 #
2248 AC_MSG_CHECKING(whether we need memory allocations to be 8-byte aligned)
2249 case $host_cpu in
2250         i386|i486|i586|i686)
2251                 AC_MSG_RESULT(no)
2252                 ;;
2253         *)
2254                 AC_MSG_RESULT(yes)
2255                 AC_DEFINE(NEED_8_BYTE_ALIGNMENT, 1, [Define if we need memory allocations to be 8-byte aligned])
2256                 ;;
2257 esac
2258
2259 dnl libtool defs
2260 #
2261 # Yes, AM_PROG_LIBTOOL is redundant with newer version(s) of some tool(s)
2262 # (autoconf?  automake?  libtool?) - with the newer version(s), it's
2263 # just an alias for AC_PROG_LIBTOOL, which is called earlier.
2264 #
2265 # With older version(s) of those tool(s), however, it's not just an
2266 # alias, and the configure scripts don't work without it.
2267 #
2268 AM_PROG_LIBTOOL
2269 AC_SUBST(LIBTOOL_DEPS)
2270
2271 AM_CONDITIONAL(ENABLE_STATIC, test x$enable_static = xyes)
2272 if test x$enable_static = xyes -a x$have_plugins = xyes
2273 then
2274   AC_DEFINE(ENABLE_STATIC, 1, [Link plugins statically into Wireshark])
2275 fi
2276 AC_SUBST(ENABLE_STATIC)
2277
2278 dnl Save the cacheable configure results to config.cache before recursing
2279 AC_CACHE_SAVE
2280
2281 sinclude(plugins/Custom.m4) dnl
2282 ifdef(_CUSTOM_AC_OUTPUT_,, define(_CUSTOM_AC_OUTPUT_, )) dnl
2283
2284 sinclude(asn1/Custom.m4) dnl
2285 ifdef(_CUSTOM_ASN1_AC_OUTPUT_,, define(_CUSTOM_ASN1_AC_OUTPUT_, )) dnl
2286
2287 AC_CONFIG_HEADERS(config.h)
2288 AC_OUTPUT(
2289   Makefile
2290   doxygen.cfg
2291   asn1/Makefile
2292   _CUSTOM_ASN1_AC_OUTPUT_
2293   asn1/acp133/Makefile
2294   asn1/acse/Makefile
2295   asn1/ansi_map/Makefile
2296   asn1/ansi_tcap/Makefile
2297   asn1/c1222/Makefile
2298   asn1/camel/Makefile
2299   asn1/cdt/Makefile
2300   asn1/charging_ase/Makefile
2301   asn1/cmip/Makefile
2302   asn1/cmp/Makefile
2303   asn1/crmf/Makefile
2304   asn1/cms/Makefile
2305   asn1/credssp/Makefile
2306   asn1/dap/Makefile
2307   asn1/disp/Makefile
2308   asn1/dop/Makefile
2309   asn1/dsp/Makefile
2310   asn1/ess/Makefile
2311   asn1/ftam/Makefile
2312   asn1/gnm/Makefile
2313   asn1/goose/Makefile
2314   asn1/gprscdr/Makefile
2315   asn1/gsm_map/Makefile
2316   asn1/h225/Makefile
2317   asn1/h235/Makefile
2318   asn1/h245/Makefile
2319   asn1/h248/Makefile
2320   asn1/h282/Makefile
2321   asn1/h283/Makefile
2322   asn1/h323/Makefile
2323   asn1/h450/Makefile
2324   asn1/h450-ros/Makefile
2325   asn1/h460/Makefile
2326   asn1/h501/Makefile
2327   asn1/HI2Operations/Makefile
2328   asn1/hnbap/Makefile
2329   asn1/idmp/Makefile
2330   asn1/inap/Makefile
2331   asn1/isdn-sup/Makefile
2332   asn1/kerberos/Makefile
2333   asn1/lcsap/Makefile
2334   asn1/ldap/Makefile
2335   asn1/logotypecertextn/Makefile
2336   asn1/lpp/Makefile
2337   asn1/lppa/Makefile
2338   asn1/lppe/Makefile
2339   asn1/lte-rrc/Makefile
2340   asn1/m3ap/Makefile
2341   asn1/mms/Makefile
2342   asn1/mpeg-audio/Makefile
2343   asn1/mpeg-pes/Makefile
2344   asn1/nbap/Makefile
2345   asn1/ns_cert_exts/Makefile
2346   asn1/ocsp/Makefile
2347   asn1/p1/Makefile
2348   asn1/p22/Makefile
2349   asn1/p7/Makefile
2350   asn1/p772/Makefile
2351   asn1/pcap/Makefile
2352   asn1/pkcs1/Makefile
2353   asn1/pkcs12/Makefile
2354   asn1/pkinit/Makefile
2355   asn1/pkixac/Makefile
2356   asn1/pkix1explicit/Makefile
2357   asn1/pkix1implicit/Makefile
2358   asn1/pkixproxy/Makefile
2359   asn1/pkixqualified/Makefile
2360   asn1/pkixtsp/Makefile
2361   asn1/pres/Makefile
2362   asn1/q932/Makefile
2363   asn1/q932-ros/Makefile
2364   asn1/qsig/Makefile
2365   asn1/ranap/Makefile
2366   asn1/rnsap/Makefile
2367   asn1/ros/Makefile
2368   asn1/rrc/Makefile
2369   asn1/rrlp/Makefile
2370   asn1/rtse/Makefile
2371   asn1/rua/Makefile
2372   asn1/s1ap/Makefile
2373   asn1/sabp/Makefile
2374   asn1/sbc-ap/Makefile
2375   asn1/smrse/Makefile
2376   asn1/snmp/Makefile
2377   asn1/spnego/Makefile
2378   asn1/sv/Makefile
2379   asn1/t124/Makefile
2380   asn1/t125/Makefile
2381   asn1/t38/Makefile
2382   asn1/tcap/Makefile
2383   asn1/tetra/Makefile
2384   asn1/ulp/Makefile
2385   asn1/wlancertextn/Makefile
2386   asn1/x2ap/Makefile
2387   asn1/x509af/Makefile
2388   asn1/x509ce/Makefile
2389   asn1/x509if/Makefile
2390   asn1/x509sat/Makefile
2391   asn1/x721/Makefile
2392   doc/Makefile
2393   docbook/Makefile
2394   epan/Makefile
2395   epan/crypt/Makefile
2396   epan/doxygen.cfg
2397   epan/dfilter/Makefile
2398   epan/dissectors/Makefile
2399   epan/dissectors/dcerpc/Makefile
2400   epan/dissectors/pidl/Makefile
2401   epan/ftypes/Makefile
2402   epan/wmem/Makefile
2403   epan/wslua/Makefile
2404   epan/wspython/Makefile
2405   codecs/Makefile
2406   ui/Makefile
2407   ui/doxygen.cfg
2408   ui/gtk/Makefile
2409   ui/gtk/doxygen.cfg
2410   ui/cli/Makefile
2411   ui/qt/Makefile
2412   ui/qt/doxygen.cfg
2413   help/Makefile
2414   packaging/Makefile
2415   packaging/macosx/Info.plist
2416   packaging/macosx/Makefile
2417   packaging/macosx/osx-dmg.sh
2418   packaging/nsis/Makefile
2419   packaging/rpm/Makefile
2420   packaging/rpm/SPECS/Makefile
2421   packaging/rpm/SPECS/wireshark.spec
2422   packaging/svr4/Makefile
2423   packaging/svr4/checkinstall
2424   packaging/svr4/pkginfo
2425   plugins/Makefile
2426   plugins/asn1/Makefile
2427   plugins/docsis/Makefile
2428   plugins/ethercat/Makefile
2429   plugins/gryphon/Makefile
2430   plugins/irda/Makefile
2431   plugins/m2m/Makefile
2432   plugins/mate/Makefile
2433   plugins/opcua/Makefile
2434   plugins/profinet/Makefile
2435   plugins/stats_tree/Makefile
2436   plugins/unistim/Makefile
2437   plugins/wimax/Makefile
2438   plugins/wimaxasncp/Makefile
2439   plugins/wimaxmacphy/Makefile
2440   tools/Makefile
2441   tools/lemon/Makefile
2442   wiretap/Makefile
2443   wsutil/Makefile
2444   _CUSTOM_AC_OUTPUT_
2445   ,)
2446 dnl AC_CONFIG_FILES([tools/setuid-root.pl], [chmod +x tools/setuid-root.pl])
2447
2448
2449 # Pretty messages
2450
2451 if test "x$have_qt" = "xyes"; then
2452         gui_lib_message=" (with Qt)"
2453 else
2454         if test "x$have_gtk" = "xyes"; then
2455                 if test "x$with_gtk3" = "xyes"; then
2456                         gui_lib_message=" (with GTK+ 3"
2457                 else
2458                         gui_lib_message=" (with GTK+ 2"
2459                 fi
2460                 if test "x$have_ige_mac" = "xyes"; then
2461                         gui_lib_message="$gui_lib_message and Mac OS X integration)"
2462                 else
2463                         gui_lib_message="$gui_lib_message)"
2464                 fi
2465         fi
2466 fi
2467
2468 if test "x$enable_setcap_install" = "xyes" ; then
2469         setcap_message="yes"
2470 else
2471         setcap_message="no"
2472 fi
2473
2474 if test "x$enable_setuid_install" = "xyes" ; then
2475         setuid_message="yes"
2476 else
2477         setuid_message="no"
2478 fi
2479
2480 if test "x$DUMPCAP_GROUP" = "x" ; then
2481         dumpcap_group_message="(none)"
2482 else
2483         dumpcap_group_message="$DUMPCAP_GROUP"
2484 fi
2485
2486 if test "x$want_zlib" = "xno" ; then
2487         zlib_message="no"
2488 else
2489         zlib_message="yes"
2490 fi
2491
2492 if test "x$want_lua" = "xyes" ; then
2493         lua_message="yes"
2494 else
2495         lua_message="no"
2496 fi
2497
2498 if test "x$want_python" = "xno"; then
2499         python_message="no"
2500 else
2501         python_message="yes"
2502 fi
2503
2504 if test "x$want_portaudio" = "xyes" ; then
2505         portaudio_message="yes"
2506 else
2507         portaudio_message="no"
2508 fi
2509
2510 if test "x$want_ssl" = "xno" ; then
2511         ssl_message="no"
2512 else
2513         ssl_message="yes"
2514 fi
2515
2516 if test "x$want_krb5" = "xno" ; then
2517         krb5_message="no"
2518 else
2519         krb5_message="yes ($ac_krb5_version)"
2520 fi
2521
2522 if test "x$have_good_c_ares" = "xyes" ; then
2523         c_ares_message="yes"
2524 else
2525         c_ares_message="no"
2526 fi
2527
2528 if test "x$have_good_adns" = "xyes" ; then
2529         adns_message="yes"
2530 else
2531         if test "x$have_good_c_ares" = "xyes" ; then
2532                 adns_message="no (using c-ares instead)"
2533         else
2534                 adns_message="no"
2535         fi
2536 fi
2537
2538 if test "x$have_good_libcap" = "xyes" ; then
2539         libcap_message="yes"
2540 else
2541         libcap_message="no"
2542 fi
2543
2544 if test "x$have_good_geoip" = "xyes" ; then
2545         geoip_message="yes"
2546 else
2547         geoip_message="no"
2548 fi
2549
2550 echo ""
2551 echo "The Wireshark package has been configured with the following options."
2552 echo "                    Build wireshark : $enable_wireshark""$gui_lib_message"
2553 echo "                       Build tshark : $enable_tshark"
2554 echo "                     Build capinfos : $enable_capinfos"
2555 echo "                      Build editcap : $enable_editcap"
2556 echo "                      Build dumpcap : $enable_dumpcap"
2557 echo "                     Build mergecap : $enable_mergecap"
2558 echo "                   Build reordercap : $enable_reordercap"
2559 echo "                    Build text2pcap : $enable_text2pcap"
2560 echo "                      Build randpkt : $enable_randpkt"
2561 echo "                       Build dftest : $enable_dftest"
2562 echo "                     Build rawshark : $enable_rawshark"
2563 echo ""
2564 echo "   Save files as pcap-ng by default : $enable_pcap_ng_default"
2565 echo "  Install dumpcap with capabilities : $setcap_message"
2566 echo "             Install dumpcap setuid : $setuid_message"
2567 echo "                  Use dumpcap group : $dumpcap_group_message"
2568 echo "                        Use plugins : $have_plugins"
2569 echo "                    Use Lua library : $lua_message"
2570 echo "                 Use Python binding : $python_message"
2571 echo "                   Build rtp_player : $portaudio_message"
2572 echo "             Build profile binaries : $enable_profile_build"
2573 echo "                   Use pcap library : $want_pcap"
2574 echo "                   Use zlib library : $zlib_message"
2575 echo "               Use kerberos library : $krb5_message"
2576 echo "                 Use c-ares library : $c_ares_message"
2577 echo "               Use GNU ADNS library : $adns_message"
2578 echo "                Use SMI MIB library : $libsmi_message"
2579 echo "             Use GNU crypto library : $gcrypt_message"
2580 echo "             Use SSL crypto library : $ssl_message"
2581 echo "           Use IPv6 name resolution : $enable_ipv6"
2582 echo "                 Use gnutls library : $tls_message"
2583 echo "     Use POSIX capabilities library : $libcap_message"
2584 echo "                  Use GeoIP library : $geoip_message"
2585 echo "                     Use nl library : $libnl_message"