aboutsummaryrefslogtreecommitdiffstats
path: root/acinclude.m4
diff options
context:
space:
mode:
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m42017
1 files changed, 0 insertions, 2017 deletions
diff --git a/acinclude.m4 b/acinclude.m4
deleted file mode 100644
index 1a452667b2..0000000000
--- a/acinclude.m4
+++ /dev/null
@@ -1,2017 +0,0 @@
-dnl Macros that test for specific features.
-dnl This file is part of the Autoconf packaging for Wireshark.
-dnl Copyright (C) 1998-2000 by Gerald Combs.
-dnl
-dnl SPDX-License-Identifier: GPL-2.0-or-later
-dnl
-dnl As a special exception, the Free Software Foundation gives unlimited
-dnl permission to copy, distribute and modify the configure scripts that
-dnl are the output of Autoconf. You need not follow the terms of the GNU
-dnl General Public License when using or distributing such scripts, even
-dnl though portions of the text of Autoconf appear in them. The GNU
-dnl General Public License (GPL) does govern all other use of the material
-dnl that constitutes the Autoconf program.
-dnl
-dnl Certain portions of the Autoconf source text are designed to be copied
-dnl (in certain cases, depending on the input) into the output of
-dnl Autoconf. We call these the "data" portions. The rest of the Autoconf
-dnl source text consists of comments plus executable code that decides which
-dnl of the data portions to output in any given case. We call these
-dnl comments and executable code the "non-data" portions. Autoconf never
-dnl copies any of the non-data portions into its output.
-dnl
-dnl This special exception to the GPL applies to versions of Autoconf
-dnl released by the Free Software Foundation. When you make and
-dnl distribute a modified version of Autoconf, you may extend this special
-dnl exception to the GPL to apply to your modified version as well, *unless*
-dnl your modified version has the potential to copy into its output some
-dnl of the text that was the non-data portion of the version that you started
-dnl with. (In other words, unless your change moves or copies text from
-dnl the non-data portions to the data portions.) If your modification has
-dnl such potential, you must delete any notice of this special exception
-dnl to the GPL from your modified version.
-dnl
-dnl Written by David MacKenzie, with help from
-dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
-dnl Roland McGrath, Noah Friedman, david d zuhn, and many others.
-
-#
-# AC_WIRESHARK_ADD_DASH_L
-#
-# Add to the variable specified as the first argument a "-L" flag for the
-# directory specified as the second argument, and, on Solaris, add a
-# "-R" flag for it as well.
-#
-# XXX - IRIX, and other OSes, may require some flag equivalent to
-# "-R" here.
-#
-AC_DEFUN([AC_WIRESHARK_ADD_DASH_L],
-[AX_APPEND_FLAG(-L$2, $1)
-case "$host_os" in
- solaris*)
- AX_APPEND_FLAG(-R$2, $1)
- ;;
-esac
-])
-
-#
-# AC_WIRESHARK_PUSH_FLAGS
-#
-# Push our flags to CFLAGS/etc.
-#
-AC_DEFUN([AC_WIRESHARK_PUSH_FLAGS],
-[
- ac_ws_CPPLAGS_saved="$CPPFLAGS"
- ac_ws_CFLAGS_saved="$CFLAGS"
- ac_ws_CXXFLAGS_saved="$CXXFLAGS"
- ac_ws_LDFLAGS_saved="$LDFLAGS"
- CPPFLAGS="$WS_CPPFLAGS $CPPFLAGS"
- CFLAGS="$WS_CFLAGS $CFLAGS"
- CXXFLAGS="$WS_CXXFLAGS $CXXFLAGS"
- LDFLAGS="$WS_LDFLAGS $LDFLAGS"
-])
-
-#
-# AC_WIRESHARK_POP_FLAGS
-#
-# Restore user build flags.
-#
-AC_DEFUN([AC_WIRESHARK_POP_FLAGS],
-[
- CPPFLAGS="$ac_ws_CPPLAGS_saved"
- CFLAGS="$ac_ws_CFLAGS_saved"
- CXXFLAGS="$ac_ws_CXXFLAGS_saved"
- LDFLAGS="$ac_ws_LDFLAGS_saved"
-])
-
-
-#
-# AC_WIRESHARK_BREAKLOOP_TRY_LINK
-#
-AC_DEFUN([AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK],
-[
- AC_LINK_IFELSE(
- [
- AC_LANG_SOURCE(
- [[
-# include <pcap.h>
- int main(void)
- {
- pcap_t *pct = NULL;
- pcap_breakloop(pct);
- return 0;
- }
- ]])
- ],
- [
- ws_breakloop_compiled=yes
- ],
- [
- ws_breakloop_compiled=no
- ])
-])
-
-
-
-#
-# AC_WIRESHARK_PCAP_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_PCAP_CHECK],
-[
- AC_WIRESHARK_PUSH_FLAGS
- ws_ac_save_LIBS="$LIBS"
-
- if test -z "$pcap_dir"
- then
- # Pcap header checks
- # XXX need to set a var AC_CHECK_HEADER(pcap.h,,)
-
- #
- # The user didn't specify a directory in which libpcap resides.
- # First, look for a pcap-config script.
- #
- AC_PATH_TOOL(PCAP_CONFIG, pcap-config)
-
- if test -n "$PCAP_CONFIG" ; then
- #
- # Found it.
- #
- # Now check whether it's the libpcap 1.0 version, which
- # put a space after "-L" - on some platforms, that doesn't
- # work.
- #
- AC_MSG_CHECKING(for broken pcap-config)
- case "`\"$PCAP_CONFIG\" --libs`" in
-
- "-L "*)
- #
- # Space after -L. Pretend pcap-config doesn't exist.
- #
- AC_MSG_RESULT(yes)
- PCAP_CONFIG=""
- ;;
-
- *)
- #
- # No space after -L.
- #
- AC_MSG_RESULT(no)
- ;;
- esac
- fi
- if test -n "$PCAP_CONFIG" ; then
- #
- # Found it, and it's usable; use it to get the include flags
- # for libpcap.
- #
- PCAP_CFLAGS="`\"$PCAP_CONFIG\" --cflags`"
- #
- # We have pcap-config; we assume that means we have libpcap
- # installed and that pcap-config will tell us whatever
- # libraries libpcap needs.
- #
- if test x$enable_static = xyes; then
- PCAP_LIBS="`\"$PCAP_CONFIG\" --libs --static`"
- else
- PCAP_LIBS="`\"$PCAP_CONFIG\" --libs`"
- fi
- else
- #
- # Didn't find it; we have to look for libpcap ourselves.
- # We assume that the current library search path will work,
- # but we may have to look for the header in a "pcap"
- # subdirectory of "/usr/include" or "/usr/local/include",
- # as some systems apparently put "pcap.h" in a "pcap"
- # subdirectory without also providing a "pcap.h" in the top-level
- # include directory, and we also check "$prefix/include" - and
- # "$prefix/include/pcap", in case $prefix is set to
- # "/usr/include" or "/usr/local/include".
- #
- PCAP_CFLAGS=""
- PCAP_LIBS="-lpcap"
-
- AC_MSG_CHECKING(for extraneous pcap header directories)
- found_pcap_dir=""
- pcap_dir_list="/usr/local/include/pcap /usr/include/pcap $prefix/include/pcap $prefix/include"
- for pcap_dir in $pcap_dir_list
- do
- if test -d $pcap_dir ; then
- if test x$pcap_dir != x/usr/include -a x$pcap_dir != x/usr/local/include ; then
- PCAP_CFLAGS="-I$pcap_dir"
- fi
- found_pcap_dir=" $found_pcap_dir -I$pcap_dir"
- break
- fi
- done
-
- if test "$found_pcap_dir" != "" ; then
- AC_MSG_RESULT(found --$found_pcap_dir added to CFLAGS)
- else
- AC_MSG_RESULT(not found)
- fi
- fi
- else
- #
- # The user specified a directory in which libpcap resides,
- # so add the "include" subdirectory of that directory to
- # the include file search path and the "lib" subdirectory
- # of that directory to the library search path.
- #
- # XXX - if there's also a libpcap in a directory that's
- # already in CPPFLAGS or LDFLAGS, this won't make us find
- # the version in the specified directory, as the compiler
- # and/or linker will search that other directory before it
- # searches the specified directory.
- #
- PCAP_CFLAGS="-I$pcap_dir/include"
- #
- # XXX - This doesn't use AC_WIRESHARK_ADD_DASH_L
- #
- PCAP_LIBS="-L$pcap_dir/lib -lpcap"
- fi
-
- CFLAGS="$PCAP_CFLAGS $CFLAGS"
- LIBS="$PCAP_LIBS $LIBS"
-
- # Pcap header check
- AC_CHECK_HEADER(pcap.h,
- [
- AC_DEFINE(HAVE_LIBPCAP, 1, [Define to use libpcap library])
- ],
- [
- AC_MSG_ERROR([[Header file pcap.h not found; if you installed libpcap
-from source, did you also do \"make install-incl\", and if you installed a
-binary package of libpcap, is there also a developer's package of libpcap,
-and did you also install that package?]])
- ])
-
- #
- # Check to see if we find "pcap_open_live" in "-lpcap".
- # Also check for various additional libraries that libpcap might
- # require.
- #
- AC_CHECK_LIB(pcap, pcap_open_live,
- [
- ],
- [
- ac_wireshark_extras_found=no
- ac_save_LIBS="$LIBS"
- for extras in "-lcfg -lodm" "-lpfring"
- do
- AC_MSG_CHECKING([for pcap_open_live in -lpcap with $extras])
- LIBS="-lpcap $extras $ac_save_LIBS"
- #
- # XXX - can't we use AC_CHECK_LIB here?
- #
- AC_TRY_LINK(
- [
-# include <pcap.h>
- ],
- [
- pcap_open_live(NULL, 0, 0, 0, NULL);
- ],
- [
- ac_wireshark_extras_found=yes
- AC_MSG_RESULT([yes])
- PCAP_LIBS="$PCAP_LIBS $extras"
- ],
- [
- AC_MSG_RESULT([no])
- ])
- if test x$ac_wireshark_extras_found = xyes
- then
- break
- fi
- done
- if test x$ac_wireshark_extras_found = xno
- then
- AC_MSG_ERROR([Can't link with library libpcap.])
- fi
- LIBS=$ac_save_LIBS
- ])
- AC_SUBST(PCAP_CFLAGS)
- AC_SUBST(PCAP_LIBS)
-
- #
- # Check whether various variables and functions are defined by
- # libpcap.
- #
- AC_CHECK_FUNCS(pcap_open_dead pcap_freecode)
- AC_CHECK_FUNCS(pcap_open)
- if test $ac_cv_func_pcap_open = "yes" ; then
- AC_DEFINE(HAVE_PCAP_REMOTE, 1,
- [Define to 1 if you have libpcap/WinPcap remote capturing support])
-
- #
- # XXX - this *should* be checked for independently of checking
- # for pcap_open(), as you might have pcap_setsampling() without
- # remote capture support.
- #
- # However, 1) the sampling options are treated as remote options
- # in the GUI and and 2) having pcap_setsampling() doesn't mean
- # you have sampling support. libpcap needs a way to indicate
- # whether a given device supports sampling, and the GUI should
- # be changed to decouple them.
- #
- # (Actually, libpcap needs a general mechanism to offer options
- # for particular devices, and Wireshark needs to use that
- # mechanism. The former is a work in progress.)
- #
- # (Note: another work in progress is support for remote
- # capturing using pcap_create()/pcap_activate(), which we
- # also need to support once it's available.)
- #
- AC_CHECK_FUNCS(pcap_setsampling)
- fi
-
- #
- # pcap_breakloop may be present in the library but not declared
- # in the pcap.h header file. If it's not declared in the header
- # file, attempts to use it will get warnings, and, if we're
- # building with warnings treated as errors, that warning will
- # cause compilation to fail.
- #
- # We are therefore first testing whether the function is present
- # and then, if we're compiling with warnings as errors, testing
- # whether it is usable. It is usable if it compiles without
- # a -Wimplicit warning (the "compile with warnings as errors"
- # option requires GCC). If it is not usable, we fail and tell
- # the user that the pcap.h header needs to be updated.
- #
- # Ceteris paribus, this should only happen with Mac OS X 10.3[.x] which
- # can have an up-to-date pcap library without the corresponding pcap
- # header.
- #
- # However, it might also happen on some others OSes with some erroneous
- # system manipulations where multiple versions of libpcap might co-exist
- # e.g. hand made symbolic link from libpcap.so -> libpcap.so.0.8 but
- # having the pcap header version 0.7.
- #
- AC_MSG_CHECKING([whether pcap_breakloop is present])
- ac_CFLAGS_saved="$CFLAGS"
- AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK
- if test "x$ws_breakloop_compiled" = "xyes"; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_PCAP_BREAKLOOP, 1, [Define if pcap_breakloop is known])
- if test "x$with_warnings_as_errors" = "xyes"; then
- AC_MSG_CHECKING([whether pcap_breakloop is usable])
- CFLAGS="$CFLAGS -Werror -Wimplicit"
- AC_WIRESHARK_PCAP_BREAKLOOP_TRY_LINK
- if test "x$ws_breakloop_compiled" = "xyes"; then
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- AC_MSG_ERROR(
-[Your pcap library is more recent than your pcap header.
-As you are building with compiler warnings treated as errors, Wireshark
-won't be able to use functions not declared in that header.
-If you wish to build with compiler warnings treated as errors, You should
-install a newer version of the header file.])
- fi
- CFLAGS="$ac_CFLAGS_saved"
- fi
- else
- AC_MSG_RESULT(no)
- fi
-
- #
- # Later versions of Mac OS X 10.3[.x] ship a pcap.h that
- # doesn't define pcap_if_t but ship an 0.8[.x] libpcap,
- # so the library has "pcap_findalldevs()", but pcap.h
- # doesn't define "pcap_if_t" so you can't actually *use*
- # "pcap_findalldevs()".
- #
- # That even appears to be true of systems shipped with
- # 10.3.4, so it doesn't appear only to be a case of
- # Software Update not updating header files.
- #
- # (You can work around this by installing the 0.8 header
- # files.)
- #
- AC_CACHE_CHECK([whether pcap_findalldevs is present and usable],
- [ac_cv_func_pcap_findalldevs],
- [
- AC_LINK_IFELSE(
- [
- AC_LANG_SOURCE(
- [[
- #include <pcap.h>
- int main()
- {
- pcap_if_t *devpointer;
- char errbuf[1];
-
- pcap_findalldevs(&devpointer, errbuf);
- }
- ]])
- ],
- [
- ac_cv_func_pcap_findalldevs=yes
- ],
- [
- ac_cv_func_pcap_findalldevs=no
- ])
- ])
- #
- # Don't check for other new routines that showed up after
- # "pcap_findalldevs()" if we don't have a usable
- # "pcap_findalldevs()", so we don't end up using them if the
- # "pcap.h" is crufty and old and doesn't declare them.
- #
- if test $ac_cv_func_pcap_findalldevs = "yes" ; then
- AC_DEFINE(HAVE_PCAP_FINDALLDEVS, 1,
- [Define to 1 if you have the `pcap_findalldevs' function and a pcap.h that declares pcap_if_t.])
- AC_CHECK_FUNCS(pcap_datalink_val_to_name pcap_datalink_name_to_val)
- AC_CHECK_FUNCS(pcap_datalink_val_to_description)
- AC_CHECK_FUNCS(pcap_list_datalinks pcap_set_datalink pcap_lib_version)
- AC_CHECK_FUNCS(pcap_get_selectable_fd pcap_free_datalinks)
- AC_CHECK_FUNC(pcap_create,
- [
- AC_DEFINE(HAVE_PCAP_CREATE, 1,
- [Define to 1 if you have the `pcap_create' function.])
- AC_DEFINE(CAN_SET_CAPTURE_BUFFER_SIZE, 1,
- [Define to 1 if the capture buffer size can be set.])
- ])
- AC_CHECK_FUNCS(bpf_image pcap_set_tstamp_precision pcap_set_tstamp_type)
- fi
-
- AC_WIRESHARK_POP_FLAGS
- LIBS="$ws_ac_save_LIBS"
-])
-
-#
-# AC_WIRESHARK_ZLIB_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_ZLIB_CHECK],
-[
- AC_WIRESHARK_PUSH_FLAGS
-
- if test "x$zlib_dir" != "x"
- then
- #
- # The user specified a directory in which zlib resides,
- # so add the "include" subdirectory of that directory to
- # the include file search path and the "lib" subdirectory
- # of that directory to the library search path.
- #
- # XXX - if there's also a zlib in a directory that's
- # already in CPPFLAGS or LDFLAGS, this won't make us find
- # the version in the specified directory, as the compiler
- # and/or linker will search that other directory before it
- # searches the specified directory.
- #
- CPPFLAGS="$CPPFLAGS -I$zlib_dir/include"
- AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $zlib_dir/lib)
- fi
-
- #
- # Make sure we have "zlib.h". If we don't, it means we probably
- # don't have zlib, so don't use it.
- #
- AC_CHECK_HEADER(zlib.h,,
- [
- if test "x$zlib_dir" != "x"
- then
- #
- # The user used "--with-zlib=" to specify a directory
- # containing zlib, but we didn't find the header file
- # there; that either means they didn't specify the
- # right directory or are confused about whether zlib
- # is, in fact, installed. Report the error and give up.
- #
- AC_MSG_ERROR([zlib header not found in directory specified in --with-zlib])
- else
- if test "x$want_zlib" = "xyes"
- then
- #
- # The user tried to force us to use the library, but we
- # couldn't find the header file; report an error.
- #
- AC_MSG_ERROR(Header file zlib.h not found.)
- else
- #
- # We couldn't find the header file; don't use the
- # library, as it's probably not present.
- #
- want_zlib=no
- fi
- fi
- ])
-
- if test "x$want_zlib" != "xno"
- then
- #
- # Well, we at least have the zlib header file.
- #
- # We link with zlib to support uncompression of
- # gzipped network traffic, e.g. in an HTTP request
- # or response body.
- #
- # Check for inflate() in zlib, to make sure the
- # zlib library is usable. For example, on at
- # least some versions of Fedora, if you have a
- # 64-bit machine, have both the 32-bit and 64-bit
- # versions of the run-time zlib package installed,
- # and have only the *32-bit* version of the zlib
- # development package installed, it'll find the
- # header, and think it can use zlib, and will use
- # it in subsequent tests, but it'll try and link
- # 64-bit test programs with the 32-bit library,
- # causing those tests to falsely fail. Hilarity
- # ensues.
- #
- if test "x$zlib_dir" != "x"
- then
- WS_CPPFLAGS="$WS_CPPFLAGS -I$zlib_dir/include"
- AC_WIRESHARK_ADD_DASH_L(WS_LDFLAGS, $zlib_dir/lib)
- fi
- AC_DEFINE(HAVE_ZLIB, 1, [Define to use zlib library])
- #
- # Check for "inflate()" in zlib to make sure we can
- # link with it.
- #
- AC_CHECK_LIB(z, inflate,,
- 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)?]))
-
- #
- # Check for "inflatePrime()" in zlib, which we need
- # in order to read compressed capture files.
- #
- AC_CHECK_FUNCS(inflatePrime)
-
- if test "x$ac_cv_func_inflatePrime" = "xyes" ; then
- #
- # Now check for "inflatePrime()" in zlib when
- # linking with the linker flags for GTK+
- # applications; people often grab XFree86 source
- # and build and install it on their systems,
- # and they appear sometimes to misconfigure
- # XFree86 so that, even on systems with zlib,
- # it assumes there is no zlib, so the XFree86
- # build process builds and installs its
- # own zlib in the X11 library directory.
- #
- # The zlib in at least some versions of XFree86
- # is an older version that may lack "inflatePrime()",
- # and that's the zlib with which Wireshark gets
- # linked, so the build of Wireshark fails.
- #
- AC_MSG_CHECKING([for inflatePrime missing when linking with X11])
- AC_TRY_LINK_FUNC(inflatePrime, AC_MSG_RESULT(no),
- [
- AC_MSG_RESULT(yes)
- AC_MSG_ERROR(old zlib found when linking with X11 - get rid of old zlib.)
- ])
- fi
- fi
-
- AC_WIRESHARK_POP_FLAGS
-])
-
-#
-# AC_WIRESHARK_LIBLUA_CHECK
-#
-# Sets $have_lua to yes or no.
-# If it's yes, it also sets $LUA_CFLAGS and $LUA_LIBS.
-AC_DEFUN([AC_WIRESHARK_LIBLUA_CHECK],[
-
- AC_WIRESHARK_PUSH_FLAGS
-
- if test "x$want_lua_dir" = "x"
- then
- # The user didn't tell us where to find Lua. Let's go look for it.
-
- # First, try the standard (pkg-config) way.
- # Unfortunately Lua's pkg-config file isn't standardly named.
- # Some distributions allow installation of multiple versions of
- # Lua at the same time. On such systems each version has its
- # own package name.
- #
- # We use a for loop instead of giving all the package names to
- # PKG_CHECK_MODULES because doing the latter doesn't appear to
- # work reliably (some package names are not searched for).
- for pkg in "lua < 5.3" lua5.2 lua-5.2 lua52 lua5.1 lua-5.1 lua51 lua5.0 lua-5.0 lua50
- do
- AC_MSG_CHECKING(if you have $pkg)
- PKG_CHECK_EXISTS($pkg,
- [
- AC_MSG_RESULT(yes)
- have_lua=yes
- ],
- [
- AC_MSG_RESULT(no)
- ])
-
- if test "x$have_lua" = "xyes"
- then
- PKG_WIRESHARK_CHECK_SYSTEM_MODULES(LUA, $pkg)
- CPPFLAGS="$LUA_CFLAGS $CPPFLAGS"
- AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h)
- break
- fi
- done
- fi
-
- if test "x$have_lua" != "xyes"
- then
- # We don't have pkg-config or the user specified the path to
- # Lua (in $want_lua_dir).
- # Let's look for the header file.
-
- AC_MSG_CHECKING(for the location of lua.h)
- if test "x$want_lua_dir" = "x"
- then
- # The user didn't tell us where to look so we'll look in some
- # standard locations.
- want_lua_dir="/usr/local /usr $prefix"
- fi
- for dir in $want_lua_dir
- do
- if test -r "$dir/include/lua.h"
- then
- header_dir="$dir/include"
- lua_dir=$dir
- break
- fi
-
- for ver in 5.2 52 5.1 51 5.0 50
- do
- if test -r "$dir/include/lua$ver/lua.h"
- then
- header_dir="$dir/include/lua$ver"
- lua_dir=$dir
- break
- fi
- done
- done
-
- if test "x$header_dir" = "x"
- then
- have_lua=no
- AC_MSG_RESULT(not found)
- else
- AC_MSG_RESULT($header_dir)
-
- AC_MSG_CHECKING(the Lua version)
- lua_ver=`$AWK AS_ESCAPE('/LUA_VERSION_NUM/ { print $NF; }' $header_dir/lua.h | sed 's/0/./')`
-
- if test "x$lua_ver" = "x5.3"
- then
- # Wireshark doesn't compile with Lua 5.3 today
- AC_MSG_RESULT($lua_ver - disabling Lua support)
- have_lua=no
- else
- AC_MSG_RESULT($lua_ver)
-
- CPPFLAGS="$CPPFLAGS -I$header_dir"
- AC_CHECK_HEADERS(lua.h lualib.h lauxlib.h, ,
- [
- have_lua=no
- ])
- fi
-
- if test "x$have_lua" = "x"
- then
- # Set LUA_CFLAGS
- LUA_CFLAGS="-I$header_dir"
-
- # We have the header files and they work. Now let's check if we
- # have the library and it works.
- #
- # XXX - if there's also a liblua in a directory that's
- # already in CPPFLAGS or LDFLAGS, this won't make us find
- # the version in the specified directory, as the compiler
- # and/or linker will search that other directory before it
- # searches the specified directory.
- #
- # XXX - lib64?
- LDFLAGS="-L$lua_dir/lib $LDFLAGS"
- AC_SEARCH_LIBS(luaL_openlibs, [lua-${lua_ver} lua${lua_ver} lua],
- [
- LUA_LIBS="-L$lua_dir/lib $ac_cv_search_luaL_openlibs -lm"
- have_lua=yes
- ],[
- # Try again with -ldl
-
- # Tell autoconf we don't want to use the cached result
- unset ac_cv_search_luaL_openlibs
-
- AC_SEARCH_LIBS(luaL_openlibs, [lua-${lua_ver} lua${lua_ver} lua],
- [
- LUA_LIBS="-L$lua_dir/lib $ac_cv_search_luaL_openlibs -lm -ldl"
- have_lua=yes
- ],[
- have_lua=no
- ], -lm -ldl)
- ], -lm)
- fi
- fi
- fi
-
- AC_WIRESHARK_POP_FLAGS
-])
-
-#
-# AC_WIRESHARK_C_ARES_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_C_ARES_CHECK],
-[
- want_c_ares=defaultyes
-
- if test "x$want_c_ares" = "xdefaultyes"; then
- want_c_ares=yes
- fi
-
- if test "x$want_c_ares" = "xyes"; then
- AC_CHECK_LIB(cares, ares_init,
- [
- #
- # Make sure we have c-ares 1.5 or later; we don't
- # support the older API.
- #
- AC_MSG_CHECKING([whether we have c-ares 1.5 or later])
- AC_TRY_COMPILE(
- [
-#include <ares.h>
-#include <ares_version.h>
- ],
- [
-#if ((ARES_VERSION_MAJOR < 1) || \
- (1 == ARES_VERSION_MAJOR == 1 && ARES_VERSION_MINOR < 5))
-#error You lose
-#else
- return 0;
-#endif
- ],
- [
- AC_MSG_RESULT([yes])
- C_ARES_LIBS=-lcares
- AC_DEFINE(HAVE_C_ARES, 1, [Define to use c-ares library])
- have_good_c_ares=yes
- ],
- [
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([Pre-1.5 versions of c-ares aren't supported])
- ])
- ])
- else
- AC_MSG_RESULT(not required)
- fi
-])
-
-
-#
-# AC_WIRESHARK_LIBCAP_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_LIBCAP_CHECK],
-[
- want_libcap=defaultyes
-
- if test "x$want_libcap" = "xdefaultyes"; then
- want_libcap=yes
- fi
-
- if test "x$want_libcap" = "xyes"; then
- AC_CHECK_LIB(cap, cap_set_flag,
- [
- LIBCAP_LIBS=-lcap
- AC_DEFINE(HAVE_LIBCAP, 1, [Define to use the libcap library])
- have_good_libcap=yes
- ],,
- )
- else
- AC_MSG_RESULT(not required)
- fi
-])
-
-
-#
-# AC_WIRESHARK_KRB5_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_KRB5_CHECK],
-[
- AC_WIRESHARK_PUSH_FLAGS
- wireshark_save_LIBS="$LIBS"
-
- if test "x$krb5_dir" != "x"
- then
- #
- # The user specified a directory in which kerberos resides,
- # so add the "include" subdirectory of that directory to
- # the include file search path and the "lib" subdirectory
- # of that directory to the library search path.
- #
- # XXX - if there's also a kerberos in a directory that's
- # already in CPPFLAGS or LDFLAGS, this won't make us find
- # the version in the specified directory, as the compiler
- # and/or linker will search that other directory before it
- # searches the specified directory.
- #
- KRB5_CFLAGS="-I$krb5_dir/include"
- ac_heimdal_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'`
- # MIT Kerberos moved krb5.h to krb5/krb5.h starting with release 1.5
- ac_mit_version_olddir=`grep 'Massachusetts' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts.*$/MIT/'`
- ac_mit_version_newdir=`grep 'Massachusetts' $krb5_dir/include/krb5/krb5.h | head -n 1 | sed 's/^.*Massachusetts.*$/MIT/'`
- ac_krb5_version="$ac_heimdal_version$ac_mit_version_olddir$ac_mit_version_newdir"
- if test "x$ac_krb5_version" = "xHEIMDAL"
- then
- KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 -lcrypto -lroken -lcrypt"
- else
- KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lk5crypto -lcom_err"
- fi
- if test "x$ac_krb5_version" = "xMIT"
- then
- AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
- fi
- else
- AC_PATH_TOOL(KRB5_CONFIG, krb5-config)
- if test -x "$KRB5_CONFIG"
- then
- KRB5_CFLAGS=`"$KRB5_CONFIG" --cflags`
- KRB5_LIBS=`"$KRB5_CONFIG" --libs`
- ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/' -e 's/^Solaris Kerberos .*$/MIT/'`
- fi
- fi
- #
- # If -lcrypto is in KRB5_LIBS, we require it to build
- # with Heimdal/MIT. We don't want to built with it by
- # default, due to annoying license incompatibilities
- # between the OpenSSL license and the GPL.
- #
- case "$KRB5_LIBS" in
- *-lcrypto*)
- if test "x$with_krb5_crypto_openssl" != "xyes"
- then
- AC_MSG_ERROR([Kerberos library requires -lcrypto, so you must specify --with-krb5-crypto-openssl])
- fi
- ;;
- esac
-
- CPPFLAGS="$CPPFLAGS $KRB5_CFLAGS"
-
- #
- # Make sure we have "krb5.h". If we don't, it means we probably
- # don't have kerberos, so don't use it.
- #
- AC_CHECK_HEADER(krb5.h,,
- [
- if test "x$krb5_dir" != "x"
- then
- #
- # The user used "--with-krb5=" to specify a directory
- # containing kerberos, but we didn't find the header file
- # there; that either means they didn't specify the
- # right directory or are confused about whether kerberos
- # is, in fact, installed. Report the error and give up.
- #
- AC_MSG_ERROR([kerberos header not found in directory specified in --with-krb5])
- else
- if test "x$want_krb5" = "xyes"
- then
- #
- # The user tried to force us to use the library, but we
- # couldn't find the header file; report an error.
- #
- AC_MSG_ERROR(Header file krb5.h not found.)
- else
- #
- # We couldn't find the header file; don't use the
- # library, as it's probably not present.
- #
- KRB5_CFLAGS=""
- KRB5_LIBS=""
- want_krb5=no
- AC_MSG_RESULT(No Heimdal or MIT header found - disabling dissection for some kerberos data in packet decoding)
- fi
- fi
- ])
-
- if test "x$want_krb5" != "xno"
- then
- #
- # Well, we at least have the krb5 header file.
- # Check whether this is Heimdal or MIT.
- #
- AC_MSG_CHECKING(whether the Kerberos library is Heimdal or MIT)
- if test "x$ac_krb5_version" = "xHEIMDAL" -o "x$ac_krb5_version" = "xMIT"
- then
- #
- # Yes.
- # Check whether we have krb5_kt_resolve - and whether
- # we need to link with -lresolv when linking with
- # the Kerberos library.
- #
- AC_MSG_RESULT($ac_krb5_version)
- found_krb5_kt_resolve=no
- for extras in "" "-lresolv"
- do
- LIBS="$KRB5_LIBS $extras $wireshark_save_LIBS"
- if test -z "$extras"
- then
- AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve])
- else
- AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve (linking with $extras)])
- fi
- AC_TRY_LINK(
- [
-# include <krb5.h>
- ],
- [
- krb5_kt_resolve(0, 0, 0);
- ],
- [
- #
- # We found "krb5_kt_resolve()".
- #
- AC_MSG_RESULT(yes)
- if test -n "$extras"; then
- KRB5_LIBS="$KRB5_LIBS $extras"
- fi
- AC_DEFINE(HAVE_KERBEROS, 1, [Define to use kerberos])
- if test "x$ac_krb5_version" = "xHEIMDAL"
- then
- AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1, [Define to use heimdal kerberos])
- elif test "x$ac_krb5_version" = "xMIT"
- then
- AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
- fi
- found_krb5_kt_resolve=yes
- break
- ],
- [
- AC_MSG_RESULT(no)
- ])
- done
- if test "$found_krb5_kt_resolve" = no
- then
- #
- # We didn't find "krb5_kt_resolve()" in the
- # Kerberos library, even when we tried linking
- # with -lresolv; we can't link with kerberos.
- #
- if test "x$want_krb5" = "xyes"
- then
- #
- # The user tried to force us to use the library,
- # but we can't do so; report an error.
- #
- AC_MSG_ERROR(Usable $ac_krb5_version not found)
- else
- #
- # Don't use
- #
- AC_MSG_RESULT(Usable $ac_krb5_version not found - disabling dissection for some kerberos data in packet decoding)
- KRB5_CFLAGS=""
- KRB5_LIBS=""
- want_krb5=no
- fi
- else
- #
- # We can link with Kerberos; see whether krb5.h
- # defines KEYTYPE_ARCFOUR_56 (where "defines" means
- # "as a #define or as an enum member).
- #
- AC_MSG_CHECKING([whether krb5.h defines KEYTYPE_ARCFOUR_56])
- AC_COMPILE_IFELSE(
- [
- AC_LANG_SOURCE(
- [[
- #include <krb5.h>
- #include <stdio.h>
-
- int main()
- {
- printf("%u\n", KEYTYPE_ARCFOUR_56);
- }
- ]])
- ],
- [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_KEYTYPE_ARCFOUR_56, 1, [Define if krb5.h defines KEYTYPE_ARCFOUR_56])
- ],
- [
- AC_MSG_RESULT(no)
- ])
- fi
- else
- #
- # It's not Heimdal or MIT.
- #
- AC_MSG_RESULT(no)
- if test "x$want_krb5" = "xyes"
- then
- #
- # The user tried to force us to use the library,
- # but we can't do so; report an error.
- #
- AC_MSG_ERROR(Kerberos not found)
- else
- #
- # Don't use.
- #
- AC_MSG_RESULT(Kerberos not found - disabling dissection for some kerberos data in packet decoding)
- KRB5_CFLAGS=""
- KRB5_LIBS=""
- want_krb5=no
- fi
- fi
- else
- #
- # The user asked us not to use Kerberos, or they didn't
- # say whether they wanted us to use it but we found
- # that we couldn't.
- #
- KRB5_CFLAGS=""
- KRB5_LIBS=""
- want_krb5=no
- fi
- AC_SUBST(KRB5_CFLAGS)
- AC_SUBST(KRB5_LIBS)
-
- LIBS="$wireshark_save_LIBS"
- AC_WIRESHARK_POP_FLAGS
-])
-
-#
-# AC_WIRESHARK_MAXMINDDB_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_MAXMINDDB_CHECK],
-[
- want_maxminddb=defaultyes
-
- if test "x$want_maxminddb" = "xdefaultyes"; then
- want_maxminddb=yes
- fi
-
- if test "x$want_maxminddb" = "xyes"; then
- AC_CHECK_LIB(maxminddb, MMDB_open,
- [
- MAXMINDDB_LIBS=-lmaxminddb
- AC_DEFINE(HAVE_MAXMINDDB, 1, [Define to use MaxMind DB library])
- have_good_maxminddb=yes
- ],,
- )
- else
- AC_MSG_RESULT(not required)
- fi
-])
-
-#
-# AC_WIRESHARK_LIBSSH_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_LIBSSH_CHECK],
-[
- want_libssh=defaultyes
-
- if test "x$want_libssh" = "xdefaultyes"; then
- want_libssh=yes
- fi
-
- if test "x$want_libssh" = "xyes"; then
- AC_CHECK_LIB(ssh, ssh_new,
- [
- LIBSSH_LIBS=-lssh
- AC_DEFINE(HAVE_LIBSSH, 1, [Define to use libssh library])
- have_good_libssh=yes
- ],,
- )
- AC_MSG_CHECKING([whether libssh >= 0.6.0 for sshdump, ciscodump])
- PKG_CHECK_EXISTS([libssh >= 0.6.0],
- [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_LIBSSH_POINTSIX, 1, [Defined if libssh >= 0.6.0])
- have_libssh_pointsix=yes
- ],
- [AC_MSG_RESULT(no)]
- )
- if test "x$have_libssh_pointsix" = "xyes"; then
- # ssh_userauth_agent exists only >= 0.6.0, but not on Windows
- # so check explicitly
- AC_CHECK_LIB(ssh, ssh_userauth_agent,
- [
- AC_DEFINE(HAVE_SSH_USERAUTH_AGENT, 1, [Libssh library has ssh_userauth_agent])
- have_ssh_userauth_agent=yes
- ],,
- )
- fi
- else
- AC_MSG_RESULT(not required)
- fi
-])
-
-#
-# AC_WIRESHARK_NGHTTP2_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_NGHTTP2_CHECK],
-[
- want_nghttp2=defaultyes
-
- if test "x$want_nghttp2" = "xdefaultyes"; then
- want_nghttp2=yes
- fi
-
- if test "x$want_nghttp2" = "xyes"; then
- AC_CHECK_LIB(nghttp2, nghttp2_hd_inflate_new,
- [
- AC_CHECK_HEADERS(nghttp2/nghttp2.h,
- [
- NGHTTP2_LIBS=-lnghttp2
- AC_DEFINE(HAVE_NGHTTP2, 1, [Define to use nghttp2 library])
- have_good_nghttp2=yes
- ],,
- )
- ],,
- )
- else
- AC_MSG_RESULT(not required)
- fi
-])
-
-#AC_WIRESHARK_LDFLAGS_CHECK
-#
-# $1 : ldflag(s) to test
-#
-# We attempt to compile and link a test program with the specified linker
-# flag. The defined flag is added to LDFLAGS only if the link succeeds.
-#
-AC_DEFUN([AC_WIRESHARK_LDFLAGS_CHECK],
-[LD_OPTION="$1"
-AC_MSG_CHECKING(whether we can add $LD_OPTION to LDFLAGS)
-AC_WIRESHARK_PUSH_FLAGS
-LDFLAGS="$LDFLAGS $LD_OPTION"
-can_add_to_ldflags=""
-AC_LINK_IFELSE(
- [
- AC_LANG_SOURCE([[int main() { return 0; }]])
- ],
- [
- AC_MSG_RESULT(yes)
- AX_APPEND_FLAG([$LD_OPTION], [WS_LDFLAGS])
- can_add_to_ldflags=yes
- ],
- [
- AC_MSG_RESULT(no)
- can_add_to_ldflags=no
- ])
- AC_WIRESHARK_POP_FLAGS
-])
-
-dnl
-dnl Check whether, if you pass an unknown warning option to the
-dnl compiler, it fails or just prints a warning message and succeeds.
-dnl Set ac_wireshark_unknown_warning_option_error to the appropriate flag
-dnl to force an error if it would otherwise just print a warning message
-dnl and succeed.
-dnl
-AC_DEFUN([AC_WIRESHARK_CHECK_UNKNOWN_WARNING_OPTION_ERROR],
- [
- AC_MSG_CHECKING([whether the compiler fails when given an unknown warning option])
- AC_WIRESHARK_PUSH_FLAGS
- CFLAGS="$CFLAGS -Wxyzzy-this-will-never-succeed-xyzzy"
- AC_TRY_COMPILE(
- [],
- [return 0],
- [
- AC_MSG_RESULT([no, adding -Werror=unknown-warning-option])
- #
- # We're assuming this is clang, where
- # -Werror=unknown-warning-option is the appropriate
- # option to force the compiler to fail.
- #
- ac_wireshark_unknown_warning_option_error="-Werror=unknown-warning-option"
- ],
- [
- AC_MSG_RESULT([yes])
- ])
- AC_WIRESHARK_POP_FLAGS
- ])
-
-dnl
-dnl Check whether, if you pass a valid-for-C-but-not-C++ option to the
-dnl compiler, it fails or just prints a warning message and succeeds.
-dnl Set ac_wireshark_non_cxx_warning_option_error to the appropriate flag
-dnl to force an error if it would otherwise just print a warning message
-dnl and succeed.
-dnl
-AC_DEFUN([AC_WIRESHARK_CHECK_NON_CXX_WARNING_OPTION_ERROR],
- [
- AC_MSG_CHECKING([whether the compiler fails when given an warning option not supported for C++])
- #
- # Some C+ compilers warn about -Wmissing-prototypes, and some warn
- # about -Wmissing-declarations. Check both.
- #
- AC_LANG_PUSH(C++)
- AC_WIRESHARK_PUSH_FLAGS
- save_CXXFLAGS="$CXXFLAGS"
- for flag in -Wmissing-prototypes -Wmissing-declarations; do
- CXXFLAGS="$save_CXXFLAGS $flag"
- AC_TRY_COMPILE(
- [],
- [return 0],
- [
- #
- # We're assuming this is g++, where -Werror is the
- # appropriate option to force the compiler to fail.
- # Check whether it fails with -Werror.
- #
- # NOTE: it's important to put -Werror *before*
- # the flag, otherwise, when it sees the flag,
- # it doesn't yet know that warnings should be
- # treated as errors, and doesn't treat the
- # "that's C-only" warning as an error.
- #
- CXXFLAGS="$save_CXXFLAGS -Werror $flag"
- AC_TRY_COMPILE(
- [],
- [return 0],
- [
- #
- # No, so this option is actually OK
- # with our C++ compiler.
- #
- # (We need an empty command here to
- # prevent some versions of autoconf
- # from generating a script with an
- # empty "then" clause for an if statement.)
- #
- :
- ],
- [
- #
- # Yes, so we need -Werror for the tests.
- #
- ac_wireshark_non_cxx_warning_option_error="-Werror"
- break
- ])
- ])
- done
- AC_WIRESHARK_POP_FLAGS
- AC_LANG_POP
- if test x$ac_wireshark_non_cxx_warning_option_error = x; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no, adding -Werror])
- fi
- ])
-
-#
-# AC_WIRESHARK_COMPILER_FLAGS_CHECK
-#
-# $1 : flags to test
-# $2 : if supplied, C for C-only flags, CXX for C++-only flags
-# $3 : if supplied, a program to try to compile with the flag
-# and, if the compile fails when -Werror is turned on,
-# we don't add the flag - used for warning flags that
-# issue incorrect or non-useful warnings with some
-# compiler versions
-# $4 : must be supplied if $3 is supplied - a message describing
-# for what the test program is testing
-#
-# The macro first determines if the compiler supports GCC-style flags.
-# Then it attempts to compile with the defined cflags. The defined
-# flags are added to WS_CHECKED_CFLAGS only if the compilation succeeds.
-# CFLAGS remains unchanged. can_add_to_cflags is set to "no" when the
-# flag is checked but unavailable. (Like-wise for CXXFLAGS.)
-#
-# We do this because not all such options are necessarily supported by
-# the version of the particular compiler we're using.
-#
-AC_DEFUN([AC_WIRESHARK_COMPILER_FLAGS_CHECK],
-[GCC_OPTION="$1"
-can_add_to_cflags=""
-can_add_to_cxxflags=""
-if test "x$ac_supports_gcc_flags" = "xyes" ; then
- if test "$2" != CXX ; then
- #
- # Not C++-only; if this can be added to the C compiler flags, add them.
- #
- # If the option begins with "-W", add
- # $ac_wireshark_unknown_warning_option_error to make sure that
- # we'll get an error if it's an unknown warning option; not all
- # compilers treat unknown warning options as errors (I'm looking at
- # you, clang).
- #
- # If the option begins with "-f" or "-m", add -Werror to make sure
- # that we'll get an error if we get "argument unused during compilation"
- # warnings, as those will either cause a failure for files compiled
- # with -Werror or annoying noise for files compiled without it.
- # (Yeah, you, clang.)
- #
- AC_MSG_CHECKING(whether we can add $GCC_OPTION to CFLAGS)
- AC_WIRESHARK_PUSH_FLAGS
- if expr "x$GCC_OPTION" : "x-W.*" >/dev/null
- then
- CFLAGS="$CFLAGS $ac_wireshark_unknown_warning_option_error $GCC_OPTION"
- elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null
- then
- CFLAGS="$CFLAGS -Werror $GCC_OPTION"
- elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null
- then
- CFLAGS="$CFLAGS -Werror $GCC_OPTION"
- else
- CFLAGS="$CFLAGS $GCC_OPTION"
- fi
- AC_COMPILE_IFELSE(
- [
- AC_LANG_SOURCE([[int foo;]])
- ],
- [
- AC_MSG_RESULT(yes)
- can_add_to_cflags=yes
- #
- # OK, do we have a test program? If so, check
- # whether it fails with this option and -Werror,
- # and, if so, don't include it.
- #
- # We test arg 4 here because arg 3 is a program which
- # could contain quotes (breaking the comparison).
- #
- if test "x$4" != "x" ; then
- CFLAGS="$CFLAGS -Werror"
- AC_MSG_CHECKING(whether $GCC_OPTION $4)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE($3)],
- [
- AC_MSG_RESULT(no)
- #
- # Remove "force an error for a warning" options, if we
- # added them, by setting CFLAGS to the saved value plus
- # just the new option.
- #
- AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS])
- if test "$CC" = "$CC_FOR_BUILD"; then
- #
- # We're building the build tools with the same compiler
- # with which we're building Wireshark, so add the flags
- # to the flags for that compiler as well.
- #
- AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS_FOR_BUILD])
- fi
- ],
- [
- AC_MSG_RESULT(yes)
- ])
- else
- #
- # Remove "force an error for a warning" options, if we
- # added them, by setting CFLAGS to the saved value plus
- # just the new option.
- #
- AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS])
- if test "$CC" = "$CC_FOR_BUILD"; then
- #
- # We're building the build tools with the same compiler
- # with which we're building Wireshark, so add the flags
- # to the flags for that compiler as well.
- #
- AX_APPEND_FLAG([$GCC_OPTION], [WS_CFLAGS_FOR_BUILD])
- fi
- fi
- ],
- [
- AC_MSG_RESULT(no)
- can_add_to_cflags=no
- ])
- AC_WIRESHARK_POP_FLAGS
- fi
- #
- # Did we find a C++ compiler?
- #
- if test "x$CXX" != "x" ; then
- #
- # Yes. Is this option only for the C compiler?
- #
- if test "$2" != C ; then
- #
- # Not C-only; if this option can be added to the C++ compiler
- # options, add it.
- #
- # If the option begins with "-W", add
- # $ac_wireshark_unknown_warning_option_error, as per the above, and
- # also add $ac_wireshark_non_cxx_warning_option_error, because at
- # lease some versions of g++ whine about -Wmissing-prototypes, the
- # fact that at least one of those versions refuses to warn about
- # function declarations without an earlier declaration nonwithstanding;
- # perhaps there's a reason not to warn about that with C++ even though
- # warning about it can be a Good Idea with C, but it's not obvious to
- # me).
- #
- # If the option begins with "-f" or "-m", add -Werror to make sure
- # that we'll get an error if we get "argument unused during compilation"
- # warnings, as those will either cause a failure for files compiled
- # with -Werror or annoying noise for files compiled without it.
- # (Yeah, you, clang++.)
- #
- AC_MSG_CHECKING(whether we can add $GCC_OPTION to CXXFLAGS)
- AC_WIRESHARK_PUSH_FLAGS
- if expr "x$GCC_OPTION" : "x-W.*" >/dev/null
- then
- CXXFLAGS="$CXXFLAGS $ac_wireshark_unknown_warning_option_error $ac_wireshark_non_cxx_warning_option_error $GCC_OPTION"
- elif expr "x$GCC_OPTION" : "x-f.*" >/dev/null
- then
- CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION"
- elif expr "x$GCC_OPTION" : "x-m.*" >/dev/null
- then
- CXXFLAGS="$CXXFLAGS -Werror $GCC_OPTION"
- else
- CXXFLAGS="$CXXFLAGS $GCC_OPTION"
- fi
- AC_LANG_PUSH([C++])
- AC_COMPILE_IFELSE(
- [
- AC_LANG_SOURCE([[int foo;]])
- ],
- [
- AC_MSG_RESULT(yes)
- can_add_to_cxxflags=yes
- #
- # OK, do we have a test program? If so, check
- # whether it fails with this option and -Werror,
- # and, if so, don't include it.
- #
- # We test arg 4 here because arg 3 is a program which
- # could contain quotes (breaking the comparison).
- #
- if test "x$4" != "x" ; then
- CXXFLAGS="$CXXFLAGS -Werror"
- AC_MSG_CHECKING(whether $GCC_OPTION $4)
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE($3)],
- [
- AC_MSG_RESULT(no)
- #
- # Remove "force an error for a warning" options, if we
- # added them, by setting CXXFLAGS to the saved value plus
- # just the new option.
- #
- AX_APPEND_FLAG([$GCC_OPTION], [WS_CXXFLAGS])
- ],
- [
- AC_MSG_RESULT(yes)
- ])
- else
- #
- # Remove "force an error for a warning" options, if we
- # added them, by setting CXXFLAGS to the saved value plus
- # just the new option.
- #
- AX_APPEND_FLAG([$GCC_OPTION], [WS_CXXFLAGS])
- fi
- ],
- [
- AC_MSG_RESULT(no)
- can_add_to_cxxflags=no
- ])
- AC_WIRESHARK_POP_FLAGS
- AC_LANG_POP([C++])
- fi
- if test "(" "$can_add_to_cflags" = "yes" -a "$can_add_to_cxxflags" = "no" ")" \
- -o "(" "$can_add_to_cflags" = "no" -a "$can_add_to_cxxflags" = "yes" ")"
- then
- #
- # Confusingly, some C++ compilers like -Wmissing-prototypes but
- # don't like -Wmissing-declarations and others like
- # -Wmissing-declarations but don't like -Wmissing-prototypes,
- # the fact that the corresponding C compiler likes both. Don't
- # warn about them.
- #
- if test "(" x$GCC_OPTION != x-Wmissing-prototypes ")" \
- -a "(" x$GCC_OPTION != x-Wmissing-declarations ")"
- then
- AC_MSG_WARN([$CC and $CXX appear to be a mismatched pair])
- fi
- fi
- fi
-fi
-])
-
-# AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK
-#
-# Checks if '-D_FORTIFY_SOURCE=...' is OK to use in CPPFLAGS.
-# Use '-D_FORTIFY_SOURCE=...' in CPPFLAGS only if the GCC 'optimization level' is > 0.
-# The use of '-D_FORTIFY_SOURCE=...' will cause a warning with at least some versions
-# of glibc if the GCC "optimization level" is 0 (default or -O or -O0)
-# when using GCC to compile a source file which references the macro definition.
-#
-# See: http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
-# See: http://sourceware.org/bugzilla/show_bug.cgi?id=13979
-#
-# We'll use '-D_FORTIFY_SOURCE=2' only if there's no warning; Among other things this means
-# that the use of '-D_FORTIFY_SOURCE=2' with '-Werror' and '-O0' won't cause
-# the compiler to stop on error.
-# Assumption: CFLAGS already contains whatever optimization option including none) is
-# to be used.
-#
-
-AC_DEFUN([AC_WIRESHARK_GCC_FORTIFY_SOURCE_CHECK],
-[
-if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
- AC_MSG_CHECKING([whether -D_FORTIFY_SOURCE=2 can be used (without generating a warning)])
- AC_WIRESHARK_PUSH_FLAGS
- CFLAGS="$CFLAGS -Werror"
- CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2"
- AC_COMPILE_IFELSE([
- AC_LANG_SOURCE([[
- #include <stdio.h>
- int foo;
- ]])],
- [
- AC_MSG_RESULT(yes)
- AX_APPEND_FLAG([-D_FORTIFY_SOURCE=2], [WS_CPPFLAGS])
- ],
- [
- AC_MSG_RESULT(no)
- ])
- AC_WIRESHARK_POP_FLAGS
-fi
-])
-
-#
-# AC_WIRESHARK_GCC_SYSTEM_INCLUDE
-#
-# Replace -I include flag for -isystem in FLAGS argument
-#
-AC_DEFUN([AC_WIRESHARK_GCC_SYSTEM_INCLUDE],
-[
- if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then
- $1=`echo " $$1" \
- | sed -e 's/ *-I *\// -isystem\//g' -e 's/^ *//'`
- fi
-])
-
-#
-# PKG_WIRESHARK_CHECK_SYSTEM_MODULES
-#
-AC_DEFUN([PKG_WIRESHARK_CHECK_SYSTEM_MODULES],
-[
- PKG_CHECK_MODULES($@)
- AC_WIRESHARK_GCC_SYSTEM_INCLUDE($1_CFLAGS)
-])
-
-# Based on AM_PATH_GTK in gtk-2.0.m4.
-
-dnl AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION([MODULE, MINIMUM-VERSION,
-dnl REQUESTED-MAJOR_VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
-dnl Test for a particular Qt module, for a particular Qt major version,
-dnl and, if we find it add the flags and libraries for it to Qt_CFLAGS
-dnl and Qt_LIBS.
-dnl
-AC_DEFUN([AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION],
-[
- case "$3" in
-
- 5)
- #
- # Check for Qt 5.
- #
- modprefix="Qt5"
- #
- # Version of the module we're checking for.
- # Default to 5.2.0.
- #
- min_qt_version=5.2.0
- ;;
-
- *)
- AC_MSG_ERROR([Qt version $3 is not a known Qt version])
- ;;
- esac
-
- pkg_config_module="${modprefix}$1"
- AC_MSG_CHECKING(for $pkg_config_module - version >= $min_qt_version)
- if $PKG_CONFIG --atleast-version $min_qt_version $pkg_config_module; then
- mod_version=`$PKG_CONFIG --modversion $pkg_config_module`
- AC_MSG_RESULT(yes (version $mod_version))
- mod_cflags=`$PKG_CONFIG --cflags $pkg_config_module`
- AC_WIRESHARK_GCC_SYSTEM_INCLUDE(mod_cflags)
- Qt_CFLAGS="$Qt_CFLAGS $mod_cflags"
- Qt_LIBS="$Qt_LIBS `$PKG_CONFIG --libs $pkg_config_module`"
- # Run Action-If-Found
- ifelse([$4], , :, [$4])
- else
- AC_MSG_RESULT(no)
- # Run Action-If-Not-Found
- ifelse([$5], , :, [$5])
- fi
-])
-
-dnl AC_WIRESHARK_QT_MODULE_CHECK([MODULE, MINIMUM-VERSION,
-dnl REQUESTED-MAJOR_VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
-dnl Test for a particular Qt module and add the flags and libraries
-dnl for it to Qt_CFLAGS and Qt_LIBS.
-dnl
-AC_DEFUN([AC_WIRESHARK_QT_MODULE_CHECK],
-[
- #
- # Prior to Qt 5, modules were named QtXXX.
- # In Qt 5, they're named Qt5XXX.
- # This will need to change to handle future major Qt releases.
- #
- case "$3" in
-
- yes|5)
- #
- # Check for all versions of Qt we support.
- # Try the Qt 5 version first.
- #
- versions="5"
- ;;
-
- *)
- AC_MSG_ERROR([$3 is not a known Qt option])
- ;;
- esac
-
- for version in $versions
- do
- AC_WIRESHARK_QT_MODULE_CHECK_WITH_QT_VERSION($1, $2,
- $version, [foundit=yes], [foundit=no])
- if test "x$foundit" = "xyes"; then
- break
- fi
- done
-
- if test "x$foundit" = "xyes"; then
- # Remember which version of Qt we found
- qt_version=$version
- # Run Action-If-Found
- ifelse([$4], , :, [$4])
- else
- # Run Action-If-Not-Found
- ifelse([$5], , :, [$5])
- fi
-])
-
-AC_DEFUN([AC_WIRESHARK_QT_ADD_PIC_IF_NEEDED],
-[
- AC_LANG_PUSH([C++])
- AC_WIRESHARK_PUSH_FLAGS
- CPPFLAGS="$CPPFLAGS $Qt_CFLAGS"
- AC_MSG_CHECKING([whether Qt works without -fPIC])
- AC_PREPROC_IFELSE(
- [AC_LANG_SOURCE([[#include <QtCore>]])],
- [AC_MSG_RESULT(yes)],
- [
- AC_MSG_RESULT(no)
- AC_MSG_CHECKING([whether Qt works with -fPIC])
- CPPFLAGS="$CPPFLAGS -fPIC"
- AC_PREPROC_IFELSE(
- [AC_LANG_SOURCE([[#include <QtCore>]])],
- [
- AC_MSG_RESULT(yes)
- Qt_CFLAGS="$Qt_CFLAGS -fPIC"
- ],
- [
- AC_MSG_RESULT(no)
- AC_MSG_ERROR(Couldn't compile Qt without -fPIC nor with -fPIC)
- ])
- ])
- AC_WIRESHARK_POP_FLAGS
- AC_LANG_POP([C++])
-])
-
-dnl AC_WIRESHARK_QT_CHECK([MINIMUM-VERSION, REQUESTED-MAJOR_VERSION,
-dnl [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
-dnl Test for Qt and define Qt_CFLAGS and Qt_LIBS.
-dnl
-AC_DEFUN([AC_WIRESHARK_QT_CHECK],
-[
- qt_version_to_check="$2"
-
- #
- # Check for the Core module; if we don't have that,
- # we don't have Qt. If we *do* have it, we know what
- # version it is, so only check for that version of
- # other modules.
- #
- AC_WIRESHARK_QT_MODULE_CHECK(Core, $1, $qt_version_to_check,
- [
- qt_version_to_check=$qt_version
- QT_VERSION=$mod_version
- QT_VERSION_MAJOR=`echo "$QT_VERSION" | cut -f1 -d.`
- QT_VERSION_MINOR=`echo "$QT_VERSION" | cut -f2 -d.`
- QT_VERSION_MICRO=`echo "$QT_VERSION" | cut -f3 -d.`
-
- # Qt 5.7 and later requires C++11
- AS_IF([test $QT_VERSION_MAJOR -eq 5 -a $QT_VERSION_MINOR -ge 7],
- [AS_IF([test "$HAVE_CXX11" -eq 0], [AC_MSG_ERROR([Qt 5.7 and later requires C++11])])])
-
- ],
- [no_qt=yes])
-
- if test x"$no_qt" = x ; then
- #
- # We need the Gui module as well.
- #
- AC_WIRESHARK_QT_MODULE_CHECK(Gui, $1, $qt_version_to_check, ,
- [no_qt=yes])
- fi
-
- if test x"$no_qt" = x ; then
- #
- # Qt 5.0 appears to move the widgets out of Qt GUI
- # to Qt Widgets; look for the Widgets module, but
- # don't fail if we don't have it.
- #
- AC_WIRESHARK_QT_MODULE_CHECK(Widgets, $1, $qt_version_to_check)
-
- #
- # Qt 5.0 also appears to move the printing support into
- # the Qt PrintSupport module.
- #
- AC_WIRESHARK_QT_MODULE_CHECK(PrintSupport, $1, $qt_version_to_check)
-
- #
- # Qt 5.0 added multimedia in the Qt
- # Multimedia module.
- #
- have_qt_multimedia_lib=no
- AC_WIRESHARK_QT_MODULE_CHECK(Multimedia, $1, $qt_version_to_check,
- have_qt_multimedia_lib=yes
- AC_DEFINE(QT_MULTIMEDIA_LIB, 1, [Define if we have QtMultimedia]))
-
- #
- # While we're at it, look for QtMacExtras. (Presumably
- # if we're not building for macOS, it won't be present.)
- #
- # XXX - is there anything in QtX11Extras or QtWinExtras
- # that we should be using?
- #
- AC_WIRESHARK_QT_MODULE_CHECK(MacExtras, $1, $qt_version_to_check,
- AC_DEFINE(QT_MACEXTRAS_LIB, 1, [Define if we have QtMacExtras]))
-
- AC_WIRESHARK_QT_ADD_PIC_IF_NEEDED
-
- # Run Action-If-Found
- ifelse([$3], , :, [$3])
- else
- # Run Action-If-Not-Found
- ifelse([$4], , :, [$4])
- fi
-
-])
-
-dnl AC_WIRESHARK_QT_TOOL_CHECK([TOOLPATHVAR, TOOL, REQUESTED-MAJOR_VERSION])
-dnl Test for a particular Qt tool for some specific version of Qt
-dnl
-AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK],
-[
- #
- # At least in some versions of Debian/Ubuntu, and perhaps
- # other OSes, the Qt build tools are just links to a
- # program called "qtchooser", and even if you want to
- # build with Qt 5, running the tool might give you the
- # Qt 4 version of the tool unless you run the tool with
- # a -qt=5 argument.
- #
- # So we look for qtchooser and, if we find it, use the
- # -qt={version} argument, otherwise we look for particular
- # tool versions using tool name suffixes.
- #
- AC_PATH_PROG(QTCHOOSER, qtchooser)
- if test ! -z "$QTCHOOSER"; then
- #
- # We found qtchooser; we assume that means that
- # the tool is linked to qtchooser, so that we
- # can run it with the -qt={version} flag to get
- # the appropriate version of the tool.
- #
- AC_PATH_PROG($1, $2)
- if test "x$$1" = x; then
- #
- # We can't build Qt Wireshark without that
- # tool..
- #
- AC_MSG_ERROR(I couldn't find $2; make sure it's installed and in your path)
- fi
-
- #
- # Add the -qt={version} argument to it.
- #
- $1="$$1 -qt=$qt_version"
- else
- #
- # Annoyingly, on some Linux distros (e.g. Debian)
- # the Qt 5 tools have no suffix and the Qt 4 tools
- # have suffix -qt4. On other distros (e.g. openSUSE)
- # the Qt 5 tools have suffix -qt5 and the Qt 4 tools
- # have no suffix.
- #
- # So we check for the tool first with the -qtN suffix
- # and then with no suffix.
- #
- AC_PATH_PROGS($1, [$2-qt$qt_version $2])
- if test "x$$1" = x; then
- #
- # We can't build Qt Wireshark without that
- # tool..
- #
- AC_MSG_ERROR(I couldn't find $2-qt$qt_version or $2; make sure it's installed and in your path)
- fi
- fi
-])
-
-AC_DEFUN([AC_WIRESHARK_QT_TOOL_CHECK_LRELEASE],
-[
- AC_WIRESHARK_QT_TOOL_CHECK(LRELEASE, lrelease, $2)
- AC_MSG_CHECKING(whether lrelease -version works)
- lrelease_version=`$LRELEASE -version 2>&AS_MESSAGE_LOG_FD`
- AS_IF([test $? -ne 0],
- [
- AC_MSG_RESULT(no)
- AC_MSG_ERROR([$LRELEASE -version returned non-zero exit status])
- ])
- AC_MSG_RESULT([ok, $lrelease_version])
-])
-
-#
-# AC_WIRESHARK_LZ4_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_LZ4_CHECK],
-[
- AC_WIRESHARK_PUSH_FLAGS
-
- if test "x$lz4_dir" != "x"
- then
- #
- # The user specified a directory in which lz4 resides,
- # so add the "include" subdirectory of that directory to
- # the include file search path and the "lib" subdirectory
- # of that directory to the library search path.
- #
- # XXX - if there's also a lz4 in a directory that's
- # already in CPPFLAGS or LDFLAGS, this won't make us find
- # the version in the specified directory, as the compiler
- # and/or linker will search that other directory before it
- # searches the specified directory.
- #
- LZ4_CFLAGS="-I$lz4_dir/include"
- fi
-
- #
- # Make sure we have "lz4.h". If we don't, it means we probably
- # don't have lz4, so don't use it.
- #
- AC_CHECK_HEADER(lz4.h,,
- [
- if test "x$lz4_dir" != "x"
- then
- #
- # The user used "--with-lz4=" to specify a directory
- # containing lz4, but we didn't find the header file
- # there; that either means they didn't specify the
- # right directory or are confused about whether lz4
- # is, in fact, installed. Report the error and give up.
- #
- AC_MSG_ERROR([lz4 header not found in directory specified in --with-lz4])
- else
- if test "x$want_lz4" = "xyes"
- then
- #
- # The user tried to force us to use the library, but we
- # couldn't find the header file; report an error.
- #
- AC_MSG_ERROR(Header file lz4.h not found.)
- else
- #
- # We couldn't find the header file; don't use the
- # library, as it's probably not present.
- #
- want_lz4=no
- fi
- fi
- ])
-
- if test "x$want_lz4" != "xno"
- then
- #
- # Well, we at least have the lz4 header file.
- # We link with lz4 to support uncompression of
- # CQL traffic.
- #
- LZ4_LIBS="-llz4"
- ac_save_LIBS="$LIBS"
- LIBS="$LZ4_LIBS $LIBS"
- AC_DEFINE(HAVE_LZ4, 1, [Define to use lz4 library])
- #
- # Check for "LZ4_decompress_safe()" in lz4, which we need
- # in order to read compressed capture files.
- #
- AC_CHECK_FUNCS(LZ4_decompress_safe)
- #
- # Check for (optional) lz4frame.h
- #
- AC_CHECK_HEADERS(lz4frame.h)
- LIBS="$ac_save_LIBS"
- fi
-
- AC_WIRESHARK_POP_FLAGS
-])
-
-#
-# AC_WIRESHARK_SNAPPY_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_SNAPPY_CHECK],
-[
- AC_WIRESHARK_PUSH_FLAGS
-
- if test "x$snappy_dir" != "x"
- then
- #
- # The user specified a directory in which snappy resides,
- # so add the "include" subdirectory of that directory to
- # the include file search path and the "lib" subdirectory
- # of that directory to the library search path.
- #
- # XXX - if there's also a snappy in a directory that's
- # already in CPPFLAGS or LDFLAGS, this won't make us find
- # the version in the specified directory, as the compiler
- # and/or linker will search that other directory before it
- # searches the specified directory.
- #
- SNAPPY_CFLAGS="-I$snappy_dir/include"
- fi
-
- #
- # Make sure we have "snappy-c.h". If we don't, it means we probably
- # don't have snappy, so don't use it.
- #
- AC_CHECK_HEADER(snappy-c.h,,
- [
- if test "x$snappy_dir" != "x"
- then
- #
- # The user used "--with-snappy=" to specify a directory
- # containing snappy, but we didn't find the header file
- # there; that either means they didn't specify the
- # right directory or are confused about whether snappy
- # is, in fact, installed. Report the error and give up.
- #
- AC_MSG_ERROR([snappy-c.header not found in directory specified in --with-snappy])
- else
- if test "x$want_snappy" = "xyes"
- then
- #
- # The user tried to force us to use the library, but we
- # couldn't find the header file; report an error.
- #
- AC_MSG_ERROR(Header file snappy-c.h not found.)
- else
- #
- # We couldn't find the header file; don't use the
- # library, as it's probably not present.
- #
- want_snappy=no
- fi
- fi
- ])
-
- if test "x$want_snappy" != "xno"
- then
- #
- # Well, we at least have the snappy-c.header file.
- # We link with snappy to support uncompression of
- # compressed CQL traffic.
- #
- SNAPPY_LIBS=-lsnappy
- ac_save_LIBS="$LIBS"
- LIBS="$SNAPPY_LIBS $LIBS"
- AC_DEFINE(HAVE_SNAPPY, 1, [Define to use snappy library])
- #
- # Check for "snappy_uncompress()" in snappy, which we need
- # in order to read compressed capture files.
- #
- AC_CHECK_FUNCS(snappy_uncompress)
- LIBS="$ac_save_LIBS"
- fi
-
- AC_WIRESHARK_POP_FLAGS
-])
-
-#
-# AC_WIRESHARK_BCG729_CHECK
-#
-AC_DEFUN([AC_WIRESHARK_BCG729_CHECK],
-[
- want_bcg729=defaultyes
-
- if test "x$want_bcg729" = "xdefaultyes"; then
- want_bcg729=yes
- fi
-
- if test "x$want_bcg729" = "xyes"; then
- AC_CHECK_LIB(bcg729, bcg729Decoder,
- [
- AC_CHECK_HEADERS(bcg729/decoder.h,
- [
- BCG729_LIBS=-lbcg729
- AC_DEFINE(HAVE_BCG729, 1, [Define to use bcg729 library])
- have_good_bcg729=yes
- ],,
- )
- ],,
- )
- else
- AC_MSG_RESULT(not required)
- fi
-])