1*ca6737b4SYongqin Liu########################################################## 2*ca6737b4SYongqin Liu## Common mk file used for Android to compile and ## 3*ca6737b4SYongqin Liu## integrate OP-TEE related components ## 4*ca6737b4SYongqin Liu## Following flags need to be defined in device.mk ## 5*ca6737b4SYongqin Liu## OPTEE_OS_DIR ## 6*ca6737b4SYongqin Liu## OPTEE_TA_TARGETS ## 7*ca6737b4SYongqin Liu## OPTEE_CFG_ARM64_CORE ## 8*ca6737b4SYongqin Liu## OPTEE_PLATFORM ## 9*ca6737b4SYongqin Liu## And BUILD_OPTEE_MK needs to be defined in device.mk ## 10*ca6737b4SYongqin Liu## to point to this file ## 11*ca6737b4SYongqin Liu## ## 12*ca6737b4SYongqin Liu## local_module needs to be defined before including ## 13*ca6737b4SYongqin Liu## this file to build TAs ## 14*ca6737b4SYongqin Liu## ## 15*ca6737b4SYongqin Liu########################################################## 16*ca6737b4SYongqin Liu 17*ca6737b4SYongqin Liu########################################################## 18*ca6737b4SYongqin Liu## define common variables, like TA_DEV_KIT_DIR ## 19*ca6737b4SYongqin Liu########################################################## 20*ca6737b4SYongqin LiuOPTEE_OUT_DIR ?= $(PRODUCT_OUT)/optee 21*ca6737b4SYongqin LiuOPTEE_TA_OUT_DIR ?= $(OPTEE_OUT_DIR)/ta 22*ca6737b4SYongqin Liu# Set so that OP-TEE clients can find the installed dev-kit, which 23*ca6737b4SYongqin Liu# depends on platform and its OP-TEE word-size. 24*ca6737b4SYongqin LiuOPTEE_OS_OUT_DIR ?= $(OPTEE_OUT_DIR)/arm-plat-$(OPTEE_PLATFORM) 25*ca6737b4SYongqin LiuTA_DEV_KIT_DIR := $(OPTEE_OS_OUT_DIR)/export-${OPTEE_TA_TARGETS} 26*ca6737b4SYongqin Liu 27*ca6737b4SYongqin LiuTOP_ROOT_ABS := $(realpath $(TOP)) 28*ca6737b4SYongqin LiuCROSS_COMPILE64 := $(TOP_ROOT_ABS)/$(TARGET_TOOLS_PREFIX) 29*ca6737b4SYongqin LiuCROSS_COMPILE_LINE := CROSS_COMPILE64="$(CROSS_COMPILE64)" 30*ca6737b4SYongqin Liuifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),) 31*ca6737b4SYongqin LiuCROSS_COMPILE32 := $(TOP_ROOT_ABS)/$($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX) 32*ca6737b4SYongqin LiuCROSS_COMPILE_LINE += CROSS_COMPILE32="$(CROSS_COMPILE32)" 33*ca6737b4SYongqin Liuendif 34*ca6737b4SYongqin Liu 35*ca6737b4SYongqin Liu########################################################## 36*ca6737b4SYongqin Liu## define BUILD_OPTEE_OS target, add condition check ## 37*ca6737b4SYongqin Liu## to make it only be defined once even though ## 38*ca6737b4SYongqin Liu## this file might be included multiple times ## 39*ca6737b4SYongqin Liu########################################################## 40*ca6737b4SYongqin Liuifneq (true,$(BUILD_OPTEE_OS_DEFINED)) 41*ca6737b4SYongqin LiuBUILD_OPTEE_OS_DEFINED := true 42*ca6737b4SYongqin Liu 43*ca6737b4SYongqin Liu.PHONY: BUILD_OPTEE_OS 44*ca6737b4SYongqin LiuBUILD_OPTEE_OS: 45*ca6737b4SYongqin Liu @echo "Start building optee_os..." 46*ca6737b4SYongqin Liu $(MAKE) -C $(TOP_ROOT_ABS)/$(OPTEE_OS_DIR) \ 47*ca6737b4SYongqin Liu O=$(TOP_ROOT_ABS)/$(OPTEE_OS_OUT_DIR) \ 48*ca6737b4SYongqin Liu ta-targets=$(OPTEE_TA_TARGETS) \ 49*ca6737b4SYongqin Liu CFG_ARM64_core=$(OPTEE_CFG_ARM64_CORE) \ 50*ca6737b4SYongqin Liu PLATFORM=$(OPTEE_PLATFORM) \ 51*ca6737b4SYongqin Liu $(CROSS_COMPILE_LINE) 52*ca6737b4SYongqin Liu @echo "Finished building optee_os..." 53*ca6737b4SYongqin Liu 54*ca6737b4SYongqin Liuendif 55*ca6737b4SYongqin Liu 56*ca6737b4SYongqin Liu########################################################## 57*ca6737b4SYongqin Liu## Lines for building TAs automatically ## 58*ca6737b4SYongqin Liu## will only be included in Android.mk for TAs ## 59*ca6737b4SYongqin Liu## local_module: ## 60*ca6737b4SYongqin Liu## need to be defined before include for this ## 61*ca6737b4SYongqin Liu########################################################## 62*ca6737b4SYongqin Liuifneq (false,$(INCLUDE_FOR_BUILD_TA)) 63*ca6737b4SYongqin Liuinclude $(CLEAR_VARS) 64*ca6737b4SYongqin Liu 65*ca6737b4SYongqin LiuLOCAL_MODULE := $(local_module) 66*ca6737b4SYongqin LiuLOCAL_PREBUILT_MODULE_FILE := $(OPTEE_TA_OUT_DIR)/$(LOCAL_MODULE) 67*ca6737b4SYongqin LiuLOCAL_MODULE_PATH := $(TARGET_OUT)/lib/optee_armtz 68*ca6737b4SYongqin LiuLOCAL_MODULE_CLASS := EXECUTABLES 69*ca6737b4SYongqin LiuLOCAL_MODULE_TAGS := optional 70*ca6737b4SYongqin Liu 71*ca6737b4SYongqin LiuTA_TMP_DIR := $(subst /,_,$(LOCAL_PATH)) 72*ca6737b4SYongqin LiuTA_TMP_FILE := $(OPTEE_TA_OUT_DIR)/$(TA_TMP_DIR)/$(LOCAL_MODULE) 73*ca6737b4SYongqin Liu$(LOCAL_PREBUILT_MODULE_FILE): $(TA_TMP_FILE) 74*ca6737b4SYongqin Liu @mkdir -p $(dir $@) 75*ca6737b4SYongqin Liu cp -uvf $< $@ 76*ca6737b4SYongqin Liu 77*ca6737b4SYongqin Liu$(TA_TMP_FILE): PRIVATE_TA_SRC_DIR := $(LOCAL_PATH) 78*ca6737b4SYongqin Liu$(TA_TMP_FILE): PRIVATE_TA_TMP_FILE := $(TA_TMP_FILE) 79*ca6737b4SYongqin Liu$(TA_TMP_FILE): PRIVATE_TA_TMP_DIR := $(TA_TMP_DIR) 80*ca6737b4SYongqin Liu$(TA_TMP_FILE): BUILD_OPTEE_OS 81*ca6737b4SYongqin Liu @echo "Start building TA for $(PRIVATE_TA_SRC_DIR) $(PRIVATE_TA_TMP_FILE)..." 82*ca6737b4SYongqin Liu $(MAKE) -C $(TOP_ROOT_ABS)/$(PRIVATE_TA_SRC_DIR) O=$(TOP_ROOT_ABS)/$(OPTEE_TA_OUT_DIR)/$(PRIVATE_TA_TMP_DIR) \ 83*ca6737b4SYongqin Liu TA_DEV_KIT_DIR=$(TOP_ROOT_ABS)/$(TA_DEV_KIT_DIR) \ 84*ca6737b4SYongqin Liu $(CROSS_COMPILE_LINE) 85*ca6737b4SYongqin Liu @echo "Finished building TA for $(PRIVATE_TA_SRC_DIR) $(PRIVATE_TA_TMP_FILE)..." 86*ca6737b4SYongqin Liu 87*ca6737b4SYongqin Liuinclude $(BUILD_PREBUILT) 88*ca6737b4SYongqin Liuendif 89