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