# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-lts
pkgver=6.18.9
pkgrel=0
_kver=${pkgver%.*}
pkgdesc="LTS 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="lts"
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-lts"

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

	config-lts.aarch64
	config-lts.armv7
	config-lts.loongarch64
	config-lts.ppc64le
	config-lts.riscv64
	config-lts.x86
	config-lts.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="
fd3822bec8e654b49d387eb94d9d4ca89c704d3ab52be2025c8c28e7cf648dc94cd9f1231227dd71abbc64ef1ace086aec7339691c4afd5234cba1e448ded9cc  patch-6.18.9.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
6ce7b01180443c7f8723e35598fe2e071b74b1b875439cb1e951422a491173a8fdf27b623d8cb704082eee817a693cb98babbea7e0b10c17bdb3bf8c48bdf886  config-lts.aarch64
edfb6bc20b865b316f1c4fa4a81f687a67b5ef7fa2952ca3aeaa3b763064524e7e595fcc2f1e190cf7a582ae733dcada30f5f3539a59845579240b29badf68ec  config-lts.armv7
cba8fc940e9827e2b06be81d507ba7841e3472a8e4ef770a8a04efcd8e9bbcb1ebf937acf9fe245280736f81a46e18c679c2d4abbcea527572d481fc3814fe83  config-lts.loongarch64
43d3eaa67faee19f0d929672d2abad6596680e1cdaeb803f733da4372a6b2bc0bd7a725b19e95365920bfb248af812a648e7e5ffc2623841ea102e447a6a13fb  config-lts.ppc64le
1efde94694c1f0d10d8db506ca6d7f82439977b9dc8a26fadd77dd367e1fe66b5173a6528628533c20cc60a544123abad2be8d6d7056230c1d2e01ac61df2ad2  config-lts.riscv64
8aa238479f2e815a437785864a63b208273c93251851d070455feab0e54be39b49ffde166a66b2ef3025c5b52bd49336ace04804b62c7ba6730e16470dfd545d  config-lts.x86
5f1f2d2c0931a0dc8db0ade5e01fad51915949140698cd42173d3135b0d61ea107a4e8b7a71b73e5b1f09763ff89fe3b533efba2f5c22b012c8b27c810ebc526  config-lts.x86_64
"
