From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Andrew Jones <drjones@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>, Wei Huang <wei@redhat.com>,
peter.maydell@linaro.org, qemu-devel@nongnu.org,
quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH V7 1/4] rules: Move cross compilation auto detection functions to rules.mak
Date: Mon, 5 Mar 2018 13:52:44 +0000 [thread overview]
Message-ID: <20180305135244.GJ3131@work-vm> (raw)
In-Reply-To: <20180305133654.7aokepvzcmxhzk4q@kamzik.brq.redhat.com>
* Andrew Jones (drjones@redhat.com) wrote:
> On Mon, Mar 05, 2018 at 11:01:23AM +0000, Dr. David Alan Gilbert wrote:
> > * Laurent Vivier (lvivier@redhat.com) 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 <wei@redhat.com>
> > > > Reviewed-by: Andrew Jones <drjones@redhat.com>
> > > > ---
> > > > 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) $($@-cflags) \
> > > >
> > >
> > > 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.
>
> IMO, the makefile is the right approach.
It may be; however, for what benefit? How many iterations have we gone
through here for something that (in the x86 case) was shipped as a hex
blob and never regenerated. IMHO even the script is overkill, comments
in the .s file would be enough given just how often this stuff gets
changed. Simplicity seems a better aim.
> I wouldn't like to see AArch64
> added with a script and then converted, along with x86, to a makefile at
> some later time (probably never).
>
> We can drop the build refactoring, at the expense of adding redundant
> cross-compile support, but still introduce a makefile. Likely nobody will
> ever get around to the refactoring needed to remove that redundancy, but
> oh well...
>
> I think we try to fix the SLOF build issue first, though.
OK.
Dave
> Thanks,
> drew
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2018-03-05 13:52 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-28 18:02 [Qemu-devel] [PATCH V7 0/4] tests: Add migration test for aarch64 Wei Huang
2018-02-28 18:02 ` [Qemu-devel] [PATCH V7 1/4] rules: Move cross compilation auto detection functions to rules.mak Wei Huang
2018-03-02 14:51 ` Laurent Vivier
2018-03-02 16:27 ` Laurent Vivier
2018-03-05 11:01 ` Dr. David Alan Gilbert
2018-03-05 13:36 ` Andrew Jones
2018-03-05 13:40 ` Peter Maydell
2018-03-05 13:52 ` Daniel P. Berrangé
2018-03-05 13:52 ` Dr. David Alan Gilbert [this message]
2018-03-05 17:59 ` Wei Huang
2018-03-05 18:35 ` Laurent Vivier
2018-04-04 12:38 ` Alex Bennée
2018-02-28 18:02 ` [Qemu-devel] [PATCH V7 2/4] tests/migration: Convert the boot block compilation script into Makefile Wei Huang
2018-03-02 15:25 ` Laurent Vivier
2018-03-02 15:54 ` Wei Huang
2018-02-28 18:02 ` [Qemu-devel] [PATCH V7 3/4] tests/migration: Add migration-test header file Wei Huang
2018-03-01 9:48 ` Andrew Jones
2018-03-01 15:26 ` Dr. David Alan Gilbert
2018-02-28 18:02 ` [Qemu-devel] [PATCH V7 4/4] tests: Add migration test for aarch64 Wei Huang
2018-03-01 9:45 ` Andrew Jones
2018-03-12 15:41 ` Andrew Jones
2018-03-01 15:28 ` [Qemu-devel] [PATCH V7 0/4] " Dr. David Alan Gilbert
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=20180305135244.GJ3131@work-vm \
--to=dgilbert@redhat.com \
--cc=drjones@redhat.com \
--cc=lvivier@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=wei@redhat.com \
/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).