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

EAPI=4
CROS_WORKON_COMMIT="0aa39d284043be61b5f1222afdffd39a5abaf3aa"
CROS_WORKON_TREE="c9f4e5ef77df35c70b51f8a08db19b98454b5b4c"
CROS_WORKON_PROJECT="chromiumos/third_party/edk2"
CROS_WORKON_LOCALNAME="edk2"

inherit toolchain-funcs cros-workon

DESCRIPTION="EDK II firmware development environment for the UEFI and PI specifications."
HOMEPAGE="https://github.com/tianocore/edk2"

LICENSE="BSD"
SLOT="0"
KEYWORDS="*"
IUSE="fwserial"

RDEPEND=""
DEPEND="
	sys-apps/coreboot-utils
	sys-boot/coreboot
"

ARCHITECTURE=X64 # IA32 or X86
TOOLCHAIN=GCC48 # most recent GCCxy that isn't newer than our toolchain
BUILDTYPE=DEBUG # DEBUG or RELEASE

create_cbfs() {
	local CROS_FIRMWARE_IMAGE_DIR="/firmware"
	local CROS_FIRMWARE_ROOT="${SYSROOT%/}${CROS_FIRMWARE_IMAGE_DIR}"
	local oprom=$(echo "${CROS_FIRMWARE_ROOT}"/pci????,????.rom)
	local cbfs=tianocore.cbfs
	local cbfs_size=$(( 2 * 1024 * 1024 ))
	local bootblock="${T}/bootblock"

	_cbfstool() { set -- cbfstool "$@"; echo "$@"; "$@" || die "'$*' failed"; }

	# Create empty CBFS
	_cbfstool ${cbfs} create -s ${cbfs_size} -m x86
	# Add tianocore binary to CBFS. FIXME needs newer cbfstool
	_cbfstool ${cbfs} add-payload \
			-f Build/Ovmf${ARCHITECTURE}/${BUILDTYPE}_${TOOLCHAIN}/FV/OVMF.fd \
			-n payload -c lzma
	# Add VGA option rom to CBFS
	_cbfstool ${cbfs} add -f "${oprom}" -n $(basename "${oprom}") -t optionrom
	# Print CBFS inventory
	_cbfstool ${cbfs} print
}

src_compile() {
	. ./edksetup.sh
	(cd BaseTools/Source/C && ARCH=${ARCHITECTURE} emake -j1)
	build -t ${TOOLCHAIN} -a ${ARCHITECTURE} -b ${BUILDTYPE} -p OvmfPkg/OvmfPkg${ARCHITECTURE}.dsc
	create_cbfs
}

src_install() {
	insinto /firmware
	doins tianocore.cbfs
}
