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