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