* [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad
@ 2016-02-03 16:10 Ian Campbell
2016-02-03 16:10 ` [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default Ian Campbell
2016-02-03 16:12 ` [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Jackson
0 siblings, 2 replies; 6+ messages in thread
From: Ian Campbell @ 2016-02-03 16:10 UTC (permalink / raw)
To: ian.jackson, wei.liu2, xen-devel; +Cc: Ian Campbell
Currently both subdir-all-qemu-traditional-dir and subdir-install-...
recurse into qemu-traditional-dir and run xen-setup, but with subtly
different options (--extra-cflags was only passed for install).
Consolidate these by having the install target depend on the all
(build) target and only calling make install.
There is a subtlty which is that qemu-trad's build is not completely
isolated from xen.git and requires some environment variables etc. To
handle this refactor the setup code into a make macro and $(call) it
in both cases.
Note that this doesn't actually omit a potential double call to
configure, since all is still called during install, this is the same
for qemu-xen. Note that it doesn't result in a double build in either
case, since apparently the qemu configure is idempotent.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
tools/Makefile | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile
index 15680a5..3d3fd60 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -184,28 +184,25 @@ qemu-xen-traditional-dir-force-update: qemu-xen-traditional-dir-find
$(GIT) reset --hard $(QEMU_TRADITIONAL_REVISION); \
fi
-subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
+qemu-traditional-recurse = \
set -e; \
$(buildmakevars2shellvars); \
export CONFIG_BLKTAP1=n; \
cd qemu-xen-traditional-dir; \
- $(QEMU_ROOT)/xen-setup \
- $(IOEMU_EXTRA_LDFLAGS) \
- --cpu=$(IOEMU_CPU_ARCH) \
- $(IOEMU_CONFIGURE_CROSS); \
- $(MAKE) all
+ $(1)
-subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
- set -e; \
- $(buildmakevars2shellvars); \
- export CONFIG_BLKTAP1=n; \
- cd qemu-xen-traditional-dir; \
+subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
+ $(call qemu-traditional-recurse,\
$(QEMU_ROOT)/xen-setup \
--extra-cflags="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
$(IOEMU_EXTRA_LDFLAGS) \
--cpu=$(IOEMU_CPU_ARCH) \
$(IOEMU_CONFIGURE_CROSS); \
- $(MAKE) install
+ $(MAKE) all \
+ )
+
+subdir-install-qemu-xen-traditional-dir: subdir-all-qemu-xen-traditional-dir
+ $(call qemu-traditional-recurse,$(MAKE) install)
subdir-clean-qemu-xen-traditional-dir:
set -e; if test -d qemu-xen-traditional-dir/.; then \
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default
2016-02-03 16:10 [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Campbell
@ 2016-02-03 16:10 ` Ian Campbell
2016-02-03 16:13 ` Ian Jackson
2016-02-03 17:09 ` Andrew Cooper
2016-02-03 16:12 ` [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Jackson
1 sibling, 2 replies; 6+ messages in thread
From: Ian Campbell @ 2016-02-03 16:10 UTC (permalink / raw)
To: ian.jackson, wei.liu2, xen-devel; +Cc: Ian Campbell
Currently __XEN_TOOLS__ is defined in the global CFLAGS used for tools
builds, exposing them all to the various unstable hypercall interfaces.
However there are places where we do not want this (in particular all
the stable libraries now under tools/libs), and there is a risk of
such uses slipping in unnoticed (currently there are none, but I
tripped over the mixed nature of the HVMOPs just now in some new code
I was putting together).
Instead only define __XEN_TOOLS__ for things which explicitly want the
unstable APIs. The vast majority of these are consumers of libxenctrl,
which have opted into unstable interfaces by using libxenctrl already,
so adding -D__XEN_TOOLS__ to CFLAGS_libxenctrl covers these without
needing to patch the dozen or so tools manually.
The libxc build itself, which doesn't use CFLAGS_libxenctrl, now needs
the define too. As does gdbsx's own low level hypercall binding
library xg.
hvmloader no longer needs to undefine the symbol.
The ocaml evtchn bindings don't actually need sysctl.h and therefore
don't actually need __XEN_TOOLS__ either.
qemu-xen-traditional doesn't use CFLAGS_libxenctrl and so we pass the
define there (via --extra-cflags) too.
Having removed __XEN_TOOLS__ replace it with
__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ so that in
tree code is always using the latest APIs.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---
v2: Define __XEN_INTERFACE_VERSION__ to be the latest for everyone.
---
tools/Makefile | 2 +-
tools/Rules.mk | 6 ++++--
tools/debugger/gdbsx/xg/Makefile | 1 +
tools/firmware/hvmloader/Makefile | 2 +-
tools/libxc/Makefile | 1 +
tools/ocaml/libs/eventchn/xeneventchn_stubs.c | 1 -
6 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile
index 3d3fd60..cb8652c 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -194,7 +194,7 @@ qemu-traditional-recurse = \
subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
$(call qemu-traditional-recurse,\
$(QEMU_ROOT)/xen-setup \
- --extra-cflags="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
+ --extra-cflags="-D__XEN_TOOLS__ $(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
$(IOEMU_EXTRA_LDFLAGS) \
--cpu=$(IOEMU_CPU_ARCH) \
$(IOEMU_CONFIGURE_CROSS); \
diff --git a/tools/Rules.mk b/tools/Rules.mk
index d47fa45..9ef0b47 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -108,7 +108,9 @@ CFLAGS_libxenforeignmemory = -I$(XEN_LIBXENFOREIGNMEMORY)/include $(CFLAGS_xenin
LDLIBS_libxenforeignmemory = $(XEN_LIBXENFOREIGNMEMORY)/libxenforeignmemory$(libextension)
SHLIB_libxenforeignmemory = -Wl,-rpath-link=$(XEN_LIBXENFOREIGNMEMORY)
-CFLAGS_libxenctrl = -I$(XEN_LIBXC)/include $(CFLAGS_libxentoollog) $(CFLAGS_libxenforeignmemory) $(CFLAGS_xeninclude)
+# code which compiles against libxenctrl get __XEN_TOOLS__ and
+# therefore sees the unstable hypercall interfaces.
+CFLAGS_libxenctrl = -I$(XEN_LIBXC)/include $(CFLAGS_libxentoollog) $(CFLAGS_libxenforeignmemory) $(CFLAGS_xeninclude) -D__XEN_TOOLS__
SHDEPS_libxenctrl = $(SHLIB_libxentoollog) $(SHLIB_libxenevtchn) $(SHLIB_libxengnttab) $(SHLIB_libxengntshr) $(SHLIB_libxencall) $(SHLIB_libxenforeignmemory)
LDLIBS_libxenctrl = $(SHDEPS_libxenctrl) $(XEN_LIBXC)/libxenctrl$(libextension)
SHLIB_libxenctrl = $(SHDEPS_libxenctrl) -Wl,-rpath-link=$(XEN_LIBXC)
@@ -159,7 +161,7 @@ SHDEPS_libxenlight = $(SHLIB_libxenctrl) $(SHLIB_libxenstore) $(SHLIB_libblktapc
LDLIBS_libxenlight = $(SHDEPS_libxenlight) $(XEN_XENLIGHT)/libxenlight$(libextension)
SHLIB_libxenlight = $(SHDEPS_libxenlight) -Wl,-rpath-link=$(XEN_XENLIGHT)
-CFLAGS += -D__XEN_TOOLS__
+CFLAGS += -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
# Get gcc to generate the dependencies for us.
CFLAGS += -MMD -MF .$(if $(filter-out .,$(@D)),$(subst /,@,$(@D))@)$(@F).d
diff --git a/tools/debugger/gdbsx/xg/Makefile b/tools/debugger/gdbsx/xg/Makefile
index 78b4021..6a8937b 100644
--- a/tools/debugger/gdbsx/xg/Makefile
+++ b/tools/debugger/gdbsx/xg/Makefile
@@ -4,6 +4,7 @@ include ../Rules.mk
XG_HDRS := xg_public.h
XG_OBJS := xg_main.o
+CFLAGS += -D__XEN_TOOLS__
CFLAGS += $(CFLAGS_xeninclude)
diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile
index 0560a7b..f2f4791 100644
--- a/tools/firmware/hvmloader/Makefile
+++ b/tools/firmware/hvmloader/Makefile
@@ -31,7 +31,7 @@ SMBIOS_REL_DATE ?= $(shell date +%m/%d/%Y)
CFLAGS += $(CFLAGS_xeninclude)
# We mustn't use tools-only public interfaces.
-CFLAGS += -U__XEN_TOOLS__ -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
+CFLAGS += -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__
OBJS = hvmloader.o mp_tables.o util.o smbios.o
OBJS += smp.o cacheattr.o xenbus.o vnuma.o
diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile
index ca8bab7..0a8614c 100644
--- a/tools/libxc/Makefile
+++ b/tools/libxc/Makefile
@@ -105,6 +105,7 @@ endif
CFLAGS += -Werror -Wmissing-prototypes
CFLAGS += -I. -I./include $(CFLAGS_xeninclude)
+CFLAGS += -D__XEN_TOOLS__
# Needed for posix_fadvise64() in xc_linux.c
CFLAGS-$(CONFIG_Linux) += -D_GNU_SOURCE
diff --git a/tools/ocaml/libs/eventchn/xeneventchn_stubs.c b/tools/ocaml/libs/eventchn/xeneventchn_stubs.c
index c2d4737..9580396 100644
--- a/tools/ocaml/libs/eventchn/xeneventchn_stubs.c
+++ b/tools/ocaml/libs/eventchn/xeneventchn_stubs.c
@@ -21,7 +21,6 @@
#include <errno.h>
#include <stdint.h>
#include <sys/ioctl.h>
-#include <xen/sysctl.h>
#include <xen/xen.h>
#include <xen/sys/evtchn.h>
#include <xenevtchn.h>
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad
2016-02-03 16:10 [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Campbell
2016-02-03 16:10 ` [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default Ian Campbell
@ 2016-02-03 16:12 ` Ian Jackson
2016-02-04 16:20 ` Ian Campbell
1 sibling, 1 reply; 6+ messages in thread
From: Ian Jackson @ 2016-02-03 16:12 UTC (permalink / raw)
To: Ian Campbell; +Cc: wei.liu2, xen-devel
Ian Campbell writes ("[PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad"):
> Currently both subdir-all-qemu-traditional-dir and subdir-install-...
> recurse into qemu-traditional-dir and run xen-setup, but with subtly
> different options (--extra-cflags was only passed for install).
Yuk! I'm sorry if that was my fault!
> Consolidate these by having the install target depend on the all
> (build) target and only calling make install.
>
> There is a subtlty which is that qemu-trad's build is not completely
> isolated from xen.git and requires some environment variables etc. To
> handle this refactor the setup code into a make macro and $(call) it
> in both cases.
>
> Note that this doesn't actually omit a potential double call to
> configure, since all is still called during install, this is the same
> for qemu-xen. Note that it doesn't result in a double build in either
> case, since apparently the qemu configure is idempotent.
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Thanks,
Ian.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default
2016-02-03 16:10 ` [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default Ian Campbell
@ 2016-02-03 16:13 ` Ian Jackson
2016-02-03 17:09 ` Andrew Cooper
1 sibling, 0 replies; 6+ messages in thread
From: Ian Jackson @ 2016-02-03 16:13 UTC (permalink / raw)
To: Ian Campbell; +Cc: wei.liu2, xen-devel
Ian Campbell writes ("[PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default"):
> Currently __XEN_TOOLS__ is defined in the global CFLAGS used for tools
> builds, exposing them all to the various unstable hypercall interfaces.
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default
2016-02-03 16:10 ` [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default Ian Campbell
2016-02-03 16:13 ` Ian Jackson
@ 2016-02-03 17:09 ` Andrew Cooper
1 sibling, 0 replies; 6+ messages in thread
From: Andrew Cooper @ 2016-02-03 17:09 UTC (permalink / raw)
To: Ian Campbell, ian.jackson, wei.liu2, xen-devel
On 03/02/16 16:10, Ian Campbell wrote:
> Currently __XEN_TOOLS__ is defined in the global CFLAGS used for tools
> builds, exposing them all to the various unstable hypercall interfaces.
>
> However there are places where we do not want this (in particular all
> the stable libraries now under tools/libs), and there is a risk of
> such uses slipping in unnoticed (currently there are none, but I
> tripped over the mixed nature of the HVMOPs just now in some new code
> I was putting together).
>
> Instead only define __XEN_TOOLS__ for things which explicitly want the
> unstable APIs. The vast majority of these are consumers of libxenctrl,
> which have opted into unstable interfaces by using libxenctrl already,
> so adding -D__XEN_TOOLS__ to CFLAGS_libxenctrl covers these without
> needing to patch the dozen or so tools manually.
>
> The libxc build itself, which doesn't use CFLAGS_libxenctrl, now needs
> the define too. As does gdbsx's own low level hypercall binding
> library xg.
>
> hvmloader no longer needs to undefine the symbol.
>
> The ocaml evtchn bindings don't actually need sysctl.h and therefore
> don't actually need __XEN_TOOLS__ either.
>
> qemu-xen-traditional doesn't use CFLAGS_libxenctrl and so we pass the
> define there (via --extra-cflags) too.
>
> Having removed __XEN_TOOLS__ replace it with
> __XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ so that in
> tree code is always using the latest APIs.
>
> Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> for the x86 bits.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad
2016-02-03 16:12 ` [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Jackson
@ 2016-02-04 16:20 ` Ian Campbell
0 siblings, 0 replies; 6+ messages in thread
From: Ian Campbell @ 2016-02-04 16:20 UTC (permalink / raw)
To: Ian Jackson; +Cc: wei.liu2, xen-devel
On Wed, 2016-02-03 at 16:12 +0000, Ian Jackson wrote:
>
> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Applied both, thanks.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-02-04 16:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-03 16:10 [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Campbell
2016-02-03 16:10 ` [PATCH v2 2/2] tools: Do not expose all builds to unstable hypercall APIs by default Ian Campbell
2016-02-03 16:13 ` Ian Jackson
2016-02-03 17:09 ` Andrew Cooper
2016-02-03 16:12 ` [PATCH v2 1/2] tools: consolidate Makefile runes to building+installing qemu-trad Ian Jackson
2016-02-04 16:20 ` Ian Campbell
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).