xref: /optee_os/mk/aosp_optee.mk (revision 51ac0e23b5c2b3c84469a0de79c9f027a46d5747)
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