[RFC kvm-unit-tests PATCH 8/8] Makefiles: fix up the arm build include and link paths
Alex Bennée
alex.bennee at linaro.org
Fri Apr 7 10:29:36 EDT 2017
Andrew Jones <drjones at 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 at 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
More information about the linux-arm-kernel
mailing list