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