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