# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-mainline
pkgver=7.0_rc2
pkgrel=0
_rel=${pkgver#*_p}
_kver=${pkgver%_p*}
_kver=${_kver//_/-}
pkgdesc="Mainline 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="mainline"
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
"

# Source
source="
	$pkgname-$pkgver.tar.gz::https://git.kernel.org/torvalds/t/linux-${pkgver/_/-}.tar.gz

	config-mainline.aarch64
	config-mainline.armv7
	config-mainline.loongarch64
	config-mainline.ppc64le
	config-mainline.riscv64
	config-mainline.x86
	config-mainline.x86_64
"
builddir="$srcdir/linux-${pkgver/_/-}"
_defconfig="defconfig"

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="
d814410f27e171638d2020d2343328b0a60c60a51208777e8788d8a6a674ec5ea28efc346608894204e24235fa354c24cf165a56ac8729e949a58e51934131cf  linux-postmarketos-mainline-7.0_rc2.tar.gz
91fe5a73cbcb25a11d216a7fd487a3a7a7ed6f7303896feefaf9e738013604ec3bf68acfe963e6aa376aca3803ccf464cb5fb3e64f60e8db98fd217c1d7e357b  config-mainline.aarch64
238338ea57d885e378361ce7971e4f078a4f4f0ec4494597f3aa5ed46601bc4b90f620593038879eb07c420e43edb929834d2cc1f83d779d77c22d68753711e5  config-mainline.armv7
50c7f19268a55da40817afd96a94cf21d8ca1a5dc450590c1f6147b63cf517774bc6ed4e74b7e4b5e05462a52991aa5b7eba73b2a289ad1ea36a501aa4ede1ce  config-mainline.loongarch64
c23df36a89ca7eebad95c485384f4eebf6f7d882175c77753df392abaf73f52e7987467cf55806e444b8ef31542a1abebe2ad4915a5be57ba1613928f73935f0  config-mainline.ppc64le
f154794c8936461696ded0eb04e9ef9ee3447a83e417fc42911349fc22a35d0b73483f8746954fb40b23154ea6efe14083accfdb8aea2887e26e813581239f26  config-mainline.riscv64
de27e7a52dc63ab873a5c49d98cf559b0d10dfb963983549c7f9536b527969687561866b3e78a03127468101729d1ca064242ed51e5c02c8fb55eb361ee003fa  config-mainline.x86
7266170318f40d770e31ecb93a8dc3812e669cb1c99495aa38db9d1d34ac4aa0760af300efe400c5c92e06c139b71add6e5a0ba6f04145d603db2942dde0370b  config-mainline.x86_64
"
