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