1link-script$(sm) = ldelf/ldelf.ld.S 2link-script-pp$(sm) = $(link-out-dir$(sm))/ldelf.lds 3link-script-dep$(sm) = $(link-out-dir$(sm))/.ldelf.ld.d 4 5.PHONY: ldelf 6ldelf: $(link-out-dir$(sm))/ldelf.dmp 7ldelf: $(link-out-dir$(sm))/ldelf.elf 8all: ldelf 9 10cleanfiles += $(link-out-dir$(sm))/ldelf.dmp 11cleanfiles += $(link-out-dir$(sm))/ldelf.elf 12cleanfiles += $(link-script-pp$(sm)) $(link-script-dep$(sm)) 13 14link-ldflags = -pie -static --gc-sections 15link-ldflags += -T $(link-script-pp$(sm)) 16link-ldflags += -Map=$(link-out-dir$(sm))/ldelf.map 17link-ldflags += --sort-section=alignment 18link-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment 19link-ldflags += $(link-ldflags$(sm)) 20 21link-ldadd = $(addprefix -L,$(libdirs)) 22link-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group 23ldargs-ldelf.elf := $(link-ldflags) $(objs) $(link-ldadd) 24 25link-script-cppflags-$(sm) := \ 26 $(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \ 27 $(nostdinc$(sm)) $(CPPFLAGS) \ 28 $(addprefix -I,$(incdirs$(sm)) $(link-out-dir$(sm))) \ 29 $(cppflags$(sm))) 30 31-include $(link-script-dep$(sm)) 32 33link-script-pp-makefiles$(sm) = $(filter-out %.d %.cmd,$(MAKEFILE_LIST)) 34 35define gen-link-t 36$(link-script-pp$(sm)): $(link-script$(sm)) $(conf-file) \ 37 $(link-script-pp-makefiles$(sm)) 38 @$(cmd-echo-silent) ' CPP $$@' 39 $(q)mkdir -p $$(dir $$@) 40 $(q)$(CPP$(sm)) -P -MT $$@ -MD -MF $(link-script-dep$(sm)) \ 41 $(link-script-cppflags-$(sm)) $$< -o $$@ 42 43$(link-out-dir$(sm))/ldelf.elf: $(objs) $(libdeps) $(link-script-pp$(sm)) 44 @$(cmd-echo-silent) ' LD $$@' 45 $(q)$(LD$(sm)) $(ldargs-ldelf.elf) -o $$@ 46 47$(link-out-dir$(sm))/ldelf.dmp: $(link-out-dir$(sm))/ldelf.elf 48 @$(cmd-echo-silent) ' OBJDUMP $$@' 49 $(q)$(OBJDUMP$(sm)) -l -x -d $$< > $$@ 50endef 51 52$(eval $(call gen-link-t)) 53