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