1*31b31015Sliushiweiifeq (,$(shlibuuid)) 2*31b31015Sliushiwei$(error SHLIBUUID not set) 3*31b31015Sliushiweiendif 4*31b31015Sliushiweilink-out-dir = $(out-dir) 5*31b31015Sliushiwei 6*31b31015SliushiweiSIGN ?= $(TA_DEV_KIT_DIR)/scripts/sign_encrypt.py 7*31b31015SliushiweiTA_SIGN_KEY ?= $(TA_DEV_KIT_DIR)/keys/default_ta.pem 8*31b31015Sliushiwei 9*31b31015Sliushiweiall: $(link-out-dir)/$(shlibname).so $(link-out-dir)/$(shlibname).dmp \ 10*31b31015Sliushiwei $(link-out-dir)/$(shlibname).stripped.so \ 11*31b31015Sliushiwei $(link-out-dir)/$(shlibuuid).elf \ 12*31b31015Sliushiwei $(link-out-dir)/$(shlibuuid).ta 13*31b31015Sliushiwei 14*31b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibname).so 15*31b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibname).dmp 16*31b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibname).stripped.so 17*31b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibuuid).elf 18*31b31015Sliushiweicleanfiles += $(link-out-dir)/$(shlibuuid).ta 19*31b31015Sliushiwei 20*31b31015Sliushiweishlink-ldflags = $(LDFLAGS) 21*31b31015Sliushiweishlink-ldflags += -shared -z max-page-size=4096 22*31b31015Sliushiweishlink-ldflags += $(call ld-option,-z separate-loadable-segments) 23*31b31015Sliushiweiifeq ($(sm)-$(CFG_TA_BTI),ta_arm64-y) 24*31b31015Sliushiweishlink-ldflags += $(call ld-option,-z force-bti) --fatal-warnings 25*31b31015Sliushiweiendif 26*31b31015Sliushiweishlink-ldflags += --as-needed # Do not add dependency on unused shlib 27*31b31015Sliushiwei 28*31b31015Sliushiweishlink-ldadd = $(LDADD) 29*31b31015Sliushiweishlink-ldadd += $(addprefix -L,$(libdirs)) 30*31b31015Sliushiweishlink-ldadd += --start-group $(addprefix -l,$(libnames)) --end-group 31*31b31015Sliushiweildargs-$(shlibname).so := $(shlink-ldflags) $(objs) $(shlink-ldadd) $(libgcc$(sm)) 32*31b31015Sliushiwei 33*31b31015Sliushiwei 34*31b31015Sliushiwei$(link-out-dir)/$(shlibname).so: $(objs) $(libdeps) 35*31b31015Sliushiwei @$(cmd-echo-silent) ' LD $@' 36*31b31015Sliushiwei $(q)$(LD$(sm)) $(ldargs-$(shlibname).so) --soname=$(shlibuuid) -o $@ 37*31b31015Sliushiwei 38*31b31015Sliushiwei$(link-out-dir)/$(shlibname).dmp: $(link-out-dir)/$(shlibname).so 39*31b31015Sliushiwei @$(cmd-echo-silent) ' OBJDUMP $@' 40*31b31015Sliushiwei $(q)$(OBJDUMP$(sm)) -l -x -d $< > $@ 41*31b31015Sliushiwei 42*31b31015Sliushiwei$(link-out-dir)/$(shlibname).stripped.so: $(link-out-dir)/$(shlibname).so 43*31b31015Sliushiwei @$(cmd-echo-silent) ' OBJCOPY $@' 44*31b31015Sliushiwei $(q)$(OBJCOPY$(sm)) --strip-unneeded $< $@ 45*31b31015Sliushiwei 46*31b31015Sliushiwei$(link-out-dir)/$(shlibuuid).elf: $(link-out-dir)/$(shlibname).so 47*31b31015Sliushiwei @$(cmd-echo-silent) ' LN $@' 48*31b31015Sliushiwei $(q)ln -sf $(<F) $@ 49*31b31015Sliushiwei 50*31b31015Sliushiwei$(link-out-dir)/$(shlibuuid).ta: $(link-out-dir)/$(shlibname).stripped.so \ 51*31b31015Sliushiwei $(TA_SIGN_KEY) $(TA_SUBKEY_DEPS) 52*31b31015Sliushiwei @$(cmd-echo-silent) ' SIGN $@' 53*31b31015Sliushiwei $(q)$(PYTHON3) $(SIGN) --key $(TA_SIGN_KEY) $(TA_SUBKEY_ARGS) \ 54*31b31015Sliushiwei --uuid $(shlibuuid) --in $< --out $@ 55