xref: /optee_os/ldelf/link.mk (revision 2f6dffbd324d3a7a15da684df5b250461d109cb5)
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