blob: 8fafc879c211583b2070de6300d8420a0120e910 [file] [log] [blame]
Jens Wiklander7509ff72019-05-23 17:42:08 +02001link-script$(sm) = ldelf/ldelf.ld.S
2link-script-pp$(sm) = $(link-out-dir$(sm))/ldelf.lds
3link-script-dep$(sm) = $(link-out-dir$(sm))/.ldelf.ld.d
4
5.PHONY: ldelf
6ldelf: $(link-out-dir$(sm))/ldelf.dmp
7ldelf: $(link-out-dir$(sm))/ldelf.elf
8all: ldelf
9
10cleanfiles += $(link-out-dir$(sm))/ldelf.dmp
Jerome Forissier2d8d7e22019-10-23 18:12:46 +020011cleanfiles += $(link-out-dir$(sm))/ldelf.map
Jens Wiklander7509ff72019-05-23 17:42:08 +020012cleanfiles += $(link-out-dir$(sm))/ldelf.elf
13cleanfiles += $(link-script-pp$(sm)) $(link-script-dep$(sm))
14
15link-ldflags = -pie -static --gc-sections
16link-ldflags += -T $(link-script-pp$(sm))
17link-ldflags += -Map=$(link-out-dir$(sm))/ldelf.map
18link-ldflags += --sort-section=alignment
19link-ldflags += -z max-page-size=4096 # OP-TEE always uses 4K alignment
20link-ldflags += $(link-ldflags$(sm))
21
22link-ldadd = $(addprefix -L,$(libdirs))
23link-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group
Victor Chonga03cdef2020-05-07 10:50:34 +010024ldargs-ldelf.elf := $(link-ldflags) $(objs) $(link-ldadd) $(libgcc$(sm))
Jens Wiklander7509ff72019-05-23 17:42:08 +020025
Jens Wiklanderdf7712b2019-08-21 11:28:37 +020026link-script-cppflags-$(sm) := \
Jens Wiklander7509ff72019-05-23 17:42:08 +020027 $(filter-out $(CPPFLAGS_REMOVE) $(cppflags-remove), \
28 $(nostdinc$(sm)) $(CPPFLAGS) \
29 $(addprefix -I,$(incdirs$(sm)) $(link-out-dir$(sm))) \
30 $(cppflags$(sm)))
31
32-include $(link-script-dep$(sm))
33
34link-script-pp-makefiles$(sm) = $(filter-out %.d %.cmd,$(MAKEFILE_LIST))
35
36define gen-link-t
37$(link-script-pp$(sm)): $(link-script$(sm)) $(conf-file) \
38 $(link-script-pp-makefiles$(sm))
39 @$(cmd-echo-silent) ' CPP $$@'
40 $(q)mkdir -p $$(dir $$@)
Jerome Forissier2f6dffb2019-09-02 10:51:46 +020041 $(q)$(CPP$(sm)) -P -MT $$@ -MD -MF $(link-script-dep$(sm)) \
42 $(link-script-cppflags-$(sm)) $$< -o $$@
Jens Wiklander7509ff72019-05-23 17:42:08 +020043
44$(link-out-dir$(sm))/ldelf.elf: $(objs) $(libdeps) $(link-script-pp$(sm))
45 @$(cmd-echo-silent) ' LD $$@'
46 $(q)$(LD$(sm)) $(ldargs-ldelf.elf) -o $$@
47
48$(link-out-dir$(sm))/ldelf.dmp: $(link-out-dir$(sm))/ldelf.elf
49 @$(cmd-echo-silent) ' OBJDUMP $$@'
50 $(q)$(OBJDUMP$(sm)) -l -x -d $$< > $$@
51endef
52
53$(eval $(call gen-link-t))