# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-stable
pkgver=6.18.7
pkgrel=0
_kver=${pkgver%.*}
pkgdesc="Stable Kernel"
# armhf: pmbootstrap cannot dynamically choose a defconfig, so it ends up using multi_v7_defconfig which isn't correct
# s390x: kconfigcheck is not ready for it yet
arch="all !armhf !s390x"
_flavor="stable"
url="https://kernel.org"
license="GPL-2.0-only"
options="
	!check
	!strip
	!tracedeps
	pmb:cross-native
	pmb:generic-kernel
	pmb:kconfigcheck-community
	pmb:kconfigcheck-immutable
	pmb:kconfigcheck-rust
	pmb:kconfigcheck-uefi
	pmb:kconfigcheck-virt
"
makedepends="
	bison
	clang
	clang-libclang
	diffutils
	elfutils-dev
	findutils
	flex
	linux-headers
	lld
	llvm
	openssl-dev
	pahole
	perl
	postmarketos-installkernel
	python3
	rust
	rust-bindgen
	rust-src
	rustfmt
	sed
	zstd
"

# Source
source="
	linux-$_kver.tar.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kver.tar.xz

	config-stable.aarch64
	config-stable.armv7
	config-stable.loongarch64
	config-stable.ppc64le
	config-stable.riscv64
	config-stable.x86
	config-stable.x86_64
"
builddir="$srcdir/linux-$_kver"
_defconfig="defconfig"

if [ "${pkgver%.0}" = "$pkgver" ]; then
	# Prepend to apply first
	source="patch-$pkgver.patch.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz $source"
fi

case "$CARCH" in
	aarch64*) _carch="arm64" ;;
	arm*) _carch="arm" ;;
	loongarch*) _carch="loongarch" ;;
	ppc*) _carch="powerpc" ;;
	riscv*) _carch="riscv" ;;
	s390x) _carch="s390" ;;
	x86) _carch="i386" ;;
	x86_64) _carch="x86_64" ;;
esac

prepare() {
	default_prepare
	cp "$srcdir/config-$_flavor.$CARCH" .config
}

build() {
	unset LDFLAGS
	make ARCH="$_carch" LLVM=1 \
		KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
}

package() {
	local _install
	case "$CARCH" in
		arm*|aarch64|riscv*) _install="zinstall dtbs_install" ;;
		*) _install="install" ;;
	esac

	make modules_install $_install \
		ARCH="$_carch" \
		LLVM=1 \
		INSTALL_PATH="$pkgdir"/boot/ \
		INSTALL_MOD_PATH="$pkgdir" \
		INSTALL_MOD_STRIP=1 \
		INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs-$_flavor

	rm -f "$pkgdir"/lib/modules/*/build "$pkgdir"/lib/modules/*/source

	install -D "$builddir"/include/config/kernel.release \
		"$pkgdir"/usr/share/kernel/$_flavor/kernel.release
}

sha512sums="
90fb319e2aa32c4b7d7070205ac7228139de96e7fb1bfdcb5ed9a48c85df739d80e043d31a4216a3a0561aaa80a6b4198bf2000d185a5850f36ef0aa31ed52c6  patch-6.18.7.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
eb31459529e6697d12006cdb05faceff4b547a55ac64dfc7d0677c972cda8019e9685dc8ceeb5661ce649dbcf20e8e58091e75428c024ddfdb614bbaea14713b  config-stable.aarch64
eae1046b1b9811426c98d25d7b23d2dac59a39e607162467046365ec3afcb0c694646984dea4d9622a61585888e4715420f6d964406e956a42bd152ff0ab352f  config-stable.armv7
de034bee6525c55b88e579588bd94d0534d97c6193bc053df62cd32a9d8b3a14cc7c83f3672b481992611edcf9efba382e4c4e32ad2249ec3155dee1bae5e2d6  config-stable.loongarch64
3e098caa0f4f014a161a774eeb91d143690b93e421642b0d186bec62ebb31c430d0c635028cfdb2ac97533c779b32c5979d5e561a9db7e2e8329f79f30522036  config-stable.ppc64le
a17b0ff2fa5308d49d8001f6d4ec63dd146ef8f988d3c9a79a93dca389e2ca70b1bf1b9860e18f643b8ac888102adde87b14c9f3a29a90922ca897e2b410bc1d  config-stable.riscv64
3431c3b8a4f59e9040af218375153347c4c29749305c2ac28be45fc7a262730903ab3884dee598fd34b22276c61dda9aa36320b522066485bb0195511ea6a2f2  config-stable.x86
b3d005ddf424dda447ec64b7ff6025c12fd3ff2b3b0af296c858c422010ed17ec54c8e1f2251221416a5f4d3e43c9805256ff7f4381c2b5d62828f1153ac9bc2  config-stable.x86_64
"
