# Contributor: Nulo <alpine@nulo.in>
# Maintainer: Adam Thiede <me@adamthiede.com>
pkgname=coreboot-tools
pkgver=25.03
pkgrel=0
pkgdesc="Tools from the coreboot project"
url="https://review.coreboot.org/coreboot"
# coreboot only runs on x86_64 and x86 systems
arch="x86 x86_64"
license="GPL-2.0-only"

makedepends="
	inkscape
	meson
	pciutils-dev
	qt5-qtbase-dev
	qt5-qttools-dev
	qt5-qtsvg-dev
	yaml-cpp-dev
	zlib-dev
	"
subpackages="$pkgname-intelmetool $pkgname-ectool $pkgname-nvramtool $pkgname-nvramtool-doc:nvramtool_doc:noarch $pkgname-ifdtool $pkgname-cbmem $pkgname-configurator"
case "$CARCH" in
	x86_64) subpackages="$subpackages $pkgname-cbfstool" ;;
esac

source="
https://coreboot.org/releases/coreboot-$pkgver.tar.xz
"
builddir="$srcdir/coreboot-$pkgver"
options="!check" # no test suite

build() {
	make -C util/intelmetool CFLAGS+="-I $builddir/src/commonlib/bsd/include"
	make -e -C util/ectool
	make -e -C util/nvramtool CFLAGS="$CFLAGS -I. -DCMOS_HAL=1"
	make -e -C util/ifdtool
	make -e -C util/cbmem
	abuild-meson -Db_lto=true util/coreboot-configurator util/coreboot-configurator/output
	meson compile -C util/coreboot-configurator/output
}

package() {
	make -e -C util/intelmetool PREFIX="$pkgdir/usr" install
	make -e -C util/ectool PREFIX="$pkgdir/usr" install
	make -e -C util/nvramtool PREFIX="$pkgdir/usr" install
	make -e -C util/ifdtool PREFIX="$pkgdir/usr" install
	make -e -C util/cbmem PREFIX="$pkgdir/usr" install
}

intelmetool() {
	pkgdesc="Dump interesting things about Management Engine"

	amove usr/sbin/intelmetool
}

nvramtool() {
	pkgdesc="Manipulates NVRAM from userspace"

	amove usr/sbin/nvramtool
}

nvramtool_doc() {
	pkgdesc="Manipulates NVRAM from userspace (documentation)"
	install_if="$pkgname-nvramtool=$pkgver-r$pkgrel docs"

	amove usr/share/man/man8/nvramtool*
	gzip -9n "$subpkgdir"/usr/share/man/man8/*
}

ectool() {
	pkgdesc="Dumps the RAM of a laptop’s Embedded/Environmental Controller (EC)"

	amove usr/sbin/ectool
}

ifdtool() {
	pkgdesc="Extract and dump Intel Firmware Descriptor information"

	amove usr/bin/ifdtool
}

cbmem() {
	pkgdesc="CBMEM parser to read e.g. timestamps and console log"

	amove usr/sbin/cbmem
}

configurator() {
	pkgdesc="Graphical NVRAMtool frontend"
	DESTDIR="$subpkgdir" meson install --no-rebuild -C $builddir/util/coreboot-configurator/output
}

cbfstool() {
	pkgdesc="Management utility for CBFS formatted ROM images"
	# x86_64 only - memcpy is out of bounds on x86

	make -e -C "$builddir"/util/cbfstool cbfstool
	make -e -C "$builddir"/util/cbfstool cbfstool PREFIX="$subpkgdir/usr" install
}

sha512sums="
2f1ec6c1559ace7a1f2effe751536f2e735c05cdf6415afbf4ad7983ace8dcacfaf5f448113df2b3e111d239adecc6dc04efc75940419d3ecd2da6633a67acc0  coreboot-25.03.tar.xz
"
