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

EAPI=4
CROS_WORKON_COMMIT="392388130b58336715e47c7a4a4d20abc4b8c924"
CROS_WORKON_TREE="1a1037fe4d5217fa96575da248b5ef9c144d82c2"
CROS_WORKON_PROJECT="chromiumos/platform/bmpblk"
CROS_WORKON_LOCALNAME="../platform/bmpblk"
CROS_WORKON_OUTOFTREE_BUILD="1"
CROS_WORKON_USE_VCSID="1"

# TODO(hungte) When "tweaking ebuilds by source repository" is implemented, we
# can generate this list by some script inside source repo.
CROS_BOARDS=(
	auron_paine
	auron_yuna
	banjo
	buddy
	butterfly
	candy
	chell
	cid
	clapper
	cranky
	daisy
	daisy_snow
	daisy_spring
	daisy_spring-freon
	daisy_skate
	daisy_skate-freon
	daisy_freon
	enguarde
	expresso
	falco
	glados
	glimmer
	gnawty
	guado
	kip
	lars
	leon
	link
	lulu
	lumpy
	mccloud
	monroe
	ninja
	nyan
	nyan_big
	orco
	panther
	parrot
	peach_pi
	peach_pi-freon
	peach_pit
	peach_pit-freon
	peppy
	quawks
	reks
	rikku
	squawks
	stout
	stumpy
	sumo
	swanky
	tidus
	tricky
	veyron_brain
	veyron_danger
	veyron_jerry
	veyron_mickey
	veyron_minnie
	veyron_pinky
	veyron_romy
	winky
	wolf
	zako
)

inherit cros-workon cros-board

DESCRIPTION="Chrome OS Firmware Bitmap Block"
HOMEPAGE="http://www.chromium.org/"
SRC_URI=""
LICENSE="BSD-Google"
SLOT="0"
KEYWORDS="*"
IUSE="bitmap_in_cbfs"
DEPEND="
	sys-apps/coreboot-utils
"

src_prepare() {
	export BOARD="$(get_current_board_with_variant "${ARCH}-generic")"
	export VCSID
}

src_compile() {
	emake OUTPUT="${WORKDIR}" "${BOARD}"
	if use bitmap_in_cbfs; then
		emake OUTPUT="${WORKDIR}/${BOARD}" ARCHIVER="${ROOT}usr/bin/archive" archive
	fi
}

src_install() {
	if use bitmap_in_cbfs; then
		# Bitmaps need to reside in the RO CBFS only. Many boards do
		# not have enough space in the RW CBFS regions to contain
		# all image files.
		insinto /firmware/rocbfs
		doins "${WORKDIR}/${BOARD}"/vbgfx.bin
		doins "${WORKDIR}/${BOARD}"/locales
		doins "${WORKDIR}/${BOARD}"/locale_*.bin
		doins "${WORKDIR}/${BOARD}"/font.bin
	else
		insinto /firmware
		doins "${WORKDIR}/${BOARD}/bmpblk.bin"
	fi
}
