##
## Copyright 2015 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
##

CBFS_ARCH-$(CONFIG_ARCH_X86) = x86
CBFS_ARCH-$(CONFIG_ARCH_ARM_V7) = arm
CBFS_ARCH-$(CONFIG_ARCH_ARM_V8) = arm64

$(module_obj)/%.payload: $(module_obj)/%.elf
	@printf "    PAYLOAD    $(subst $(obj)/,,$@)\n"
	$(Q)-rm -f $*.rom $*.bb
	$(Q)dd if=/dev/zero of=$*.bb bs=512 count=1
	$(Q)cbfstool $*.rom create -m $(CBFS_ARCH-y) -s 1024K -B $*.bb
	$(Q)cbfstool $*.rom add-payload -f $< -n dc.elf -c lzma
	$(Q)cbfstool $*.rom extract -n dc.elf -f $@
	$(Q)rm -f $*.rom $*.bb

.PRECIOUS: $(module_obj)/%.payload


CB_ARCH_CODE-$(CONFIG_ARCH_X86) += x86_cleanup.c


module-y += cb_payload
mod-cb_payload-title = "unified payload"
mod-cb_payload-y += payload.c $(CB_ARCH_CODE-y)
mod-cb_payload-libs += $(COMMON_OBJECTS) $(VBOOT_OBJECTS)
mod-cb_payload-libs += $(coreboot_handoff-objs)

module-y += cb_dev
mod-cb_dev-title = "developer payload"
mod-cb_dev-y += $(mod-cb_payload-y)
mod-cb_dev-libs += $(mod-cb_payload-libs) $(DEV_OBJECTS)
mod-cb_dev-ldopts = $(DONT_GC_NETBOOT)

module-y += cb_readonly
mod-cb_readonly-title = "read only payload"
mod-cb_readonly-y += readonly.c $(CB_ARCH_CODE-y)
mod-cb_readonly-libs += $(COMMON_OBJECTS) $(VBOOT_OBJECTS)
mod-cb_readonly-libs += $(coreboot_handoff-objs) $(TRAMP_KS)

module-y += cb_dev_ro
mod-cb_dev_ro-title = "read only developer payload"
mod-cb_dev_ro-y += $(mod-cb_readonly-y)
mod-cb_dev_ro-libs += $(mod-cb_readonly-libs) $(DEV_OBJECTS)
mod-cb_dev_ro-ldopts += $(mod-cb_readonly-ldopts) $(DONT_GC_NETBOOT)
mod-cb_dev_ro-deps += $(mod-cb_readonly-deps)

module-y += cb_readwrite
mod-cb_readwrite-title = "read/write payload"
mod-cb_readwrite-y += readwrite.c $(CB_ARCH_CODE-y)
mod-cb_readwrite-libs += $(COMMON_OBJECTS) $(VBOOT_OBJECTS)
mod-cb_readwrite-libs += $(module_handoff-objs)

module-y += cb_dev_rw
mod-cb_dev_rw-title = "read/write developer payload"
mod-cb_dev_rw-y += $(mod-cb_readwrite-y)
mod-cb_dev_rw-libs += $(mod-cb_readwrite-libs) $(DEV_OBJECTS)
mod-cb_dev_rw-ldopts = $(DONT_GC_NETBOOT)

module-y += cb_netboot
mod-cb_netboot-title = "netboot payload"
mod-cb_netboot-y += ../netboot.c
mod-cb_netboot-libs += $(COMMON_OBJECTS) $(VBOOT_OBJECTS) $(NET_OBJECTS)
mod-cb_netboot-libs += $(coreboot_handoff-objs)
