Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 1 | ## |
| 2 | ## This file is part of the coreboot project. |
| 3 | ## |
| 4 | ## Copyright (C) 2014 The ChromiumOS Authors. All rights reserved. |
| 5 | ## |
| 6 | ## This program is free software; you can redistribute it and/or modify |
| 7 | ## it under the terms of the GNU General Public License as published by |
| 8 | ## the Free Software Foundation; version 2 of the License. |
| 9 | ## |
| 10 | ## This program is distributed in the hope that it will be useful, |
| 11 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | ## GNU General Public License for more details. |
| 14 | ## |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 15 | |
Furquan Shaikh | 0325dc6 | 2016-07-25 13:02:36 -0700 | [diff] [blame] | 16 | bootblock-y += bootmode.c |
| 17 | romstage-y += bootmode.c |
| 18 | ramstage-y += bootmode.c |
| 19 | verstage-y += bootmode.c |
| 20 | postcar-y += bootmode.c |
| 21 | |
| 22 | ifeq ($(CONFIG_VBOOT),y) |
| 23 | |
Patrick Georgi | 27ef602 | 2015-04-30 14:25:14 +0200 | [diff] [blame] | 24 | libverstage-generic-ccopts += -D__PRE_RAM__ -D__VERSTAGE__ |
Aaron Durbin | 26681ec | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 25 | verstage-generic-ccopts += -D__PRE_RAM__ -D__VERSTAGE__ |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 26 | |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 27 | bootblock-y += vbnv.c |
| 28 | verstage-y += vbnv.c |
| 29 | romstage-y += vbnv.c |
| 30 | ramstage-y += vbnv.c |
| 31 | |
| 32 | bootblock-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 33 | verstage-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 34 | romstage-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 35 | ramstage-$(CONFIG_VBOOT_VBNV_CMOS) += vbnv_cmos.c |
| 36 | |
| 37 | bootblock-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 38 | verstage-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 39 | romstage-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 40 | ramstage-$(CONFIG_VBOOT_VBNV_CMOS_BACKUP_TO_FLASH) += vbnv_flash.c |
| 41 | |
| 42 | bootblock-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 43 | verstage-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 44 | romstage-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 45 | ramstage-$(CONFIG_VBOOT_VBNV_EC) += vbnv_ec.c |
| 46 | |
| 47 | bootblock-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 48 | verstage-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 49 | romstage-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 50 | ramstage-$(CONFIG_VBOOT_VBNV_FLASH) += vbnv_flash.c |
| 51 | |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 52 | bootblock-y += vboot_loader.c |
| 53 | romstage-y += vboot_loader.c |
| 54 | ramstage-y += vboot_loader.c |
| 55 | verstage-y += vboot_loader.c |
Andrey Petrov | 60c6432 | 2016-04-14 14:12:47 -0700 | [diff] [blame] | 56 | postcar-y += vboot_loader.c |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 57 | |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 58 | bootblock-y += vboot_common.c |
| 59 | verstage-y += vboot_common.c |
| 60 | romstage-y += vboot_common.c |
| 61 | ramstage-y += vboot_common.c |
| 62 | postcar-y += vboot_common.c |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 63 | |
Daisuke Nojiri | 54af625 | 2014-11-04 12:32:29 -0800 | [diff] [blame] | 64 | bootblock-y += common.c |
Aaron Durbin | 588ad7b | 2015-09-29 17:56:59 -0500 | [diff] [blame] | 65 | libverstage-y += vboot_logic.c |
Daisuke Nojiri | 5d302c7 | 2015-04-09 08:18:22 -0700 | [diff] [blame] | 66 | verstage-y += common.c |
Aaron Durbin | 588ad7b | 2015-09-29 17:56:59 -0500 | [diff] [blame] | 67 | verstage-y += verstage.c |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 68 | ifeq (${CONFIG_VBOOT_MOCK_SECDATA},y) |
Patrick Georgi | 27ef602 | 2015-04-30 14:25:14 +0200 | [diff] [blame] | 69 | libverstage-y += secdata_mock.c |
Furquan Shaikh | fb81474 | 2016-11-07 23:33:46 -0800 | [diff] [blame] | 70 | romstage-$(CONFIG_SEPARATE_VERSTAGE) += secdata_mock.c |
Daisuke Nojiri | 5d302c7 | 2015-04-09 08:18:22 -0700 | [diff] [blame] | 71 | else |
Furquan Shaikh | 2a12e2e | 2016-07-25 11:48:03 -0700 | [diff] [blame] | 72 | libverstage-y += secdata_tpm.c |
Furquan Shaikh | fb81474 | 2016-11-07 23:33:46 -0800 | [diff] [blame] | 73 | romstage-$(CONFIG_SEPARATE_VERSTAGE) += secdata_tpm.c |
Daisuke Nojiri | 5d302c7 | 2015-04-09 08:18:22 -0700 | [diff] [blame] | 74 | endif |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 75 | romstage-y += vboot_handoff.c common.c |
| 76 | |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 77 | ramstage-y += common.c |
Andrey Petrov | 60c6432 | 2016-04-14 14:12:47 -0700 | [diff] [blame] | 78 | postcar-y += common.c |
Aaron Durbin | 17200ad | 2015-05-01 16:48:54 -0500 | [diff] [blame] | 79 | |
Aaron Durbin | d1cf44c | 2015-05-08 15:58:06 -0500 | [diff] [blame] | 80 | ifeq ($(CONFIG_SEPARATE_VERSTAGE),y) |
| 81 | VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-verstage-y)) |
| 82 | else |
| 83 | ifeq ($(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK),y) |
| 84 | VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-bootblock-y)) |
| 85 | else |
| 86 | VB_FIRMWARE_ARCH := $(ARCHDIR-$(ARCH-romstage-y)) |
| 87 | endif |
| 88 | endif # CONFIG_SEPARATE_VERSTAGE |
| 89 | |
Bill Richardson | c860315 | 2015-01-27 17:28:18 -0800 | [diff] [blame] | 90 | VB2_LIB = $(obj)/external/vboot_reference/vboot_fw20.a |
Paul Kocialkowski | 6a10694 | 2015-08-03 23:03:27 +0200 | [diff] [blame] | 91 | VBOOT_CFLAGS += $(patsubst -I%,-I$(top)/%, $(filter-out -I$(obj), $(filter-out -include $(src)/include/kconfig.h, $(CPPFLAGS_libverstage)))) |
Patrick Georgi | 375570e | 2015-05-11 19:25:21 +0200 | [diff] [blame] | 92 | VBOOT_CFLAGS += $(CFLAGS_libverstage) |
Patrick Georgi | 27ef602 | 2015-04-30 14:25:14 +0200 | [diff] [blame] | 93 | VBOOT_CFLAGS += $(libverstage-c-ccopts) |
Paul Kocialkowski | 6a10694 | 2015-08-03 23:03:27 +0200 | [diff] [blame] | 94 | VBOOT_CFLAGS += -I$(abspath $(obj)) -include $(top)/src/include/kconfig.h -Wno-missing-prototypes |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 95 | VBOOT_CFLAGS += -DVBOOT_DEBUG |
| 96 | |
| 97 | $(VB2_LIB): $(obj)/config.h |
Patrick Georgi | 78a5f22 | 2017-01-30 15:29:34 +0100 | [diff] [blame] | 98 | printf " MAKE $(subst $(obj)/,,$(@))\n" |
| 99 | +FIRMWARE_ARCH=$(VB_FIRMWARE_ARCH) \ |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 100 | CC="$(CC_verstage)" \ |
| 101 | CFLAGS="$(VBOOT_CFLAGS)" VBOOT2="y" \ |
Paul Kocialkowski | 4611451 | 2016-07-24 12:10:38 +0200 | [diff] [blame] | 102 | $(MAKE) -C $(VBOOT_SOURCE) \ |
Paul Kocialkowski | 6a10694 | 2015-08-03 23:03:27 +0200 | [diff] [blame] | 103 | BUILD=$(abspath $(dir $(VB2_LIB))) \ |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 104 | V=$(V) \ |
Bill Richardson | c860315 | 2015-01-27 17:28:18 -0800 | [diff] [blame] | 105 | fwlib20 |
Daisuke Nojiri | 742fc8d | 2014-10-10 10:51:06 -0700 | [diff] [blame] | 106 | |
Patrick Georgi | 27ef602 | 2015-04-30 14:25:14 +0200 | [diff] [blame] | 107 | libverstage-srcs += $(VB2_LIB) |
Patrick Georgi | ba80887 | 2015-04-27 18:09:22 +0200 | [diff] [blame] | 108 | |
Patrick Georgi | efc6aa0 | 2015-04-27 18:13:50 +0200 | [diff] [blame] | 109 | ifeq ($(CONFIG_SEPARATE_VERSTAGE),y) |
Furquan Shaikh | b038f41 | 2016-11-07 23:47:11 -0800 | [diff] [blame] | 110 | |
| 111 | # This works under the assumption that romstage and verstage use the same |
| 112 | # architecture and thus CC_verstage is the same as CC_romstage. If this is not |
| 113 | # true, VB2_LIB needs to ensure that correct CC is being used. |
| 114 | ifeq ($(CONFIG_VBOOT_HAS_REC_HASH_SPACE),y) |
| 115 | romstage-srcs += $(VB2_LIB) |
| 116 | endif |
| 117 | |
Patrick Georgi | 1cab012 | 2015-11-26 16:39:23 +0100 | [diff] [blame] | 118 | cbfs-files-$(CONFIG_SEPARATE_VERSTAGE) += $(CONFIG_CBFS_PREFIX)/verstage |
| 119 | $(CONFIG_CBFS_PREFIX)/verstage-file := $(objcbfs)/verstage.elf |
| 120 | $(CONFIG_CBFS_PREFIX)/verstage-type := stage |
Julius Werner | 09f2921 | 2015-09-29 13:51:35 -0700 | [diff] [blame] | 121 | $(CONFIG_CBFS_PREFIX)/verstage-compression := $(CBFS_PRERAM_COMPRESS_FLAG) |
Furquan Shaikh | 94b18a1 | 2016-05-04 23:25:16 -0700 | [diff] [blame] | 122 | |
Patrick Georgi | 1cab012 | 2015-11-26 16:39:23 +0100 | [diff] [blame] | 123 | ifeq ($(CONFIG_ARCH_VERSTAGE_X86_32)$(CONFIG_ARCH_VERSTAGE_X86_64),y) |
Furquan Shaikh | 94b18a1 | 2016-05-04 23:25:16 -0700 | [diff] [blame] | 124 | $(CONFIG_CBFS_PREFIX)/verstage-options := -a 64 -S ".car.data" |
| 125 | |
| 126 | # If CAR does not support execution of code, verstage on x86 is expected to be |
| 127 | # xip. |
| 128 | ifneq ($(CONFIG_NO_XIP_EARLY_STAGES),y) |
| 129 | $(CONFIG_CBFS_PREFIX)/verstage-options += --xip |
| 130 | endif |
Patrick Georgi | 1cab012 | 2015-11-26 16:39:23 +0100 | [diff] [blame] | 131 | |
| 132 | endif |
| 133 | |
Patrick Georgi | efc6aa0 | 2015-04-27 18:13:50 +0200 | [diff] [blame] | 134 | else |
Aaron Durbin | d1cf44c | 2015-05-08 15:58:06 -0500 | [diff] [blame] | 135 | ifeq ($(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK),y) |
Patrick Georgi | efc6aa0 | 2015-04-27 18:13:50 +0200 | [diff] [blame] | 136 | bootblock-srcs += $(objgenerated)/libverstage.a |
Aaron Durbin | 57e3728 | 2015-04-28 16:17:25 -0500 | [diff] [blame] | 137 | else |
| 138 | romstage-srcs += $(objgenerated)/libverstage.a |
Patrick Georgi | efc6aa0 | 2015-04-27 18:13:50 +0200 | [diff] [blame] | 139 | endif |
Aaron Durbin | 57e3728 | 2015-04-28 16:17:25 -0500 | [diff] [blame] | 140 | endif # CONFIG_SEPARATE_VERSTAGE |
Patrick Georgi | c8d4abd | 2016-01-20 15:54:31 +0100 | [diff] [blame] | 141 | |
| 142 | # Define a list of files that need to be in RO only. |
| 143 | # All other files will be installed into RO and RW regions |
| 144 | # Use $(sort) to cut down on extra spaces that would be translated to commas |
| 145 | regions-for-file = $(subst $(spc),$(comma),$(sort \ |
| 146 | $(if $(filter \ |
| 147 | $(if $(filter y,$(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK)),, \ |
| 148 | %/romstage) \ |
| 149 | mts \ |
| 150 | %/verstage \ |
Patrick Georgi | eda794d | 2016-02-05 11:01:24 +0100 | [diff] [blame] | 151 | locales \ |
| 152 | locale_%.bin \ |
| 153 | font.bin \ |
| 154 | vbgfx.bin \ |
Lee Leahy | 5e34752 | 2017-01-04 08:51:52 -0800 | [diff] [blame] | 155 | rmu.bin \ |
Patrick Georgi | c8d4abd | 2016-01-20 15:54:31 +0100 | [diff] [blame] | 156 | ,$(1)),COREBOOT,COREBOOT FW_MAIN_A FW_MAIN_B))) |
Furquan Shaikh | 0325dc6 | 2016-07-25 13:02:36 -0700 | [diff] [blame] | 157 | |
| 158 | endif # CONFIG_VBOOT |