1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
Description: Fix PCAP version check for cross compilation build
Daq checks for the pcap version using AC_RUN_IFELSE. Doing so does not work at
all during cross compilation. This patch implements a different approach using
AC_COMPUTE_INT to compute the major and minor version of pcap independently and
then perform the comparison in shell. AC_COMPUTE_INT is implemented such that
it does not require running code for compile time constants.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=945940
Author: Helmut Grohne <helmut@subdivi.de>
Reviewed-by: Javier Fernández-Sanguino Peña <jfs@debian.org>
Origin: vendor
Last-Update: 2020-05-10
--- a/configure.ac
+++ b/configure.ac
@@ -188,7 +188,7 @@
[enable_pcap_module="$enableval"], [enable_pcap_module="$DEFAULT_ENABLE"])
if test "$enable_pcap_module" = yes; then
AC_CHECK_HEADER([pcap.h], [], [enable_pcap_module=no])
- AC_CHECK_PCAP_VER("1.0.0")
+ AC_CHECK_PCAP_VER(1,0)
if test "$enable_pcap_module" = yes; then
STATIC_LIBS="${STATIC_LIBS} -lpcap"
fi
--- a/m4/sf.m4
+++ b/m4/sf.m4
@@ -130,30 +130,22 @@
AC_CHECK_LIB([pcap],[pcap_lib_version],[LIBS="-lpcap ${LIBS}"],[have_pcap_lib_version="no"],[])
if test "x$have_pcap_lib_version" = "xno"; then
echo
- echo " ERROR! Libpcap library version >= $1 not found."
+ echo " ERROR! Libpcap library version >= $1.$2 not found."
echo " Get it from http://www.tcpdump.org"
echo
exit 1
fi
- AC_CACHE_CHECK([for libpcap version >= $1], [daq_cv_libpcap_version_1x], [
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <pcap.h>
- #include <string.h>
- extern char pcap_version[];
- ]],
- [[
- if (strcmp(pcap_version, $1) < 0)
- return 1;
- ]])],
- [daq_cv_libpcap_version_1x="yes"],
- [daq_cv_libpcap_version_1x="no"])])
- if test "x$daq_cv_libpcap_version_1x" = "xno"; then
+ AC_MSG_CHECKING([for libpcap version >= $1.$2])
+ AC_COMPUTE_INT([PCAP_VERSION_MAJOR],[PCAP_VERSION_MAJOR],[#include <pcap.h>],[
+ AC_MSG_FAILURE([failed to compute PCAP_VERSION_MAJOR from pcap.h])])
+ AC_COMPUTE_INT([PCAP_VERSION_MINOR],[PCAP_VERSION_MINOR],[#include <pcap.h>],[
+ AC_MSG_FAILURE([failed to compute PCAP_VERSION_MINOR from pcap.h])])
+ AS_IF([test "$1" -gt "$PCAP_VERSION_MAJOR" -o "$1" -eq "$PCAP_VERSION_MAJOR" -a "$2" -gt "$PCAP_VERSION_MINOR"],[
echo
- echo " ERROR! Libpcap library version >= $1 not found."
+ echo " ERROR! Libpcap library version >= $1.$2 not found."
echo " Get it from http://www.tcpdump.org"
echo
exit 1
- fi
+ ])
+ AC_MSG_RESULT([$PCAP_VERSION_MAJOR.$PCAP_VERSION_MAJOR])
])
|