• 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 := libdrv_shared$(TARG).so
12
13libdrv_shared_c_files :=
14
15libdrv_shared_c_files += src/io_operations.c
16libdrv_shared_c_files += src/drv_share.c
17libdrv_shared_c_files += $(DRVLIB)/common/libdrv_frame/src/drv_thread.c
18libdrv_shared_c_files += $(DRVLIB)/common/libdrv_frame/src/drv_param_ops.c
19
20ifneq ($(CONFIG_DRVMGR_64BIT), )
21libdrv_shared_c_files += src/tee_drv_entry.c
22libdrv_shared_c_files += src/drv_dispatch.c
23libdrv_shared_c_files += src/drv_operations.c
24
25ifneq ($(CONFIG_TEE_CRYPTO_MGR_SERVER_64BIT), )
26flags += -DCRYPTO_MGR_SERVER_ENABLE
27libdrv_shared_c_files += src/drv_random.c
28endif
29
30ifeq ($(WITH_ENG_VERSION), true)
31flags += -DTEE_SUPPORT_CMD_DUMP
32flags += -DTEE_SUPPORT_DRV_FD_DUMP
33endif
34endif
35
36include $(BUILD_LIB)/lib-common.mk
37inc-flags += -I$(DRIVERS_PATH)/include
38inc-flags += -I$(PREBUILD_HEADER)/libc/arch/$(ARCH)/bits
39inc-flags += -I$(DRVLIB)/common/libdrv_frame/include
40inc-flags += -I$(DRVLIB)/libdrv_shared/include
41inc-flags += -I$(TEELIB)/libdrv/include
42inc-flags += -I$(TEELIB)/libteeos/include
43inc-flags += -I$(TEELIB)/libteeos/include/tee
44inc-flags += -I$(TEELIB)/libteeos/include/legacy
45inc-flags += -I$(TEELIB)/libteemem/include
46inc-flags += -I$(TEELIB)/libipc_hal/include
47
48ifneq ($(CONFIG_DRVMGR_64BIT), )
49inc-flags += -I$(SYSLIB)/libspawn_common/include
50inc-flags += -I$(TEELIB)/libteeconfig/include
51endif
52
53ifneq ($(CRYPTO_MGR_SERVER_ENABLE), )
54inc-flags += -I$(TEELIB)/libcrypto_hal/include
55inc-flags += -I$(TEELIB)/libcrypto/include
56endif
57
58include $(BUILD_CONFIG)/feature-macro.mk
59
60MODULE_FILE = $(BUILD_DIR)/$(SONAME)
61INSTALL_FILE = $(LIB_DIR)/$(SONAME)
62
63target: $(INSTALL_FILE)
64$(INSTALL_FILE): $(MODULE_FILE)
65	@test -d $(LIB_DIR) || mkdir -p $(LIB_DIR)
66	@echo "libdrv_shared [ INSTALL ] $(MODULE_FILE)"
67	$(VER)cp -rafp $(MODULE_FILE) $(LIB_DIR)
68
69$(BUILD_DIR)/extern.txt: extern.txt $(BUILD_DIR)/export.txt
70	@echo "libdrv_shared preprocess ${BUILD_DIR}/extern.txt"
71	@mkdir -p $(@D)
72	@echo "libdrv_shared extern ${flags}"
73	@${CC} ${flags} -P -E -o $@ -x c $<
74$(BUILD_DIR)/export.txt: export.txt
75	@echo "libdrv_shared preprocess ${BUILD_DIR}/export.txt"
76	@mkdir -p $(@D)
77	@echo "libdrv_shared export ${flags}"
78	@${CC} ${flags} -P -E -o $@ -x c $<
79
80ld-flags :=
81ld-flags += -lc_shared$(TARG) -lteemem$(TARG) -lteeconfig$(TARG)
82
83ld-flags += -z separate-loadable-segments
84
85$(MODULE_FILE): $(BUILD_DIR)/extern.txt $(libdrv_shared_objs)
86	@echo "libdrv_shared xom32_disable ld-flags is $(ld-flags) [ LD ] $@ LIB_DIR=$(LIB_DIR)"
87	$(VER)$(LD) --shared -X -EL -z text -z now -z relro -z noexecstack --gc-sections --version-script=$(BUILD_DIR)/export.txt -o $@ \
88		$^ -L$(LIB_DIR) -L$(PREBUILD_LIBS)/$(ARCH) --start-group \
89		$(LIBCOMPILER_RT_BUILTINS) --end-group $(ld-flags) -nostdlib -z max-page-size=4096
90	$(VER)$(OBJCOPY) $@
91