xref: /rk3399_ARM-atf/drivers/measured_boot/event_log/event_log.mk (revision beedfb93ceda7af1d7d45c33df230d76bb68fc6f)
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
14ifeq ($(DEBUG),1)
15LIBEVLOG_BUILD_TYPE	:= Debug
16else
17LIBEVLOG_BUILD_TYPE	:= Release
18endif
19
20LIBEVLOG_LIBS		:= $(LIBEVLOG_TARGET)
21LIBEVLOG_INCLUDE_DIRS	:= $(LIBEVLOG_INSTALL_DIR)/include
22
23LIBEVLOG_DIRS_TO_CHECK	+= $(LIBEVLOG_INSTALL_DIR)/include
24
25# When using a TPM, adopt the TPM's hash algorithm for
26# measurements through the Event Log mechanism, ensuring
27# the TPM uses the same algorithm for measurements and
28# extends the PCR accordingly, allowing for comparison
29# between PCR value and Event Log measurements required
30# for attestation.
31ifdef MBOOT_TPM_HASH_ALG
32    MBOOT_EL_HASH_ALG		:=	${MBOOT_TPM_HASH_ALG}
33else
34    MBOOT_EL_HASH_ALG		:=	sha256
35endif
36
37# Measured Boot hash algorithm.
38# SHA-256 (or stronger) is required for all devices that are TPM 2.0 compliant.
39ifeq (${MBOOT_EL_HASH_ALG}, sha512)
40    TPM_ALG_ID			:=	TPM_ALG_SHA512
41    TCG_DIGEST_SIZE		:=	64U
42    CRYPTO_MD_ID		:=	CRYPTO_MD_SHA512
43else ifeq (${MBOOT_EL_HASH_ALG}, sha384)
44    TPM_ALG_ID			:=	TPM_ALG_SHA384
45    TCG_DIGEST_SIZE		:=	48U
46    CRYPTO_MD_ID		:=	CRYPTO_MD_SHA384
47else
48    TPM_ALG_ID			:=	TPM_ALG_SHA256
49    TCG_DIGEST_SIZE		:=	32U
50    CRYPTO_MD_ID		:=	CRYPTO_MD_SHA256
51endif #MBOOT_EL_HASH_ALG
52
53# Set definitions for Measured Boot driver.
54$(eval $(call add_defines,\
55    $(sort \
56        TPM_ALG_ID \
57        TCG_DIGEST_SIZE \
58        EVENT_LOG_LEVEL \
59        CRYPTO_MD_ID \
60)))
61
62LIBEVLOG_CFLAGS ?= $(filter-out -I%,$(TF_CFLAGS))
63LIBEVLOG_CFLAGS += $(patsubst %,-I%,$(call include-dirs,$(TF_CFLAGS)))
64
65$(LIBEVLOG_INSTALL_DIR)/% $(LIBEVLOG_INSTALL_DIR)/%/: $(LIBEVLOG_TARGET) ;
66$(LIBEVLOG_TARGET) $(LIBEVLOG_INSTALL_DIR)/ &: $(LIB_DIR)/libc.a
67	$(s)echo "  CM      $@"
68	$(q)cmake -S $(LIBEVLOG_PATH) -B $(LIBEVLOG_BUILD_DIR) \
69		-DHASH_ALGORITHM=$(call uppercase,$(MBOOT_EL_HASH_ALG)) \
70		-DCMAKE_BUILD_TYPE=$(LIBEVLOG_BUILD_TYPE) \
71		-DCMAKE_SYSTEM_NAME=Generic \
72		-DCMAKE_SYSTEM_VERSION= \
73		-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
74		-DCMAKE_C_COMPILER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-program),;)) \
75		-DCMAKE_C_COMPILER_LAUNCHER=$(call shell-quote,$(call shell-join,$($(ARCH)-cc-wrapper),;)) \
76		-DCMAKE_C_FLAGS=$(call escape-shell,$(LIBEVLOG_CFLAGS)) \
77		-DDEBUG_BACKEND_HEADER="log_backend_tf.h" \
78		$(if $(V),, --log-level=ERROR) > /dev/null
79	$(q)cmake --build $(LIBEVLOG_BUILD_DIR) -- $(if $(V),,-s) > /dev/null
80	$(q)cmake --install $(LIBEVLOG_BUILD_DIR) \
81		--prefix $(LIBEVLOG_INSTALL_DIR) \
82		--config $(LIBEVLOG_BUILD_TYPE) > /dev/null
83