• 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.
10include flags_SL.mk
11
12# common flags
13COMMON_INCLUDES := ${CURDIR}/../../interfaces/inner_api \
14				   ${CURDIR}/../../frameworks/include/standard/teec_vendor \
15				   ${CURDIR}/../../frameworks/include/standard \
16				   ${CURDIR}/../../frameworks/include \
17				   ${CURDIR}/../../frameworks/libteec_vendor \
18				   ${CURDIR}/../../services/teecd/include/standard \
19				   ${CURDIR}/../../services/teecd/include \
20				   ${CURDIR}/../../services/authentication \
21				   $(CURDIR)/../../../../../base/hiviewdfx/hilog_lite/interfaces/native/innerkits/hilog \
22				   $(OSDRV_DIR)/components/secure_c/include
23
24
25COMMON_CFLAGS := $(addprefix -I, $(COMMON_INCLUDES)) $(CFLAGS) -D_GNU_SOURCE \
26				 -DTEE_LOG_PATH_BASE=\"/data/vendor/log\" -DTEE_LOG_SUBFOLDER=\"hisi_logs/tee\" -DLIB_TEEC_VENDOR
27
28S_CFLAGS := $(CFLAGS) -Wextra -fstack-protector-all -s -Wl,-z,relro,-z,now,-z,noexecstack \
29			-fPIE -D_FORTIFY_SOURCE=2 -O2
30
31TARGET_LIB := libteec_vendor.so
32
33LIBTEEC_OUT_DIR := $(CURDIR)/out/libteec
34
35TEEC_SRCS := frameworks/libteec_vendor/tee_client_api.c \
36			 frameworks/libteec_vendor/tee_client_app_load.c \
37			 frameworks/libteec_vendor/tee_client_socket.c \
38			 frameworks/libteec_vendor/load_sec_file.c \
39			 frameworks/tee_file/tee_file.c
40
41TEEC_SRC_DIR := ${CURDIR}/../../
42TEEC_OBJ_DIR := $(LIBTEEC_OUT_DIR)
43
44TEEC_OBJS := $(patsubst %.c,$(TEEC_OBJ_DIR)/%.o, $(TEEC_SRCS))
45TEEC_CFLAGS := -DCONFIG_AGENT_FS -DCONFIG_SMART_LOCK_PLATFORM -DCONFIG_LOG_NO_PUBLIC
46TEEC_LIBRARY_LDFLAGS := -lhilog_shared -lsec_shared
47TEEC_LIBRARY_LDFLAGS += -L$(OUTDIR)
48TEEC_LIBRARY_LDFLAGS += -Wl,-z,max-page-size=4096
49TEEC_LIBRARY_LDFLAGS += -Wl,-z,separate-code
50
51# compile teecd
52TARGET_APP := teecd
53TEECD_OUT_DIR := $(CURDIR)/out/teecd
54
55TEECD_SRCS := services/teecd/src/tee_agent.c \
56			  services/teecd/src/tee_ca_daemon.c \
57			  services/teecd/src/misc_work_agent.c \
58			  services/teecd/src/fs_work_agent.c \
59			  services/teecd/src/secfile_load_agent.c \
60			  services/teecd/src/tee_load_dynamic.c \
61			  services/teecd/src/tee_ca_auth.c \
62			  services/authentication/tee_get_native_cert.c \
63			  services/authentication/tcu_authentication.c \
64			  services/authentication/tee_auth_common.c \
65			  frameworks/tee_file/tee_file.c
66
67TEECD_SRC_DIR := ${CURDIR}/../../
68TEECD_OBJ_DIR := $(TEECD_OUT_DIR)
69TEECD_OBJS := $(patsubst %.c,$(TEECD_OBJ_DIR)/%.o,$(TEECD_SRCS))
70
71TEECD_CFLAGS += -D_GNU_SOURCE
72TEECD_CFLAGS += -DCONFIG_AGENT_FS -DCONFIG_SMART_LOCK_PLATFORM -DCONFIG_BACKUP_PARTITION -DCONFIG_LOG_NO_PUBLIC
73TEECD_CFLAGS += -DDYNAMIC_DRV_DIR=\"/vendor/bin/tee_dynamic_drv/\"
74TEECD_CFLAGS += -DDYNAMIC_CRYPTO_DRV_DIR=\"/vendor/bin/tee_dynamic_drv/crypto/\"
75TEECD_CFLAGS += -DDYNAMIC_SRV_DIR=\"/vendor/bin/tee_dynamic_srv/\"
76TEECD_CFLAGS += -DDYNAMIC_SRV_DIR_LOAD_LATE
77TEECD_CFLAGS += -DTEE_LOAD_FROM_ROOTFS
78
79TEECD_FILE := $(TEECD_OUT_DIR)/$(TARGET_APP)
80TEECD_LDFLAGS := -L$(TEECD_OUT_DIR)/../../libteec
81TEECD_LDFLAGS += -lpthread
82TEECD_LDFLAGS += -lrt
83TEECD_LDFLAGS += -lhilog_shared -lsec_shared
84TEECD_LDFLAGS += -L$(OUTDIR)
85
86# compile tlogcat
87TARGET_TLOGCAT := tlogcat
88TLOGCAT_OUT_DIR := $(CURDIR)/out/tlogcat/
89TLOGCAT_FILES := services/tlogcat/src/tlogcat.c \
90				 services/tlogcat/src/sys_hilog_cfg.c \
91				 frameworks/tee_file/tee_file.c
92
93TLOGCAT_SRC_DIR := ${CURDIR}/../../
94TLOGCAT_OBJ_DIR := $(TLOGCAT_OUT_DIR)
95TLOGCAT_OBJS := $(patsubst %.c,$(TLOGCAT_OBJ_DIR)/%.o, $(TLOGCAT_FILES))
96TLOGCAT_FILE := $(TLOGCAT_OUT_DIR)/$(TARGET_TLOGCAT)
97
98TLOGCAT_CFLAGS += -DCONFIG_SMART_LOCK_PLATFORM -DCONFIG_LOG_NO_PUBLIC
99TLOGCAT_CFLAGS += -DTLOGCAT_SYS_LOG
100TLOGCAT_CFLAGS += -DLOG_PATH_TEE=\"/var/log/tee/\"
101TLOGCAT_CFLAGS += -DLOG_PATH_BASE=\"/var/log/\"
102TLOGCAT_CFLAGS += -DLOG_TMPPATH_TEE=\"/var/log/tee/_tmp/\"
103TLOGCAT_CFLAGS += -DAID_SYSTEM=0
104TLOGCAT_CFLAGS += -I$(CURDIR)/../../services/tlogcat/include
105
106TLOGCAT_LDFLAGS += -lhilog_shared -lsec_shared
107TLOGCAT_LDFLAGS += -L$(OUTDIR)
108
109# compile libsecurec.aarch64.a
110LIBC_OUT_DIR := $(CURDIR)/out/libsecurec
111LIBC_SEC := $(LIBC_OUT_DIR)/libsecurec.aarch64.a
112
113LIBC_FILE := \
114		vsprintf_s.c \
115		wmemmove_s.c \
116		strncat_s.c \
117		vsnprintf_s.c \
118		fwscanf_s.c \
119		scanf_s.c	\
120		strcat_s.c	\
121		sscanf_s.c	\
122		secureprintoutput_w.c	\
123		wmemcpy_s.c	\
124		wcsncat_s.c	\
125		secureprintoutput_a.c	\
126		secureinput_w.c	\
127		memcpy_s.c	\
128		fscanf_s.c	\
129		vswscanf_s.c	\
130		secureinput_a.c	\
131		sprintf_s.c	\
132		memmove_s.c	\
133		swscanf_s.c	\
134		snprintf_s.c	\
135		vscanf_s.c	\
136		vswprintf_s.c	\
137		wcscpy_s.c	\
138		vfwscanf_s.c	\
139		memset_s.c	\
140		wscanf_s.c	\
141		vwscanf_s.c	\
142		strtok_s.c	\
143		wcsncpy_s.c	\
144		vfscanf_s.c	\
145		vsscanf_s.c	\
146		wcstok_s.c	\
147		securecutil.c	\
148		gets_s.c	\
149		swprintf_s.c	\
150		strcpy_s.c	\
151		wcscat_s.c	\
152		strncpy_s.c
153
154LIBC_SRC_DIR := $(OSDRV_DIR)/components/secure_c/src
155LIBC_OBJ_DIR:= $(LIBC_OUT_DIR)
156
157LIBC_OBJS := $(patsubst %.c, $(LIBC_OBJ_DIR)/%.o, $(LIBC_FILE))
158
159LIBC_INCLUDES := -I${LIBC_SRC_DIR}/../include
160
161LIBC_CFLAGS += -D_GNU_SOURCE
162LIBC_LIBRARY := $(LIBC_OUT_DIR)/libsecurec.aarch64.a
163
164LIBC_LDFLAGS += -lpthread
165LIBC_LDFLAGS += -lrt
166
167$(LIBC_SEC): $(LIBC_OBJS)
168	@echo " AR $@"
169	$(VPREFIX)$(AR) rcs $@ $^
170
171$(LIBC_OBJ_DIR)/%.o: $(LIBC_SRC_DIR)/%.c
172	$(VPREFIX)mkdir -p $(dir $@)
173	@echo " CC $<"
174	$(VPREFIX)$(CC) $(S_CFLAGS) $(LIBC_INCLUDES) -c -fPIC $< -o $@
175
176.PHONY: all clean
177
178all: $(LIBC_SEC) $(TARGET_LIB) $(TARGET_APP) $(TARGET_TLOGCAT)
179$(TARGET_APP): $(LIBC_SEC)
180$(TARGET_TLOGCAT): $(LIBC_SEC)
181
182clean: out_clean
183
184$(TARGET_LIB): $(TEEC_OBJS)
185		@echo "  LINK	$@"
186		$(VPREFIX)$(CC) $(S_CFLAGS) -shared $(TEEC_CFLAGS) -o $@ $+ $(TEEC_LIBRARY_LDFLAGS)
187		mv $(CURDIR)/$(TARGET_LIB) $(LIBTEEC_OUT_DIR)
188		@echo ""
189
190$(LIBTEEC_OUT_DIR)/libteec.a: $(TEEC_OBJS)
191		@echo "  AR		$@"
192		$(VPREFIX)$(AR) rcs $@ $+
193
194$(TEEC_OBJ_DIR)/%.o: ${TEEC_SRC_DIR}/%.c
195	$(VPREFIX)mkdir -p $(dir $@)
196	@echo "  CC		$<"
197	$(VPREFIX)$(CC) $(S_CFLAGS) $(COMMON_CFLAGS) $(TEEC_CFLAGS) $(:) -c -fPIC $< -o $@
198
199$(TARGET_APP):$(TEECD_FILE)
200
201$(TEECD_FILE):$(TEECD_OBJS)
202	@echo " LINK $@"
203	$(VPREFIX)$(CC) $(S_CFLAGS) $(TEECD_CFLAGS) -o $@ $+ $(TEECD_LDFLAGS)
204
205$(TEECD_OBJ_DIR)/%.o: $(TEECD_SRC_DIR)/%.c
206	$(VPREFIX)mkdir -p $(dir $@)
207	@echo " CC $<"
208	$(VPREFIX)$(CC) $(S_CFLAGS) $(COMMON_CFLAGS) $(TEECD_CFLAGS) -c -fPIC $< -o $@
209
210# make tlogcat
211$(TARGET_TLOGCAT): $(TLOGCAT_FILE)
212
213$(TLOGCAT_FILE): $(TLOGCAT_OBJS)
214		@echo "		LINK	$@"
215		$(VPREFIX)$(CC) $(S_CFLAGS) $(TLOGCAT_CFLAGS) -o $@ $+ $(TLOGCAT_LDFLAGS)
216
217$(TLOGCAT_OBJ_DIR)/%.o: $(TLOGCAT_SRC_DIR)/%.c
218		$(VPREFIX)mkdir -p $(dir $@)
219		@echo "  CC		$<"
220	$(VPREFIX)$(CC) $(S_CFLAGS) $(COMMON_CFLAGS) $(TLOGCAT_CFLAGS) -c -fPIC $< -o $@
221
222# make clean
223out_clean:
224	$(RM) -rf $(CURDIR)/out
225
226