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