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_INSTALL_DIR := $(BUILD_PLAT)/$(LIBEVLOG_NAME)-install 12LIBEVLOG_TARGET := $(LIBEVLOG_INSTALL_DIR)/lib/lib$(LIBEVLOG_NAME).a 13 14# We currently support up to SHA512, use that as a sane default that platforms 15# may override. 16LIBEVLOG_MAX_DIGEST_SIZE ?= 64U 17LIBEVLOG_MAX_HASH_COUNT ?= 3U 18 19ifeq ($(DEBUG),1) 20LIBEVLOG_BUILD_TYPE := Debug 21else 22LIBEVLOG_BUILD_TYPE := Release 23endif 24 25LIBEVLOG_LIBS := $(LIBEVLOG_TARGET) 26LIBEVLOG_INCLUDE_DIRS := $(LIBEVLOG_INSTALL_DIR)/include 27 28LIBEVLOG_DIRS_TO_CHECK += $(LIBEVLOG_INSTALL_DIR)/include 29 30# When using a TPM, adopt the TPM's hash algorithm for 31# measurements through the Event Log mechanism, ensuring 32# the TPM uses the same algorithm for measurements and 33# extends the PCR accordingly, allowing for comparison 34# between PCR value and Event Log measurements required 35# for attestation. 36ifdef MBOOT_TPM_HASH_ALG 37 MBOOT_EL_HASH_ALG := ${MBOOT_TPM_HASH_ALG} 38endif 39 40# Legacy support only. Do NOT set by default. 41# Valid only if explicitly provided by old build environments. 42ifdef MBOOT_EL_HASH_ALG 43$(warning MBOOT_EL_HASH_ALG is supported solely for backward compatibility. \ 44Please configure the hash algorithm at runtime instead.) 45ifeq ($(MBOOT_EL_HASH_ALG),sha256) 46 TPM_ALG_ID := TPM_ALG_SHA256 47else ifeq ($(MBOOT_EL_HASH_ALG),sha384) 48 TPM_ALG_ID := TPM_ALG_SHA384 49else ifeq ($(MBOOT_EL_HASH_ALG),sha512) 50 TPM_ALG_ID := TPM_ALG_SHA512 51else 52 $(error Unsupported legacy MBOOT_EL_HASH_ALG '$(MBOOT_EL_HASH_ALG)'. Expected: sha256, sha384, sha512) 53endif 54 55LIBEVLOG_MAX_HASH_COUNT := 1U 56$(eval $(call add_define,TPM_ALG_ID)) 57endif # MBOOT_EL_HASH_ALG 58 59LIBEVLOG_CFLAGS ?= $(filter-out -I%,$(TF_CFLAGS)) 60LIBEVLOG_CFLAGS += $(patsubst %,-I%,$(call include-dirs,$(TF_CFLAGS))) 61 62$(LIBEVLOG_INSTALL_DIR)/% $(LIBEVLOG_INSTALL_DIR)/%/: $(LIBEVLOG_TARGET) ; 63$(LIBEVLOG_TARGET) $(LIBEVLOG_INSTALL_DIR)/ &: $(LIB_DIR)/libc.a 64 $(s)echo " CM $@" 65 $(q)cmake -S $(LIBEVLOG_PATH) -B $(LIBEVLOG_BUILD_DIR) \ 66 -DCMAKE_BUILD_TYPE=$(LIBEVLOG_BUILD_TYPE) \ 67 -DCMAKE_SYSTEM_NAME=Generic \ 68 -DCMAKE_SYSTEM_VERSION= \ 69 -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ 70 -DCMAKE_C_COMPILER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-program),;)) \ 71 -DCMAKE_C_COMPILER_LAUNCHER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-wrapper),;)) \ 72 -DCMAKE_C_FLAGS=$(call escape-shell,$(LIBEVLOG_CFLAGS)) \ 73 -DDEBUG_BACKEND_HEADER="log_backend_tf.h" \ 74 -DMAX_DIGEST_SIZE=${LIBEVLOG_MAX_DIGEST_SIZE} \ 75 -DMAX_HASH_COUNT=${LIBEVLOG_MAX_HASH_COUNT} \ 76 $(if $(V),, --log-level=ERROR) > /dev/null 77 $(q)cmake --build $(LIBEVLOG_BUILD_DIR) -- $(if $(V),,-s) > /dev/null 78 $(q)cmake --install $(LIBEVLOG_BUILD_DIR) \ 79 --prefix $(LIBEVLOG_INSTALL_DIR) \ 80 --config $(LIBEVLOG_BUILD_TYPE) > /dev/null 81