##
## Copyright 2012 Google Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
##

vboot-y += cgptlib.c
vboot-y += debug.c
vboot-y += disk.c
ifneq ($(CONFIG_HEADLESS),y)
vboot-y += display.c
else
vboot-y += headless_stub.c
endif
vboot-y += keyboard.c
vboot-y += legacy.c
vboot-y += load_firmware.c
vboot-y += memory.c
vboot-y += misc.c
vboot-$(CONFIG_NV_STORAGE_CMOS) += nvstorage_cmos.c
vboot-$(CONFIG_NV_STORAGE_CROS_EC) += nvstorage_cros_ec.c
vboot-$(CONFIG_NV_STORAGE_DISK) += nvstorage_disk.c
vboot-$(CONFIG_NV_STORAGE_FAKE) += nvstorage_fake.c
vboot-$(CONFIG_NV_STORAGE_FLASH) += nvstorage_flash.c
vboot-$(CONFIG_NV_STORAGE_GENERIC) += nvstorage.c
vboot-$(CONFIG_NV_STORAGE_UEFI) += nvstorage_uefi.c
vboot-y += switches.c
vboot-y += time.c
vboot-y += tpm.c

ifeq ($(CONFIG_EC_SOFTWARE_SYNC),y)
vboot-y += ec.c
else
vboot-y += ec_stub.c
endif
