xref: /optee_os/mk/aosp_optee.mk (revision 7247a01e4af9771632e2264e1659e1770fc82a83)
1ca6737b4SYongqin Liu##########################################################
2ca6737b4SYongqin Liu## Common mk file used for Android to compile and       ##
3ca6737b4SYongqin Liu## integrate OP-TEE related components                  ##
4b96f67dbSVictor Chong## Following flags need to be defined in optee*.mk      ##
5ca6737b4SYongqin Liu##    OPTEE_OS_DIR                                      ##
6ca6737b4SYongqin Liu##    OPTEE_TA_TARGETS                                  ##
7ca6737b4SYongqin Liu##    OPTEE_CFG_ARM64_CORE                              ##
8ca6737b4SYongqin Liu##    OPTEE_PLATFORM                                    ##
90251b775SZhizhou Zhang##    OPTEE_PLATFORM_FLAVOR                             ##
10b96f67dbSVictor Chong##    OPTEE_EXTRA_FLAGS (optional)                      ##
11b96f67dbSVictor Chong## And BUILD_OPTEE_MK needs to be defined in optee*.mk  ##
12ca6737b4SYongqin Liu## to point to this file                                ##
13ca6737b4SYongqin Liu##                                                      ##
14ca6737b4SYongqin Liu## local_module needs to be defined before including    ##
15ca6737b4SYongqin Liu## this file to build TAs                               ##
16ca6737b4SYongqin Liu##                                                      ##
17ca6737b4SYongqin Liu##########################################################
18ca6737b4SYongqin Liu
19ca6737b4SYongqin Liu##########################################################
20ca6737b4SYongqin Liu## define common variables, like TA_DEV_KIT_DIR         ##
21ca6737b4SYongqin Liu##########################################################
22ca6737b4SYongqin LiuOPTEE_OUT_DIR ?= $(PRODUCT_OUT)/optee
23ca6737b4SYongqin LiuOPTEE_TA_OUT_DIR ?= $(OPTEE_OUT_DIR)/ta
24ca6737b4SYongqin Liu# Set so that OP-TEE clients can find the installed dev-kit, which
25ca6737b4SYongqin Liu# depends on platform and its OP-TEE word-size.
26ca6737b4SYongqin LiuOPTEE_OS_OUT_DIR ?= $(OPTEE_OUT_DIR)/arm-plat-$(OPTEE_PLATFORM)
27ca6737b4SYongqin LiuTA_DEV_KIT_DIR := $(OPTEE_OS_OUT_DIR)/export-${OPTEE_TA_TARGETS}
28ca6737b4SYongqin Liu
29ca6737b4SYongqin LiuTOP_ROOT_ABS := $(realpath $(TOP))
30ca6737b4SYongqin LiuCROSS_COMPILE64 := $(TOP_ROOT_ABS)/$(TARGET_TOOLS_PREFIX)
31ca6737b4SYongqin LiuCROSS_COMPILE_LINE := CROSS_COMPILE64="$(CROSS_COMPILE64)"
32a8173b25SVictor Chongifneq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),)
33ca6737b4SYongqin LiuCROSS_COMPILE32 := $(TOP_ROOT_ABS)/$($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)
34ca6737b4SYongqin LiuCROSS_COMPILE_LINE += CROSS_COMPILE32="$(CROSS_COMPILE32)"
35ca6737b4SYongqin Liuendif
36ca6737b4SYongqin Liu
372ef721a7SYongqin LiuOPTEE_BIN := $(TOP_ROOT_ABS)/$(OPTEE_OS_OUT_DIR)/core/tee.bin
382ef721a7SYongqin Liu
392ef721a7SYongqin Liu$(OPTEE_BIN) : BUILD_OPTEE_OS
402ef721a7SYongqin Liu
412ef721a7SYongqin Liu###########################################################
42ca6737b4SYongqin Liu## define BUILD_OPTEE_OS target, add condition check     ##
43ca6737b4SYongqin Liu## to make it only be defined once even though           ##
44ca6737b4SYongqin Liu## this file might be included multiple times            ##
452ef721a7SYongqin Liu## This BUILD_OPTEE_OS will help to generate the header  ##
462ef721a7SYongqin Liu## files under $(TA_DEV_KIT_DIR)/host_include and        ##
472ef721a7SYongqin Liu## the $(OPTEE_BIN) file which will be used as dependency##
482ef721a7SYongqin Liu## for other projects                                    ##
492ef721a7SYongqin Liu###########################################################
50ca6737b4SYongqin Liuifneq (true,$(BUILD_OPTEE_OS_DEFINED))
51ca6737b4SYongqin LiuBUILD_OPTEE_OS_DEFINED := true
52ca6737b4SYongqin Liu
53ca6737b4SYongqin Liu.PHONY: BUILD_OPTEE_OS
54ca6737b4SYongqin LiuBUILD_OPTEE_OS:
55ca6737b4SYongqin Liu	@echo "Start building optee_os..."
56ca6737b4SYongqin Liu	$(MAKE) -C $(TOP_ROOT_ABS)/$(OPTEE_OS_DIR) \
57ca6737b4SYongqin Liu		O=$(TOP_ROOT_ABS)/$(OPTEE_OS_OUT_DIR) \
58ca6737b4SYongqin Liu		ta-targets=$(OPTEE_TA_TARGETS) \
59ca6737b4SYongqin Liu		CFG_ARM64_core=$(OPTEE_CFG_ARM64_CORE) \
60ca6737b4SYongqin Liu		PLATFORM=$(OPTEE_PLATFORM) \
610251b775SZhizhou Zhang		PLATFORM_FLAVOR=$(OPTEE_PLATFORM_FLAVOR) \
62b96f67dbSVictor Chong		$(CROSS_COMPILE_LINE) \
63b96f67dbSVictor Chong		$(OPTEE_EXTRA_FLAGS)
64ca6737b4SYongqin Liu	@echo "Finished building optee_os..."
65ca6737b4SYongqin Liu
66ca6737b4SYongqin Liuendif
67ca6737b4SYongqin Liu
68ca6737b4SYongqin Liu##########################################################
69ca6737b4SYongqin Liu## Lines for building TAs automatically                 ##
70ca6737b4SYongqin Liu## will only be included in Android.mk for TAs          ##
71ca6737b4SYongqin Liu## local_module:                                        ##
72ca6737b4SYongqin Liu##     need to be defined before include for this       ##
73ca6737b4SYongqin Liu##########################################################
74ca6737b4SYongqin Liuifneq (false,$(INCLUDE_FOR_BUILD_TA))
75ca6737b4SYongqin Liuinclude $(CLEAR_VARS)
76ca6737b4SYongqin Liu
77ca6737b4SYongqin LiuLOCAL_MODULE := $(local_module)
78ca6737b4SYongqin LiuLOCAL_PREBUILT_MODULE_FILE := $(OPTEE_TA_OUT_DIR)/$(LOCAL_MODULE)
79*7247a01eSYongqin LiuLOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/optee_armtz
80ca6737b4SYongqin LiuLOCAL_MODULE_CLASS := EXECUTABLES
81ca6737b4SYongqin LiuLOCAL_MODULE_TAGS := optional
82ca6737b4SYongqin Liu
83ca6737b4SYongqin LiuTA_TMP_DIR := $(subst /,_,$(LOCAL_PATH))
84ca6737b4SYongqin LiuTA_TMP_FILE := $(OPTEE_TA_OUT_DIR)/$(TA_TMP_DIR)/$(LOCAL_MODULE)
85ca6737b4SYongqin Liu$(LOCAL_PREBUILT_MODULE_FILE): $(TA_TMP_FILE)
86ca6737b4SYongqin Liu	@mkdir -p $(dir $@)
87ca6737b4SYongqin Liu	cp -uvf $< $@
88ca6737b4SYongqin Liu
894c4e0dd0SVictor ChongTA_TMP_FILE_DEPS :=
904c4e0dd0SVictor Chongifneq ($(local_module_deps), )
91*7247a01eSYongqin Liu$(foreach dep,$(local_module_deps), $(eval TA_TMP_FILE_DEPS += $(TARGET_OUT_VENDOR)/lib/optee_armtz/$(dep)))
924c4e0dd0SVictor Chongendif
934c4e0dd0SVictor Chong$(TA_TMP_FILE): $(TA_TMP_FILE_DEPS)
94ca6737b4SYongqin Liu$(TA_TMP_FILE): PRIVATE_TA_SRC_DIR := $(LOCAL_PATH)
95ca6737b4SYongqin Liu$(TA_TMP_FILE): PRIVATE_TA_TMP_FILE := $(TA_TMP_FILE)
96ca6737b4SYongqin Liu$(TA_TMP_FILE): PRIVATE_TA_TMP_DIR := $(TA_TMP_DIR)
97ca6737b4SYongqin Liu$(TA_TMP_FILE): BUILD_OPTEE_OS
98ca6737b4SYongqin Liu	@echo "Start building TA for $(PRIVATE_TA_SRC_DIR) $(PRIVATE_TA_TMP_FILE)..."
99ca6737b4SYongqin Liu	$(MAKE) -C $(TOP_ROOT_ABS)/$(PRIVATE_TA_SRC_DIR) O=$(TOP_ROOT_ABS)/$(OPTEE_TA_OUT_DIR)/$(PRIVATE_TA_TMP_DIR) \
100ca6737b4SYongqin Liu		TA_DEV_KIT_DIR=$(TOP_ROOT_ABS)/$(TA_DEV_KIT_DIR) \
101ca6737b4SYongqin Liu		$(CROSS_COMPILE_LINE)
102ca6737b4SYongqin Liu	@echo "Finished building TA for $(PRIVATE_TA_SRC_DIR) $(PRIVATE_TA_TMP_FILE)..."
103ca6737b4SYongqin Liu
104ca6737b4SYongqin Liuinclude $(BUILD_PREBUILT)
1054c4e0dd0SVictor Chonglocal_module_deps :=
106ca6737b4SYongqin Liuendif
107