• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2022 Huawei Technologies Co., Ltd.
2# Licensed under the Mulan PSL v2.
3# You can use this software according to the terms and conditions of the Mulan PSL v2.
4# You may obtain a copy of Mulan PSL v2 at:
5#     http://license.coscl.org.cn/MulanPSL2
6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
7# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
8# PURPOSE.
9# See the Mulan PSL v2 for more details.
10
11SONAME := libtee_shared$(TARG).so
12
13libtee_shared_c_files := $(wildcard src/*.c)
14
15inc-flags += -I$(DRIVERS_PATH)/include # dynion.h
16inc-flags += -I$(TEELIB)/libtee_shared/include
17inc-flags += -I$(TEELIB)/libdrv/include
18inc-flags += -I$(TEELIB)/libteeos/include/tee
19inc-flags += -I$(TEELIB)/libteeos/include/legacy
20inc-flags += -I$(TEELIB)/libteeconfig/include
21inc-flags += -I$(TEELIB)/libtee_stub/include
22inc-flags += -I$(PREBUILD_HEADER)/sys
23
24include $(BUILD_LIB)/lib-common.mk
25include $(BUILD_CONFIG)/feature-macro.mk
26
27ifeq ($(CONFIG_TEE_MISC_DRIVER_64BIT), false)
28flags += -DCONFIG_TEE_MISC_DRIVER
29endif
30
31ifeq ($(CONFIG_TEE_MISC_DRIVER_64BIT), true)
32flags += -DCONFIG_TEE_MISC_DRIVER
33endif
34
35MODULE_FILE = $(BUILD_DIR)/$(SONAME)
36INSTALL_FILE = $(LIB_DIR)/$(SONAME)
37
38target: $(INSTALL_FILE)
39$(INSTALL_FILE): $(MODULE_FILE)
40	@test -d $(LIB_DIR) || mkdir -p $(LIB_DIR)
41	@echo "[ INSTALL ] $(MODULE_FILE)"
42	$(VER)cp -rafp $(MODULE_FILE) $(LIB_DIR)
43
44libtee_shared_c_files :=  $(filter-out src/gk_auth_token.c, $(libtee_shared_c_files))
45
46ifeq ($(strip $(TARGET_BUILD_VARIANT)), user)
47flags += -DDEF_BUILDUSERMODE
48endif
49
50ifeq ($(CONFIG_EXPORT_OPENSSL_SYMBOL), true)
51flags += -DSUPPORT_EXPORT_OPENSSL_SYMBOL
52endif
53
54ifeq (${CONFIG_DYN_IMPORT_CERT},y)
55flags += -DDYN_IMPORT_CERT=1
56endif
57
58EXTERN_FILE := oh_extern.txt
59EXPORT_FILE := oh_export.txt
60
61${BUILD_DIR}/$(EXTERN_FILE): $(EXTERN_FILE) ${BUILD_DIR}/$(EXPORT_FILE)
62	@echo "preprocess ${BUILD_DIR}/$(EXTERN_FILE)"
63	@mkdir -p $(@D)
64	@${CC} ${flags} -P -E -o $@ -x c $<
65${BUILD_DIR}/$(EXPORT_FILE): $(EXPORT_FILE)
66	@echo "preprocess ${BUILD_DIR}/$(EXPORT_FILE)"
67	@mkdir -p $(@D)
68	@${CC} ${flags} -P -E -o $@ -x c $<
69ld-flags := -lcrypto_hal$(TARG) -ltimer$(TARG) -lagent$(TARG) -lagent_base$(TARG) -ldrv$(TARG) \
70    -lteeos$(TARG) -lpermission_service$(TARG) -lswcrypto_engine$(TARG) -ltaentry$(TARG) -lteeagentcommon_client$(TARG) -lcrypto$(TARG) \
71    -lteeconfig$(TARG) -lteemem$(TARG) -lssa$(TARG) -lhuk${TARG} -lteedynsrv$(TARG) -lipc_hal$(TARG)  -ltee_stub$(TARG)
72
73
74ifeq ($(CONFIG_CRYPTO_SOFT_ENGINE),mbedtls)
75ld-flags += -lmbedtls${TARG}
76else ifeq ($(CONFIG_CRYPTO_SOFT_ENGINE),openssl3)
77ld-flags += -lopenssl${TARG}
78flag += -DOPENSSL3_ENABLE
79else
80ld-flags += -lopenssl${TARG}
81flag += -DOPENSSL_ENABLE
82endif
83
84ifeq ($(findstring true, $(CONFIG_SE_SERVICE_32BIT) $(CONFIG_SE_SERVICE_64BIT)), true)
85ld-flags += -lse$(TARG)
86endif
87
88ld-flags += -z separate-loadable-segments
89
90$(MODULE_FILE): $(BUILD_DIR)/$(EXTERN_FILE) $(libtee_shared_objs)
91	@echo "LibTEE [LD] $@ LIB_DIR=$(LIB_DIR)"
92	$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections --version-script=$(BUILD_DIR)/$(EXPORT_FILE) -o $@ \
93		$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group \
94		$(LIBCOMPILER_RT_BUILTINS) --end-group $(ld-flags) -nostdlib -z max-page-size=4096
95	$(VER)$(OBJCOPY) $@
96