1*4882a593Smuzhiyun# Normally this makefile shouldn't be called directly and we expect the output 2*4882a593Smuzhiyun# path to be on a certain location to fit together with the other OP-TEE 3*4882a593Smuzhiyun# gits and helper scripts. 4*4882a593Smuzhiyunifeq ($O,) 5*4882a593Smuzhiyun$(error output path should be specified when calling this makefile) 6*4882a593Smuzhiyunendif 7*4882a593Smuzhiyun 8*4882a593Smuzhiyuninclude $(TA_DEV_KIT_DIR)/host_include/conf.mk 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun# By default we expect optee_client exported folder to be on a certain relative 11*4882a593Smuzhiyun# path, but if the client specifies the OPTEE_CLIENT_EXPORT then that path will 12*4882a593Smuzhiyun# be used instead. 13*4882a593SmuzhiyunOPTEE_CLIENT_EXPORT ?= ../../client_export/ 14*4882a593Smuzhiyunifeq "$(COMPILE_NS_USER)" "64" 15*4882a593SmuzhiyunOPTEE_CLIENT_LIB ?= ../../../../bin/optee_v2/lib/arm64/ 16*4882a593Smuzhiyunelse 17*4882a593SmuzhiyunOPTEE_CLIENT_LIB ?= ../../../../bin/optee_v2/lib/arm/ 18*4882a593Smuzhiyunendif 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunCC ?= $(CROSS_COMPILE)gcc 21*4882a593SmuzhiyunCPP ?= $(CROSS_COMPILE)cpp 22*4882a593SmuzhiyunLD ?= $(CROSS_COMPILE)ld 23*4882a593SmuzhiyunAR ?= $(CROSS_COMPILE)ar 24*4882a593SmuzhiyunNM ?= $(CROSS_COMPILE)nm 25*4882a593SmuzhiyunOBJCOPY ?= $(CROSS_COMPILE)objcopy 26*4882a593SmuzhiyunOBJDUMP ?= $(CROSS_COMPILE)objdump 27*4882a593SmuzhiyunREADELF ?= $(CROSS_COMPILE)readelf 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunSRC_PATH := . 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunsrcs := $(wildcard $(SRC_PATH)/*.c) 33*4882a593Smuzhiyun 34*4882a593Smuzhiyunobjs := $(patsubst %.c,$(O)/%.o, $(srcs)) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun 37*4882a593SmuzhiyunCFLAGS += -I$(OPTEE_CLIENT_EXPORT)/public 38*4882a593SmuzhiyunCFLAGS += -I$(TA_DEV_KIT_DIR)/host_include 39*4882a593SmuzhiyunCFLAGS += -I../../ta/extra_app/include 40*4882a593Smuzhiyun# CFLAGS += -I./include 41*4882a593SmuzhiyunCFLAGS += -Wall -Wcast-align \ 42*4882a593Smuzhiyun -Werror-implicit-function-declaration -Wextra -Wfloat-equal \ 43*4882a593Smuzhiyun -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self \ 44*4882a593Smuzhiyun -Wmissing-declarations -Wmissing-format-attribute \ 45*4882a593Smuzhiyun -Wmissing-include-dirs -Wmissing-noreturn \ 46*4882a593Smuzhiyun -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ 47*4882a593Smuzhiyun -Wshadow -Wstrict-prototypes -Wswitch-default \ 48*4882a593Smuzhiyun -Wwrite-strings \ 49*4882a593Smuzhiyun -Wno-missing-field-initializers -Wno-format-zero-length 50*4882a593Smuzhiyun 51*4882a593SmuzhiyunLDFLAGS += -L$(OPTEE_CLIENT_LIB) 52*4882a593SmuzhiyunLDFLAGS += -L$(OPTEE_CLIENT_EXPORT)/lib -lteec -lpthread 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun.PHONY: extra_app 56*4882a593Smuzhiyunextra_app: keybox_app 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunkeybox_app: $(objs) 59*4882a593Smuzhiyun @echo " LD $(O)/$@" 60*4882a593Smuzhiyun $(q)@$(CC) -o $(O)/$@ $+ $(LDFLAGS) 61*4882a593Smuzhiyun @echo " OPTEE_CLIENT_LIB=$(OPTEE_CLIENT_LIB)" 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun$(O)/%.o: $(CURDIR)/%.c 65*4882a593Smuzhiyun $(q)mkdir -p $(O)/ 66*4882a593Smuzhiyun @echo ' CC $<' 67*4882a593Smuzhiyun $(q)$(CC) $(CFLAGS) -c $< -o $@ 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun.PHONY: clean 70*4882a593Smuzhiyunclean: 71*4882a593Smuzhiyun @echo ' CLEAN $(O)' 72*4882a593Smuzhiyun $(q)rm -f $(O)/keybox 73*4882a593Smuzhiyun $(q)$(foreach obj,$(objs), rm -f $(obj)) 74