# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-lts
pkgver=6.18.15
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="
e70df2b6f8bee4ad98a558e1cc97c713c4cb08b80cc6cb21bb36a4be02e995007d1c6215f485b9d679fc66e2a7e30c94e3e98d12b21ede1e96761fbd7509a7a2  patch-6.18.15.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
e5d72748a2c31bbebd6eac963ca4a0d49a09207d6ba1016669a6161c944bb30d163e3d039df72ff9d28aa624d1588f7399244c64c19a058b5df625897bd0c6c7  config-lts.aarch64
243d214543f63c65e96517eae9c4565cd4e4d014d3797c7905279641ebbe6d73b7744fbe3dda93432fd08ada05b4fe683926d4ea77fb653cf63474e9ee9003c0  config-lts.armv7
c0603020dbd60737b79aaceb36d06d41baa5231baf0a4e2aff14ea0e8f6361d79c2639a66e6dfb845135197bb4392bb006097439500336a887c463c83d454caa  config-lts.loongarch64
cf302cc7b9a735547f80ed5a0c5638ddd8e55907b8762785c61edcccdc5110118d7850c0511698d432e27669f2d05ba3bb41797ac5f583401fb00bead9af2983  config-lts.ppc64le
bca1194c877835c4e9ca1c5b378a38f773f7510702aa1c6ed701732897cdbe3466c438d95e475a6e078d7f64d1f8a1e5bd6cb1738d5d7573c87f1527841a023c  config-lts.riscv64
0ea2ef29f6b6dca241206b358357c13a166fca6bd74b69b4acf7119a7610b82c39b92b4e798222edfdadb2ca5966f6599cf81b8277ee2247925d65f74833bccc  config-lts.x86
26c5f8665646e277596f39b4d1d2548d1c979bf73784662e69a81f363ec839c269975f4b92aafd77e7b0e39fc59997ad603d3ca6163f860cb0e47c31535a8808  config-lts.x86_64
"
