Browse code

lz4: Fix confused version check

Older LZ4 library versions used a version number > 100 and not the
current x.y.z versioning scheme. This results in version 122 being
numberically higher than the check we have liblz4 > 1.7.1. And
since that old version (122) does not have the LZ4_compress_default(),
the building explodes later on.

This patch enhances the version check to also ensure the version
number is lower than 100. In addition the function checking we
had was not triggered if system library was found via pkg-config,
so this have now been reworked to really check if we have at least
two of the most important LZ4 functions - as long as a system
library have been found or been accepted via the LZ4_{CFLAGS,LIBS}
variables.

There are more ways to check for functions in autoconf. I opted
for AC_CHECK_LIB() instead of AC_CHECK_FUNC{,S}() as the latter
ones does not test if a function exists in a specific library. This
have the downside of needing to tests instead of AC_CHECK_FUNCS()
which could test for more functions in one go. We also do not
overwrite the LZ4_LIBS variable on success, as that could change
already set library paths (-L)

Finally, a stupid typo got fixed as well.

Trac: 939
Signed-off-by: David Sommerseth <davids@openvpn.net>
Tested-by: Richard Bonhomme <fragmentux@gmail.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20171002161812.9376-1-davids@openvpn.net>
URL: https://www.mail-archive.com/search?l=mid&q=20171002161812.9376-1-davids@openvpn.net
Signed-off-by: Gert Doering <gert@greenie.muc.de>
(cherry picked from commit f91e4863bc138213a07a2cf53ad71d8a4532abef)

David Sommerseth authored on 2017/10/03 01:18:12
Showing 1 changed files
... ...
@@ -1071,7 +1071,7 @@ if test "$enable_lz4" = "yes" && test "$enable_comp_stub" = "no"; then
1071 1071
     if test -z "${LZ4_CFLAGS}" -a -z "${LZ4_LIBS}"; then
1072 1072
 	# if the user did not explicitly specify flags, try to autodetect
1073 1073
 	PKG_CHECK_MODULES([LZ4],
1074
-			  [liblz4 >= 1.7.1],
1074
+			  [liblz4 >= 1.7.1 liblz4 < 100],
1075 1075
 			  [have_lz4="yes"],
1076 1076
 			  [] # If this fails, we will do another test next
1077 1077
 	)
... ...
@@ -1111,16 +1111,20 @@ if test "$enable_lz4" = "yes" && test "$enable_comp_stub" = "no"; then
1111 1111
 	fi
1112 1112
     fi
1113 1113
 
1114
-    # if LZ4_LIBS is set, we assume it will work, otherwise test
1115
-    if test -z "${LZ4_LIBS}"; then
1114
+    # Double check we have a few needed functions
1115
+    if test "${have_lz4}" = "yes" ; then
1116 1116
 	AC_CHECK_LIB([lz4],
1117
-		     [LZ4_compress],
1118
-		     [LZ4_LIBS="-llz4"],
1117
+		     [LZ4_compress_default],
1118
+		     [],
1119
+		     [have_lz4="no"])
1120
+	AC_CHECK_LIB([lz4],
1121
+		     [LZ4_decompress_safe],
1122
+		     [],
1119 1123
 		     [have_lz4="no"])
1120 1124
     fi
1121 1125
 
1122 1126
     if test "${have_lz4}" != "yes" ; then
1123
-	AC_MSG_RESULT([		usuable LZ4 library or header not found, using version in src/compat/compat-lz4.*])
1127
+	AC_MSG_RESULT([		usable LZ4 library or header not found, using version in src/compat/compat-lz4.*])
1124 1128
 	AC_DEFINE([NEED_COMPAT_LZ4], [1], [use copy of LZ4 source in compat/])
1125 1129
 	LZ4_LIBS=""
1126 1130
     fi