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 ##
7 ## OPTEE_CFG_ARM64_CORE ##
9 ## OPTEE_PLATFORM_FLAVOR ##
10 ## And BUILD_OPTEE_MK needs to be defined in device.mk ##
11 ## to point to this file ##
13 ## local_module needs to be defined before including ##
14 ## this file to build TAs ##
16 ##########################################################
18 ##########################################################
19 ## define common variables, like TA_DEV_KIT_DIR ##
20 ##########################################################
21 OPTEE_OUT_DIR ?= $(PRODUCT_OUT)/optee
22 OPTEE_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.
25 OPTEE_OS_OUT_DIR ?= $(OPTEE_OUT_DIR)/arm-plat-$(OPTEE_PLATFORM)
26 TA_DEV_KIT_DIR := $(OPTEE_OS_OUT_DIR)/export-${OPTEE_TA_TARGETS}
28 TOP_ROOT_ABS := $(realpath $(TOP))
29 CROSS_COMPILE64 := $(TOP_ROOT_ABS)/$(TARGET_TOOLS_PREFIX)
30 CROSS_COMPILE_LINE := CROSS_COMPILE64="$(CROSS_COMPILE64)"
31 ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),)
32 CROSS_COMPILE32 := $(TOP_ROOT_ABS)/$($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)
33 CROSS_COMPILE_LINE += CROSS_COMPILE32="$(CROSS_COMPILE32)"
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 ##########################################################
41 ifneq (true,$(BUILD_OPTEE_OS_DEFINED))
42 BUILD_OPTEE_OS_DEFINED := true
44 .PHONY: BUILD_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) \
54 @echo "Finished building optee_os..."
58 ##########################################################
59 ## Lines for building TAs automatically ##
60 ## will only be included in Android.mk for TAs ##
62 ## need to be defined before include for this ##
63 ##########################################################
64 ifneq (false,$(INCLUDE_FOR_BUILD_TA))
67 LOCAL_MODULE := $(local_module)
68 LOCAL_PREBUILT_MODULE_FILE := $(OPTEE_TA_OUT_DIR)/$(LOCAL_MODULE)
69 LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/optee_armtz
70 LOCAL_MODULE_CLASS := EXECUTABLES
71 LOCAL_MODULE_TAGS := optional
73 TA_TMP_DIR := $(subst /,_,$(LOCAL_PATH))
74 TA_TMP_FILE := $(OPTEE_TA_OUT_DIR)/$(TA_TMP_DIR)/$(LOCAL_MODULE)
75 $(LOCAL_PREBUILT_MODULE_FILE): $(TA_TMP_FILE)
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) \
87 @echo "Finished building TA for $(PRIVATE_TA_SRC_DIR) $(PRIVATE_TA_TMP_FILE)..."
89 include $(BUILD_PREBUILT)