[Spice-devel] [PATCH spice-common v2 1/2] spice-deps: Make LZ4 check depending on function

Frediano Ziglio fziglio at redhat.com
Thu Nov 24 14:33:41 UTC 2016


> 
> LZ4 changed versioning scheme from r131 to v1.7.3 making our configure
> fail with (1.7.3 < 129).
> 
> Switch from version checking to checking that the necessary function
> is available.
> ---
> v2: Added some comments, Switched to AC_CHECK_FUNC
> ---
>  m4/spice-deps.m4 | 22 ++++++++++++++++++----
>  1 file changed, 18 insertions(+), 4 deletions(-)
> 
> diff --git a/m4/spice-deps.m4 b/m4/spice-deps.m4
> index adedec4..6827c7f 100644
> --- a/m4/spice-deps.m4
> +++ b/m4/spice-deps.m4
> @@ -185,12 +185,26 @@ AC_DEFUN([SPICE_CHECK_LZ4], [
>  
>      have_lz4="no"
>      if test "x$enable_lz4" != "xno"; then
> -      PKG_CHECK_MODULES([LZ4], [liblz4 >= 129], [have_lz4="yes"],
> [have_lz4="no"])
> +      # LZ4_compress_default is available in liblz4 >= 129, however liblz
> has changed
> +      # versioning scheme making the check failing. Rather check for
> function definition
> +      PKG_CHECK_MODULES([LZ4], [liblz4], [have_lz4="yes"], [have_lz4="no"])
>  
>        if test "x$have_lz4" = "xyes"; then
> -        AC_DEFINE(USE_LZ4, [1], [Define to build with lz4 support])
> -      elif test "x$enable_lz4" = "xyes"; then
> -        AC_MSG_ERROR([lz4 support requested but liblz4 could not be found])
> +        # For cross-compilers may be necessary to save & restore LIBS and
> CFLAGS before AC_SEARCH_LIBS
> +        old_LIBS="$LIBS"
> +        old_CFLAGS="$CFLAGS"
> +        CFLAGS="$CFLAGS $LZ4_CFLAGS"
> +        LIBS="$LIBS $LZ4_LIBS"
> +
> +        AC_CHECK_FUNC([LZ4_compress_default], [
> +            AC_DEFINE(USE_LZ4, [1], [Define to build with lz4 support])],
> +            [have_lz4="no"])
> +
> +        LIBS="$old_LIBS"
> +        CFLAGS="$old_CFLAGS"
> +      fi
> +      if test "x$enable_lz4" = "xyes" && test "x$have_lz4" = "xno"; then

I think this xyes/xno it's kind of a fix for shell bug quite long ago, a

   if test "$enable_lz4" = yes -a "$have_lz4" = no; then

will work. Even [ is more readable leading to

   if [ "$enable_lz4" = yes -a "$have_lz4" = no ]; then

configure try to use very old style to make sure compatibility is good
but this lead to really ugly syntax sometimes.

> +        AC_MSG_ERROR([lz4 support requested but liblz4 >= 129 could not be
> found])
>        fi
>      fi
>      AM_CONDITIONAL(HAVE_LZ4, test "x$have_lz4" = "xyes")

Frediano


More information about the Spice-devel mailing list