xref: /rk3399_ARM-atf/drivers/measured_boot/event_log/event_log.mk (revision a873d26f2b226f00b81babbb452652bf08b2e5ee)
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