# Based on rpi5-kernel at the pinned Void commit; upstream stays unchanged.
pkgname=fds-kernel
version=6.12.87
revision=1
_githash=ae4d75fb36deba0fe1a986d9bfae65755e082dd0
archs="aarch64"
wrksrc="linux-${_githash}"
hostmakedepends="perl kmod openssl-devel bc bison flex xz python3 cpio"
short_desc="FDS Raspberry Pi 5 kernel with built-in boot drivers"
maintainer="FDS/OS maintainers"
license="GPL-2.0-only"
homepage="https://github.com/raspberrypi/linux"
distfiles="https://github.com/raspberrypi/linux/archive/${_githash}.tar.gz"
checksum=432afe0cbb9370fc9329f67d44bdc892b8e2417a60dd33de8f0cd22e9c697c62
python_version=3
nodebug=yes
nostrip=yes
noverifyrdeps=yes
noshlibprovides=yes

export KBUILD_BUILD_TIMESTAMP="Thu Jan 1 00:00:00 UTC 1970"
export KBUILD_BUILD_USER=fds
export KBUILD_BUILD_HOST=fds-builder
_cross="CROSS_COMPILE=aarch64-linux-gnu-"

do_configure() {
	make ARCH=arm64 ${_cross} bcm2712_defconfig
	scripts/kconfig/merge_config.sh -m .config "${FILESDIR}/fds.config"
	make ARCH=arm64 ${_cross} olddefconfig
	# Kconfig can silently drop impossible requests. Verify every delta entry.
	while IFS= read -r setting; do
		case "$setting" in
			CONFIG_*=*) grep -Fqx "$setting" .config || return 1 ;;
			'# CONFIG_'*' is not set')
				local symbol="${setting#\# }"
				symbol="${symbol% is not set}"
				! grep -Eq "^${symbol}=[ym]$" .config || return 1 ;;
		esac
	done <"${FILESDIR}/fds.config"
}

do_build() {
	export LDFLAGS=
	make ARCH=arm64 ${_cross} ${makejobs} Image modules dtbs
}

do_install() {
	local release
	release=$(make -s ARCH=arm64 ${_cross} kernelrelease)
	vinstall arch/arm64/boot/Image 644 boot kernel_2712.img
	vinstall .config 644 boot config-fds
	vinstall System.map 644 boot System.map-fds
	vmkdir boot/overlays
	vcopy "arch/arm64/boot/dts/broadcom/bcm2712-*.dtb" boot
	vcopy "arch/arm64/boot/dts/overlays/*.dtbo" boot/overlays
	vinstall arch/arm64/boot/dts/overlays/README 644 boot/overlays
	make ARCH=arm64 ${_cross} ${makejobs} INSTALL_MOD_PATH="${DESTDIR}/usr" \
		INSTALL_MOD_STRIP=1 DEPMOD=true modules_install
	rm -f "${DESTDIR}/usr/lib/modules/${release}/build" "${DESTDIR}/usr/lib/modules/${release}/source"
	depmod -b "${DESTDIR}/usr" "$release"
	vmkdir usr/share/fds
	printf '%s\n' "$release" >"${DESTDIR}/usr/share/fds/kernel-release"
}
