# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-lts
pkgver=6.18.12
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="
b71074dfff3fb28d781b1cabc5aed4207de286a7e6f1b896e4aa40ecc794a38243496f8325bbacc39431fed71e283bec030157777b701da099ee772af5e100cf  patch-6.18.12.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
8e5f213a69e19e38cd162214dc26dc75521f41aa2efe9a174f1a7519077c35ed3c1578c7fa6c1f02df60283cb70bd4227ed2f88a657284f0d7c205442a5e244a  config-lts.aarch64
8b800d973813e02d29acf09f7fa86e1225bf45c9cd94b209f6bbd7f4e80ffb32822303e443f9dcc3687acfd99b51342333eafe1602612c5f2469ee873aeda3cc  config-lts.armv7
653ff1eacf4db1b2f527e451222cff289137915eac2830cbe9375522f553820759cf8635ddac1ed17f34e5a6beeb4209b781db68d127c2298dc0c1188af28a0c  config-lts.loongarch64
b6fe8d1e4e42554d14338d058a99e43f12a9cb92890bb8c0a7b22cb1345b55b2c99d28ea134f57a1aabe25f188eae0ed6f3457d68c71700ce2dfe0cacd47a854  config-lts.ppc64le
2ee1d8b369490d24ac879b9f1a6a33828597995f249537a2f345f6e159b7e41028ae8d878520000515d948c374dcc9359776356212cb242c3d58f851e8137fd9  config-lts.riscv64
14f7e37021c703ccc1c03807e911d246699be04d75356319a1758e7c638615a264617ce3c4e9fc438f4b3d430584cbcd2f915465cf7c00b5ac7ef7fff50203e4  config-lts.x86
51118a10132ff938249f4629861176383d1ac4c1d11d27181ae70c4caa3620149de32b5cf88fffd6beabf0529b039de0b6127f695bc4f8bd1133df1345a73288  config-lts.x86_64
"
