xref: /rk3399_ARM-atf/drivers/tpm/tpm2.mk (revision 7bbb008618d28713edc24ac02bf26abc63f0f164)
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
31ifeq (${TPM_INTERFACE}, FIFO_SPI)
32    $(eval $(call add_define,TPM_INTERFACE_FIFO_SPI))
33else
34    $(error "The selected TPM_INTERFACE is invalid.")
35endif #TPM_INTERFACE
36
37LIBTPM2_CFLAGS ?= $(foreach f,$(TF_CFLAGS),	\
38  $(if $(findstring -I,$(f)),			\
39    -I$(realpath $(patsubst -I%,%,$(f))),	\
40    $(f)))
41
42$(LIBTPM2_TARGET): $(LIB_DIR)/libc.a
43	$(s)echo "  CM      $@"
44	$(q)cmake -S $(LIBTPM2_PATH) -B $(LIBTPM2_BUILD_DIR) \
45		-DTPM_INTERFACE=$(TPM_INTERFACE) \
46		-DDEBUG_BACKEND_HEADER="$(abspath $(LIBTPM2_PATH)/include/log_backend_tf.h") \
47		-DLOG_LEVEL=$(LOG_LEVEL) \
48		-DCMAKE_BUILD_TYPE=$(LIBTPM2_BUILD_TYPE) \
49		-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(abspath $(BUILD_PLAT)/lib)" \
50		-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
51		-DCMAKE_C_COMPILER="$($(ARCH)-cc)" \
52		-DCMAKE_C_FLAGS=$(call escape-shell,$(LIBTPM2_CFLAGS)) \
53		$(if $(V),, --log-level=ERROR) > /dev/null
54	$(q)cmake --build $(LIBTPM2_BUILD_DIR) -- $(if $(V),,-s) > /dev/null
55
56libraries: $(LIBTPM2_TARGET)
57
58