# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-mainline
pkgver=7.0_rc1
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="
64099ce0fab122945f0047d79e8f95a161f8e9eea0c0ee2c6b8351bf804f8db4c8fdd6809ecef3709d6ed893eb8a63287c5ad02e383bec10ab62e47cf09ee9f9  linux-postmarketos-mainline-7.0_rc1.tar.gz
aa8fab6d58f6ce2c9abc429d11a2db88489512e27b3764684053df47b1e90a24c8dd4a27f0870364425e1a4f7738c69fdcb455184b4ee607e6f1c0236d118c79  config-mainline.aarch64
7fc34d4519114be0bfc26c4bb563c15f19d010cf3ba76418c5fc1b4fd6fe46d1abae09f664213b5ca18ba7cd470b410ef98f9d616e385abd9221b022424b49a9  config-mainline.armv7
84bf50d61f7d70242d66ec2cfe43896ff05046d18de0ac438367f45aff2947a00c20d7172330f96bd3f453c8208656dadd704aa5f47b08c8574f165a6d8cac86  config-mainline.loongarch64
0196a3352dc9f2c2beec98347f8bd80ab81f13f75bc7cebdb065c14b5b45f57ccde1d2fab510cf1d04b330d1631a1d1d65af8b550a6a109fc38dd99cd6ba1436  config-mainline.ppc64le
602f576a029e8df493c99e3c44d3d0e6e0832ef9587c9c63abef03f24a33049698fab28f31d611709b77e0849dd83f7b2d1d546397c8c4261a76651355f7403e  config-mainline.riscv64
6d632f258ec666ed62f418057ecaf5cf990493e477653c011564244a67716486b3a23110672fed277000dc060617d541b4d5cb726a57a8639b72cdae6169c5c3  config-mainline.x86
848d1f46813e11d31c1dab0318e562bcd0ec61c9a99c840c14b429e3a5159055e751f24ab3a6c27496c94b2f0a9bcf18442040a92b641f7b632d687b6f07f2e8  config-mainline.x86_64
"
