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@xxxxxxxxxx> > --- > 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