# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-lts
pkgver=6.12.67
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
"
# FIXME: remove bash dependency with upgrade to 6.18
makedepends="
	bash
	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
"

# 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-$_flavor

	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="
b3f7cd043f20708e7473baa3df8f4fbadbfef719625ef5d764340e0ddfcb6063e320f942cfff9e92a90d4a3565aafa7d122cf4a991317d1bfebbcd98c333edee  patch-6.12.67.patch.xz
a37b1823df7b4f72542f689b65882634740ba0401a42fdcf6601d9efd2e132e5a7650e70450ba76f6cd1f13ca31180f2ccee9d54fe4df89bc0000ade4380a548  linux-6.12.tar.xz
f3a9d4515d5b17c906d510c396eeb7ea8825f0392243e1c02db3ffac4e59ec5fb312bfbc6be4f9307d74464a24f2e43c9cdfd494c631742ee68c4567d4f85578  config-lts.aarch64
5d514384695618911669971099ebbe495868214c2bd6195ef3478fd78b3cb3b5b2f59467d3cf4a6f8908f8d0ee246ecc8a25e757c4f59c8a1628005abf6db5bf  config-lts.armv7
e36993ca7eb2b2da3fbb94de4c2b8e7c0c1d7292adf1bd46a1a635f6c37595fb87b6935a23212c733f49171fa5985abcf4c9bf1c9268305ca26c4dd9906d08a4  config-lts.loongarch64
1c21d557ff80a58b352b3858c4d0b355cecf07875286d3065c7d5e0ded5ed78449769543e2c347ef6ef36b68693349e30350520275baca1a05474accd92474fb  config-lts.ppc64le
4d79a0c44a70e83a07474d9c0e77a63f6e4f5770031f295e7dc0dbe0d167f10f464edf54f8e7e0dfbcf6caafefc6e72a10bc174176403997226fab972fd3fa5b  config-lts.riscv64
b1f5ff23e10a4477f2e274ae35699b02a09715cafb3f257454d1c8b915a497e70c2be278ba9b0814655bc8fdc7e4d2cd757b52bbd3f9e5bbb192f20174f0e877  config-lts.x86
2e38666b646dab3b1de1ac04dec40206e18d20f2d74ea56b9702b3f2ed8b53e0838eb0af947483a5cafa4b262f947446c24bc32ae7be0e41ce2f079389b6a6a2  config-lts.x86_64
"
