xref: /optee_os/ldelf/link.mk (revision a03cdefb3510ddcfabecfa469200f9a33236600b)
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
112d8d7e28SJerome Forissiercleanfiles += $(link-out-dir$(sm))/ldelf.map
127509ff7cSJens Wiklandercleanfiles += $(link-out-dir$(sm))/ldelf.elf
137509ff7cSJens Wiklandercleanfiles += $(link-script-pp$(sm)) $(link-script-dep$(sm))
147509ff7cSJens Wiklander
157509ff7cSJens Wiklanderlink-ldflags  = -pie -static --gc-sections
167509ff7cSJens Wiklanderlink-ldflags += -T $(link-script-pp$(sm))
177509ff7cSJens Wiklanderlink-ldflags += -Map=$(link-out-dir$(sm))/ldelf.map
187509ff7cSJens Wiklanderlink-ldflags += --sort-section=alignment
197509ff7cSJens Wiklanderlink-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment
207509ff7cSJens Wiklanderlink-ldflags += $(link-ldflags$(sm))
217509ff7cSJens Wiklander
227509ff7cSJens Wiklanderlink-ldadd  = $(addprefix -L,$(libdirs))
237509ff7cSJens Wiklanderlink-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group
24*a03cdefbSVictor Chongldargs-ldelf.elf := $(link-ldflags) $(objs) $(link-ldadd) $(libgcc$(sm))
257509ff7cSJens Wiklander
26df7712baSJens Wiklanderlink-script-cppflags-$(sm) := \
277509ff7cSJens Wiklander	$(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \
287509ff7cSJens Wiklander		$(nostdinc$(sm)) $(CPPFLAGS) \
297509ff7cSJens Wiklander		$(addprefix -I,$(incdirs$(sm)) $(link-out-dir$(sm))) \
307509ff7cSJens Wiklander		$(cppflags$(sm)))
317509ff7cSJens Wiklander
327509ff7cSJens Wiklander-include $(link-script-dep$(sm))
337509ff7cSJens Wiklander
347509ff7cSJens Wiklanderlink-script-pp-makefiles$(sm) = $(filter-out %.d %.cmd,$(MAKEFILE_LIST))
357509ff7cSJens Wiklander
367509ff7cSJens Wiklanderdefine gen-link-t
377509ff7cSJens Wiklander$(link-script-pp$(sm)): $(link-script$(sm)) $(conf-file) \
387509ff7cSJens Wiklander			$(link-script-pp-makefiles$(sm))
397509ff7cSJens Wiklander	@$(cmd-echo-silent) '  CPP     $$@'
407509ff7cSJens Wiklander	$(q)mkdir -p $$(dir $$@)
412f6dffbdSJerome Forissier	$(q)$(CPP$(sm)) -P -MT $$@ -MD -MF $(link-script-dep$(sm)) \
422f6dffbdSJerome Forissier		$(link-script-cppflags-$(sm)) $$< -o $$@
437509ff7cSJens Wiklander
447509ff7cSJens Wiklander$(link-out-dir$(sm))/ldelf.elf: $(objs) $(libdeps) $(link-script-pp$(sm))
457509ff7cSJens Wiklander	@$(cmd-echo-silent) '  LD      $$@'
467509ff7cSJens Wiklander	$(q)$(LD$(sm)) $(ldargs-ldelf.elf) -o $$@
477509ff7cSJens Wiklander
487509ff7cSJens Wiklander$(link-out-dir$(sm))/ldelf.dmp: $(link-out-dir$(sm))/ldelf.elf
497509ff7cSJens Wiklander	@$(cmd-echo-silent) '  OBJDUMP $$@'
507509ff7cSJens Wiklander	$(q)$(OBJDUMP$(sm)) -l -x -d $$< > $$@
517509ff7cSJens Wiklanderendef
527509ff7cSJens Wiklander
537509ff7cSJens Wiklander$(eval $(call gen-link-t))
54