qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH V7 1/4] rules: Move cross compilation auto detec


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PATCH V7 1/4] rules: Move cross compilation auto detection functions to rules.mak
Date: Mon, 5 Mar 2018 11:01:23 +0000
User-agent: Mutt/1.9.2 (2017-12-15)

* Laurent Vivier (address@hidden) wrote:
> On 28/02/2018 19:02, Wei Huang wrote:
> > This patch moves the auto detection functions for cross compilation from
> > roms/Makefile to rules.mak. So the functions can be shared among Makefiles
> > in QEMU.
> > 
> > Signed-off-by: Wei Huang <address@hidden>
> > Reviewed-by: Andrew Jones <address@hidden>
> > ---
> >  roms/Makefile | 24 +++++++-----------------
> >  rules.mak     | 15 +++++++++++++++
> >  2 files changed, 22 insertions(+), 17 deletions(-)
> > 
> > diff --git a/roms/Makefile b/roms/Makefile
> > index b5e5a69e91..e972c65333 100644
> > --- a/roms/Makefile
> > +++ b/roms/Makefile
> > @@ -21,23 +21,6 @@ pxe-rom-virtio   efi-rom-virtio   : DID := 1000
> >  pxe-rom-vmxnet3  efi-rom-vmxnet3  : VID := 15ad
> >  pxe-rom-vmxnet3  efi-rom-vmxnet3  : DID := 07b0
> >  
> > -#
> > -# cross compiler auto detection
> > -#
> > -path := $(subst :, ,$(PATH))
> > -system := $(shell uname -s | tr "A-Z" "a-z")
> > -
> > -# first find cross binutils in path
> > -find-cross-ld = $(firstword $(wildcard $(patsubst 
> > %,%/$(1)-*$(system)*-ld,$(path))))
> > -# then check we have cross gcc too
> > -find-cross-gcc = $(firstword $(wildcard $(patsubst %ld,%gcc,$(call 
> > find-cross-ld,$(1)))))
> > -# finally strip off path + toolname so we get the prefix
> > -find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
> > -
> > -powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
> > -powerpc_cross_prefix := $(call find-cross-prefix,powerpc)
> > -x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
> > -
> >  # tag our seabios builds
> >  SEABIOS_EXTRAVERSION="-prebuilt.qemu-project.org"
> >  
> > @@ -66,6 +49,13 @@ default:
> >     @echo "  skiboot        -- update skiboot.lid"
> >     @echo "  u-boot.e500    -- update u-boot.e500"
> >  
> > +SRC_PATH=..
> > +include $(SRC_PATH)/rules.mak
> > +
> > +powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
> > +powerpc_cross_prefix := $(call find-cross-prefix,powerpc)
> > +x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
> > +
> >  bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k
> >     cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin
> >     cp seabios/builds/seabios-256k/bios.bin ../pc-bios/bios-256k.bin
> > diff --git a/rules.mak b/rules.mak
> > index 6e943335f3..ef8adee3f8 100644
> > --- a/rules.mak
> > +++ b/rules.mak
> > @@ -62,6 +62,21 @@ expand-objs = $(strip $(sort $(filter %.o,$1)) \
> >                    $(foreach o,$(filter %.mo,$1),$($o-objs)) \
> >                    $(filter-out %.o %.mo,$1))
> >  
> > +# Cross compilation auto detection. Use find-cross-prefix to detect the
> > +# target archtecture's prefix, and then append it to the build tool or pass
> > +# it to CROSS_COMPILE directly. Here is one example:
> > +#      x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
> > +#      $(x86_64_cross_prefix)gcc -c test.c -o test.o
> > +#      make -C testdir CROSS_COMPILE=$(x86_64_cross_prefix)
> > +cross-search-path := $(subst :, ,$(PATH))
> > +cross-host-system := $(shell uname -s | tr "A-Z" "a-z")
> > +
> > +find-cross-ld = $(firstword $(wildcard $(patsubst \
> > +                    
> > %,%/$(1)-*$(cross-host-system)*-ld,$(cross-search-path))))
> > +find-cross-gcc = $(firstword $(wildcard \
> > +                    $(patsubst %ld,%gcc,$(call find-cross-ld,$(1)))))
> > +find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
> > +
> >  %.o: %.c
> >     $(call quiet-command,$(CC) $(QEMU_LOCAL_INCLUDES) $(QEMU_INCLUDES) \
> >            $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $(address@hidden) \
> > 
> 
> With this patch, "make slof" fails:
> 
>   git submodule init roms/SLOF
>   git submodule update roms/SLOF
>   cd roms
>   make slof
> ...
> make[4]: Entering directory
> '/home/lvivier/Projects/qemu-upstream/roms/SLOF/lib/libnvram'
>       [CC]    Makefile.dep
> powerpc64-linux-gnu-ar: nvram.o: No such file or directory
> make[4]: *** [Makefile:31: ../libnvram.a] Error 1
> 
> Perhaps rules.mak defines values inherited by SLOF makefiles that are
> incompatible?

OK, can we go back a step here; and split this series; it's trying to do
two entirely different things:

   a) Add an aarch64 migration test
   b) Refactor some of the build stuff

I'd like to see (a) posted separately, doing things approximately the same way 
that
the x86 ROM is doing it. 

Dave

> Thanks,
> Laurent
> 
> 
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]