# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-lts
pkgver=6.18.10
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="
47441292df0bcfd1d673c98232ee82547d88e0c83b571d50d1ee4d5eadd46f2664dde74203c6df0183b33c4201b35e4d52543e47001efa23d37f1a664d022985  patch-6.18.10.patch.xz
88599ffdec96d150c1feb9b261ba93bb0301a9d0e1ad6bef7aeab1f5372cbfc57d8b43c7e902bd8f76921d1dbd8189663c142ea869e51d0e2b483b150ee00fe0  linux-6.18.tar.xz
c2becd276d1f6e79f7c46db11f05b390c1d59f7689b9681047fa4c2bb7daeb03ad78ae76e965bab064c661cc6777f97f84aa1b3c83e51b8836e849e186c503b0  config-lts.aarch64
141392303ea209ddb48a4e91d6f1be451576ce3ae3e2b2463a8a4a6e284a2ab4facfb2f1b97f5fd0f1b8d3dce12751a14dd070b51267f504de844b72621d1be5  config-lts.armv7
2bbcbef15bbb5962a91ce637c83b598bee72eaf60ff2dba4f7e1f8ad11962863fee84146718ff374bec58bfcc4f59ffa4c5a2d01e4c98c0e5f928011d2f6d6b9  config-lts.loongarch64
82dced7d772bf26cb3c276e5b1eae7d70527279e1eee82243fdd60b0cefef308174a605074ea953680805c66f80f506f359b161cb6698019adcd0549df762979  config-lts.ppc64le
4705d7ce0ba73beebe6b46392e1a8a03d7c839b16d69e8d1b0950145c326b2710cf7031193f4a9b1c7808f10111a41f181516e382f252410815c4b0ee1a1b510  config-lts.riscv64
4501ebd26f7ccfd0cbb1fcc0f8e7941ca418a67f72aba58e843f39cfecbdf1312eafc414c8c8dc8e52fbf7ea995d34db7923bfee91f7d82e8699d88d46dd8ea3  config-lts.x86
80a1da75fd170927849b72320ff6765abe3116b774113844b72836039a48790cc73313f7c0d7b7454e40bd6930d6573cc907b929e858c1af4a8e850c9c926e71  config-lts.x86_64
"
