1d89bec83SSandrine Bailleux# 236e3d877SAbhi.Singh# Copyright (c) 2020-2025, Arm Limited. All rights reserved. 3d89bec83SSandrine Bailleux# 4d89bec83SSandrine Bailleux# SPDX-License-Identifier: BSD-3-Clause 5d89bec83SSandrine Bailleux# 6d89bec83SSandrine Bailleux 7b67e9846SHarrison MutaiLIBEVLOG_PATH ?= contrib/libeventlog 8b67e9846SHarrison MutaiLIBEVLOG_NAME := eventlog 9cb03020eSHarrison Mutai 10b67e9846SHarrison MutaiLIBEVLOG_BUILD_DIR := $(BUILD_PLAT)/lib$(LIBEVLOG_NAME) 11*76d5d32fSHarrison MutaiLIBEVLOG_INSTALL_DIR := $(BUILD_PLAT)/$(LIBEVLOG_NAME)-install 12*76d5d32fSHarrison MutaiLIBEVLOG_TARGET := $(LIBEVLOG_INSTALL_DIR)/lib/lib$(LIBEVLOG_NAME).a 13b67e9846SHarrison Mutai 14b67e9846SHarrison Mutaiifeq ($(DEBUG),1) 15b67e9846SHarrison MutaiLIBEVLOG_BUILD_TYPE := Debug 16b67e9846SHarrison Mutaielse 17b67e9846SHarrison MutaiLIBEVLOG_BUILD_TYPE := Release 18b67e9846SHarrison Mutaiendif 19b67e9846SHarrison Mutai 2003032a95SChris KayLIBEVLOG_LIBS := $(LIBEVLOG_TARGET) 21*76d5d32fSHarrison MutaiLIBEVLOG_INCLUDE_DIRS := $(LIBEVLOG_INSTALL_DIR)/include 22b67e9846SHarrison Mutai 23*76d5d32fSHarrison MutaiLIBEVLOG_DIRS_TO_CHECK += $(LIBEVLOG_INSTALL_DIR)/include 24d89bec83SSandrine Bailleux 2536e3d877SAbhi.Singh# When using a TPM, adopt the TPM's hash algorithm for 2636e3d877SAbhi.Singh# measurements through the Event Log mechanism, ensuring 2736e3d877SAbhi.Singh# the TPM uses the same algorithm for measurements and 2836e3d877SAbhi.Singh# extends the PCR accordingly, allowing for comparison 2936e3d877SAbhi.Singh# between PCR value and Event Log measurements required 3036e3d877SAbhi.Singh# for attestation. 3136e3d877SAbhi.Singhifdef MBOOT_TPM_HASH_ALG 3236e3d877SAbhi.Singh MBOOT_EL_HASH_ALG := ${MBOOT_TPM_HASH_ALG} 3378da42a5Slaurenw-armelse 3478da42a5Slaurenw-arm MBOOT_EL_HASH_ALG := sha256 3578da42a5Slaurenw-armendif 36d89bec83SSandrine Bailleux 3736e3d877SAbhi.Singh# Measured Boot hash algorithm. 3836e3d877SAbhi.Singh# SHA-256 (or stronger) is required for all devices that are TPM 2.0 compliant. 3978da42a5Slaurenw-armifeq (${MBOOT_EL_HASH_ALG}, sha512) 40d89bec83SSandrine Bailleux TPM_ALG_ID := TPM_ALG_SHA512 41d89bec83SSandrine Bailleux TCG_DIGEST_SIZE := 64U 42b67e9846SHarrison Mutai CRYPTO_MD_ID := CRYPTO_MD_SHA512 4378da42a5Slaurenw-armelse ifeq (${MBOOT_EL_HASH_ALG}, sha384) 44d89bec83SSandrine Bailleux TPM_ALG_ID := TPM_ALG_SHA384 45d89bec83SSandrine Bailleux TCG_DIGEST_SIZE := 48U 46b67e9846SHarrison Mutai CRYPTO_MD_ID := CRYPTO_MD_SHA384 47d89bec83SSandrine Bailleuxelse 48d89bec83SSandrine Bailleux TPM_ALG_ID := TPM_ALG_SHA256 49d89bec83SSandrine Bailleux TCG_DIGEST_SIZE := 32U 50b67e9846SHarrison Mutai CRYPTO_MD_ID := CRYPTO_MD_SHA256 5178da42a5Slaurenw-armendif #MBOOT_EL_HASH_ALG 52d89bec83SSandrine Bailleux 5314db963fSManish V Badarkhe# Set definitions for Measured Boot driver. 54d89bec83SSandrine Bailleux$(eval $(call add_defines,\ 55d89bec83SSandrine Bailleux $(sort \ 56d89bec83SSandrine Bailleux TPM_ALG_ID \ 57d89bec83SSandrine Bailleux TCG_DIGEST_SIZE \ 58d89bec83SSandrine Bailleux EVENT_LOG_LEVEL \ 59b67e9846SHarrison Mutai CRYPTO_MD_ID \ 60d89bec83SSandrine Bailleux))) 61d89bec83SSandrine Bailleux 62b67e9846SHarrison MutaiLIBEVLOG_CFLAGS ?= $(filter-out -I%,$(TF_CFLAGS)) 63b67e9846SHarrison MutaiLIBEVLOG_CFLAGS += $(patsubst %,-I%,$(call include-dirs,$(TF_CFLAGS))) 64d89bec83SSandrine Bailleux 65*76d5d32fSHarrison Mutai$(LIBEVLOG_INSTALL_DIR)/% $(LIBEVLOG_INSTALL_DIR)/%/: $(LIBEVLOG_TARGET) ; 66*76d5d32fSHarrison Mutai$(LIBEVLOG_TARGET) $(LIBEVLOG_INSTALL_DIR)/ &: $(LIB_DIR)/libc.a 67b67e9846SHarrison Mutai $(s)echo " CM $@" 68b67e9846SHarrison Mutai $(q)cmake -S $(LIBEVLOG_PATH) -B $(LIBEVLOG_BUILD_DIR) \ 69b67e9846SHarrison Mutai -DHASH_ALGORITHM=$(call uppercase,$(MBOOT_EL_HASH_ALG)) \ 70b67e9846SHarrison Mutai -DCMAKE_BUILD_TYPE=$(LIBEVLOG_BUILD_TYPE) \ 713dc41a61SChris Kay -DCMAKE_SYSTEM_NAME=Generic \ 723dc41a61SChris Kay -DCMAKE_SYSTEM_VERSION= \ 73b67e9846SHarrison Mutai -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ 74fcada3d5SChris Kay -DCMAKE_C_COMPILER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-program),;)) \ 75f162e3abSChris Kay -DCMAKE_C_COMPILER_LAUNCHER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-wrapper),;)) \ 76b67e9846SHarrison Mutai -DCMAKE_C_FLAGS=$(call escape-shell,$(LIBEVLOG_CFLAGS)) \ 77b67e9846SHarrison Mutai -DDEBUG_BACKEND_HEADER="log_backend_tf.h" \ 78b67e9846SHarrison Mutai $(if $(V),, --log-level=ERROR) > /dev/null 79b67e9846SHarrison Mutai $(q)cmake --build $(LIBEVLOG_BUILD_DIR) -- $(if $(V),,-s) > /dev/null 80*76d5d32fSHarrison Mutai $(q)cmake --install $(LIBEVLOG_BUILD_DIR) \ 81*76d5d32fSHarrison Mutai --prefix $(LIBEVLOG_INSTALL_DIR) \ 82*76d5d32fSHarrison Mutai --config $(LIBEVLOG_BUILD_TYPE) > /dev/null 83