From: "Alex Bennée" <alex.bennee@linaro.org>
To: Andrew Jones <drjones@redhat.com>
Cc: kvm@vger.kernel.org, marc.zyngier@arm.com,
linux-arm-kernel@lists.infradead.org, pbonzini@redhat.com,
kvmarm@lists.cs.columbia.edu
Subject: Re: [RFC kvm-unit-tests PATCH 8/8] Makefiles: fix up the arm build include and link paths
Date: Fri, 07 Apr 2017 15:29:36 +0100 [thread overview]
Message-ID: <87h9209tpr.fsf@linaro.org> (raw)
In-Reply-To: <20170407135658.nayjvdgm4jgtbqqo@kamzik.brq.redhat.com>
Andrew Jones <drjones@redhat.com> writes:
> On Thu, Apr 06, 2017 at 08:07:27PM +0100, Alex Bennée wrote:
>> We still need to tell the compiler the correct search path for finding
>> headers and the like. This is slightly complicated by the "dynamic"
>> asm search path which is in our build tree but (may be) symlinked to
>> the right architectures headers.
>>
>> Also we explicitly include SRCDIR for the linking scripts as VPATH
>> doesn't seem to find them well enough.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> arm/Makefile.common | 15 +++++++++------
>> scripts/asm-offsets.mak | 4 +++-
>> 2 files changed, 12 insertions(+), 7 deletions(-)
>>
>> diff --git a/arm/Makefile.common b/arm/Makefile.common
>> index 74c7394..b1fead1 100644
>> --- a/arm/Makefile.common
>> +++ b/arm/Makefile.common
>> @@ -16,7 +16,10 @@ tests-common += $(TEST_DIR)/pmu.flat
>> tests-common += $(TEST_DIR)/gic.flat
>> tests-common += $(TEST_DIR)/psci.flat
>>
>> -tests-all = $(tests-common) $(tests)
>> +scripts-common += $(TEST_DIR)/run
>> +scripts-common += $(TEST_DIR)/unittests.cfg
>> +
>> +tests-all = $(tests-common) $(tests) $(scripts_common)
>> all: $(tests-all)
>>
>> ##################################################################
>> @@ -26,13 +29,13 @@ CFLAGS += -std=gnu99
>> CFLAGS += -ffreestanding
>> CFLAGS += -Wextra
>> CFLAGS += -O2
>> -CFLAGS += -I lib -I lib/libfdt
>> +CFLAGS += -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -I lib
>>
>> # We want to keep intermediate files
>> .PRECIOUS: %.elf %.o
>>
>> asm-offsets = lib/$(ARCH)/asm-offsets.h
>> -include scripts/asm-offsets.mak
>> +include $(SRCDIR)/scripts/asm-offsets.mak
>>
>> cflatobjs += lib/util.o
>> cflatobjs += lib/alloc.o
>> @@ -60,11 +63,11 @@ start_addr := $(shell printf "%x\n" $$(( $(phys_base) + $(kernel_offset) )))
>>
>> FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libgcc) $(libeabi)
>> %.elf: LDFLAGS = $(CFLAGS) -nostdlib
>> -%.elf: %.o $(FLATLIBS) arm/flat.lds $(cstart.o)
>> +%.elf: %.o $(FLATLIBS) $(SRCDIR)/arm/flat.lds $(cstart.o)
>> $(CC) $(LDFLAGS) -o $@ \
>> - -Wl,-T,arm/flat.lds,--build-id=none,-Ttext=$(start_addr) \
>> + -Wl,-T,$(SRCDIR)/arm/flat.lds,--build-id=none,-Ttext=$(start_addr) \
>> $(filter %.o, $^) $(FLATLIBS) \
>> - lib/auxinfo.c -DPROGNAME=\"$(@:.elf=.flat)\"
>> + $(SRCDIR)/lib/auxinfo.c -DPROGNAME=\"$(@:.elf=.flat)\"
>>
>> %.flat: %.elf
>> $(OBJCOPY) -O binary $^ $@
>> diff --git a/scripts/asm-offsets.mak b/scripts/asm-offsets.mak
>> index b2578a6..ecf583f 100644
>> --- a/scripts/asm-offsets.mak
>> +++ b/scripts/asm-offsets.mak
>> @@ -29,11 +29,13 @@ define make_asm_offsets
>> endef
>>
>> $(asm-offsets:.h=.s): $(asm-offsets:.h=.c)
>> + mkdir -p $(dir $@)
>> $(CC) $(CFLAGS) -fverbose-asm -S -o $@ $<
>
> For some reason I'm not a big fan of all these mkdirs getting sprinkled
> around. Maybe we can just have the arch makefiles be sure to create
> lib/$(ARCH) first?
Yeah I guess its a bit of a hammer to crack a nut. I guess the correct
way to deal with it is to have a proper dependency for build
directories.
I spent some time looking at QEMU's build-systems approach to it but
there was some deep magic involved so I went simple instead.
>> $(asm-offsets): $(asm-offsets:.h=.s)
>> $(call make_asm_offsets)
>> - cp -f $(asm-offsets) lib/generated
>> + mkdir -p lib/generated
>
> Could make this directory from configure
Sure. I guess it depends on if we are likely to see other such
directories need creating.
>
>> + cp -f $(asm-offsets) lib/generated/
>>
>> asm_offsets_clean:
>> $(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
>> --
>> 2.11.0
>>
>
> Thanks,
> drew
--
Alex Bennée
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
prev parent reply other threads:[~2017-04-07 14:29 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-06 19:07 [RFC kvm-unit-tests PATCH 0/8] Support for out-of-tree builds Alex Bennée
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 1/8] configure: make it run-able from outside source tree Alex Bennée
2017-04-07 11:40 ` Andrew Jones
2017-04-07 11:46 ` Peter Maydell
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 2/8] Makefile: ensure build-head works out-of-src-tree Alex Bennée
2017-04-07 11:44 ` Andrew Jones
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 3/8] Makefile: set VPATH based on SRCDIR Alex Bennée
2017-04-07 11:56 ` Andrew Jones
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 4/8] Makefiles: use explicit path for including sub-Makefiles Alex Bennée
2017-04-07 8:53 ` Thomas Huth
2017-04-07 9:21 ` Alex Bennée
2017-04-07 12:20 ` Andrew Jones
2017-04-27 15:54 ` Paolo Bonzini
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 5/8] Makefile: add explicit mkdir for .o targets Alex Bennée
2017-04-07 14:42 ` Andrew Jones
2017-04-27 15:57 ` Paolo Bonzini
2017-05-11 15:30 ` Alex Bennée
2017-05-12 10:36 ` Paolo Bonzini
2017-05-12 11:14 ` Alex Bennée
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 6/8] Makefiles: handle linking of scripts into build-tree Alex Bennée
2017-04-07 9:22 ` Thomas Huth
2017-04-07 10:38 ` Alex Bennée
2017-04-07 13:37 ` Andrew Jones
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 7/8] Makefiles: fix up the x86 build include and link paths Alex Bennée
2017-04-07 13:31 ` Andrew Jones
2017-04-07 14:30 ` Alex Bennée
2017-04-06 19:07 ` [RFC kvm-unit-tests PATCH 8/8] Makefiles: fix up the arm " Alex Bennée
2017-04-07 6:58 ` [RFC kvm-unit-tests PATCH 9/8] Makefiles: Fix up the powerpc " Thomas Huth
2017-04-07 8:02 ` Alex Bennée
2017-04-07 13:56 ` [RFC kvm-unit-tests PATCH 8/8] Makefiles: fix up the arm " Andrew Jones
2017-04-07 14:29 ` Alex Bennée [this message]
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=87h9209tpr.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
--cc=pbonzini@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).