1# 2# Copyright (c) 2020-2025, Arm Limited. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6 7LIBEVLOG_PATH ?= contrib/libeventlog 8LIBEVLOG_NAME := eventlog 9 10LIBEVLOG_BUILD_DIR := $(BUILD_PLAT)/lib$(LIBEVLOG_NAME) 11LIBEVLOG_TARGET := $(LIB_DIR)/$(LIBEVLOG_NAME).a 12 13ifeq ($(DEBUG),1) 14LIBEVLOG_BUILD_TYPE := Debug 15else 16LIBEVLOG_BUILD_TYPE := Release 17endif 18 19LDLIBS := -l$(LIBEVLOG_NAME) $(LDLIBS) 20INCLUDES += -I$(LIBEVLOG_PATH)/include 21 22LIBEVLOG_DIRS_TO_CHECK += $(LIBEVLOG_PATH)/include 23 24# When using a TPM, adopt the TPM's hash algorithm for 25# measurements through the Event Log mechanism, ensuring 26# the TPM uses the same algorithm for measurements and 27# extends the PCR accordingly, allowing for comparison 28# between PCR value and Event Log measurements required 29# for attestation. 30ifdef MBOOT_TPM_HASH_ALG 31 MBOOT_EL_HASH_ALG := ${MBOOT_TPM_HASH_ALG} 32else 33 MBOOT_EL_HASH_ALG := sha256 34endif 35 36# Measured Boot hash algorithm. 37# SHA-256 (or stronger) is required for all devices that are TPM 2.0 compliant. 38ifeq (${MBOOT_EL_HASH_ALG}, sha512) 39 TPM_ALG_ID := TPM_ALG_SHA512 40 TCG_DIGEST_SIZE := 64U 41 CRYPTO_MD_ID := CRYPTO_MD_SHA512 42else ifeq (${MBOOT_EL_HASH_ALG}, sha384) 43 TPM_ALG_ID := TPM_ALG_SHA384 44 TCG_DIGEST_SIZE := 48U 45 CRYPTO_MD_ID := CRYPTO_MD_SHA384 46else 47 TPM_ALG_ID := TPM_ALG_SHA256 48 TCG_DIGEST_SIZE := 32U 49 CRYPTO_MD_ID := CRYPTO_MD_SHA256 50endif #MBOOT_EL_HASH_ALG 51 52# Set definitions for Measured Boot driver. 53$(eval $(call add_defines,\ 54 $(sort \ 55 TPM_ALG_ID \ 56 TCG_DIGEST_SIZE \ 57 EVENT_LOG_LEVEL \ 58 CRYPTO_MD_ID \ 59))) 60 61LIBEVLOG_CFLAGS ?= $(filter-out -I%,$(TF_CFLAGS)) 62LIBEVLOG_CFLAGS += $(patsubst %,-I%,$(call include-dirs,$(TF_CFLAGS))) 63 64$(LIBEVLOG_TARGET): $(LIB_DIR)/libc.a 65 $(s)echo " CM $@" 66 $(q)cmake -S $(LIBEVLOG_PATH) -B $(LIBEVLOG_BUILD_DIR) \ 67 -DHASH_ALGORITHM=$(call uppercase,$(MBOOT_EL_HASH_ALG)) \ 68 -DCMAKE_BUILD_TYPE=$(LIBEVLOG_BUILD_TYPE) \ 69 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(abspath $(BUILD_PLAT)/lib)" \ 70 -DCMAKE_SYSTEM_NAME=Generic \ 71 -DCMAKE_SYSTEM_VERSION= \ 72 -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ 73 -DCMAKE_C_COMPILER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-program),;)) \ 74 -DCMAKE_C_COMPILER_LAUNCHER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-wrapper),;)) \ 75 -DCMAKE_C_FLAGS=$(call escape-shell,$(LIBEVLOG_CFLAGS)) \ 76 -DDEBUG_BACKEND_HEADER="log_backend_tf.h" \ 77 $(if $(V),, --log-level=ERROR) > /dev/null 78 $(q)cmake --build $(LIBEVLOG_BUILD_DIR) -- $(if $(V),,-s) > /dev/null 79 80libraries: $(LIBEVLOG_TARGET) 81