configure: Test that gio libs from pkg-config work

On some hosts (eg Ubuntu Bionic) pkg-config returns a set of
libraries for gio-2.0 which don't actually work when compiling
statically. (Specifically, the returned library string includes
-lmount, but not -lblkid which -lmount depends upon, so linking
fails due to missing symbols.)

Check that the libraries work, and don't enable gio if they don't,
in the same way we do for gnutls.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20200928160402.7961-1-peter.maydell@linaro.org
This commit is contained in:
Peter Maydell 2020-11-02 16:52:17 +00:00
parent 7142eb9e24
commit 76346b6264
1 changed files with 9 additions and 1 deletions

10
configure vendored
View File

@ -3489,13 +3489,21 @@ if test "$static" = yes && test "$mingw32" = yes; then
fi fi
if $pkg_config --atleast-version=$glib_req_ver gio-2.0; then if $pkg_config --atleast-version=$glib_req_ver gio-2.0; then
gio=yes
gio_cflags=$($pkg_config --cflags gio-2.0) gio_cflags=$($pkg_config --cflags gio-2.0)
gio_libs=$($pkg_config --libs gio-2.0) gio_libs=$($pkg_config --libs gio-2.0)
gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0) gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0)
if [ ! -x "$gdbus_codegen" ]; then if [ ! -x "$gdbus_codegen" ]; then
gdbus_codegen= gdbus_codegen=
fi fi
# Check that the libraries actually work -- Ubuntu 18.04 ships
# with pkg-config --static --libs data for gio-2.0 that is missing
# -lblkid and will give a link error.
write_c_skeleton
if compile_prog "" "gio_libs" ; then
gio=yes
else
gio=no
fi
else else
gio=no gio=no
fi fi