diff mbox

[Xen-devel,v4,3/3] enable QEMU for ARM builds

Message ID alpine.DEB.2.02.1409231721020.15268@kaball.uk.xensource.com
State New
Headers show

Commit Message

Stefano Stabellini Sept. 23, 2014, 4:29 p.m. UTC
On Tue, 23 Sep 2014, Ian Campbell wrote:
> On Tue, 2014-09-23 at 15:56 +0100, Stefano Stabellini wrote:
> > Does the following fix the issue for you?
> 
> I needed some new build-deps (pixman) but then it appeared to, yes.
> 
> I'm in favour of moving the --cpu out from under the
> IOEMU_CONFIGURE_CROSS and into the normal configure rune. It should be
> harmless for native builds and will ensure that cross builds don't
> regress again. Maybe that is more complex with the qemu-trad side of
> things?

I don't think so: qemu-trad is not used on arm or arm64.
I think that the x86_32 tools build on x86_64 still has some other
issues but this should be an improvement.

---
Fix QEMU cross-compile build

Introduce the per-arch IOEMU_CPU_ARCH variable.
Always pass --configure=IOEMU_CPU_ARCH to QEMU's configure script.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

Comments

Stefano Stabellini Sept. 23, 2014, 4:35 p.m. UTC | #1
On Tue, 23 Sep 2014, Ian Campbell wrote:
> On Tue, 2014-09-23 at 17:29 +0100, Stefano Stabellini wrote:
> > On Tue, 23 Sep 2014, Ian Campbell wrote:
> > > On Tue, 2014-09-23 at 15:56 +0100, Stefano Stabellini wrote:
> > > > Does the following fix the issue for you?
> > > 
> > > I needed some new build-deps (pixman) but then it appeared to, yes.
> > > 
> > > I'm in favour of moving the --cpu out from under the
> > > IOEMU_CONFIGURE_CROSS and into the normal configure rune. It should be
> > > harmless for native builds and will ensure that cross builds don't
> > > regress again. Maybe that is more complex with the qemu-trad side of
> > > things?
> > 
> > I don't think so: qemu-trad is not used on arm or arm64.
> > I think that the x86_32 tools build on x86_64 still has some other
> > issues but this should be an improvement.
> 
> I wasn't sure if qemu-trad even had --cpu, seem it does?
> 
> > ---
> > Fix QEMU cross-compile build
> > 
> > Introduce the per-arch IOEMU_CPU_ARCH variable.
> > Always pass --configure=IOEMU_CPU_ARCH to QEMU's configure script.
> > 
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> 
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
> 
> Although the comments in config/*.mk are a bit redundant (would you like
> me to drop as I apply?)

Sure. Also please test as my cross-compiling environments are limited.


> > diff --git a/config/arm32.mk b/config/arm32.mk
> > index aa79d22..5f056bd 100644
> > --- a/config/arm32.mk
> > +++ b/config/arm32.mk
> > @@ -18,3 +18,6 @@ HAS_NS16550 := y
> >  LDFLAGS_DIRECT += -EL
> >  
> >  CONFIG_LOAD_ADDRESS ?= 0x80000000
> > +
> > +#QEMU CPU arch
> > +IOEMU_CPU_ARCH ?= arm
> > diff --git a/config/arm64.mk b/config/arm64.mk
> > index 15b57a4..f42ffe0 100644
> > --- a/config/arm64.mk
> > +++ b/config/arm64.mk
> > @@ -13,3 +13,6 @@ HAS_NS16550 := y
> >  LDFLAGS_DIRECT += -EL
> >  
> >  CONFIG_LOAD_ADDRESS ?= 0x80000000
> > +
> > +#QEMU CPU arch
> > +IOEMU_CPU_ARCH ?= aarch64
> > diff --git a/config/x86_32.mk b/config/x86_32.mk
> > index 7f76b25..0da63ed 100644
> > --- a/config/x86_32.mk
> > +++ b/config/x86_32.mk
> > @@ -12,3 +12,6 @@ CFLAGS += -m32 -march=i686
> >  LDFLAGS_DIRECT_OpenBSD = _obsd
> >  LDFLAGS_DIRECT_FreeBSD = _fbsd
> >  LDFLAGS_DIRECT += -melf_i386$(LDFLAGS_DIRECT_$(XEN_OS))
> > +
> > +#QEMU CPU arch
> > +IOEMU_CPU_ARCH ?= i386
> > diff --git a/config/x86_64.mk b/config/x86_64.mk
> > index 11104bd..f5c32a2 100644
> > --- a/config/x86_64.mk
> > +++ b/config/x86_64.mk
> > @@ -25,3 +25,6 @@ else
> >  LDFLAGS_DIRECT += -melf_x86_64
> >  endif
> >  endif
> > +
> > +#QEMU CPU arch
> > +IOEMU_CPU_ARCH ?= x86_64
> > diff --git a/tools/Makefile b/tools/Makefile
> > index 1130369..7b00a70 100644
> > --- a/tools/Makefile
> > +++ b/tools/Makefile
> > @@ -106,8 +106,7 @@ distclean: subdirs-distclean
> >  		config.cache autom4te.cache
> >  
> >  ifneq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
> > -IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TARGET_ARCH) \
> > -			 --cross-prefix=$(CROSS_COMPILE) \
> > +IOEMU_CONFIGURE_CROSS ?= --cross-prefix=$(CROSS_COMPILE) \
> >  			 --interp-prefix=$(CROSS_SYS_ROOT)
> >  endif
> >  
> > @@ -146,7 +145,7 @@ subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
> >  	set -e; \
> >  		$(buildmakevars2shellvars); \
> >  		cd qemu-xen-traditional-dir; \
> > -		$(QEMU_ROOT)/xen-setup $(IOEMU_CONFIGURE_CROSS); \
> > +		$(QEMU_ROOT)/xen-setup --cpu=$(IOEMU_CPU_ARCH) $(IOEMU_CONFIGURE_CROSS); \
> >  		$(MAKE) all
> >  
> >  subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
> > @@ -155,6 +154,7 @@ subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
> >  		cd qemu-xen-traditional-dir; \
> >  		$(QEMU_ROOT)/xen-setup \
> >  		--extra-cflags="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
> > +		--cpu=$(IOEMU_CPU_ARCH) \
> >  		$(IOEMU_CONFIGURE_CROSS); \
> >  		$(MAKE) install
> >  
> > @@ -207,6 +207,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-find
> >  		--disable-guest-agent \
> >  		--python=$(PYTHON) \
> >  		$(CONFIG_QEMUU_EXTRA_ARGS) \
> > +		--cpu=$(IOEMU_CPU_ARCH) \
> >  		$(IOEMU_CONFIGURE_CROSS); \
> >  	$(MAKE) all
> >  
> 
>
Ian Campbell Sept. 23, 2014, 4:35 p.m. UTC | #2
On Tue, 2014-09-23 at 17:29 +0100, Stefano Stabellini wrote:
> On Tue, 23 Sep 2014, Ian Campbell wrote:
> > On Tue, 2014-09-23 at 15:56 +0100, Stefano Stabellini wrote:
> > > Does the following fix the issue for you?
> > 
> > I needed some new build-deps (pixman) but then it appeared to, yes.
> > 
> > I'm in favour of moving the --cpu out from under the
> > IOEMU_CONFIGURE_CROSS and into the normal configure rune. It should be
> > harmless for native builds and will ensure that cross builds don't
> > regress again. Maybe that is more complex with the qemu-trad side of
> > things?
> 
> I don't think so: qemu-trad is not used on arm or arm64.
> I think that the x86_32 tools build on x86_64 still has some other
> issues but this should be an improvement.

I wasn't sure if qemu-trad even had --cpu, seem it does?

> ---
> Fix QEMU cross-compile build
> 
> Introduce the per-arch IOEMU_CPU_ARCH variable.
> Always pass --configure=IOEMU_CPU_ARCH to QEMU's configure script.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

Acked-by: Ian Campbell <ian.campbell@citrix.com>

Although the comments in config/*.mk are a bit redundant (would you like
me to drop as I apply?)

> 
> diff --git a/config/arm32.mk b/config/arm32.mk
> index aa79d22..5f056bd 100644
> --- a/config/arm32.mk
> +++ b/config/arm32.mk
> @@ -18,3 +18,6 @@ HAS_NS16550 := y
>  LDFLAGS_DIRECT += -EL
>  
>  CONFIG_LOAD_ADDRESS ?= 0x80000000
> +
> +#QEMU CPU arch
> +IOEMU_CPU_ARCH ?= arm
> diff --git a/config/arm64.mk b/config/arm64.mk
> index 15b57a4..f42ffe0 100644
> --- a/config/arm64.mk
> +++ b/config/arm64.mk
> @@ -13,3 +13,6 @@ HAS_NS16550 := y
>  LDFLAGS_DIRECT += -EL
>  
>  CONFIG_LOAD_ADDRESS ?= 0x80000000
> +
> +#QEMU CPU arch
> +IOEMU_CPU_ARCH ?= aarch64
> diff --git a/config/x86_32.mk b/config/x86_32.mk
> index 7f76b25..0da63ed 100644
> --- a/config/x86_32.mk
> +++ b/config/x86_32.mk
> @@ -12,3 +12,6 @@ CFLAGS += -m32 -march=i686
>  LDFLAGS_DIRECT_OpenBSD = _obsd
>  LDFLAGS_DIRECT_FreeBSD = _fbsd
>  LDFLAGS_DIRECT += -melf_i386$(LDFLAGS_DIRECT_$(XEN_OS))
> +
> +#QEMU CPU arch
> +IOEMU_CPU_ARCH ?= i386
> diff --git a/config/x86_64.mk b/config/x86_64.mk
> index 11104bd..f5c32a2 100644
> --- a/config/x86_64.mk
> +++ b/config/x86_64.mk
> @@ -25,3 +25,6 @@ else
>  LDFLAGS_DIRECT += -melf_x86_64
>  endif
>  endif
> +
> +#QEMU CPU arch
> +IOEMU_CPU_ARCH ?= x86_64
> diff --git a/tools/Makefile b/tools/Makefile
> index 1130369..7b00a70 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -106,8 +106,7 @@ distclean: subdirs-distclean
>  		config.cache autom4te.cache
>  
>  ifneq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
> -IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TARGET_ARCH) \
> -			 --cross-prefix=$(CROSS_COMPILE) \
> +IOEMU_CONFIGURE_CROSS ?= --cross-prefix=$(CROSS_COMPILE) \
>  			 --interp-prefix=$(CROSS_SYS_ROOT)
>  endif
>  
> @@ -146,7 +145,7 @@ subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
>  	set -e; \
>  		$(buildmakevars2shellvars); \
>  		cd qemu-xen-traditional-dir; \
> -		$(QEMU_ROOT)/xen-setup $(IOEMU_CONFIGURE_CROSS); \
> +		$(QEMU_ROOT)/xen-setup --cpu=$(IOEMU_CPU_ARCH) $(IOEMU_CONFIGURE_CROSS); \
>  		$(MAKE) all
>  
>  subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
> @@ -155,6 +154,7 @@ subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
>  		cd qemu-xen-traditional-dir; \
>  		$(QEMU_ROOT)/xen-setup \
>  		--extra-cflags="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
> +		--cpu=$(IOEMU_CPU_ARCH) \
>  		$(IOEMU_CONFIGURE_CROSS); \
>  		$(MAKE) install
>  
> @@ -207,6 +207,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-find
>  		--disable-guest-agent \
>  		--python=$(PYTHON) \
>  		$(CONFIG_QEMUU_EXTRA_ARGS) \
> +		--cpu=$(IOEMU_CPU_ARCH) \
>  		$(IOEMU_CONFIGURE_CROSS); \
>  	$(MAKE) all
>
Ian Campbell Sept. 23, 2014, 4:41 p.m. UTC | #3
On Tue, 2014-09-23 at 17:35 +0100, Stefano Stabellini wrote:
> On Tue, 23 Sep 2014, Ian Campbell wrote:
> > On Tue, 2014-09-23 at 17:29 +0100, Stefano Stabellini wrote:
> > > On Tue, 23 Sep 2014, Ian Campbell wrote:
> > > > On Tue, 2014-09-23 at 15:56 +0100, Stefano Stabellini wrote:
> > > > > Does the following fix the issue for you?
> > > > 
> > > > I needed some new build-deps (pixman) but then it appeared to, yes.
> > > > 
> > > > I'm in favour of moving the --cpu out from under the
> > > > IOEMU_CONFIGURE_CROSS and into the normal configure rune. It should be
> > > > harmless for native builds and will ensure that cross builds don't
> > > > regress again. Maybe that is more complex with the qemu-trad side of
> > > > things?
> > > 
> > > I don't think so: qemu-trad is not used on arm or arm64.
> > > I think that the x86_32 tools build on x86_64 still has some other
> > > issues but this should be an improvement.
> > 
> > I wasn't sure if qemu-trad even had --cpu, seem it does?
> > 
> > > ---
> > > Fix QEMU cross-compile build
> > > 
> > > Introduce the per-arch IOEMU_CPU_ARCH variable.
> > > Always pass --configure=IOEMU_CPU_ARCH to QEMU's configure script.
> > > 
> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > 
> > Acked-by: Ian Campbell <ian.campbell@citrix.com>
> > 
> > Although the comments in config/*.mk are a bit redundant (would you like
> > me to drop as I apply?)
> 
> Sure.

ok, will look tomorrow.

>  Also please test as my cross-compiling environments are limited.

My standard precommit builds are native apart from arm64 which is cross.
I reckon that will do.

Ian.
Ian Campbell Sept. 24, 2014, 9:02 a.m. UTC | #4
On Tue, 2014-09-23 at 17:41 +0100, Ian Campbell wrote:
> On Tue, 2014-09-23 at 17:35 +0100, Stefano Stabellini wrote:
> > On Tue, 23 Sep 2014, Ian Campbell wrote:
> > > On Tue, 2014-09-23 at 17:29 +0100, Stefano Stabellini wrote:
> > > > On Tue, 23 Sep 2014, Ian Campbell wrote:
> > > > > On Tue, 2014-09-23 at 15:56 +0100, Stefano Stabellini wrote:
> > > > > > Does the following fix the issue for you?
> > > > > 
> > > > > I needed some new build-deps (pixman) but then it appeared to, yes.
> > > > > 
> > > > > I'm in favour of moving the --cpu out from under the
> > > > > IOEMU_CONFIGURE_CROSS and into the normal configure rune. It should be
> > > > > harmless for native builds and will ensure that cross builds don't
> > > > > regress again. Maybe that is more complex with the qemu-trad side of
> > > > > things?
> > > > 
> > > > I don't think so: qemu-trad is not used on arm or arm64.
> > > > I think that the x86_32 tools build on x86_64 still has some other
> > > > issues but this should be an improvement.
> > > 
> > > I wasn't sure if qemu-trad even had --cpu, seem it does?
> > > 
> > > > ---
> > > > Fix QEMU cross-compile build
> > > > 
> > > > Introduce the per-arch IOEMU_CPU_ARCH variable.
> > > > Always pass --configure=IOEMU_CPU_ARCH to QEMU's configure script.
> > > > 
> > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > > 
> > > Acked-by: Ian Campbell <ian.campbell@citrix.com>
> > > 
> > > Although the comments in config/*.mk are a bit redundant (would you like
> > > me to drop as I apply?)
> > 
> > Sure.
> 
> ok, will look tomorrow.
> 
> >  Also please test as my cross-compiling environments are limited.
> 
> My standard precommit builds are native apart from arm64 which is cross.
> I reckon that will do.

These all passed, so I've pushed. Thanks!
diff mbox

Patch

diff --git a/config/arm32.mk b/config/arm32.mk
index aa79d22..5f056bd 100644
--- a/config/arm32.mk
+++ b/config/arm32.mk
@@ -18,3 +18,6 @@  HAS_NS16550 := y
 LDFLAGS_DIRECT += -EL
 
 CONFIG_LOAD_ADDRESS ?= 0x80000000
+
+#QEMU CPU arch
+IOEMU_CPU_ARCH ?= arm
diff --git a/config/arm64.mk b/config/arm64.mk
index 15b57a4..f42ffe0 100644
--- a/config/arm64.mk
+++ b/config/arm64.mk
@@ -13,3 +13,6 @@  HAS_NS16550 := y
 LDFLAGS_DIRECT += -EL
 
 CONFIG_LOAD_ADDRESS ?= 0x80000000
+
+#QEMU CPU arch
+IOEMU_CPU_ARCH ?= aarch64
diff --git a/config/x86_32.mk b/config/x86_32.mk
index 7f76b25..0da63ed 100644
--- a/config/x86_32.mk
+++ b/config/x86_32.mk
@@ -12,3 +12,6 @@  CFLAGS += -m32 -march=i686
 LDFLAGS_DIRECT_OpenBSD = _obsd
 LDFLAGS_DIRECT_FreeBSD = _fbsd
 LDFLAGS_DIRECT += -melf_i386$(LDFLAGS_DIRECT_$(XEN_OS))
+
+#QEMU CPU arch
+IOEMU_CPU_ARCH ?= i386
diff --git a/config/x86_64.mk b/config/x86_64.mk
index 11104bd..f5c32a2 100644
--- a/config/x86_64.mk
+++ b/config/x86_64.mk
@@ -25,3 +25,6 @@  else
 LDFLAGS_DIRECT += -melf_x86_64
 endif
 endif
+
+#QEMU CPU arch
+IOEMU_CPU_ARCH ?= x86_64
diff --git a/tools/Makefile b/tools/Makefile
index 1130369..7b00a70 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -106,8 +106,7 @@  distclean: subdirs-distclean
 		config.cache autom4te.cache
 
 ifneq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
-IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TARGET_ARCH) \
-			 --cross-prefix=$(CROSS_COMPILE) \
+IOEMU_CONFIGURE_CROSS ?= --cross-prefix=$(CROSS_COMPILE) \
 			 --interp-prefix=$(CROSS_SYS_ROOT)
 endif
 
@@ -146,7 +145,7 @@  subdir-all-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
 	set -e; \
 		$(buildmakevars2shellvars); \
 		cd qemu-xen-traditional-dir; \
-		$(QEMU_ROOT)/xen-setup $(IOEMU_CONFIGURE_CROSS); \
+		$(QEMU_ROOT)/xen-setup --cpu=$(IOEMU_CPU_ARCH) $(IOEMU_CONFIGURE_CROSS); \
 		$(MAKE) all
 
 subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
@@ -155,6 +154,7 @@  subdir-install-qemu-xen-traditional-dir: qemu-xen-traditional-dir-find
 		cd qemu-xen-traditional-dir; \
 		$(QEMU_ROOT)/xen-setup \
 		--extra-cflags="$(EXTRA_CFLAGS_QEMU_TRADITIONAL)" \
+		--cpu=$(IOEMU_CPU_ARCH) \
 		$(IOEMU_CONFIGURE_CROSS); \
 		$(MAKE) install
 
@@ -207,6 +207,7 @@  subdir-all-qemu-xen-dir: qemu-xen-dir-find
 		--disable-guest-agent \
 		--python=$(PYTHON) \
 		$(CONFIG_QEMUU_EXTRA_ARGS) \
+		--cpu=$(IOEMU_CPU_ARCH) \
 		$(IOEMU_CONFIGURE_CROSS); \
 	$(MAKE) all