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