summaryrefslogtreecommitdiff
path: root/payloads/libpayload/vboot/Makefile.mk
blob: bdc9ad2ad67a02f4cdc9b67240a6351b3ba7c394 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# SPDX-License-Identifier: BSD-3-Clause

VBOOT_BUILD_DIR ?= $(abspath $(obj)/external/vboot)
VBOOT_FW_LIB = $(VBOOT_BUILD_DIR)/vboot_fw.a
TLCL_LIB = $(VBOOT_BUILD_DIR)/tlcl.a

vboot_fw-objs += $(VBOOT_FW_LIB)
tlcl-objs += $(TLCL_LIB)

kconfig-to-binary=$(if $(strip $(1)),1,0)
vboot-fixup-includes = $(filter -I$(coreboottop)/%, $(1)) \
		       $(patsubst -I%,-I$(top)/%,\
		       $(patsubst include/%.h,$(top)/include/%.h,\
		       $(filter-out -I$(obj),\
		       $(filter-out -I$(coreboottop)/%,$(1)))))

VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_ARM) := arm
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_X86) := x86
VBOOT_FIRMWARE_ARCH-$(CONFIG_LP_ARCH_ARM64) := arm64

ifneq ($(CONFIG_LP_ARCH_MOCK),)
VBOOT_FIRMWARE_ARCH-y := mock
else
VBOOT_CFLAGS += $(call vboot-fixup-includes,$(CFLAGS))
VBOOT_CFLAGS += -I$(abspath $(obj))
endif

ifeq ($(VBOOT_FIRMWARE_ARCH-y),)
$(error vboot requires architecture to be set in the configuration)
endif

# Enable vboot debug by default
VBOOT_CFLAGS += -DVBOOT_DEBUG

ifeq ($(CONFIG_LP_VBOOT_X86_RSA_ACCELERATION),y)
CPPFLAGS_common += -DVB2_X86_RSA_ACCELERATION
endif

$(VBOOT_FW_LIB): $(obj)/libpayload-config.h
	@printf "    MAKE       $(subst $(obj)/,,$(@))\n"
	+$(Q) FIRMWARE_ARCH="$(VBOOT_FIRMWARE_ARCH-y)" \
		CC="$(CC)" \
		CFLAGS="$(VBOOT_CFLAGS)" \
		$(MAKE) -C "$(VBOOT_SOURCE)" \
		TPM2_MODE=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_TPM2_MODE)) \
		X86_SHA_EXT=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_X86_SHA_EXT)) \
		VB2_X86_RSA_ACCELERATION=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_X86_RSA_ACCELERATION)) \
		ARMV8_CRYPTO_EXT=$(call kconfig-to-binary, $(CONFIG_LP_VBOOT_SHA_ARMV8_CE)) \
		UNROLL_LOOPS=1 \
		BUILD="$(VBOOT_BUILD_DIR)" \
		V=$(V) \
		$(VBOOT_BUILD_DIR)/vboot_fw.a tlcl

$(TLCL_LIB): $(VBOOT_FW_LIB)

.PHONY: $(VBOOT_FW_LIB) $(TLCL_LIB)