aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2017-03-27 09:42:45 +0200
committerStefano Stabellini <sstabellini@kernel.org>2017-04-21 12:41:23 -0700
commitc1cdd9d5beb052b072c1f57ea634e3c52e9dc17b (patch)
tree6182d94f1ed46d101aac1c19e493a0d9e95257c5
parent14d015b6fcd0b94a1e0983f82fab3e144143a314 (diff)
configure: use pkg-config for obtaining xen version
Instead of trying to guess the Xen version to use by compiling various test programs first just ask the system via pkg-config. Only if it can't return the version fall back to the test program scheme. If configure is being called with dedicated flags for the Xen libraries use those instead of the pkg-config output. This will avoid breaking an in-tree Xen build of an old Xen version while a new Xen version is installed on the build machine: pkg-config would pick up the installed Xen config files as the Xen tree wouldn't contain any of them. Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org> Tested-by: Paul Durrant <paul.durrant@citrix.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
-rwxr-xr-xconfigure159
1 files changed, 88 insertions, 71 deletions
diff --git a/configure b/configure
index 271bea8058..3133ef8418 100755
--- a/configure
+++ b/configure
@@ -1975,30 +1975,46 @@ fi
# xen probe
if test "$xen" != "no" ; then
- xen_libs="-lxenstore -lxenctrl -lxenguest"
- xen_stable_libs="-lxencall -lxenforeignmemory -lxengnttab -lxenevtchn"
+ # Check whether Xen library path is specified via --extra-ldflags to avoid
+ # overriding this setting with pkg-config output. If not, try pkg-config
+ # to obtain all needed flags.
+
+ if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
+ $pkg_config --exists xencontrol ; then
+ xen_ctrl_version="$(printf '%d%02d%02d' \
+ $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
+ xen=yes
+ xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
+ xen_pc="$xen_pc xenevtchn xendevicemodel"
+ QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
+ libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
+ LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
+ else
- # First we test whether Xen headers and libraries are available.
- # If no, we are done and there is no Xen support.
- # If yes, more tests are run to detect the Xen version.
+ xen_libs="-lxenstore -lxenctrl -lxenguest"
+ xen_stable_libs="-lxencall -lxenforeignmemory -lxengnttab -lxenevtchn"
- # Xen (any)
- cat > $TMPC <<EOF
+ # First we test whether Xen headers and libraries are available.
+ # If no, we are done and there is no Xen support.
+ # If yes, more tests are run to detect the Xen version.
+
+ # Xen (any)
+ cat > $TMPC <<EOF
#include <xenctrl.h>
int main(void) {
return 0;
}
EOF
- if ! compile_prog "" "$xen_libs" ; then
- # Xen not found
- if test "$xen" = "yes" ; then
- feature_not_found "xen" "Install xen devel"
- fi
- xen=no
+ if ! compile_prog "" "$xen_libs" ; then
+ # Xen not found
+ if test "$xen" = "yes" ; then
+ feature_not_found "xen" "Install xen devel"
+ fi
+ xen=no
- # Xen unstable
- elif
- cat > $TMPC <<EOF &&
+ # Xen unstable
+ elif
+ cat > $TMPC <<EOF &&
#undef XC_WANT_COMPAT_DEVICEMODEL_API
#define __XEN_TOOLS__
#include <xendevicemodel.h>
@@ -2011,13 +2027,13 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
- then
- xen_stable_libs="-lxendevicemodel $xen_stable_libs"
- xen_ctrl_version=40900
- xen=yes
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
+ then
+ xen_stable_libs="-lxendevicemodel $xen_stable_libs"
+ xen_ctrl_version=40900
+ xen=yes
+ elif
+ cat > $TMPC <<EOF &&
/*
* If we have stable libs the we don't want the libxc compat
* layers, regardless of what CFLAGS we may have been given.
@@ -2067,12 +2083,12 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs $xen_stable_libs"
- then
- xen_ctrl_version=40800
- xen=yes
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs $xen_stable_libs"
+ then
+ xen_ctrl_version=40800
+ xen=yes
+ elif
+ cat > $TMPC <<EOF &&
/*
* If we have stable libs the we don't want the libxc compat
* layers, regardless of what CFLAGS we may have been given.
@@ -2118,12 +2134,12 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs $xen_stable_libs"
- then
- xen_ctrl_version=40701
- xen=yes
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs $xen_stable_libs"
+ then
+ xen_ctrl_version=40701
+ xen=yes
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <stdint.h>
int main(void) {
@@ -2133,14 +2149,14 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=40700
- xen=yes
-
- # Xen 4.6
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40700
+ xen=yes
+
+ # Xen 4.6
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <xenstore.h>
#include <stdint.h>
@@ -2161,14 +2177,14 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=40600
- xen=yes
-
- # Xen 4.5
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40600
+ xen=yes
+
+ # Xen 4.5
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <xenstore.h>
#include <stdint.h>
@@ -2188,13 +2204,13 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=40500
- xen=yes
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40500
+ xen=yes
- elif
- cat > $TMPC <<EOF &&
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <xenstore.h>
#include <stdint.h>
@@ -2213,24 +2229,25 @@ int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=40200
- xen=yes
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40200
+ xen=yes
- else
- if test "$xen" = "yes" ; then
- feature_not_found "xen (unsupported version)" \
- "Install a supported xen (xen 4.2 or newer)"
+ else
+ if test "$xen" = "yes" ; then
+ feature_not_found "xen (unsupported version)" \
+ "Install a supported xen (xen 4.2 or newer)"
+ fi
+ xen=no
fi
- xen=no
- fi
- if test "$xen" = yes; then
- if test $xen_ctrl_version -ge 40701 ; then
- libs_softmmu="$xen_stable_libs $libs_softmmu"
+ if test "$xen" = yes; then
+ if test $xen_ctrl_version -ge 40701 ; then
+ libs_softmmu="$xen_stable_libs $libs_softmmu"
+ fi
+ libs_softmmu="$xen_libs $libs_softmmu"
fi
- libs_softmmu="$xen_libs $libs_softmmu"
fi
fi