[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] autoconf: add missing compression checks for libxc



2012/3/6 Jan Beulich <JBeulich@xxxxxxxx>:
>>>> On 22.02.12 at 20:45, Roger Pau Monne <roger.pau@xxxxxxxxxxxxx> wrote:
>> # HG changeset patch
>> # User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
>> # Date 1329939885 -3600
>> # Node ID a6f28f44a11c63f7f4a94ab49397c17279506442
>> # Parent Â9e72215b0ee2d73b6b60b1e155067595294dc2df
>> autoconf: add missing compression checks for libxc
>>
>> Move missing checks from tools/libxc/Makefile to configure script.
>>
>> Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
>
> Wow, that was fast indeed! However, ...
>
>> --- a/tools/configure.ac   ÂWed Feb 22 17:49:27 2012 +0100
>> +++ b/tools/configure.ac   ÂWed Feb 22 20:44:45 2012 +0100
>> @@ -110,6 +110,10 @@ PKG_CHECK_MODULES(glib, glib-2.0)
>> ÂAX_DEFAULT_LIB
>>
>> Â# Checks for libraries.
>> +AC_CHECK_LIB([bz2], [BZ2_bzDecompressInit], [zlib="$zlib -DHAVE_BZLIB 
>> -lbz2"])
>> +AC_CHECK_LIB([lzma], [lzma_stream_decoder], [zlib="$zlib -DHAVE_LZMA 
>> -llzma"])
>> +AC_CHECK_LIB([lzo2], [lzo1x_decompress], [zlib="$zlib -DHAVE_LZO1X -llzo2"])
>
> ... are you certain that checking for these symbols in the respective
> libraries suffices? The old check really was verifying corresponding
> header files' presence.

I think it's best to do it this way, what this tests do is try to
compile a sample program that uses the library, which is much more
closer to the reality than just checking for a header existence. In a
strange case you might have the header files, but maybe the library is
broken, so we can not use it. What I can do if you want is check for
the header files also, something like this?

8<----------------------------

autoconf: add missing compression checks for libxc

Move missing checks from tools/libxc/Makefile to configure script.

Changes since v1:

 * Check for header files.

Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>

diff -r 9e72215b0ee2 config/Tools.mk.in
--- a/config/Tools.mk.in        Wed Feb 22 17:49:27 2012 +0100
+++ b/config/Tools.mk.in        Wed Feb 22 21:53:27 2012 +0100
@@ -43,6 +43,7 @@ CONFIG_LOMOUNT      := @lomount@

 #System options
 CONFIG_SYSTEM_LIBAIO:= @system_aio@
+ZLIB                := @zlib@
 CONFIG_LIBICONV     := @libiconv@
 CONFIG_GCRYPT       := @libgcrypt@
 CONFIG_EXT2FS       := @libext2fs@
diff -r 9e72215b0ee2 tools/configure
--- a/tools/configure   Wed Feb 22 17:49:27 2012 +0100
+++ b/tools/configure   Wed Feb 22 21:53:27 2012 +0100
@@ -605,6 +605,7 @@ libiconv
 libgcrypt
 libext2fs
 system_aio
+zlib
 LIB_PATH
 glib_LIBS
 glib_CFLAGS
@@ -6728,6 +6729,148 @@ fi


 # Checks for libraries.
+ac_fn_c_check_header_mongrel "$LINENO" "bzlib.h"
"ac_cv_header_bzlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_bzlib_h" = x""yes; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for
BZ2_bzDecompressInit in -lbz2" >&5
+$as_echo_n "checking for BZ2_bzDecompressInit in -lbz2... " >&6; }
+if test "${ac_cv_lib_bz2_BZ2_bzDecompressInit+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbz2  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char BZ2_bzDecompressInit ();
+int
+main ()
+{
+return BZ2_bzDecompressInit ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bz2_BZ2_bzDecompressInit=yes
+else
+  ac_cv_lib_bz2_BZ2_bzDecompressInit=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&5
+$as_echo "$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&6; }
+if test "x$ac_cv_lib_bz2_BZ2_bzDecompressInit" = x""yes; then :
+  zlib="$zlib -DHAVE_BZLIB -lbz2"
+fi
+
+
+fi
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "lzma.h" "ac_cv_header_lzma_h"
"$ac_includes_default"
+if test "x$ac_cv_header_lzma_h" = x""yes; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for
lzma_stream_decoder in -llzma" >&5
+$as_echo_n "checking for lzma_stream_decoder in -llzma... " >&6; }
+if test "${ac_cv_lib_lzma_lzma_stream_decoder+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llzma  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char lzma_stream_decoder ();
+int
+main ()
+{
+return lzma_stream_decoder ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_lzma_lzma_stream_decoder=yes
+else
+  ac_cv_lib_lzma_lzma_stream_decoder=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$ac_cv_lib_lzma_lzma_stream_decoder" >&5
+$as_echo "$ac_cv_lib_lzma_lzma_stream_decoder" >&6; }
+if test "x$ac_cv_lib_lzma_lzma_stream_decoder" = x""yes; then :
+  zlib="$zlib -DHAVE_LZMA -llzma"
+fi
+
+
+fi
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "lzo/lzo1x.h"
"ac_cv_header_lzo_lzo1x_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzo_lzo1x_h" = x""yes; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for
lzo1x_decompress in -llzo2" >&5
+$as_echo_n "checking for lzo1x_decompress in -llzo2... " >&6; }
+if test "${ac_cv_lib_lzo2_lzo1x_decompress+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llzo2  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char lzo1x_decompress ();
+int
+main ()
+{
+return lzo1x_decompress ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_lzo2_lzo1x_decompress=yes
+else
+  ac_cv_lib_lzo2_lzo1x_decompress=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
$ac_cv_lib_lzo2_lzo1x_decompress" >&5
+$as_echo "$ac_cv_lib_lzo2_lzo1x_decompress" >&6; }
+if test "x$ac_cv_lib_lzo2_lzo1x_decompress" = x""yes; then :
+  zlib="$zlib -DHAVE_LZO1X -llzo2"
+fi
+
+
+fi
+
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for io_setup in -laio" >&5
 $as_echo_n "checking for io_setup in -laio... " >&6; }
 if test "${ac_cv_lib_aio_io_setup+set}" = set; then :
diff -r 9e72215b0ee2 tools/configure.ac
--- a/tools/configure.ac        Wed Feb 22 17:49:27 2012 +0100
+++ b/tools/configure.ac        Wed Feb 22 21:53:27 2012 +0100
@@ -110,6 +110,16 @@ PKG_CHECK_MODULES(glib, glib-2.0)
 AX_DEFAULT_LIB

 # Checks for libraries.
+AC_CHECK_HEADER([bzlib.h], [
+AC_CHECK_LIB([bz2], [BZ2_bzDecompressInit], [zlib="$zlib -DHAVE_BZLIB -lbz2"])
+])
+AC_CHECK_HEADER([lzma.h], [
+AC_CHECK_LIB([lzma], [lzma_stream_decoder], [zlib="$zlib -DHAVE_LZMA -llzma"])
+])
+AC_CHECK_HEADER([lzo/lzo1x.h], [
+AC_CHECK_LIB([lzo2], [lzo1x_decompress], [zlib="$zlib -DHAVE_LZO1X -llzo2"])
+])
+AC_SUBST(zlib)
 AC_CHECK_LIB([aio], [io_setup], [system_aio="y"], [system_aio="n"])
 AC_SUBST(system_aio)
 AC_CHECK_LIB([crypto], [MD5], [], [AC_MSG_ERROR([Could not find libcrypto])])
diff -r 9e72215b0ee2 tools/libxc/Makefile
--- a/tools/libxc/Makefile      Wed Feb 22 17:49:27 2012 +0100
+++ b/tools/libxc/Makefile      Wed Feb 22 21:53:27 2012 +0100
@@ -171,20 +171,7 @@ libxenguest.so.$(MAJOR): libxenguest.so.
 ifeq ($(CONFIG_MiniOS),y)
 zlib-options =
 else
-zlib-options = $(shell                                 \
-       (. ../check/funcs.sh;                           \
-        if has_header bzlib.h; then                    \
-           echo "-DHAVE_BZLIB";                                \
-          echo "-lbz2";                                \
-        fi;                                            \
-        if has_header lzma.h; then                     \
-          echo "-DHAVE_LZMA";                          \
-          echo "-llzma";                               \
-        fi;                                            \
-        if has_header lzo/lzo1x.h; then                \
-          echo "-DHAVE_LZO1X";                         \
-          echo "-llzo2";                               \
-        fi) | grep $(1))
+zlib-options = $(ZLIB)
 endif

 xc_dom_bzimageloader.o: CFLAGS += $(call zlib-options,D)

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.