# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-mainline
pkgver=7.2_rc7
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-lockdown
	pmb:kconfigcheck-rust
	pmb:kconfigcheck-selinux
	pmb:kconfigcheck-uefi
	pmb:kconfigcheck-virt
"
makedepends="
	bash
	bison
	clang
	clang-libclang
	diffutils
	elfutils-dev
	findutils
	flex
	grep
	kmod
	linux-headers
	lld
	llvm
	openssl-dev
	pahole
	perl
	postmarketos-installkernel
	python3
	rust
	rust-bindgen
	rust-src
	rustfmt
	sed
	zstd
"

# powerpc boot wrapper patches:
# Necessary for compilation without cross GCC in PATH, cherry-picked from
# Nathan's fork, he does not have time to upstream them right now but would be
# happy if someone else did:
# https://lore.kernel.org/linuxppc-dev/aXs8sgAcci9FKKpx@luna/
source="
	$pkgname-$pkgver.tar.gz::https://git.kernel.org/torvalds/t/linux-${pkgver/_/-}.tar.gz

	0001-WIP-arch-powerpc-boot-Support-LLVM-1-in-wrapper-scri.patch
	0002-WIP-arch-powerpc-boot-Add-z-norelro.patch

	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/_/-}"

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"/usr \
		INSTALL_MOD_STRIP=1 \
		INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs

	rm -f "$pkgdir"/usr/lib/modules/*/build "$pkgdir"/usr/lib/modules/*/source

	install -Dm644 "$builddir"/include/config/kernel.release \
		"$pkgdir"/usr/share/kernel/"$_flavor"/kernel.release
}

sha512sums="
50e2684ead0e6c5a7ededb254c55d8c6cca7d5bbd305de7fe2effcd50318689dc6db98d6027f6aac3c6745b8909dd2f60a88f86063b65bcb2eea51121916160c  linux-postmarketos-mainline-7.2_rc7.tar.gz
1f11df2480e9f691573283597160b4c806e492cdca4825f3acb3afb70bde43abfab487bcde1f5553b431a702a0039479d041b0ce7859970e706b5a51d2ad8fb0  0001-WIP-arch-powerpc-boot-Support-LLVM-1-in-wrapper-scri.patch
302c20c85559fc9b3b2420ed25be1bfbb76c87f2a470e4141c32e9542cf1f5c6b3b5a7847231a3eaa0f6bc0e5942d0c1599e807175dcf5e63469704c3d6adde3  0002-WIP-arch-powerpc-boot-Add-z-norelro.patch
a97dc978403ecbc40c71035a26d1bc9f311aa79904a660028cba6858f9d96b4d04fc3e35e1183afeb83aa0e7a97354bcc2ba4f8d3e298eaa35e379b6f55a3571  config-mainline.aarch64
b4e38a6c4531d98be2495aa87038644fe61c4bde19dd9e3e20215d68a250be948edf4237b7feb7d1b24ddfb8c55a5d0b0a307887f58462670cd7946feea692e1  config-mainline.armv7
3daccace346f8eb08f7163947d9f6ee9a784e8ca5016df3e7f968fe84f69f7315aadcb58949a1be08695ad1eaf6ac798083e7264896e9f37a04d3d5d50412a58  config-mainline.loongarch64
b042517f159277afe1992b9c2080bb6b3f119e08f40eabcb775079020c6082a1cd5cb256f3da98a6535a89a5bbe5accacddad9e9f3988a480d74cf1b5f067c38  config-mainline.ppc64le
950c6ee511463d969a93196b84f6a9d3b457ee185a23dbdac3d4459afd3dbf3918f35c5d9720791684ec60c3c60ba318e4d5f0d19280c5c207ee340ecfe453d0  config-mainline.riscv64
a163c56923ab1f4945297c0533c9c1ad1f1205d027b33300f604bb5709ee31d0b85cc3ede9555153679fdae3ad617071e2911dd62075c1d2b4b40da3a6fa2401  config-mainline.x86
f8e1a4ffd6ad3db4b8708c004440fca1f43ffddc62dea33fb78d3ae5e092d08154413d1912ca12e4574dd5dd69f43c2b60e239e4ba9f41538fd6c98a40aef4ff  config-mainline.x86_64
"
