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