1################################################################################
2# Android optee-client, libckteec and optee-supplicant makefile                #
3################################################################################
4LOCAL_PATH := $(call my-dir)
5
6# 3 (debug) is too noisy
7CFG_TEE_CLIENT_LOG_LEVEL ?= 2
8CFG_TEE_SUPP_LOG_LEVEL ?= 2
9
10# Define Android-specific configuration before including config.mk
11CFG_TEE_CLIENT_LOAD_PATH ?= /vendor/lib
12TEEC_TEST_LOAD_PATH ?= /data/vendor/tee
13CFG_TEE_FS_PARENT_PATH ?= /data/vendor/tee
14CFG_TEE_SUPP_PLUGINS ?= y
15ifneq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),)
16CFG_TEE_PLUGIN_LOAD_PATH ?= /vendor/lib64/tee-supplicant/plugins/
17else
18CFG_TEE_PLUGIN_LOAD_PATH ?= /vendor/lib/tee-supplicant/plugins/
19endif
20
21$(info CFG_TEE_PLUGIN_LOAD_PATH = ${CFG_TEE_PLUGIN_LOAD_PATH})
22
23
24################################################################################
25# Include optee-client common config and flags                                 #
26################################################################################
27include $(LOCAL_PATH)/config.mk
28include $(LOCAL_PATH)/android_flags.mk
29
30optee_CFLAGS = $(CFLAGS)
31
32################################################################################
33# Build libteec.so - TEE (Trusted Execution Environment) shared library        #
34################################################################################
35include $(CLEAR_VARS)
36LOCAL_CFLAGS += $(optee_CFLAGS)
37
38ifneq ($(CFG_TEE_CLIENT_LOG_FILE),)
39LOCAL_CFLAGS += -DTEEC_LOG_FILE=\"$(CFG_TEE_CLIENT_LOG_FILE)\"
40endif
41
42LOCAL_CFLAGS += -DDEBUGLEVEL_$(CFG_TEE_CLIENT_LOG_LEVEL)
43LOCAL_CFLAGS += -DBINARY_PREFIX=\"TEEC\"
44
45LOCAL_SRC_FILES := libteec/src/tee_client_api.c \
46                   libteec/src/teec_trace.c
47ifeq ($(CFG_TEE_BENCHMARK),y)
48LOCAL_CFLAGS += -DCFG_TEE_BENCHMARK
49LOCAL_SRC_FILES += teec_benchmark.c
50endif
51
52LOCAL_C_INCLUDES := $(LOCAL_PATH)/public \
53                    $(LOCAL_PATH)/libteec/include \
54
55LOCAL_PRELINK_MODULE := false
56LOCAL_MODULE := libteec
57
58LOCAL_MODULE_TAGS := optional
59LOCAL_VENDOR_MODULE := true
60
61# Build the 32-bit and 64-bit versions.
62LOCAL_MULTILIB := both
63LOCAL_MODULE_TARGET_ARCH := arm arm64
64
65LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/public
66
67include $(BUILD_SHARED_LIBRARY)
68
69################################################################################
70# Build libckteec.so                                                           #
71################################################################################
72include $(CLEAR_VARS)
73
74LOCAL_CFLAGS += $(optee_CFLAGS)
75
76LOCAL_SRC_FILES := libckteec/src/pkcs11_api.c \
77                   libckteec/src/ck_debug.c \
78                   libckteec/src/ck_helpers.c \
79                   libckteec/src/invoke_ta.c \
80                   libckteec/src/pkcs11_processing.c \
81                   libckteec/src/pkcs11_token.c \
82                   libckteec/src/serializer.c \
83                   libckteec/src/serialize_ck.c
84
85LOCAL_C_INCLUDES := $(LOCAL_PATH)/public \
86                    $(LOCAL_PATH)/libckteec/include
87
88LOCAL_SHARED_LIBRARIES := libteec
89
90LOCAL_PRELINK_MODULE := false
91LOCAL_MODULE := libckteec
92
93LOCAL_MODULE_TAGS := optional
94LOCAL_VENDOR_MODULE := true
95
96# Build the 32-bit and 64-bit versions.
97LOCAL_MULTILIB := both
98LOCAL_MODULE_TARGET_ARCH := arm arm64
99
100LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libckteec/include
101
102include $(BUILD_SHARED_LIBRARY)
103
104################################################################################
105# Build TEE Supplicant                                                         #
106################################################################################
107include $(LOCAL_PATH)/tee-supplicant/tee_supplicant_android.mk
108