aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/google/chromeos/Makefile.inc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/google/chromeos/Makefile.inc')
-rw-r--r--src/vendorcode/google/chromeos/Makefile.inc44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/Makefile.inc b/src/vendorcode/google/chromeos/Makefile.inc
index 8ae14fdb0b..9bc4d64163 100644
--- a/src/vendorcode/google/chromeos/Makefile.inc
+++ b/src/vendorcode/google/chromeos/Makefile.inc
@@ -30,3 +30,47 @@ ifneq ($(wildcard src/mainboard/$(MAINBOARDDIR)/chromeos.c),)
ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/chromeos.c
romstage-srcs += src/mainboard/$(MAINBOARDDIR)/chromeos.c
endif
+
+ifeq ($(CONFIG_VBOOT_VERIFY_FIRMWARE),y)
+romstage-y += vboot_loader.c
+rmodules-y += vboot_wrapper.c
+
+VB_LIB = $(obj)/external/vboot_reference/vboot_fw.a
+VB_FIRMWARE_ARCH := $(ARCHDIR-y)
+VB_SOURCE := vboot_reference
+
+# Add the vboot include paths.
+VB_INCLUDES += -I$(VB_SOURCE)/firmware/include
+VB_INCLUDES += -I$(VB_SOURCE)/firmware/arch/$(VB_FIRMWARE_ARCH)/include
+INCLUDES += $(VB_INCLUDES)
+
+VBOOT_STUB_ELF = $(obj)/vendorcode/google/chromeos/vbootstub.elf
+VBOOT_STUB_DOTO = $(VBOOT_STUB_ELF:.elf=.o)
+
+# Dependency for the vboot rmodules. Ordering matters.
+VBOOT_STUB_DEPS += $(obj)/vendorcode/google/chromeos/vboot_wrapper.rmodules.o
+VBOOT_STUB_DEPS += $(obj)/lib/memcmp.rmodules.o
+VBOOT_STUB_DEPS += $(obj)/arch/x86/lib/memset.rmodules.o
+VBOOT_STUB_DEPS += $(obj)/arch/x86/lib/memcpy.rmodules.o
+VBOOT_STUB_DEPS += $(VB_LIB)
+# Remove the '-include' option since that will break vboot's build.
+VBOOT_CFLAGS += $(filter-out -include $(src)/include/kconfig.h, $(CFLAGS))
+VBOOT_CFLAGS += -DVBOOT_DEBUG
+
+$(VBOOT_STUB_DOTO): $(VBOOT_STUB_DEPS)
+ $(CC) $(LDFLAGS) -nostdlib -r -o $@ $^
+
+# Link the vbootstub module with a 64KiB-byte heap.
+$(eval $(call rmodule_link,$(VBOOT_STUB_ELF), $(VBOOT_STUB_DOTO), 0x10000))
+
+# Build vboot library without the default includes from coreboot proper.
+$(VB_LIB):
+ @printf " MAKE $(subst $(obj)/,,$(@))\n"
+ $(Q)FIRMWARE_ARCH=$(VB_FIRMWARE_ARCH) \
+ CFLAGS="$(VBOOT_CFLAGS)" \
+ make -C $(VB_SOURCE) \
+ BUILD=../$(dir $(VB_LIB)) \
+ V=$(V) \
+ fwlib
+
+endif