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