1 dnl Macros that test for specific features.
2 dnl This file is part of the Autoconf packaging for Wireshark.
3 dnl Copyright (C) 1998-2000 by Gerald Combs.
5 dnl This program is free software; you can redistribute it and/or modify
6 dnl it under the terms of the GNU General Public License as published by
7 dnl the Free Software Foundation; either version 2, or (at your option)
10 dnl This program is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 dnl GNU General Public License for more details.
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with this program; if not, write to the Free Software
17 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 dnl As a special exception, the Free Software Foundation gives unlimited
21 dnl permission to copy, distribute and modify the configure scripts that
22 dnl are the output of Autoconf. You need not follow the terms of the GNU
23 dnl General Public License when using or distributing such scripts, even
24 dnl though portions of the text of Autoconf appear in them. The GNU
25 dnl General Public License (GPL) does govern all other use of the material
26 dnl that constitutes the Autoconf program.
28 dnl Certain portions of the Autoconf source text are designed to be copied
29 dnl (in certain cases, depending on the input) into the output of
30 dnl Autoconf. We call these the "data" portions. The rest of the Autoconf
31 dnl source text consists of comments plus executable code that decides which
32 dnl of the data portions to output in any given case. We call these
33 dnl comments and executable code the "non-data" portions. Autoconf never
34 dnl copies any of the non-data portions into its output.
36 dnl This special exception to the GPL applies to versions of Autoconf
37 dnl released by the Free Software Foundation. When you make and
38 dnl distribute a modified version of Autoconf, you may extend this special
39 dnl exception to the GPL to apply to your modified version as well, *unless*
40 dnl your modified version has the potential to copy into its output some
41 dnl of the text that was the non-data portion of the version that you started
42 dnl with. (In other words, unless your change moves or copies text from
43 dnl the non-data portions to the data portions.) If your modification has
44 dnl such potential, you must delete any notice of this special exception
45 dnl to the GPL from your modified version.
47 dnl Written by David MacKenzie, with help from
48 dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
49 dnl Roland McGrath, Noah Friedman, david d zuhn, and many others.
52 # AC_WIRESHARK_ADD_DASH_L
54 # Add to the variable specified as the first argument a "-L" flag for the
55 # directory specified as the second argument, and, on Solaris, add a
56 # "-R" flag for it as well.
58 # XXX - IRIX, and other OSes, may require some flag equivalent to
61 AC_DEFUN([AC_WIRESHARK_ADD_DASH_L],
62 [AX_APPEND_FLAG(-L$2, $1)
65 AX_APPEND_FLAG(-R$2, $1)
71 # AC_WIRESHARK_PUSH_FLAGS
73 # Push our flags to CFLAGS/etc.
75 AC_DEFUN([AC_WIRESHARK_PUSH_FLAGS],
77 ac_ws_CPPLAGS_saved="$CPPFLAGS"
78 ac_ws_CFLAGS_saved="$CFLAGS"
79 ac_ws_CXXFLAGS_saved="$CXXFLAGS"
80 ac_ws_LDFLAGS_saved="$LDFLAGS"
81 CPPFLAGS="$WS_CPPFLAGS $CPPFLAGS"
82 CFLAGS="$WS_CFLAGS $CFLAGS"
83 CXXFLAGS="$WS_CXXFLAGS $CXXFLAGS"
84 LDFLAGS="$WS_LDFLAGS $LDFLAGS"
88 # AC_WIRESHARK_POP_FLAGS
90 # Restore user build flags.
92 AC_DEFUN([AC_WIRESHARK_POP_FLAGS],
94 CPPFLAGS="$ac_ws_CPPLAGS_saved"
95 CFLAGS="$ac_ws_CFLAGS_saved"
96 CXXFLAGS="$ac_ws_CXXFLAGS_saved"
97 LDFLAGS="$ac_ws_LDFLAGS_saved"
102 # AC_WIRESHARK_BREAKLOOP_TRY_LINK
104 AC_DEFUN([AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK],
120 ws_breakloop_compiled=yes
123 ws_breakloop_compiled=no
130 # AC_WIRESHARK_PCAP_CHECK
132 AC_DEFUN([AC_WIRESHARK_PCAP_CHECK],
134 AC_WIRESHARK_PUSH_FLAGS
135 ws_ac_save_LIBS="$LIBS"
137 if test -z "$pcap_dir"
140 # XXX need to set a var AC_CHECK_HEADER(pcap.h,,)
143 # The user didn't specify a directory in which libpcap resides.
144 # First, look for a pcap-config script.
146 AC_PATH_TOOL(PCAP_CONFIG, pcap-config)
148 if test -n "$PCAP_CONFIG" ; then
152 # Now check whether it's the libpcap 1.0 version, which
153 # put a space after "-L" - on some platforms, that doesn't
156 AC_MSG_CHECKING(for broken pcap-config)
157 case "`\"$PCAP_CONFIG\" --libs`" in
161 # Space after -L. Pretend pcap-config doesn't exist.
175 if test -n "$PCAP_CONFIG" ; then
177 # Found it, and it's usable; use it to get the include flags
180 PCAP_CFLAGS="`\"$PCAP_CONFIG\" --cflags`"
182 # We have pcap-config; we assume that means we have libpcap
183 # installed and that pcap-config will tell us whatever
184 # libraries libpcap needs.
186 if test x$enable_static = xyes; then
187 PCAP_LIBS="`\"$PCAP_CONFIG\" --libs --static`"
189 PCAP_LIBS="`\"$PCAP_CONFIG\" --libs`"
193 # Didn't find it; we have to look for libpcap ourselves.
194 # We assume that the current library search path will work,
195 # but we may have to look for the header in a "pcap"
196 # subdirectory of "/usr/include" or "/usr/local/include",
197 # as some systems apparently put "pcap.h" in a "pcap"
198 # subdirectory without also providing a "pcap.h" in the top-level
199 # include directory, and we also check "$prefix/include" - and
200 # "$prefix/include/pcap", in case $prefix is set to
201 # "/usr/include" or "/usr/local/include".
206 AC_MSG_CHECKING(for extraneous pcap header directories)
208 pcap_dir_list="/usr/local/include/pcap /usr/include/pcap $prefix/include/pcap $prefix/include"
209 for pcap_dir in $pcap_dir_list
211 if test -d $pcap_dir ; then
212 if test x$pcap_dir != x/usr/include -a x$pcap_dir != x/usr/local/include ; then
213 PCAP_CFLAGS="-I$pcap_dir"
215 found_pcap_dir=" $found_pcap_dir -I$pcap_dir"
220 if test "$found_pcap_dir" != "" ; then
221 AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
223 AC_MSG_RESULT(not found)
228 # The user specified a directory in which libpcap resides,
229 # so add the "include" subdirectory of that directory to
230 # the include file search path and the "lib" subdirectory
231 # of that directory to the library search path.
233 # XXX - if there's also a libpcap in a directory that's
234 # already in CPPFLAGS or LDFLAGS, this won't make us find
235 # the version in the specified directory, as the compiler
236 # and/or linker will search that other directory before it
237 # searches the specified directory.
239 PCAP_CFLAGS="-I$pcap_dir/include"
241 # XXX - This doesn't use AC_WIRESHARK_ADD_DASH_L
243 PCAP_LIBS="-L$pcap_dir/lib -lpcap"
246 CFLAGS="$PCAP_CFLAGS $CFLAGS"
247 LIBS="$PCAP_LIBS $LIBS"
250 AC_CHECK_HEADER(pcap.h,
252 AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library])
255 AC_MSG_ERROR([[Header file pcap.h not found; if you installed libpcap
256 from source, did you also do \"make install-incl\", and if you installed a
257 binary package of libpcap, is there also a developer's package of libpcap,
258 and did you also install that package?]])
262 # Check to see if we find "pcap_open_live" in "-lpcap".
263 # Also check for various additional libraries that libpcap might
266 AC_CHECK_LIB(pcap, pcap_open_live,
270 ac_wireshark_extras_found=no
272 for extras in "-lcfg -lodm" "-lpfring"
274 AC_MSG_CHECKING([for pcap_open_live in -lpcap with $extras])
275 LIBS="-lpcap $extras $ac_save_LIBS"
277 # XXX - can't we use AC_CHECK_LIB here?
284 pcap_open_live(NULL, 0, 0, 0, NULL);
287 ac_wireshark_extras_found=yes
289 PCAP_LIBS="$PCAP_LIBS $extras"
294 if test x$ac_wireshark_extras_found = xyes
299 if test x$ac_wireshark_extras_found = xno
301 AC_MSG_ERROR([Can't link with library libpcap.])
305 AC_SUBST(PCAP_CFLAGS)
309 # Check whether various variables and functions are defined by
312 AC_CHECK_FUNCS(pcap_open_dead pcap_freecode)
313 AC_CHECK_FUNCS(pcap_open)
314 if test $ac_cv_func_pcap_open = "yes" ; then
315 AC_DEFINE(HAVE_PCAP_REMOTE, 1,
316 [Define to 1 if you have libpcap/WinPcap remote capturing support])
319 # XXX - this *should* be checked for independently of checking
320 # for pcap_open(), as you might have pcap_setsampling() without
321 # remote capture support.
323 # However, 1) the sampling options are treated as remote options
324 # in the GUI and and 2) having pcap_setsampling() doesn't mean
325 # you have sampling support. libpcap needs a way to indicate
326 # whether a given device supports sampling, and the GUI should
327 # be changed to decouple them.
329 # (Actually, libpcap needs a general mechanism to offer options
330 # for particular devices, and Wireshark needs to use that
331 # mechanism. The former is a work in progress.)
333 # (Note: another work in progress is support for remote
334 # capturing using pcap_create()/pcap_activate(), which we
335 # also need to support once it's available.)
337 AC_CHECK_FUNCS(pcap_setsampling)
341 # pcap_breakloop may be present in the library but not declared
342 # in the pcap.h header file. If it's not declared in the header
343 # file, attempts to use it will get warnings, and, if we're
344 # building with warnings treated as errors, that warning will
345 # cause compilation to fail.
347 # We are therefore first testing whether the function is present
348 # and then, if we're compiling with warnings as errors, testing
349 # whether it is usable. It is usable if it compiles without
350 # a -Wimplicit warning (the "compile with warnings as errors"
351 # option requires GCC). If it is not usable, we fail and tell
352 # the user that the pcap.h header needs to be updated.
354 # Ceteris paribus, this should only happen with Mac OS X 10.3[.x] which
355 # can have an up-to-date pcap library without the corresponding pcap
358 # However, it might also happen on some others OSes with some erroneous
359 # system manipulations where multiple versions of libpcap might co-exist
360 # e.g. hand made symbolic link from libpcap.so -> libpcap.so.0.8 but
361 # having the pcap header version 0.7.
363 AC_MSG_CHECKING([whether pcap_breakloop is present])
364 ac_CFLAGS_saved="$CFLAGS"
365 AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK
366 if test "x$ws_breakloop_compiled" = "xyes"; then
368 AC_DEFINE(HAVE_PCAP_BREAKLOOP, 1, [Define if pcap_breakloop is known])
369 if test "x$with_warnings_as_errors" = "xyes"; then
370 AC_MSG_CHECKING([whether pcap_breakloop is usable])
371 CFLAGS="$CFLAGS -Werror -Wimplicit"
372 AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK
373 if test "x$ws_breakloop_compiled" = "xyes"; then
378 [Your pcap library is more recent than your pcap header.
379 As you are building with compiler warnings treated as errors, Wireshark
380 won't be able to use functions not declared in that header.
381 If you wish to build with compiler warnings treated as errors, You should
382 install a newer version of the header file.])
384 CFLAGS="$ac_CFLAGS_saved"
391 # Later versions of Mac OS X 10.3[.x] ship a pcap.h that
392 # doesn't define pcap_if_t but ship an 0.8[.x] libpcap,
393 # so the library has "pcap_findalldevs()", but pcap.h
394 # doesn't define "pcap_if_t" so you can't actually *use*
395 # "pcap_findalldevs()".
397 # That even appears to be true of systems shipped with
398 # 10.3.4, so it doesn't appear only to be a case of
399 # Software Update not updating header files.
401 # (You can work around this by installing the 0.8 header
404 AC_CACHE_CHECK([whether pcap_findalldevs is present and usable],
405 [ac_cv_func_pcap_findalldevs],
414 pcap_if_t *devpointer;
417 pcap_findalldevs(&devpointer, errbuf);
422 ac_cv_func_pcap_findalldevs=yes
425 ac_cv_func_pcap_findalldevs=no
429 # Don't check for other new routines that showed up after
430 # "pcap_findalldevs()" if we don't have a usable
431 # "pcap_findalldevs()", so we don't end up using them if the
432 # "pcap.h" is crufty and old and doesn't declare them.
434 if test $ac_cv_func_pcap_findalldevs = "yes" ; then
435 AC_DEFINE(HAVE_PCAP_FINDALLDEVS, 1,
436 [Define to 1 if you have the `pcap_findalldevs' function and a pcap.h that declares pcap_if_t.])
437 AC_CHECK_FUNCS(pcap_datalink_val_to_name pcap_datalink_name_to_val)
438 AC_CHECK_FUNCS(pcap_datalink_val_to_description)
439 AC_CHECK_FUNCS(pcap_list_datalinks pcap_set_datalink pcap_lib_version)
440 AC_CHECK_FUNCS(pcap_get_selectable_fd pcap_free_datalinks)
441 AC_CHECK_FUNC(pcap_create,
443 AC_DEFINE(HAVE_PCAP_CREATE, 1,
444 [Define to 1 if you have the `pcap_create' function.])
445 AC_DEFINE(CAN_SET_CAPTURE_BUFFER_SIZE, 1,
446 [Define to 1 if the capture buffer size can be set.])
448 AC_CHECK_FUNCS(bpf_image pcap_set_tstamp_precision pcap_set_tstamp_type)
451 AC_WIRESHARK_POP_FLAGS
452 LIBS="$ws_ac_save_LIBS"
456 # AC_WIRESHARK_ZLIB_CHECK
458 AC_DEFUN([AC_WIRESHARK_ZLIB_CHECK],
460 AC_WIRESHARK_PUSH_FLAGS
462 if test "x$zlib_dir" != "x"
465 # The user specified a directory in which zlib resides,
466 # so add the "include" subdirectory of that directory to
467 # the include file search path and the "lib" subdirectory
468 # of that directory to the library search path.
470 # XXX - if there's also a zlib in a directory that's
471 # already in CPPFLAGS or LDFLAGS, this won't make us find
472 # the version in the specified directory, as the compiler
473 # and/or linker will search that other directory before it
474 # searches the specified directory.
476 CPPFLAGS="$CPPFLAGS -I$zlib_dir/include"
477 AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $zlib_dir/lib)
481 # Make sure we have "zlib.h". If we don't, it means we probably
482 # don't have zlib, so don't use it.
484 AC_CHECK_HEADER(zlib.h,,
486 if test "x$zlib_dir" != "x"
489 # The user used "--with-zlib=" to specify a directory
490 # containing zlib, but we didn't find the header file
491 # there; that either means they didn't specify the
492 # right directory or are confused about whether zlib
493 # is, in fact, installed. Report the error and give up.
495 AC_MSG_ERROR([zlib header not found in directory specified in --with-zlib])
497 if test "x$want_zlib" = "xyes"
500 # The user tried to force us to use the library, but we
501 # couldn't find the header file; report an error.
503 AC_MSG_ERROR(Header file zlib.h not found.)
506 # We couldn't find the header file; don't use the
507 # library, as it's probably not present.
514 if test "x$want_zlib" != "xno"
517 # Well, we at least have the zlib header file.
519 # We link with zlib to support uncompression of
520 # gzipped network traffic, e.g. in an HTTP request
523 # Check for inflate() in zlib, to make sure the
524 # zlib library is usable. For example, on at
525 # least some versions of Fedora, if you have a
526 # 64-bit machine, have both the 32-bit and 64-bit
527 # versions of the run-time zlib package installed,
528 # and have only the *32-bit* version of the zlib
529 # development package installed, it'll find the
530 # header, and think it can use zlib, and will use
531 # it in subsequent tests, but it'll try and link
532 # 64-bit test programs with the 32-bit library,
533 # causing those tests to falsely fail. Hilarity
536 if test "x$zlib_dir" != "x"
538 WS_CPPFLAGS="$WS_CPPFLAGS -I$zlib_dir/include"
539 AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, $zlib_dir/lib)
541 AC_DEFINE(HAVE_ZLIB, 1, [Define to use zlib library])
543 # Check for "inflate()" in zlib to make sure we can
546 AC_CHECK_LIB(z, inflate,,
547 AC_MSG_ERROR([zlib.h found but linking with -lz failed to find inflate(); do you have the right developer package installed (32-bit vs. 64-bit)?]))
550 # Check for "inflatePrime()" in zlib, which we need
551 # in order to read compressed capture files.
553 AC_CHECK_FUNCS(inflatePrime)
555 if test "x$ac_cv_func_inflatePrime" = "xyes" ; then
557 # Now check for "inflatePrime()" in zlib when
558 # linking with the linker flags for GTK+
559 # applications; people often grab XFree86 source
560 # and build and install it on their systems,
561 # and they appear sometimes to misconfigure
562 # XFree86 so that, even on systems with zlib,
563 # it assumes there is no zlib, so the XFree86
564 # build process builds and installs its
565 # own zlib in the X11 library directory.
567 # The zlib in at least some versions of XFree86
568 # is an older version that may lack "inflatePrime()",
569 # and that's the zlib with which Wireshark gets
570 # linked, so the build of Wireshark fails.
572 AC_MSG_CHECKING([for inflatePrime missing when linking with X11])
573 AC_TRY_LINK_FUNC(inflatePrime, AC_MSG_RESULT(no),
576 AC_MSG_ERROR(old zlib found when linking with X11 - get rid of old zlib.)
581 AC_WIRESHARK_POP_FLAGS
585 # AC_WIRESHARK_LIBLUA_CHECK
587 # Sets $have_lua to yes or no.
588 # If it's yes, it also sets $LUA_CFLAGS and $LUA_LIBS.
589 AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[
591 AC_WIRESHARK_PUSH_FLAGS
593 if test "x$want_lua_dir" = "x"
595 # The user didn't tell us where to find Lua. Let's go look for it.
597 # First, try the standard (pkg-config) way.
598 # Unfortunately Lua's pkg-config file isn't standardly named.
599 # Some distributions allow installation of multiple versions of
600 # Lua at the same time. On such systems each version has its
603 # We use a for loop instead of giving all the package names to
604 # PKG_CHECK_MODULES because doing the latter doesn't appear to
605 # work reliably (some package names are not searched for).
606 for pkg in "lua < 5.3" lua5.2 lua-5.2 lua52 lua5.1 lua-5.1 lua51 lua5.0 lua-5.0 lua50
608 AC_MSG_CHECKING(if you have $pkg)
609 PKG_CHECK_EXISTS($pkg,
618 if test "x$have_lua" = "xyes"
620 PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LUA, $pkg)
621 CPPFLAGS="$LUA_CFLAGS $CPPFLAGS"
622 AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h)
628 if test "x$have_lua" != "xyes"
630 # We don't have pkg-config or the user specified the path to
631 # Lua (in $want_lua_dir).
632 # Let's look for the header file.
634 AC_MSG_CHECKING(for the location of lua.h)
635 if test "x$want_lua_dir" = "x"
637 # The user didn't tell us where to look so we'll look in some
638 # standard locations.
639 want_lua_dir="/usr/local /usr $prefix"
641 for dir in $want_lua_dir
643 if test -r "$dir/include/lua.h"
645 header_dir="$dir/include"
650 for ver in 5.2 52 5.1 51 5.0 50
652 if test -r "$dir/include/lua$ver/lua.h"
654 header_dir="$dir/include/lua$ver"
661 if test "x$header_dir" = "x"
664 AC_MSG_RESULT(not found)
666 AC_MSG_RESULT($header_dir)
668 AC_MSG_CHECKING(the Lua version)
669 lua_ver=`$AWK AS_ESCAPE('/LUA_VERSION_NUM/ { print $NF; }' $header_dir/lua.h | sed 's/0/./')`
671 if test "x$lua_ver" = "x5.3"
673 # Wireshark doesn't compile with Lua 5.3 today
674 AC_MSG_RESULT($lua_ver - disabling Lua support)
677 AC_MSG_RESULT($lua_ver)
679 CPPFLAGS="$CPPFLAGS -I$header_dir"
680 AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h, ,
686 if test "x$have_lua" = "x"
689 LUA_CFLAGS="-I$header_dir"
691 # We have the header files and they work. Now let's check if we
692 # have the library and it works.
694 # XXX - if there's also a liblua in a directory that's
695 # already in CPPFLAGS or LDFLAGS, this won't make us find
696 # the version in the specified directory, as the compiler
697 # and/or linker will search that other directory before it
698 # searches the specified directory.
701 LDFLAGS="-L$lua_dir/lib $LDFLAGS"
702 AC_SEARCH_LIBS(luaL_openlibs, [lua-${lua_ver} lua${lua_ver} lua],
704 LUA_LIBS="-L$lua_dir/lib $ac_cv_search_luaL_openlibs -lm"
707 # Try again with -ldl
709 # Tell autoconf we don't want to use the cached result
710 unset ac_cv_search_luaL_openlibs
712 AC_SEARCH_LIBS(luaL_openlibs, [lua-${lua_ver} lua${lua_ver} lua],
714 LUA_LIBS="-L$lua_dir/lib $ac_cv_search_luaL_openlibs -lm -ldl"
724 AC_WIRESHARK_POP_FLAGS
728 # AC_WIRESHARK_LIBPORTAUDIO_CHECK
730 AC_DEFUN([AC_WIRESHARK_LIBPORTAUDIO_CHECK],[
732 AC_WIRESHARK_PUSH_FLAGS
733 wireshark_save_LIBS="$LIBS"
735 if test "x$portaudio_dir" != "x"
738 # The user specified a directory in which libportaudio
739 # resides, so add the "include" subdirectory of that directory to
740 # the include file search path and the "lib" subdirectory
741 # of that directory to the library search path.
743 # XXX - if there's also a libportaudio in a directory that's
744 # already in CPPFLAGS or LDFLAGS, this won't make us find
745 # the version in the specified directory, as the compiler
746 # and/or linker will search that other directory before it
747 # searches the specified directory.
749 CPPFLAGS="$CPPFLAGS -I$portaudio_dir/include"
750 LDFLAGS="$LDFLAGS -L$portaudio_dir/lib"
752 LIBS="-lportaudio $LIBS"
755 # Make sure we have "portaudio.h". If we don't, it means we probably
756 # don't have libportaudio, so don't use it.
758 AC_CHECK_HEADERS(portaudio.h,,
760 if test "x$portaudio_dir" != "x"
763 # The user used "--with-portaudio=" to specify a directory
764 # containing libportaudio, but we didn't find the header file
765 # there; that either means they didn't specify the
766 # right directory or are confused about whether libportaudio
767 # is, in fact, installed. Report the error and give up.
769 AC_MSG_ERROR([libportaudio header not found in directory specified in --with-portaudio])
771 if test "x$want_portaudio" = "xyes"
774 # The user tried to force us to use the library, but we
775 # couldn't find the header file; report an error.
777 AC_MSG_ERROR(Header file portaudio.h not found.)
780 # We couldn't find the header file; don't use the
781 # library, as it's probably not present.
789 # Check whether we have the right version of portaudio
791 if test "x$want_portaudio" != "xno"
793 AC_CHECK_TYPE(PortAudioStream,
794 AC_DEFINE(PORTAUDIO_API_1, 1, [Define if we are using version of of the Portaudio library API]),
796 [#include <portaudio.h>])
799 if test "x$want_portaudio" != "xno"
802 # Well, we at least have the portaudio header file.
804 # let's check if the libs are there
807 PORTAUDIO_INCLUDES=""
809 AC_CHECK_LIB(portaudio, Pa_Initialize,
811 if test "x$portaudio_dir" != "x"
814 # Put the "-I" and "-L" flags for portaudio
815 # into PORTAUDIO_INCLUDES and PORTAUDIO_LIBS,
818 PORTAUDIO_LIBS="-L$portaudio_dir/lib -lportaudio"
819 PORTAUDIO_INCLUDES="-I$portaudio_dir/include"
821 PORTAUDIO_LIBS="-lportaudio"
823 AC_DEFINE(HAVE_LIBPORTAUDIO, 1, [Define to use libportaudio library])
826 # User requested --with-portaudio but it isn't available
827 if test "x$want_portaudio" = "xyes"
829 AC_MSG_ERROR(Linking with libportaudio failed.)
833 AC_SUBST(PORTAUDIO_LIBS)
834 AC_SUBST(PORTAUDIO_INCLUDES)
838 LIBS="$wireshark_save_LIBS"
839 AC_WIRESHARK_POP_FLAGS
844 # AC_WIRESHARK_C_ARES_CHECK
846 AC_DEFUN([AC_WIRESHARK_C_ARES_CHECK],
848 want_c_ares=defaultyes
850 if test "x$want_c_ares" = "xdefaultyes"; then
854 if test "x$want_c_ares" = "xyes"; then
855 AC_CHECK_LIB(cares, ares_init,
858 # Make sure we have c-ares 1.5 or later; we don't
859 # support the older API.
861 AC_MSG_CHECKING([whether we have c-ares 1.5 or later])
865 #include <ares_version.h>
868 #if ((ARES_VERSION_MAJOR < 1) || \
869 (1 == ARES_VERSION_MAJOR == 1 && ARES_VERSION_MINOR < 5))
878 AC_DEFINE(HAVE_C_ARES, 1, [Define to use c-ares library])
883 AC_MSG_ERROR([Pre-1.5 versions of c-ares aren't supported])
887 AC_MSG_RESULT(not required)
893 # AC_WIRESHARK_LIBCAP_CHECK
895 AC_DEFUN([AC_WIRESHARK_LIBCAP_CHECK],
897 want_libcap=defaultyes
899 if test "x$want_libcap" = "xdefaultyes"; then
903 if test "x$want_libcap" = "xyes"; then
904 AC_CHECK_LIB(cap, cap_set_flag,
907 AC_DEFINE(HAVE_LIBCAP, 1, [Define to use the libcap library])
912 AC_MSG_RESULT(not required)
918 # AC_WIRESHARK_KRB5_CHECK
920 AC_DEFUN([AC_WIRESHARK_KRB5_CHECK],
922 AC_WIRESHARK_PUSH_FLAGS
923 wireshark_save_LIBS="$LIBS"
925 if test "x$krb5_dir" != "x"
928 # The user specified a directory in which kerberos resides,
929 # so add the "include" subdirectory of that directory to
930 # the include file search path and the "lib" subdirectory
931 # of that directory to the library search path.
933 # XXX - if there's also a kerberos in a directory that's
934 # already in CPPFLAGS or LDFLAGS, this won't make us find
935 # the version in the specified directory, as the compiler
936 # and/or linker will search that other directory before it
937 # searches the specified directory.
939 KRB5_CFLAGS="-I$krb5_dir/include"
940 ac_heimdal_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'`
941 # MIT Kerberos moved krb5.h to krb5/krb5.h starting with release 1.5
942 ac_mit_version_olddir=`grep 'Massachusetts' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts.*$/MIT/'`
943 ac_mit_version_newdir=`grep 'Massachusetts' $krb5_dir/include/krb5/krb5.h | head -n 1 | sed 's/^.*Massachusetts.*$/MIT/'`
944 ac_krb5_version="$ac_heimdal_version$ac_mit_version_olddir$ac_mit_version_newdir"
945 if test "x$ac_krb5_version" = "xHEIMDAL"
947 KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 -lcrypto -lroken -lcrypt"
949 KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lk5crypto -lcom_err"
951 if test "x$ac_krb5_version" = "xMIT"
953 AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
956 AC_PATH_TOOL(KRB5_CONFIG, krb5-config)
957 if test -x "$KRB5_CONFIG"
959 KRB5_CFLAGS=`"$KRB5_CONFIG" --cflags`
960 KRB5_LIBS=`"$KRB5_CONFIG" --libs`
961 ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/' -e 's/^Solaris Kerberos .*$/MIT/'`
965 # If -lcrypto is in KRB5_LIBS, we require it to build
966 # with Heimdal/MIT. We don't want to built with it by
967 # default, due to annoying license incompatibilities
968 # between the OpenSSL license and the GPL.
972 if test "x$with_krb5_crypto_openssl" != "xyes"
974 AC_MSG_ERROR([Kerberos library requires -lcrypto, so you must specify --with-krb5-crypto-openssl])
979 CPPFLAGS="$CPPFLAGS $KRB5_CFLAGS"
982 # Make sure we have "krb5.h". If we don't, it means we probably
983 # don't have kerberos, so don't use it.
985 AC_CHECK_HEADER(krb5.h,,
987 if test "x$krb5_dir" != "x"
990 # The user used "--with-krb5=" to specify a directory
991 # containing kerberos, but we didn't find the header file
992 # there; that either means they didn't specify the
993 # right directory or are confused about whether kerberos
994 # is, in fact, installed. Report the error and give up.
996 AC_MSG_ERROR([kerberos header not found in directory specified in --with-krb5])
998 if test "x$want_krb5" = "xyes"
1001 # The user tried to force us to use the library, but we
1002 # couldn't find the header file; report an error.
1004 AC_MSG_ERROR(Header file krb5.h not found.)
1007 # We couldn't find the header file; don't use the
1008 # library, as it's probably not present.
1013 AC_MSG_RESULT(No Heimdal or MIT header found - disabling dissection for some kerberos data in packet decoding)
1018 if test "x$want_krb5" != "xno"
1021 # Well, we at least have the krb5 header file.
1022 # Check whether this is Heimdal or MIT.
1024 AC_MSG_CHECKING(whether the Kerberos library is Heimdal or MIT)
1025 if test "x$ac_krb5_version" = "xHEIMDAL" -o "x$ac_krb5_version" = "xMIT"
1029 # Check whether we have krb5_kt_resolve - and whether
1030 # we need to link with -lresolv when linking with
1031 # the Kerberos library.
1033 AC_MSG_RESULT($ac_krb5_version)
1034 found_krb5_kt_resolve=no
1035 for extras in "" "-lresolv"
1037 LIBS="$KRB5_LIBS $extras $wireshark_save_LIBS"
1038 if test -z "$extras"
1040 AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve])
1042 AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve (linking with $extras)])
1049 krb5_kt_resolve(0, 0, 0);
1053 # We found "krb5_kt_resolve()".
1056 if test -n "$extras"; then
1057 KRB5_LIBS="$KRB5_LIBS $extras"
1059 AC_DEFINE(HAVE_KERBEROS, 1, [Define to use kerberos])
1060 if test "x$ac_krb5_version" = "xHEIMDAL"
1062 AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1, [Define to use heimdal kerberos])
1063 elif test "x$ac_krb5_version" = "xMIT"
1065 AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
1067 found_krb5_kt_resolve=yes
1074 if test "$found_krb5_kt_resolve" = no
1077 # We didn't find "krb5_kt_resolve()" in the
1078 # Kerberos library, even when we tried linking
1079 # with -lresolv; we can't link with kerberos.
1081 if test "x$want_krb5" = "xyes"
1084 # The user tried to force us to use the library,
1085 # but we can't do so; report an error.
1087 AC_MSG_ERROR(Usable $ac_krb5_version not found)
1092 AC_MSG_RESULT(Usable $ac_krb5_version not found - disabling dissection for some kerberos data in packet decoding)
1099 # We can link with Kerberos; see whether krb5.h
1100 # defines KEYTYPE_ARCFOUR_56 (where "defines" means
1101 # "as a #define or as an enum member).
1103 AC_MSG_CHECKING([whether krb5.h defines KEYTYPE_ARCFOUR_56])
1113 printf("%u\n", KEYTYPE_ARCFOUR_56);
1119 AC_DEFINE(HAVE_KEYTYPE_ARCFOUR_56, 1, [Define if krb5.h defines KEYTYPE_ARCFOUR_56])
1127 # It's not Heimdal or MIT.
1130 if test "x$want_krb5" = "xyes"
1133 # The user tried to force us to use the library,
1134 # but we can't do so; report an error.
1136 AC_MSG_ERROR(Kerberos not found)
1141 AC_MSG_RESULT(Kerberos not found - disabling dissection for some kerberos data in packet decoding)
1149 # The user asked us not to use Kerberos, or they didn't
1150 # say whether they wanted us to use it but we found
1157 AC_SUBST(KRB5_CFLAGS)
1160 LIBS="$wireshark_save_LIBS"
1161 AC_WIRESHARK_POP_FLAGS
1165 # AC_WIRESHARK_GEOIP_CHECK
1167 AC_DEFUN([AC_WIRESHARK_GEOIP_CHECK],
1169 want_geoip=defaultyes
1171 if test "x$want_geoip" = "xdefaultyes"; then
1175 if test "x$want_geoip" = "xyes"; then
1176 AC_CHECK_LIB(GeoIP, GeoIP_new,
1179 AC_DEFINE(HAVE_GEOIP, 1, [Define to use GeoIP library])
1183 if test "x$have_good_geoip" = "xyes"; then
1184 AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_ipnum_v6,
1186 AC_DEFINE(HAVE_GEOIP_V6, 1, [Define if GeoIP supports IPv6 (GeoIP 1.4.5 and later)])
1189 AC_CHECK_LIB(GeoIP, GeoIP_free,
1191 AC_DEFINE(HAVE_GEOIP_FREE, 1, [Define if GeoIP has GeoIP_free])
1196 AC_MSG_RESULT(not required)
1201 # AC_WIRESHARK_LIBSSH_CHECK
1203 AC_DEFUN([AC_WIRESHARK_LIBSSH_CHECK],
1205 want_libssh=defaultyes
1207 if test "x$want_libssh" = "xdefaultyes"; then
1211 if test "x$want_libssh" = "xyes"; then
1212 AC_CHECK_LIB(ssh, ssh_new,
1215 AC_DEFINE(HAVE_LIBSSH, 1, [Define to use libssh library])
1216 have_good_libssh=yes
1219 AC_MSG_CHECKING([whether libssh >= 0.6.0 for sshdump, ciscodump])
1220 PKG_CHECK_EXISTS([libssh >= 0.6.0],
1223 AC_DEFINE(HAVE_LIBSSH_POINTSIX, 1, [Defined if libssh >= 0.6.0])
1224 have_libssh_pointsix=yes
1228 if test "x$have_libssh_pointsix" = "xyes"; then
1229 # ssh_userauth_agent exists only >= 0.6.0, but not on Windows
1230 # so check explicitly
1231 AC_CHECK_LIB(ssh, ssh_userauth_agent,
1233 AC_DEFINE(HAVE_SSH_USERAUTH_AGENT, 1, [Libssh library has ssh_userauth_agent])
1234 have_ssh_userauth_agent=yes
1239 AC_MSG_RESULT(not required)
1244 # AC_WIRESHARK_NGHTTP2_CHECK
1246 AC_DEFUN([AC_WIRESHARK_NGHTTP2_CHECK],
1248 want_nghttp2=defaultyes
1250 if test "x$want_nghttp2" = "xdefaultyes"; then
1254 if test "x$want_nghttp2" = "xyes"; then
1255 AC_CHECK_LIB(nghttp2, nghttp2_hd_inflate_new,
1257 AC_CHECK_HEADERS(nghttp2/nghttp2.h,
1259 NGHTTP2_LIBS=-lnghttp2
1260 AC_DEFINE(HAVE_NGHTTP2, 1, [Define to use nghttp2 library])
1261 have_good_nghttp2=yes
1267 AC_MSG_RESULT(not required)
1271 #AC_WIRESHARK_LDFLAGS_CHECK
1273 # $1 : ldflag(s) to test
1275 # We attempt to compile and link a test program with the specified linker
1276 # flag. The defined flag is added to LDFLAGS only if the link succeeds.
1278 AC_DEFUN([AC_WIRESHARK_LDFLAGS_CHECK],
1280 AC_MSG_CHECKING(whether we can add $LD_OPTION to LDFLAGS)
1281 AC_WIRESHARK_PUSH_FLAGS
1282 LDFLAGS="$LDFLAGS $LD_OPTION"
1283 can_add_to_ldflags=""
1286 AC_LANG_SOURCE([[int main() { return 0; }]])
1290 AX_APPEND_FLAG([$LD_OPTION], [WS_LDFLAGS])
1291 can_add_to_ldflags=yes
1295 can_add_to_ldflags=no
1297 AC_WIRESHARK_POP_FLAGS
1301 dnl Check whether, if you pass an unknown warning option to the
1302 dnl compiler, it fails or just prints a warning message and succeeds.
1303 dnl Set ac_wireshark_unknown_warning_option_error to the appropriate flag
1304 dnl to force an error if it would otherwise just print a warning message
1307 AC_DEFUN([AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR],
1309 AC_MSG_CHECKING([whether the compiler fails when given an unknown warning option])
1310 AC_WIRESHARK_PUSH_FLAGS
1311 CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy"
1316 AC_MSG_RESULT([no, adding -Werror=unknown-warning-option])
1318 # We're assuming this is clang, where
1319 # -Werror=unknown-warning-option is the appropriate
1320 # option to force the compiler to fail.
1322 ac_wireshark_unknown_warning_option_error="-Werror=unknown-warning-option"
1325 AC_MSG_RESULT([yes])
1327 AC_WIRESHARK_POP_FLAGS
1331 dnl Check whether, if you pass a valid-for-C-but-not-C++ option to the
1332 dnl compiler, it fails or just prints a warning message and succeeds.
1333 dnl Set ac_wireshark_non_cxx_warning_option_error to the appropriate flag
1334 dnl to force an error if it would otherwise just print a warning message
1337 AC_DEFUN([AC_WIRESHARK_CHECK_NON_CXX_WARNING_OPTION_ERROR],
1339 AC_MSG_CHECKING([whether the compiler fails when given an warning option not supported for C++])
1341 # Some C+ compilers warn about -Wmissing-prototypes, and some warn
1342 # about -Wmissing-declarations. Check both.
1345 AC_WIRESHARK_PUSH_FLAGS
1346 save_CXXFLAGS="$CXXFLAGS"
1347 for flag in -Wmissing-prototypes -Wmissing-declarations; do
1348 CXXFLAGS="$save_CXXFLAGS $flag"
1354 # We're assuming this is g++, where -Werror is the
1355 # appropriate option to force the compiler to fail.
1356 # Check whether it fails with -Werror.
1358 # NOTE: it's important to put -Werror *before*
1359 # the flag, otherwise, when it sees the flag,
1360 # it doesn't yet know that warnings should be
1361 # treated as errors, and doesn't treat the
1362 # "that's C-only" warning as an error.
1364 CXXFLAGS="$save_CXXFLAGS -Werror $flag"
1370 # No, so this option is actually OK
1371 # with our C++ compiler.
1373 # (We need an empty command here to
1374 # prevent some versions of autoconf
1375 # from generating a script with an
1376 # empty "then" clause for an if statement.)
1382 # Yes, so we need -Werror for the tests.
1384 ac_wireshark_non_cxx_warning_option_error="-Werror"
1389 AC_WIRESHARK_POP_FLAGS
1391 if test x$ac_wireshark_non_cxx_warning_option_error = x; then
1392 AC_MSG_RESULT([yes])
1394 AC_MSG_RESULT([no, adding -Werror])
1399 # AC_WIRESHARK_COMPILER_FLAGS_CHECK
1401 # $1 : flags to test
1402 # $2 : if supplied, C for C-only flags, CXX for C++-only flags
1403 # $3 : if supplied, a program to try to compile with the flag
1404 # and, if the compile fails when -Werror is turned on,
1405 # we don't add the flag - used for warning flags that
1406 # issue incorrect or non-useful warnings with some
1408 # $4 : must be supplied if $3 is supplied - a message describing
1409 # for what the test program is testing
1411 # The macro first determines if the compiler supports GCC-style flags.
1412 # Then it attempts to compile with the defined cflags. The defined
1413 # flags are added to WS_CHECKED_CFLAGS only if the compilation succeeds.
1414 # CFLAGS remains unchanged. can_add_to_cflags is set to "no" when the
1415 # flag is checked but unavailable. (Like-wise for CXXFLAGS.)
1417 # We do this because not all such options are necessarily supported by
1418 # the version of the particular compiler we're using.
1420 AC_DEFUN([AC_WIRESHARK_COMPILER_FLAGS_CHECK],
1422 can_add_to_cflags=""
1423 can_add_to_cxxflags=""
1424 if test "x$ac_supports_gcc_flags" = "xyes" ; then
1425 if test "$2" != CXX ; then
1427 # Not C++-only; if this can be added to the C compiler flags, add them.
1429 # If the option begins with "-W", add
1430 # $ac_wireshark_unknown_warning_option_error to make sure that
1431 # we'll get an error if it's an unknown warning option; not all
1432 # compilers treat unknown warning options as errors (I'm looking at
1435 # If the option begins with "-f" or "-m", add -Werror to make sure
1436 # that we'll get an error if we get "argument unused during compilation"
1437 # warnings, as those will either cause a failure for files compiled
1438 # with -Werror or annoying noise for files compiled without it.
1439 # (Yeah, you, clang.)
1441 AC_MSG_CHECKING(whether we can add $GCC_OPTION to CFLAGS)
1442 AC_WIRESHARK_PUSH_FLAGS
1443 if expr "x$GCC_OPTION" : "x-W.*" >/dev/null
1445 CFLAGS="$CFLAGS $ac_wireshark_unknown_warning_option_error $GCC_OPTION"
1446 elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null
1448 CFLAGS="$CFLAGS -Werror $GCC_OPTION"
1449 elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null
1451 CFLAGS="$CFLAGS -Werror $GCC_OPTION"
1453 CFLAGS="$CFLAGS $GCC_OPTION"
1457 AC_LANG_SOURCE([[int foo;]])
1461 can_add_to_cflags=yes
1463 # OK, do we have a test program? If so, check
1464 # whether it fails with this option and -Werror,
1465 # and, if so, don't include it.
1467 # We test arg 4 here because arg 3 is a program which
1468 # could contain quotes (breaking the comparison).
1470 if test "x$4" != "x" ; then
1471 CFLAGS="$CFLAGS -Werror"
1472 AC_MSG_CHECKING(whether $GCC_OPTION $4)
1474 [AC_LANG_SOURCE($3)],
1478 # Remove "force an error for a warning" options, if we
1479 # added them, by setting CFLAGS to the saved value plus
1480 # just the new option.
1482 AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS])
1483 if test "$CC" = "$CC_FOR_BUILD"; then
1485 # We're building the build tools with the same compiler
1486 # with which we're building Wireshark, so add the flags
1487 # to the flags for that compiler as well.
1489 AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS_FOR_BUILD])
1497 # Remove "force an error for a warning" options, if we
1498 # added them, by setting CFLAGS to the saved value plus
1499 # just the new option.
1501 AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS])
1502 if test "$CC" = "$CC_FOR_BUILD"; then
1504 # We're building the build tools with the same compiler
1505 # with which we're building Wireshark, so add the flags
1506 # to the flags for that compiler as well.
1508 AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS_FOR_BUILD])
1514 can_add_to_cflags=no
1516 AC_WIRESHARK_POP_FLAGS
1519 # Did we find a C++ compiler?
1521 if test "x$CXX" != "x" ; then
1523 # Yes. Is this option only for the C compiler?
1525 if test "$2" != C ; then
1527 # Not C-only; if this option can be added to the C++ compiler
1530 # If the option begins with "-W", add
1531 # $ac_wireshark_unknown_warning_option_error, as per the above, and
1532 # also add $ac_wireshark_non_cxx_warning_option_error, because at
1533 # lease some versions of g++ whine about -Wmissing-prototypes, the
1534 # fact that at least one of those versions refuses to warn about
1535 # function declarations without an earlier declaration nonwithstanding;
1536 # perhaps there's a reason not to warn about that with C++ even though
1537 # warning about it can be a Good Idea with C, but it's not obvious to
1540 # If the option begins with "-f" or "-m", add -Werror to make sure
1541 # that we'll get an error if we get "argument unused during compilation"
1542 # warnings, as those will either cause a failure for files compiled
1543 # with -Werror or annoying noise for files compiled without it.
1544 # (Yeah, you, clang++.)
1546 AC_MSG_CHECKING(whether we can add $GCC_OPTION to CXXFLAGS)
1547 AC_WIRESHARK_PUSH_FLAGS
1548 if expr "x$GCC_OPTION" : "x-W.*" >/dev/null
1550 CXXFLAGS="$CXXFLAGS $ac_wireshark_unknown_warning_option_error $ac_wireshark_non_cxx_warning_option_error $GCC_OPTION"
1551 elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null
1553 CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION"
1554 elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null
1556 CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION"
1558 CXXFLAGS="$CXXFLAGS $GCC_OPTION"
1563 AC_LANG_SOURCE([[int foo;]])
1567 can_add_to_cxxflags=yes
1569 # OK, do we have a test program? If so, check
1570 # whether it fails with this option and -Werror,
1571 # and, if so, don't include it.
1573 # We test arg 4 here because arg 3 is a program which
1574 # could contain quotes (breaking the comparison).
1576 if test "x$4" != "x" ; then
1577 CXXFLAGS="$CXXFLAGS -Werror"
1578 AC_MSG_CHECKING(whether $GCC_OPTION $4)
1580 [AC_LANG_SOURCE($3)],
1584 # Remove "force an error for a warning" options, if we
1585 # added them, by setting CXXFLAGS to the saved value plus
1586 # just the new option.
1588 AX_APPEND_FLAG([$GCC_OPTION], [WS_CXXFLAGS])
1595 # Remove "force an error for a warning" options, if we
1596 # added them, by setting CXXFLAGS to the saved value plus
1597 # just the new option.
1599 AX_APPEND_FLAG([$GCC_OPTION], [WS_CXXFLAGS])
1604 can_add_to_cxxflags=no
1606 AC_WIRESHARK_POP_FLAGS
1609 if test "(" "$can_add_to_cflags" = "yes" -a "$can_add_to_cxxflags" = "no" ")" \
1610 -o "(" "$can_add_to_cflags" = "no" -a "$can_add_to_cxxflags" = "yes" ")"
1613 # Confusingly, some C++ compilers like -Wmissing-prototypes but
1614 # don't like -Wmissing-declarations and others like
1615 # -Wmissing-declarations but don't like -Wmissing-prototypes,
1616 # the fact that the corresponding C compiler likes both. Don't
1619 if test "(" x$GCC_OPTION != x-Wmissing-prototypes ")" \
1620 -a "(" x$GCC_OPTION != x-Wmissing-declarations ")"
1622 AC_MSG_WARN([$CC and $CXX appear to be a mismatched pair])
1629 # AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
1631 # Checks if '-D_FORTIFY_SOURCE=...' is OK to use in CPPFLAGS.
1632 # Use '-D_FORTIFY_SOURCE=...' in CPPFLAGS only if the GCC 'optimization level' is > 0.
1633 # The use of '-D_FORTIFY_SOURCE=...' will cause a warning with at least some versions
1634 # of glibc if the GCC "optimization level" is 0 (default or -O or -O0)
1635 # when using GCC to compile a source file which references the macro definition.
1637 # See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
1638 # See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
1640 # We'll use '-D_FORTIFY_SOURCE=2' only if there's no warning; Among other things this means
1641 # that the use of '-D_FORTIFY_SOURCE=2' with '-Werror' and '-O0' won't cause
1642 # the compiler to stop on error.
1643 # Assumption: CFLAGS already contains whatever optimization option including none) is
1647 AC_DEFUN([AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK],
1649 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
1650 AC_MSG_CHECKING([whether -D_FORTIFY_SOURCE=2 can be used (without generating a warning)])
1651 AC_WIRESHARK_PUSH_FLAGS
1652 CFLAGS="$CFLAGS -Werror"
1653 CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2"
1661 AX_APPEND_FLAG([-D_FORTIFY_SOURCE=2], [WS_CPPFLAGS])
1666 AC_WIRESHARK_POP_FLAGS
1671 # AC_WIRESHARK_GCC_SYSTEM_INCLUDE
1673 # Replace -I include flag for -isystem in FLAGS argument
1675 AC_DEFUN([AC_WIRESHARK_GCC_SYSTEM_INCLUDE],
1677 if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
1679 | sed -e 's/ *-I *\// -isystem\//g' -e 's/^ *//'`
1684 # PKG_WIRESHARK_CHECK_SYSTEM_MODULES
1686 AC_DEFUN([PKG_WIRESHARK_CHECK_SYSTEM_MODULES],
1688 PKG_CHECK_MODULES($@)
1689 AC_WIRESHARK_GCC_SYSTEM_INCLUDE($1_CFLAGS)
1692 # Based on AM_PATH_GTK in gtk-2.0.m4.
1694 dnl AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION([MODULE, MINIMUM-VERSION,
1695 dnl REQUESTED-MAJOR_VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
1696 dnl Test for a particular Qt module, for a particular Qt major version,
1697 dnl and, if we find it add the flags and libraries for it to Qt_CFLAGS
1700 AC_DEFUN([AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION],
1710 # Version of the module we're checking for.
1713 min_qt_version=ifelse([$2], ,4.0.0,$2)
1722 # Version of the module we're checking for.
1725 min_qt_version=5.0.0
1729 AC_MSG_ERROR([Qt version $3 is not a known Qt version])
1733 pkg_config_module="${modprefix}$1"
1734 AC_MSG_CHECKING(for $pkg_config_module - version >= $min_qt_version)
1735 if $PKG_CONFIG --atleast-version $min_qt_version $pkg_config_module; then
1736 mod_version=`$PKG_CONFIG --modversion $pkg_config_module`
1737 AC_MSG_RESULT(yes (version $mod_version))
1738 mod_cflags=`$PKG_CONFIG --cflags $pkg_config_module`
1739 AC_WIRESHARK_GCC_SYSTEM_INCLUDE(mod_cflags)
1740 Qt_CFLAGS="$Qt_CFLAGS $mod_cflags"
1741 Qt_LIBS="$Qt_LIBS `$PKG_CONFIG --libs $pkg_config_module`"
1742 # Run Action-If-Found
1743 ifelse([$4], , :, [$4])
1746 # Run Action-If-Not-Found
1747 ifelse([$5], , :, [$5])
1751 dnl AC_WIRESHARK_QT_MODULE_CHECK([MODULE, MINIMUM-VERSION,
1752 dnl REQUESTED-MAJOR_VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
1753 dnl Test for a particular Qt module and add the flags and libraries
1754 dnl for it to Qt_CFLAGS and Qt_LIBS.
1756 AC_DEFUN([AC_WIRESHARK_QT_MODULE_CHECK],
1759 # Prior to Qt 5, modules were named QtXXX.
1760 # In Qt 5, they're named Qt5XXX.
1761 # This will need to change to handle future major Qt releases.
1767 # Check for all versions of Qt we support.
1768 # Try the Qt 5 version first.
1788 AC_MSG_ERROR([Qt version $3 is not a known Qt version])
1792 for version in $versions
1794 AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION($1, $2,
1795 $version, [foundit=yes], [foundit=no])
1796 if test "x$foundit" = "xyes"; then
1801 if test "x$foundit" = "xyes"; then
1802 # Remember which version of Qt we found
1804 # Run Action-If-Found
1805 ifelse([$4], , :, [$4])
1807 # Run Action-If-Not-Found
1808 ifelse([$5], , :, [$5])
1812 AC_DEFUN([AC_WIRESHARK_QT_ADD_PIC_IF_NEEDED],
1815 AC_WIRESHARK_PUSH_FLAGS
1816 CPPFLAGS="$CPPFLAGS $Qt_CFLAGS"
1817 AC_MSG_CHECKING([whether Qt works without -fPIC])
1819 [AC_LANG_SOURCE([[#include <QtCore>]])],
1820 [AC_MSG_RESULT(yes)],
1823 AC_MSG_CHECKING([whether Qt works with -fPIC])
1824 CPPFLAGS="$CPPFLAGS -fPIC"
1826 [AC_LANG_SOURCE([[#include <QtCore>]])],
1829 Qt_CFLAGS="$Qt_CFLAGS -fPIC"
1833 AC_MSG_ERROR(Couldn't compile Qt without -fPIC nor with -fPIC)
1836 AC_WIRESHARK_POP_FLAGS
1840 dnl AC_WIRESHARK_QT_CHECK([MINIMUM-VERSION, REQUESTED-MAJOR_VERSION,
1841 dnl [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
1842 dnl Test for Qt and define Qt_CFLAGS and Qt_LIBS.
1844 AC_DEFUN([AC_WIRESHARK_QT_CHECK],
1846 qt_version_to_check="$2"
1849 # Check for the Core module; if we don't have that,
1850 # we don't have Qt. If we *do* have it, we know what
1851 # version it is, so only check for that version of
1854 AC_WIRESHARK_QT_MODULE_CHECK(Core, $1, $qt_version_to_check,
1856 qt_version_to_check=$qt_version
1857 QT_VERSION=$mod_version
1858 QT_VERSION_MAJOR=`echo "$QT_VERSION" | cut -f1 -d.`
1859 QT_VERSION_MINOR=`echo "$QT_VERSION" | cut -f2 -d.`
1860 QT_VERSION_MICRO=`echo "$QT_VERSION" | cut -f3 -d.`
1862 # Qt 5.7 and later requires C++11
1863 AS_IF([test $QT_VERSION_MAJOR -eq 5 -a $QT_VERSION_MINOR -ge 7],
1864 [AS_IF([test "$HAVE_CXX11" -eq 0], [AC_MSG_ERROR([Qt 5.7 and later requires C++11])])])
1869 if test x"$no_qt" = x ; then
1871 # We need the Gui module as well.
1873 AC_WIRESHARK_QT_MODULE_CHECK(Gui, $1, $qt_version_to_check, ,
1877 if test x"$no_qt" = x ; then
1879 # Qt 5.0 appears to move the widgets out of Qt GUI
1880 # to Qt Widgets; look for the Widgets module, but
1881 # don't fail if we don't have it.
1883 AC_WIRESHARK_QT_MODULE_CHECK(Widgets, $1, $qt_version_to_check)
1886 # Qt 5.0 also appears to move the printing support into
1887 # the Qt PrintSupport module.
1889 AC_WIRESHARK_QT_MODULE_CHECK(PrintSupport, $1, $qt_version_to_check)
1892 # Qt 5.0 added multimedia in the Qt
1893 # Multimedia module.
1895 have_qt_multimedia_lib=no
1896 AC_WIRESHARK_QT_MODULE_CHECK(Multimedia, $1, $qt_version_to_check,
1897 have_qt_multimedia_lib=yes
1898 AC_DEFINE(QT_MULTIMEDIA_LIB, 1, [Define if we have QtMultimedia]))
1901 # While we're at it, look for QtMacExtras. (Presumably
1902 # if we're not building for macOS, it won't be present.)
1904 # XXX - is there anything in QtX11Extras or QtWinExtras
1905 # that we should be using?
1907 AC_WIRESHARK_QT_MODULE_CHECK(MacExtras, $1, $qt_version_to_check,
1908 AC_DEFINE(QT_MACEXTRAS_LIB, 1, [Define if we have QtMacExtras]))
1910 AC_WIRESHARK_QT_ADD_PIC_IF_NEEDED
1912 # Run Action-If-Found
1913 ifelse([$3], , :, [$3])
1915 # Run Action-If-Not-Found
1916 ifelse([$4], , :, [$4])
1921 dnl AC_WIRESHARK_QT_TOOL_CHECK([TOOLPATHVAR, TOOL, REQUESTED-MAJOR_VERSION])
1922 dnl Test for a particular Qt tool for some specific version of Qt
1924 AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK],
1927 # At least in some versions of Debian/Ubuntu, and perhaps
1928 # other OSes, the Qt build tools are just links to a
1929 # program called "qtchooser", and even if you want to
1930 # build with Qt 5, running the tool might give you the
1931 # Qt 4 version of the tool unless you run the tool with
1934 # So we look for qtchooser and, if we find it, use the
1935 # -qt={version} argument, otherwise we look for particular
1936 # tool versions using tool name suffixes.
1938 AC_PATH_PROG(QTCHOOSER, qtchooser)
1939 if test ! -z "$QTCHOOSER"; then
1941 # We found qtchooser; we assume that means that
1942 # the tool is linked to qtchooser, so that we
1943 # can run it with the -qt={version} flag to get
1944 # the appropriate version of the tool.
1946 AC_PATH_PROG($1, $2)
1947 if test "x$$1" = x; then
1949 # We can't build Qt Wireshark without that
1952 AC_MSG_ERROR(I couldn't find $2; make sure it's installed and in your path)
1956 # Add the -qt={version} argument to it.
1958 $1="$$1 -qt=$qt_version"
1961 # Annoyingly, on some Linux distros (e.g. Debian)
1962 # the Qt 5 tools have no suffix and the Qt 4 tools
1963 # have suffix -qt4. On other distros (e.g. openSUSE)
1964 # the Qt 5 tools have suffix -qt5 and the Qt 4 tools
1967 # So we check for the tool first with the -qtN suffix
1968 # and then with no suffix.
1970 AC_PATH_PROGS($1, [$2-qt$qt_version $2])
1971 if test "x$$1" = x; then
1973 # We can't build Qt Wireshark without that
1976 AC_MSG_ERROR(I couldn't find $2-qt$qt_version or $2; make sure it's installed and in your path)
1981 AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK_LRELEASE],
1983 AC_WIRESHARK_QT_TOOL_CHECK(LRELEASE, lrelease, $2)
1984 AC_MSG_CHECKING(whether lrelease -version works)
1985 lrelease_version=`$LRELEASE -version 2>&AS_MESSAGE_LOG_FD`
1986 AS_IF([test $? -ne 0],
1989 AC_MSG_ERROR([$LRELEASE -version returned non-zero exit status])
1991 AC_MSG_RESULT([ok, $lrelease_version])
1995 # AC_WIRESHARK_LZ4_CHECK
1997 AC_DEFUN([AC_WIRESHARK_LZ4_CHECK],
1999 AC_WIRESHARK_PUSH_FLAGS
2001 if test "x$lz4_dir" != "x"
2004 # The user specified a directory in which lz4 resides,
2005 # so add the "include" subdirectory of that directory to
2006 # the include file search path and the "lib" subdirectory
2007 # of that directory to the library search path.
2009 # XXX - if there's also a lz4 in a directory that's
2010 # already in CPPFLAGS or LDFLAGS, this won't make us find
2011 # the version in the specified directory, as the compiler
2012 # and/or linker will search that other directory before it
2013 # searches the specified directory.
2015 LZ4_CFLAGS="-I$lz4_dir/include"
2019 # Make sure we have "lz4.h". If we don't, it means we probably
2020 # don't have lz4, so don't use it.
2022 AC_CHECK_HEADER(lz4.h,,
2024 if test "x$lz4_dir" != "x"
2027 # The user used "--with-lz4=" to specify a directory
2028 # containing lz4, but we didn't find the header file
2029 # there; that either means they didn't specify the
2030 # right directory or are confused about whether lz4
2031 # is, in fact, installed. Report the error and give up.
2033 AC_MSG_ERROR([lz4 header not found in directory specified in --with-lz4])
2035 if test "x$want_lz4" = "xyes"
2038 # The user tried to force us to use the library, but we
2039 # couldn't find the header file; report an error.
2041 AC_MSG_ERROR(Header file lz4.h not found.)
2044 # We couldn't find the header file; don't use the
2045 # library, as it's probably not present.
2052 if test "x$want_lz4" != "xno"
2055 # Well, we at least have the lz4 header file.
2056 # We link with lz4 to support uncompression of
2060 ac_save_LIBS="$LIBS"
2061 LIBS="$LZ4_LIBS $LIBS"
2062 AC_DEFINE(HAVE_LZ4, 1, [Define to use lz4 library])
2064 # Check for "LZ4_decompress_safe()" in lz4, which we need
2065 # in order to read compressed capture files.
2067 AC_CHECK_FUNCS(LZ4_decompress_safe)
2068 LIBS="$ac_save_LIBS"
2071 AC_WIRESHARK_POP_FLAGS
2075 # AC_WIRESHARK_SNAPPY_CHECK
2077 AC_DEFUN([AC_WIRESHARK_SNAPPY_CHECK],
2079 AC_WIRESHARK_PUSH_FLAGS
2081 if test "x$snappy_dir" != "x"
2084 # The user specified a directory in which snappy resides,
2085 # so add the "include" subdirectory of that directory to
2086 # the include file search path and the "lib" subdirectory
2087 # of that directory to the library search path.
2089 # XXX - if there's also a snappy in a directory that's
2090 # already in CPPFLAGS or LDFLAGS, this won't make us find
2091 # the version in the specified directory, as the compiler
2092 # and/or linker will search that other directory before it
2093 # searches the specified directory.
2095 SNAPPY_CFLAGS="-I$snappy_dir/include"
2099 # Make sure we have "snappy-c.h". If we don't, it means we probably
2100 # don't have snappy, so don't use it.
2102 AC_CHECK_HEADER(snappy-c.h,,
2104 if test "x$snappy_dir" != "x"
2107 # The user used "--with-snappy=" to specify a directory
2108 # containing snappy, but we didn't find the header file
2109 # there; that either means they didn't specify the
2110 # right directory or are confused about whether snappy
2111 # is, in fact, installed. Report the error and give up.
2113 AC_MSG_ERROR([snappy-c.header not found in directory specified in --with-snappy])
2115 if test "x$want_snappy" = "xyes"
2118 # The user tried to force us to use the library, but we
2119 # couldn't find the header file; report an error.
2121 AC_MSG_ERROR(Header file snappy-c.h not found.)
2124 # We couldn't find the header file; don't use the
2125 # library, as it's probably not present.
2132 if test "x$want_snappy" != "xno"
2135 # Well, we at least have the snappy-c.header file.
2136 # We link with snappy to support uncompression of
2137 # compressed CQL traffic.
2139 SNAPPY_LIBS=-lsnappy
2140 ac_save_LIBS="$LIBS"
2141 LIBS="$SNAPPY_LIBS $LIBS"
2142 AC_DEFINE(HAVE_SNAPPY, 1, [Define to use snappy library])
2144 # Check for "snappy_uncompress()" in snappy, which we need
2145 # in order to read compressed capture files.
2147 AC_CHECK_FUNCS(snappy_uncompress)
2148 LIBS="$ac_save_LIBS"
2151 AC_WIRESHARK_POP_FLAGS
2155 # AC_WIRESHARK_BCG729_CHECK
2157 AC_DEFUN([AC_WIRESHARK_BCG729_CHECK],
2159 want_bcg729=defaultyes
2161 if test "x$want_bcg729" = "xdefaultyes"; then
2165 if test "x$want_bcg729" = "xyes"; then
2166 AC_CHECK_LIB(bcg729, bcg729Decoder,
2168 AC_CHECK_HEADERS(bcg729/decoder.h,
2170 BCG729_LIBS=-lbcg729
2171 AC_DEFINE(HAVE_BCG729, 1, [Define to use bcg729 library])
2172 have_good_bcg729=yes
2178 AC_MSG_RESULT(not required)