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