[RFC kvm-unit-tests PATCH 8/8] Makefiles: fix up the arm build include and link paths
Andrew Jones
drjones at redhat.com
Fri Apr 7 09:56:58 EDT 2017
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?
>
> $(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
> + cp -f $(asm-offsets) lib/generated/
>
> asm_offsets_clean:
> $(RM) $(asm-offsets) $(asm-offsets:.h=.s) \
> --
> 2.11.0
>
Thanks,
drew
More information about the linux-arm-kernel
mailing list