1# Get the dir of the ta-dev-kit, requires make version 3.81 or later 2ta-dev-kit-dir := $(patsubst %/,%,$(abspath $(dir $(lastword $(MAKEFILE_LIST)))..)) 3 4.PHONY: all 5all: 6 7include $(ta-dev-kit-dir)/mk/conf.mk 8ta-dev-kit-dir$(sm) := $(ta-dev-kit-dir) 9 10ifneq (1, $(words $(BINARY) $(LIBNAME) $(SHLIBNAME))) 11$(error You must specify exactly one of BINARY, LIBNAME or SHLIBNAME) 12endif 13 14ifneq ($O,) 15out-dir := $O 16else 17out-dir := . 18endif 19link-out-dir := $(out-dir) # backward compat 20link-out-dir$(sm) := $(out-dir) 21 22user-ta-uuid := $(BINARY) 23user-ta-ldadd := $(LDADD) 24libname := $(LIBNAME) 25shlibname := $(SHLIBNAME) 26shlibuuid := $(SHLIBUUID) 27 28 29ifneq ($V,1) 30q := @ 31cmd-echo := true 32cmd-echo-silent := echo 33else 34q := 35cmd-echo := echo 36cmd-echo-silent := true 37endif 38 39ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 40ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 41cmd-echo-silent := true 42endif 43else # make-3.8x 44ifneq ($(findstring s, $(MAKEFLAGS)),) 45cmd-echo-silent := true 46endif 47endif 48 49cppflags$(sm) := $($(sm)-platform-cppflags) $(CPPFLAGS_$(sm)) 50aflags$(sm) := $($(sm)-platform-aflags) 51cflags$(sm) := $($(sm)-platform-cflags) $(CFLAGS_$(sm)) 52 53CFG_TEE_TA_LOG_LEVEL ?= 2 54cppflags$(sm) += -DTRACE_LEVEL=$(CFG_TEE_TA_LOG_LEVEL) 55 56cppflags$(sm) += -I. -I$(ta-dev-kit-dir$(sm))/include 57 58ifeq ($(CFG_TA_MCOUNT),y) 59cppflags$(sm) += -pg 60endif 61 62libdirs += $(ta-dev-kit-dir$(sm))/lib 63libnames += utils 64libdeps += $(ta-dev-kit-dir$(sm))/lib/libutils.a 65ifneq ($(CFG_TA_MBEDTLS_MPI),y) 66libnames += mpa 67libdeps += $(ta-dev-kit-dir$(sm))/lib/libmpa.a 68endif 69libnames += utee 70libdeps += $(ta-dev-kit-dir$(sm))/lib/libutee.a 71ifeq ($(CFG_TA_MBEDTLS),y) 72libnames += mbedtls 73libdeps += $(ta-dev-kit-dir$(sm))/lib/libmbedtls.a 74endif 75libnames += dl 76libdeps += $(ta-dev-kit-dir$(sm))/lib/libdl.a 77 78# Pass config variable (CFG_) from conf.mk on the command line 79cppflags$(sm) += $(strip \ 80 $(foreach var, $(filter CFG_%,$(.VARIABLES)), \ 81 $(if $(filter y,$($(var))), \ 82 -D$(var)=1, \ 83 $(if $(filter xn x,x$($(var))),,-D$(var)='$($(var))')))) 84 85include $(ta-dev-kit-dir$(sm))/mk/cleandirs.mk 86 87.PHONY: clean 88clean: 89 @$(cmd-echo-silent) ' CLEAN $(out-dir)' 90 ${q}rm -f $(cleanfiles) 91 ${q}dirs="$(call cleandirs-for-rmdir)"; if [ "$$dirs" ]; then $(RMDIR) $$dirs; fi 92 @$(cmd-echo-silent) ' CLEAN $(O)' 93 ${q}if [ -d "$(O)" ]; then $(RMDIR) $(O); fi 94 95subdirs = . 96include $(ta-dev-kit-dir$(sm))/mk/subdir.mk 97 98ifneq ($(user-ta-uuid),) 99# Build target is TA 100vpath %.c $(ta-dev-kit-dir$(sm))/src 101srcs += user_ta_header.c 102ifeq ($(sm),ta_arm32) 103vpath %.S $(ta-dev-kit-dir$(sm))/src 104srcs += ta_entry_a32.S 105endif 106endif 107 108include $(ta-dev-kit-dir$(sm))/mk/gcc.mk 109include $(ta-dev-kit-dir$(sm))/mk/compile.mk 110 111ifneq ($(user-ta-uuid),) 112include $(ta-dev-kit-dir$(sm))/mk/link.mk 113endif 114 115ifneq ($(libname),) 116# Build target is static library 117all: $(libname).a 118cleanfiles += $(libname).a 119 120$(libname).a: $(objs) 121 @echo ' AR $@' 122 $(q)rm -f $@ && $(AR$(sm)) rcs -o $@ $^ 123endif 124 125ifneq (,$(shlibname)) 126include $(ta-dev-kit-dir$(sm))/mk/link_shlib.mk 127endif 128