131b31015Sliushiweiifeq (,$(shlibuuid)) 231b31015Sliushiwei$(error SHLIBUUID not set) 331b31015Sliushiweiendif 431b31015Sliushiweilink-out-dir = $(out-dir) 531b31015Sliushiwei 631b31015SliushiweiSIGN ?= $(TA_DEV_KIT_DIR)/scripts/sign_encrypt.py 731b31015SliushiweiTA_SIGN_KEY ?= $(TA_DEV_KIT_DIR)/keys/default_ta.pem 831b31015Sliushiwei 931b31015Sliushiweiall: $(link-out-dir)/$(shlibname).so $(link-out-dir)/$(shlibname).dmp \ 1031b31015Sliushiwei $(link-out-dir)/$(shlibname).stripped.so \ 1131b31015Sliushiwei $(link-out-dir)/$(shlibuuid).elf \ 1231b31015Sliushiwei $(link-out-dir)/$(shlibuuid).ta 1331b31015Sliushiwei 1431b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibname).so 1531b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibname).dmp 1631b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibname).stripped.so 1731b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibuuid).elf 1831b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibuuid).ta 1931b31015Sliushiwei 2031b31015Sliushiweishlink-ldflags = $(LDFLAGS) 2131b31015Sliushiweishlink-ldflags += -shared -z max-page-size=4096 2231b31015Sliushiweishlink-ldflags += $(call ld-option,-z separate-loadable-segments) 2331b31015Sliushiweiifeq ($(sm)-$(CFG_TA_BTI),ta_arm64-y) 2431b31015Sliushiweishlink-ldflags += $(call ld-option,-z force-bti) --fatal-warnings 2531b31015Sliushiweiendif 2631b31015Sliushiweishlink-ldflags += --as-needed # Do not add dependency on unused shlib 2731b31015Sliushiwei 2831b31015Sliushiweishlink-ldadd = $(LDADD) 2931b31015Sliushiweishlink-ldadd += $(addprefix -L,$(libdirs)) 3031b31015Sliushiweishlink-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group 31*6b1c1858SJens Wiklanderifeq ($(CFG_TA_LIBGCC),y) 32*6b1c1858SJens Wiklandershlink-ldadd += $(libgcc$(sm)) 33*6b1c1858SJens Wiklanderendif 34*6b1c1858SJens Wiklanderldargs-$(shlibname).so := $(shlink-ldflags) $(objs) $(shlink-ldadd) 3531b31015Sliushiwei 3631b31015Sliushiwei 3731b31015Sliushiwei$(link-out-dir)/$(shlibname).so: $(objs) $(libdeps) 3831b31015Sliushiwei @$(cmd-echo-silent) ' LD $@' 3931b31015Sliushiwei $(q)$(LD$(sm)) $(ldargs-$(shlibname).so) --soname=$(shlibuuid) -o $@ 4031b31015Sliushiwei 4131b31015Sliushiwei$(link-out-dir)/$(shlibname).dmp: $(link-out-dir)/$(shlibname).so 4231b31015Sliushiwei @$(cmd-echo-silent) ' OBJDUMP $@' 4331b31015Sliushiwei $(q)$(OBJDUMP$(sm)) -l -x -d $< > $@ 4431b31015Sliushiwei 4531b31015Sliushiwei$(link-out-dir)/$(shlibname).stripped.so: $(link-out-dir)/$(shlibname).so 4631b31015Sliushiwei @$(cmd-echo-silent) ' OBJCOPY $@' 4731b31015Sliushiwei $(q)$(OBJCOPY$(sm)) --strip-unneeded $< $@ 4831b31015Sliushiwei 4931b31015Sliushiwei$(link-out-dir)/$(shlibuuid).elf: $(link-out-dir)/$(shlibname).so 5031b31015Sliushiwei @$(cmd-echo-silent) ' LN $@' 5131b31015Sliushiwei $(q)ln -sf $(<F) $@ 5231b31015Sliushiwei 5331b31015Sliushiwei$(link-out-dir)/$(shlibuuid).ta: $(link-out-dir)/$(shlibname).stripped.so \ 5431b31015Sliushiwei $(TA_SIGN_KEY) $(TA_SUBKEY_DEPS) 5531b31015Sliushiwei @$(cmd-echo-silent) ' SIGN $@' 5631b31015Sliushiwei $(q)$(PYTHON3) $(SIGN) --key $(TA_SIGN_KEY) $(TA_SUBKEY_ARGS) \ 5731b31015Sliushiwei --uuid $(shlibuuid) --in $< --out $@ 58