# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-stable
pkgver=6.18.10
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
"
replaces="linux-stable"

# 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

	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="
47441292df0bcfd1d673c98232ee82547d88e0c83b571d50d1ee4d5eadd46f2664dde74203c6df0183b33c4201b35e4d52543e47001efa23d37f1a664d022985  patch-6.18.10.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
3c48b4fc9eed64f55d4d1b075144a88b22929e2c79bbf326935c6990fb3c64999814ecb99f1501067d0cdb065c002058495c786239a4f2c290ff587dc07b1886  config-stable.aarch64
2e2b26dfa2f7424de9d1e2637146554b5735387162e0d5e0a94d49a1ccc3c4c7b6510d3e23f5f9ecaf643479d4cd6d5c30945b2d0de23085d4f829320b5a885a  config-stable.armv7
813febe244f8438f3d53aa12067004b9ae8bc1a60fc7b577a0fa8dddd4a2932cf13e1791086f879100c15654e868278ad2038db0e46631f500ca7c010059748c  config-stable.loongarch64
742d0c7c6ecb044af2c04f2f0274f233731fd8d221a37754bc1c353afdf0d75b119f4ad584ab18ca8bb08016781d9a71ac14184f5e777a91ae8faa07ff121d4a  config-stable.ppc64le
6d384bb50d36cc12a3a1f45cb3e6b4147b80ef0b75f4d7a0446ca855ccd83463597a59f3f3482d6da3056100cf2fc4cfb83039cfa42de08712ecda67af48e657  config-stable.riscv64
7d22ff6cd8dd0d92d68abb53e39dff1b24f2976abf3ebe074ccf31f281e9cf1319cba8b136ba6726f77d7a44bf9a472c4ea0b8c4826c65816c6e50f3c72d56ed  config-stable.x86
63f40c3f413613a871efe8de972bfb8d307c9b24abeddafa2e602d0421e99f26f9ee4c9e76030ad2fe84d47851f815f5a5da1fd8dcec624cc5ac51bf2966b09e  config-stable.x86_64
"
