# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI=5
CROS_WORKON_COMMIT="07591e49e9dd9b33b49b0e791feecb5cb8d6dee0"
CROS_WORKON_TREE="6f2eebf22cd242e9c01723dd03405fdd47e15478"
CROS_WORKON_LOCALNAME="platform/firmware"
CROS_WORKON_PROJECT="chromiumos/platform/firmware"

inherit cros-workon cros-firmware

DESCRIPTION="Chrome OS Firmware (Template - change to board name)"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/firmware/"
LICENSE="BSD-Google"
SLOT="0"
KEYWORDS="*"

RDEPEND=""

### FIRMWARE IMAGES ###
# Specify the firmware images to update. You can use file path or URLs (in
# ebuild SRC_URI syntax). Most projects will use Binary Component Server (BCS)
# links. To do that, archive only the image file as a tbz2 and upload to CPFE
# web site (http://www.google.com/chromeos/partner/fe/) with relative path
# chromeos-base/chromeos-firmware-${BOARD}. Then you can refer to the file as
# "bcs://filename.tbz2".
#
# MAIN_IMAGE controls AP RO firmware (also RW if MAIN_RW_IMAGE is empty).
# MAIN_RW_IMAGE controls AP RW firmware when you need different RO & RW.
# EC_IMAGE controls EC RO firmware (RW will be synced from MAIN_[RW_]IMAGE).
# For more details, read
# https://chromium.googlesource.com/chromiumos/platform/firmware/+/master/README.md
#
# When you modify any image files below, please also update manifest file:
#  (chroot) ebuild chromeos-firmware-${BOARD}-9999.ebuild manifest
CROS_FIRMWARE_MAIN_IMAGE=""
CROS_FIRMWARE_MAIN_RW_IMAGE=""
CROS_FIRMWARE_EC_IMAGE=""

### EXTRA FILES ###
# ${FILESDIR}/extra will be automatically merged into updater package.
# ${FILESDIR}/sbin will be automatically installed to /usr/sbin on rootfs.
# Put board customization (updater_custom.sh) in ${FILESDIR}/extra.
# If you need more files, define a CROS_FIRMWARE_EXTRA_LIST with the file names
# and directory names to include, delimited by semicolon.

cros-firmware_setup_source

# Remove/Adapt script below here when using the template.
src_unpack() {
	einfo "Dummy implementation to replace cros-firmware.eclass"
	cros-workon_src_unpack
}

src_compile() {
	einfo "Dummy implementation to replace cros-firmware.eclass"
}

src_install() {
	einfo "Dummy implementation to replace cros-firmware.eclass"
}
