17509ff7cSJens Wiklanderlink-script$(sm) = ldelf/ldelf.ld.S 27509ff7cSJens Wiklanderlink-script-pp$(sm) = $(link-out-dir$(sm))/ldelf.lds 37509ff7cSJens Wiklanderlink-script-dep$(sm) = $(link-out-dir$(sm))/.ldelf.ld.d 47509ff7cSJens Wiklander 57509ff7cSJens Wiklander.PHONY: ldelf 67509ff7cSJens Wiklanderldelf: $(link-out-dir$(sm))/ldelf.dmp 77509ff7cSJens Wiklanderldelf: $(link-out-dir$(sm))/ldelf.elf 87509ff7cSJens Wiklanderall: ldelf 97509ff7cSJens Wiklander 107509ff7cSJens Wiklandercleanfiles += $(link-out-dir$(sm))/ldelf.dmp 117509ff7cSJens Wiklandercleanfiles += $(link-out-dir$(sm))/ldelf.elf 127509ff7cSJens Wiklandercleanfiles += $(link-script-pp$(sm)) $(link-script-dep$(sm)) 137509ff7cSJens Wiklander 147509ff7cSJens Wiklanderlink-ldflags = -pie -static --gc-sections 157509ff7cSJens Wiklanderlink-ldflags += -T $(link-script-pp$(sm)) 167509ff7cSJens Wiklanderlink-ldflags += -Map=$(link-out-dir$(sm))/ldelf.map 177509ff7cSJens Wiklanderlink-ldflags += --sort-section=alignment 187509ff7cSJens Wiklanderlink-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment 197509ff7cSJens Wiklanderlink-ldflags += $(link-ldflags$(sm)) 207509ff7cSJens Wiklander 217509ff7cSJens Wiklanderlink-ldadd = $(addprefix -L,$(libdirs)) 227509ff7cSJens Wiklanderlink-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group 237509ff7cSJens Wiklanderldargs-ldelf.elf := $(link-ldflags) $(objs) $(link-ldadd) 247509ff7cSJens Wiklander 25df7712baSJens Wiklanderlink-script-cppflags-$(sm) := \ 267509ff7cSJens Wiklander $(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \ 277509ff7cSJens Wiklander $(nostdinc$(sm)) $(CPPFLAGS) \ 287509ff7cSJens Wiklander $(addprefix -I,$(incdirs$(sm)) $(link-out-dir$(sm))) \ 297509ff7cSJens Wiklander $(cppflags$(sm))) 307509ff7cSJens Wiklander 317509ff7cSJens Wiklander-include $(link-script-dep$(sm)) 327509ff7cSJens Wiklander 337509ff7cSJens Wiklanderlink-script-pp-makefiles$(sm) = $(filter-out %.d %.cmd,$(MAKEFILE_LIST)) 347509ff7cSJens Wiklander 357509ff7cSJens Wiklanderdefine gen-link-t 367509ff7cSJens Wiklander$(link-script-pp$(sm)): $(link-script$(sm)) $(conf-file) \ 377509ff7cSJens Wiklander $(link-script-pp-makefiles$(sm)) 387509ff7cSJens Wiklander @$(cmd-echo-silent) ' CPP $$@' 397509ff7cSJens Wiklander $(q)mkdir -p $$(dir $$@) 40*2f6dffbdSJerome Forissier $(q)$(CPP$(sm)) -P -MT $$@ -MD -MF $(link-script-dep$(sm)) \ 41*2f6dffbdSJerome Forissier $(link-script-cppflags-$(sm)) $$< -o $$@ 427509ff7cSJens Wiklander 437509ff7cSJens Wiklander$(link-out-dir$(sm))/ldelf.elf: $(objs) $(libdeps) $(link-script-pp$(sm)) 447509ff7cSJens Wiklander @$(cmd-echo-silent) ' LD $$@' 457509ff7cSJens Wiklander $(q)$(LD$(sm)) $(ldargs-ldelf.elf) -o $$@ 467509ff7cSJens Wiklander 477509ff7cSJens Wiklander$(link-out-dir$(sm))/ldelf.dmp: $(link-out-dir$(sm))/ldelf.elf 487509ff7cSJens Wiklander @$(cmd-echo-silent) ' OBJDUMP $$@' 497509ff7cSJens Wiklander $(q)$(OBJDUMP$(sm)) -l -x -d $$< > $$@ 507509ff7cSJens Wiklanderendef 517509ff7cSJens Wiklander 527509ff7cSJens Wiklander$(eval $(call gen-link-t)) 53