1e656c62eSopenharmony_ci# Copyright (C) 2022 Huawei Technologies Co., Ltd. 2e656c62eSopenharmony_ci# Licensed under the Mulan PSL v2. 3e656c62eSopenharmony_ci# You can use this software according to the terms and conditions of the Mulan PSL v2. 4e656c62eSopenharmony_ci# You may obtain a copy of Mulan PSL v2 at: 5e656c62eSopenharmony_ci# http://license.coscl.org.cn/MulanPSL2 6e656c62eSopenharmony_ci# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 7e656c62eSopenharmony_ci# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 8e656c62eSopenharmony_ci# PURPOSE. 9e656c62eSopenharmony_ci# See the Mulan PSL v2 for more details. 10e656c62eSopenharmony_ci 11e656c62eSopenharmony_ciinclude flags.mk 12e656c62eSopenharmony_ci# common flags 13e656c62eSopenharmony_ciCOMMON_INCLUDES := ${CURDIR}/../../interfaces/kits/c/include \ 14e656c62eSopenharmony_ci ${CURDIR}/../../services/teecd/include \ 15e656c62eSopenharmony_ci ${CURDIR}/../../services/teecd/include/standard \ 16e656c62eSopenharmony_ci ${CURDIR}/../../services/authentication \ 17e656c62eSopenharmony_ci ${CURDIR}/../../frameworks/include/standard/teec_vendor \ 18e656c62eSopenharmony_ci ${CURDIR}/../../frameworks/include/standard \ 19e656c62eSopenharmony_ci ${CURDIR}/../../frameworks/include \ 20e656c62eSopenharmony_ci ${CURDIR}/../../frameworks/libteec_vendor \ 21e656c62eSopenharmony_ci ${CURDIR}/../../../third_party_bounds_checking_function/include 22e656c62eSopenharmony_ciCOMMON_CFLAGS := $(addprefix -I, $(COMMON_INCLUDES)) $(CFLAGS) -D_GNU_SOURCE \ 23e656c62eSopenharmony_ci -DTEE_LOG_PATH_BASE=\"/var/log\" -DLIB_TEEC_VENDOR -DCONFIG_TEE_PRIVATE_LOGFILE 24e656c62eSopenharmony_ci 25e656c62eSopenharmony_ciS_CFLAGS := -Wextra -fstack-protector-all -s -Wl,-z,relro,-z,now,-z,noexecstack \ 26e656c62eSopenharmony_ci -fPIE -D_FORTIFY_SOURCE=2 -O2 27e656c62eSopenharmony_ci 28e656c62eSopenharmony_ci# compile teecd 29e656c62eSopenharmony_ciTARGET_APP := teecd 30e656c62eSopenharmony_ciTEECD_OUT_DIR := $(CURDIR)/out/teecd 31e656c62eSopenharmony_ci 32e656c62eSopenharmony_ciTEECD_SRCS := services/teecd/src/tee_agent.c \ 33e656c62eSopenharmony_ci services/teecd/src/tee_ca_daemon.c \ 34e656c62eSopenharmony_ci services/teecd/src/late_init_agent.c \ 35e656c62eSopenharmony_ci services/teecd/src/misc_work_agent.c \ 36e656c62eSopenharmony_ci services/teecd/src/fs_work_agent.c \ 37e656c62eSopenharmony_ci services/teecd/src/secfile_load_agent.c \ 38e656c62eSopenharmony_ci services/teecd/src/tee_load_dynamic_drv.c \ 39e656c62eSopenharmony_ci services/teecd/src/tee_ca_auth.c \ 40e656c62eSopenharmony_ci services/authentication/tee_get_native_cert.c \ 41e656c62eSopenharmony_ci services/authentication/tcu_authentication.c \ 42e656c62eSopenharmony_ci services/authentication/tee_auth_common.c 43e656c62eSopenharmony_ci 44e656c62eSopenharmony_ciTEECD_SRC_DIR := ${CURDIR}/../../ 45e656c62eSopenharmony_ciTEECD_OBJ_DIR := $(TEECD_OUT_DIR) 46e656c62eSopenharmony_ciTEECD_OBJS := $(patsubst %.c,$(TEECD_OBJ_DIR)/%.o,$(TEECD_SRCS)) 47e656c62eSopenharmony_ci 48e656c62eSopenharmony_ciTEECD_CFLAGS += -D_GNU_SOURCE 49e656c62eSopenharmony_ciTEECD_CFLAGS += -DCONFIG_ARMPC_PLATFORM -DCONFIG_AGENT_FS 50e656c62eSopenharmony_ci 51e656c62eSopenharmony_ciTEECD_FILE := $(TEECD_OUT_DIR)/$(TARGET_APP) 52e656c62eSopenharmony_ciTEECD_LDFLAGS := -L$(TEECD_OUT_DIR)/../../libteec 53e656c62eSopenharmony_ciTEECD_LDFLAGS += -lpthread 54e656c62eSopenharmony_ciTEECD_LDFLAGS += -lrt 55e656c62eSopenharmony_ciTEECD_LDFLAGS += $(CURDIR)/out/libsecurec/libsecurec.aarch64.a 56e656c62eSopenharmony_ci 57e656c62eSopenharmony_ci# compile libsecurec.aarch64.a 58e656c62eSopenharmony_ciLIBC_OUT_DIR := $(CURDIR)/out/libsecurec 59e656c62eSopenharmony_ciLIBC_SEC := $(LIBC_OUT_DIR)/libsecurec.aarch64.a 60e656c62eSopenharmony_ci 61e656c62eSopenharmony_ciLIBC_FILE := vsprintf_s.c \ 62e656c62eSopenharmony_ci wmemmove_s.c \ 63e656c62eSopenharmony_ci strncat_s.c \ 64e656c62eSopenharmony_ci vsnprintf_s.c \ 65e656c62eSopenharmony_ci fwscanf_s.c \ 66e656c62eSopenharmony_ci scanf_s.c \ 67e656c62eSopenharmony_ci strcat_s.c \ 68e656c62eSopenharmony_ci sscanf_s.c \ 69e656c62eSopenharmony_ci secureprintoutput_w.c \ 70e656c62eSopenharmony_ci wmemcpy_s.c \ 71e656c62eSopenharmony_ci wcsncat_s.c \ 72e656c62eSopenharmony_ci secureprintoutput_a.c \ 73e656c62eSopenharmony_ci secureinput_w.c \ 74e656c62eSopenharmony_ci memcpy_s.c \ 75e656c62eSopenharmony_ci fscanf_s.c \ 76e656c62eSopenharmony_ci vswscanf_s.c \ 77e656c62eSopenharmony_ci secureinput_a.c \ 78e656c62eSopenharmony_ci sprintf_s.c \ 79e656c62eSopenharmony_ci memmove_s.c \ 80e656c62eSopenharmony_ci swscanf_s.c \ 81e656c62eSopenharmony_ci snprintf_s.c \ 82e656c62eSopenharmony_ci vscanf_s.c \ 83e656c62eSopenharmony_ci vswprintf_s.c \ 84e656c62eSopenharmony_ci wcscpy_s.c \ 85e656c62eSopenharmony_ci vfwscanf_s.c \ 86e656c62eSopenharmony_ci memset_s.c \ 87e656c62eSopenharmony_ci wscanf_s.c \ 88e656c62eSopenharmony_ci vwscanf_s.c \ 89e656c62eSopenharmony_ci strtok_s.c \ 90e656c62eSopenharmony_ci wcsncpy_s.c \ 91e656c62eSopenharmony_ci vfscanf_s.c \ 92e656c62eSopenharmony_ci vsscanf_s.c \ 93e656c62eSopenharmony_ci wcstok_s.c \ 94e656c62eSopenharmony_ci securecutil.c \ 95e656c62eSopenharmony_ci gets_s.c \ 96e656c62eSopenharmony_ci swprintf_s.c \ 97e656c62eSopenharmony_ci strcpy_s.c \ 98e656c62eSopenharmony_ci wcscat_s.c \ 99e656c62eSopenharmony_ci strncpy_s.c 100e656c62eSopenharmony_ci 101e656c62eSopenharmony_ciLIBC_SRC_DIR := $(CURDIR)/../../../third_party_bounds_checking_function/src 102e656c62eSopenharmony_ciLIBC_OBJ_DIR:= $(LIBC_OUT_DIR) 103e656c62eSopenharmony_ci 104e656c62eSopenharmony_ciLIBC_OBJS := $(patsubst %.c, $(LIBC_OBJ_DIR)/%.o, $(LIBC_FILE)) 105e656c62eSopenharmony_ci 106e656c62eSopenharmony_ciLIBC_INCLUDES := -I${LIBC_SRC_DIR}/../include 107e656c62eSopenharmony_ci 108e656c62eSopenharmony_ciLIBC_CFLAGS += -D_GNU_SOURCE 109e656c62eSopenharmony_ciLIBC_LIBRARY := $(LIBC_OUT_DIR)/libsecurec.aarch64.a 110e656c62eSopenharmony_ci 111e656c62eSopenharmony_ciLIBC_LDFLAGS += -lpthread 112e656c62eSopenharmony_ciLIBC_LDFLAGS += -lrt 113e656c62eSopenharmony_ci 114e656c62eSopenharmony_ci$(LIBC_SEC): $(LIBC_OBJS) 115e656c62eSopenharmony_ci @echo " AR $@" 116e656c62eSopenharmony_ci $(VPREFIX)$(AR) rcs $@ $^ 117e656c62eSopenharmony_ci 118e656c62eSopenharmony_ci$(LIBC_OBJ_DIR)/%.o: $(LIBC_SRC_DIR)/%.c 119e656c62eSopenharmony_ci $(VPREFIX)mkdir -p $(dir $@) 120e656c62eSopenharmony_ci @echo " CC $<" 121e656c62eSopenharmony_ci $(VPREFIX)$(CC) $(S_CFLAGS) $(LIBC_INCLUDES) $(LIBC_LDFLAGS) -c $< -o $@ 122e656c62eSopenharmony_ci 123e656c62eSopenharmony_ci.PHONY: all clean 124e656c62eSopenharmony_ci 125e656c62eSopenharmony_ciall: $(LIBC_SEC) $(TARGET_APP) 126e656c62eSopenharmony_ci$(TARGET_APP): $(LIBC_SEC) 127e656c62eSopenharmony_ci 128e656c62eSopenharmony_ciclean: out_clean 129e656c62eSopenharmony_ci 130e656c62eSopenharmony_ci$(TARGET_APP):$(TEECD_FILE) 131e656c62eSopenharmony_ci 132e656c62eSopenharmony_ci$(TEECD_FILE):$(TEECD_OBJS) 133e656c62eSopenharmony_ci @echo " LINK $@" 134e656c62eSopenharmony_ci $(VPREFIX)$(CC) $(S_CFLAGS) $(TEECD_CFLAGS) -o $@ $+ $(TEECD_LDFLAGS) 135e656c62eSopenharmony_ci 136e656c62eSopenharmony_ci$(TEECD_OBJ_DIR)/%.o: $(TEECD_SRC_DIR)/%.c 137e656c62eSopenharmony_ci $(VPREFIX)mkdir -p $(dir $@) 138e656c62eSopenharmony_ci @echo " CC $<" 139e656c62eSopenharmony_ci $(VPREFIX)$(CC) $(S_CFLAGS) $(COMMON_CFLAGS) $(COMMON_INCLUDES) $(TEECD_CFLAGS) -c $< -o $@ $(TEECD_LDFLAGS) 140e656c62eSopenharmony_ci 141e656c62eSopenharmony_ci# make clean 142e656c62eSopenharmony_ciout_clean: 143e656c62eSopenharmony_ci $(RM) -rf $(CURDIR)/out 144e656c62eSopenharmony_ci 145