From: Stefano Stabellini <sstabellini@kernel.org>
To: peter.maydell@linaro.org
Cc: stefanha@gmail.com, sstabellini@kernel.org, stefanha@redhat.com,
anthony.perard@citrix.com, xen-devel@lists.xenproject.org,
qemu-devel@nongnu.org, Juergen Gross <jgross@suse.com>
Subject: [Qemu-devel] [PULL 09/21] configure: use pkg-config for obtaining xen version
Date: Fri, 21 Apr 2017 13:14:50 -0700 [thread overview]
Message-ID: <1492805702-19690-9-git-send-email-sstabellini@kernel.org> (raw)
In-Reply-To: <1492805702-19690-1-git-send-email-sstabellini@kernel.org>
From: Juergen Gross <jgross@suse.com>
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>
---
configure | 159 ++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 88 insertions(+), 71 deletions(-)
diff --git a/configure b/configure
index 271bea8..3133ef8 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
--
1.9.1
next prev parent reply other threads:[~2017-04-21 20:15 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-21 20:14 [Qemu-devel] [PULL 0/21] Please pull xen-20170421-tag for 2.10 Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 01/21] xen: make use of xen_xc implicit in xen_common.h inlines Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 02/21] xen: rename xen_modified_memory() to xen_hvm_modified_memory() Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 03/21] xen: create wrappers for all other uses of xc_hvm_XXX() functions Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 04/21] configure: detect presence of libxendevicemodel Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 05/21] xen: use libxendevicemodel when available Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 06/21] xen: use 5 digit xen versions Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 07/21] xen: use libxendevice model to restrict operations Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 08/21] xen: additionally restrict xenforeignmemory operations Stefano Stabellini
2017-04-21 20:14 ` Stefano Stabellini [this message]
2017-04-21 20:14 ` [Qemu-devel] [PULL 10/21] xen: import ring.h from xen Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 11/21] 9p: introduce a type for the 9p header Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 12/21] xen/9pfs: introduce Xen 9pfs backend Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 13/21] xen/9pfs: connect to the frontend Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 14/21] xen/9pfs: receive requests from " Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 15/21] xen/9pfs: implement in/out_iov_from_pdu and vmarshal/vunmarshal Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 16/21] xen/9pfs: send responses back to the frontend Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 17/21] xen/9pfs: build and register Xen 9pfs backend Stefano Stabellini
2017-04-21 20:14 ` [Qemu-devel] [PULL 18/21] add xen-9p-backend to MAINTAINERS under Xen Stefano Stabellini
2017-04-21 20:15 ` [Qemu-devel] [PULL 19/21] move xen-common.c to hw/xen/ Stefano Stabellini
2017-04-21 20:15 ` [Qemu-devel] [PULL 20/21] move xen-hvm.c to hw/i386/xen/ Stefano Stabellini
2017-04-21 20:15 ` [Qemu-devel] [PULL 21/21] move xen-mapcache.c " Stefano Stabellini
2017-04-24 10:31 ` [Qemu-devel] [PULL 0/21] Please pull xen-20170421-tag for 2.10 Peter Maydell
2017-04-24 21:25 ` Stefano Stabellini
2017-04-24 21:46 ` Peter Maydell
2017-04-24 23:44 ` Stefano Stabellini
2017-04-25 6:44 ` Greg Kurz
2017-04-25 7:31 ` Markus Armbruster
2017-04-25 17:18 ` Stefano Stabellini
2017-04-26 6:44 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1492805702-19690-9-git-send-email-sstabellini@kernel.org \
--to=sstabellini@kernel.org \
--cc=anthony.perard@citrix.com \
--cc=jgross@suse.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
--cc=stefanha@redhat.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).