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 11include flags.mk 12# common flags 13COMMON_INCLUDES := ${CURDIR}/../../interfaces/kits/c/include \ 14 ${CURDIR}/../../services/teecd/include \ 15 ${CURDIR}/../../services/teecd/include/standard \ 16 ${CURDIR}/../../services/authentication \ 17 ${CURDIR}/../../frameworks/include/standard/teec_vendor \ 18 ${CURDIR}/../../frameworks/include/standard \ 19 ${CURDIR}/../../frameworks/include \ 20 ${CURDIR}/../../frameworks/libteec_vendor \ 21 ${CURDIR}/../../../third_party_bounds_checking_function/include 22COMMON_CFLAGS := $(addprefix -I, $(COMMON_INCLUDES)) $(CFLAGS) -D_GNU_SOURCE \ 23 -DTEE_LOG_PATH_BASE=\"/var/log\" -DLIB_TEEC_VENDOR -DCONFIG_TEE_PRIVATE_LOGFILE 24 25S_CFLAGS := -Wextra -fstack-protector-all -s -Wl,-z,relro,-z,now,-z,noexecstack \ 26 -fPIE -D_FORTIFY_SOURCE=2 -O2 27 28# compile teecd 29TARGET_APP := teecd 30TEECD_OUT_DIR := $(CURDIR)/out/teecd 31 32TEECD_SRCS := services/teecd/src/tee_agent.c \ 33 services/teecd/src/tee_ca_daemon.c \ 34 services/teecd/src/late_init_agent.c \ 35 services/teecd/src/misc_work_agent.c \ 36 services/teecd/src/fs_work_agent.c \ 37 services/teecd/src/secfile_load_agent.c \ 38 services/teecd/src/tee_load_dynamic_drv.c \ 39 services/teecd/src/tee_ca_auth.c \ 40 services/authentication/tee_get_native_cert.c \ 41 services/authentication/tcu_authentication.c \ 42 services/authentication/tee_auth_common.c 43 44TEECD_SRC_DIR := ${CURDIR}/../../ 45TEECD_OBJ_DIR := $(TEECD_OUT_DIR) 46TEECD_OBJS := $(patsubst %.c,$(TEECD_OBJ_DIR)/%.o,$(TEECD_SRCS)) 47 48TEECD_CFLAGS += -D_GNU_SOURCE 49TEECD_CFLAGS += -DCONFIG_ARMPC_PLATFORM -DCONFIG_AGENT_FS 50 51TEECD_FILE := $(TEECD_OUT_DIR)/$(TARGET_APP) 52TEECD_LDFLAGS := -L$(TEECD_OUT_DIR)/../../libteec 53TEECD_LDFLAGS += -lpthread 54TEECD_LDFLAGS += -lrt 55TEECD_LDFLAGS += $(CURDIR)/out/libsecurec/libsecurec.aarch64.a 56 57# compile libsecurec.aarch64.a 58LIBC_OUT_DIR := $(CURDIR)/out/libsecurec 59LIBC_SEC := $(LIBC_OUT_DIR)/libsecurec.aarch64.a 60 61LIBC_FILE := vsprintf_s.c \ 62 wmemmove_s.c \ 63 strncat_s.c \ 64 vsnprintf_s.c \ 65 fwscanf_s.c \ 66 scanf_s.c \ 67 strcat_s.c \ 68 sscanf_s.c \ 69 secureprintoutput_w.c \ 70 wmemcpy_s.c \ 71 wcsncat_s.c \ 72 secureprintoutput_a.c \ 73 secureinput_w.c \ 74 memcpy_s.c \ 75 fscanf_s.c \ 76 vswscanf_s.c \ 77 secureinput_a.c \ 78 sprintf_s.c \ 79 memmove_s.c \ 80 swscanf_s.c \ 81 snprintf_s.c \ 82 vscanf_s.c \ 83 vswprintf_s.c \ 84 wcscpy_s.c \ 85 vfwscanf_s.c \ 86 memset_s.c \ 87 wscanf_s.c \ 88 vwscanf_s.c \ 89 strtok_s.c \ 90 wcsncpy_s.c \ 91 vfscanf_s.c \ 92 vsscanf_s.c \ 93 wcstok_s.c \ 94 securecutil.c \ 95 gets_s.c \ 96 swprintf_s.c \ 97 strcpy_s.c \ 98 wcscat_s.c \ 99 strncpy_s.c 100 101LIBC_SRC_DIR := $(CURDIR)/../../../third_party_bounds_checking_function/src 102LIBC_OBJ_DIR:= $(LIBC_OUT_DIR) 103 104LIBC_OBJS := $(patsubst %.c, $(LIBC_OBJ_DIR)/%.o, $(LIBC_FILE)) 105 106LIBC_INCLUDES := -I${LIBC_SRC_DIR}/../include 107 108LIBC_CFLAGS += -D_GNU_SOURCE 109LIBC_LIBRARY := $(LIBC_OUT_DIR)/libsecurec.aarch64.a 110 111LIBC_LDFLAGS += -lpthread 112LIBC_LDFLAGS += -lrt 113 114$(LIBC_SEC): $(LIBC_OBJS) 115 @echo " AR $@" 116 $(VPREFIX)$(AR) rcs $@ $^ 117 118$(LIBC_OBJ_DIR)/%.o: $(LIBC_SRC_DIR)/%.c 119 $(VPREFIX)mkdir -p $(dir $@) 120 @echo " CC $<" 121 $(VPREFIX)$(CC) $(S_CFLAGS) $(LIBC_INCLUDES) $(LIBC_LDFLAGS) -c $< -o $@ 122 123.PHONY: all clean 124 125all: $(LIBC_SEC) $(TARGET_APP) 126$(TARGET_APP): $(LIBC_SEC) 127 128clean: out_clean 129 130$(TARGET_APP):$(TEECD_FILE) 131 132$(TEECD_FILE):$(TEECD_OBJS) 133 @echo " LINK $@" 134 $(VPREFIX)$(CC) $(S_CFLAGS) $(TEECD_CFLAGS) -o $@ $+ $(TEECD_LDFLAGS) 135 136$(TEECD_OBJ_DIR)/%.o: $(TEECD_SRC_DIR)/%.c 137 $(VPREFIX)mkdir -p $(dir $@) 138 @echo " CC $<" 139 $(VPREFIX)$(CC) $(S_CFLAGS) $(COMMON_CFLAGS) $(COMMON_INCLUDES) $(TEECD_CFLAGS) -c $< -o $@ $(TEECD_LDFLAGS) 140 141# make clean 142out_clean: 143 $(RM) -rf $(CURDIR)/out 144 145