1# 2# Copyright (c) 2025, Arm Limited. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6 7LIBTPM2_PATH ?= contrib/libtpm 8LIBTPM2_NAME := tpm2 9 10LIBTPM2_BUILD_DIR := $(BUILD_PLAT)/lib$(LIBTPM2_NAME) 11LIBTPM2_TARGET := $(LIB_DIR)/$(LIBTPM2_NAME).a 12 13LDLIBS := -l$(LIBTPM2_NAME) $(LDLIBS) 14INCLUDES += -I${LIBTPM2_PATH}/include 15 16ifeq ($(DEBUG),1) 17LIBTPM2_BUILD_TYPE := Debug 18else 19LIBTPM2_BUILD_TYPE := Release 20endif 21 22# TPM Hash algorithm, used during Measured Boot 23# currently only accepts SHA-256 24ifeq (${MBOOT_TPM_HASH_ALG}, sha256) 25 TPM_ALG_ID := TPM_ALG_SHA256 26 TCG_DIGEST_SIZE := 32U 27else 28 $(error "The selected MBOOT_TPM_HASH_ALG is invalid.") 29endif #MBOOT_TPM_HASH_ALG 30 31$(eval $(call add_defines,\ 32 $(sort \ 33 TCG_DIGEST_SIZE \ 34))) 35 36ifeq (${TPM_INTERFACE}, FIFO_SPI) 37 $(eval $(call add_define,TPM_INTERFACE_FIFO_SPI)) 38else 39 $(error "The selected TPM_INTERFACE is invalid.") 40endif #TPM_INTERFACE 41 42LIBTPM2_CFLAGS ?= $(foreach f,$(TF_CFLAGS), \ 43 $(if $(findstring -I,$(f)), \ 44 -I$(realpath $(patsubst -I%,%,$(f))), \ 45 $(f))) 46 47$(LIBTPM2_TARGET): $(LIB_DIR)/libc.a 48 $(s)echo " CM $@" 49 $(q)cmake -S $(LIBTPM2_PATH) -B $(LIBTPM2_BUILD_DIR) \ 50 -DTPM_INTERFACE=$(TPM_INTERFACE) \ 51 -DDEBUG_BACKEND_HEADER="$(abspath $(LIBTPM2_PATH)/include/log_backend_tf.h") \ 52 -DLOG_LEVEL=$(LOG_LEVEL) \ 53 -DCMAKE_BUILD_TYPE=$(LIBTPM2_BUILD_TYPE) \ 54 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(abspath $(BUILD_PLAT)/lib)" \ 55 -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ 56 -DCMAKE_C_COMPILER="$($(ARCH)-cc)" \ 57 -DCMAKE_C_FLAGS=$(call escape-shell,$(LIBTPM2_CFLAGS)) \ 58 $(if $(V),, --log-level=ERROR) > /dev/null 59 $(q)cmake --build $(LIBTPM2_BUILD_DIR) -- $(if $(V),,-s) > /dev/null 60 61libraries: $(LIBTPM2_TARGET) 62 63