# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-lts
pkgver=6.18.16
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="
bf7844571f282c161f1c064bfe9f258d64ef3c026a36cc4406b18323ad919640343de6d3fd35f1a5a67250289112c01bc192c84434e46a62902326dc3b2af175  patch-6.18.16.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
b7b0df7ce6a20c25f45072b9aa38eb1c47911fe0c2e06bf1dad03b96049dbef52ef253e893b37002682a32f7d58075222baed85625a621f1fc4d0d7d4cf91a5c  config-lts.aarch64
2389669f774de3b107e59d273118150eab37db15d5643e994479609f63bcbc2680d11c34d3e69686365aef7f0cd4b6a5b2ca34caf4c6694bf8681ad284816c56  config-lts.armv7
0cfe41cd172320fc2f708eb2ae3fd14417b38d178fc8a5d00adc038b32bd46c95866ede7a0ebc2144de7b1d8ecca9154d7864f97db7cac17e7b7b65d288fdb3b  config-lts.loongarch64
6f9eee0ac82070f5bd131e495deca73de8be5b459bc02df32d99e6922d8beb43b3a485109cd687c5c139661484ccf81a6613cecef48b8f127bcc160688973452  config-lts.ppc64le
cfa6ea3d9bc1db961f1bab3fa182a0669fb87937f82c6ecd9c3151cfc43430c80784fa6987c5a62f8c22b952450773973cfd86ae5f1459b524df2754b26ce5a9  config-lts.riscv64
1f5d562a8c9b45ccfa585d494611c8c540e3074b419ba5efafe9350a284f50727c663af5e9b10bb26ad9d9f1d866d8640cf200f320e000ba14d0af8c41e5543c  config-lts.x86
f6b747f5c24253a17dd1168518989374e4461b2f65484414111a335068971414891167ad61626b5625e490331dea770f7e6c0b6b89c754a0c949f854fbd26cc8  config-lts.x86_64
"
