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 22binary := $(BINARY) 23libname := $(LIBNAME) 24shlibname := $(SHLIBNAME) 25shlibuuid := $(SHLIBUUID) 26 27 28ifneq ($V,1) 29q := @ 30cmd-echo := true 31cmd-echo-silent := echo 32else 33q := 34cmd-echo := echo 35cmd-echo-silent := true 36endif 37 38ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 39ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 40cmd-echo-silent := true 41endif 42else # make-3.8x 43ifneq ($(findstring s, $(MAKEFLAGS)),) 44cmd-echo-silent := true 45endif 46endif 47 48cppflags$(sm) := $($(sm)-platform-cppflags) $(CPPFLAGS_$(sm)) 49aflags$(sm) := $($(sm)-platform-aflags) 50cflags$(sm) := $($(sm)-platform-cflags) $(CFLAGS_$(sm)) 51 52CFG_TEE_TA_LOG_LEVEL ?= 2 53cppflags$(sm) += -DTRACE_LEVEL=$(CFG_TEE_TA_LOG_LEVEL) 54 55cppflags$(sm) += -I. -I$(ta-dev-kit-dir$(sm))/include 56 57libdirs += $(ta-dev-kit-dir$(sm))/lib 58libnames += utils utee mpa 59libdeps += $(ta-dev-kit-dir$(sm))/lib/libutils.a 60libdeps += $(ta-dev-kit-dir$(sm))/lib/libmpa.a 61libdeps += $(ta-dev-kit-dir$(sm))/lib/libutee.a 62ifeq ($(CFG_TA_MBEDTLS),y) 63libnames += mbedtls 64libdeps += $(ta-dev-kit-dir$(sm))/lib/libmbedtls.a 65endif 66 67# Pass config variable (CFG_) from conf.mk on the command line 68cppflags$(sm) += $(strip \ 69 $(foreach var, $(filter CFG_%,$(.VARIABLES)), \ 70 $(if $(filter y,$($(var))), \ 71 -D$(var)=1, \ 72 $(if $(filter xn x,x$($(var))),,-D$(var)='$($(var))')))) 73 74include $(ta-dev-kit-dir$(sm))/mk/cleandirs.mk 75 76.PHONY: clean 77clean: 78 @$(cmd-echo-silent) ' CLEAN $(out-dir)' 79 ${q}rm -f $(cleanfiles) 80 ${q}dirs="$(call cleandirs-for-rmdir)"; if [ "$$dirs" ]; then $(RMDIR) $$dirs; fi 81 @$(cmd-echo-silent) ' CLEAN $(O)' 82 ${q}if [ -d "$(O)" ]; then $(RMDIR) $(O); fi 83 84subdirs = . 85include $(ta-dev-kit-dir$(sm))/mk/subdir.mk 86 87ifneq ($(binary),) 88# Build target is TA 89vpath %.c $(ta-dev-kit-dir$(sm))/src 90srcs += user_ta_header.c 91endif 92 93include $(ta-dev-kit-dir$(sm))/mk/gcc.mk 94include $(ta-dev-kit-dir$(sm))/mk/compile.mk 95 96ifneq ($(binary),) 97include $(ta-dev-kit-dir$(sm))/mk/link.mk 98endif 99 100ifneq ($(libname),) 101# Build target is static library 102all: $(libname).a 103cleanfiles += $(libname).a 104 105$(libname).a: $(objs) 106 @echo ' AR $@' 107 $(q)rm -f $@ && $(AR$(sm)) rcs -o $@ $^ 108endif 109 110ifneq (,$(shlibname)) 111include $(ta-dev-kit-dir$(sm))/mk/link_shlib.mk 112endif 113