# Reference: <https://postmarketos.org/vendorkernel>
# Mainline kernel + the (not-yet-upstream) Motorola rtwo device tree.
# Config base: linux-postmarketos-mainline's config-mainline.aarch64.
maintainer="snlavaise <snlavaise@gmail.com>"
_flavor="postmarketos-qcom-sm8550"
pkgname=linux-$_flavor
pkgver=7.2
pkgrel=11
pkgdesc="Mainline kernel for Qualcomm SM8550 (Snapdragon 8 Gen 2) + Motorola rtwo"
arch="aarch64"
_carch="arm64"
url="https://kernel.org"
license="GPL-2.0-only"
options="
	!check
	!strip
	!tracedeps
	pmb:cross-native
	pmb:kconfigcheck-community
"
makedepends="
	bash
	bison
	clang
	diffutils
	elfutils-dev
	findutils
	flex
	gmp-dev
	kmod
	linux-headers
	lld
	llvm
	mpc1-dev
	mpfr-dev
	openssl-dev
	pahole
	perl
	postmarketos-installkernel
	python3
	xz
	zstd
"

source="
	$pkgname-$pkgver.tar.gz::https://git.kernel.org/torvalds/t/linux-${pkgver/_/-}.tar.gz
	config-motorola-rtwo.aarch64
	rtwo.config
	sm8550-motorola-rtwo.dts
"
builddir="$srcdir/linux-${pkgver/_/-}"

prepare() {
	default_prepare

	# The Motorola rtwo (Moto Edge 40 Pro) device tree is not upstream yet.
	local _dtsdir="arch/$_carch/boot/dts/qcom"
	cp "$srcdir/sm8550-motorola-rtwo.dts" "$_dtsdir/sm8550-motorola-rtwo.dts"
	if ! grep -q "sm8550-motorola-rtwo.dtb" "$_dtsdir/Makefile"; then
		sed -i '/sm8550-mtp\.dtb/a dtb-$(CONFIG_ARCH_QCOM) += sm8550-motorola-rtwo.dtb' \
			"$_dtsdir/Makefile"
	fi

	# Base config (from linux-postmarketos-mainline) + rtwo bring-up fragment.
	cp "$srcdir/config-motorola-rtwo.aarch64" .config
	cat "$srcdir/rtwo.config" >> .config
	make ARCH="$_carch" LLVM=1 olddefconfig
}

build() {
	unset LDFLAGS
	make ARCH="$_carch" LLVM=1 \
		KBUILD_BUILD_VERSION="$((pkgrel + 1))-$_flavor"
}

package() {
	# Raw uncompressed Image for the Android boot.img: the stock rtwo
	# LineageOS boot.img carries a raw 'MZ' Image (BOARD_KERNEL_IMAGE_NAME
	# := Image), and CONFIG_EFI_ZBOOT is off in rtwo.config.
	install -Dm644 "$builddir/arch/$_carch/boot/Image" \
		"$pkgdir/boot/vmlinuz"

	make modules_install dtbs_install \
		ARCH="$_carch" \
		LLVM=1 \
		INSTALL_MOD_PATH="$pkgdir"/usr \
		INSTALL_MOD_STRIP=1 \
		INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs

	# All-zero dtbo image (full partition size), same trick as
	# device-motorola-dubai: the bootloader finds no valid DT-overlay
	# table magic and applies nothing, so the stock kalama overlay does
	# not get merged onto our mainline base DTB.
	mkdir -p "$pkgdir"/boot
	dd if=/dev/zero of="$pkgdir/boot/dtbo.img" bs=1M count=24 status=none

	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
}

# 'pmbootstrap checksum linux-postmarketos-qcom-sm8550' fills in the tarball hash
# (same tarball as linux-postmarketos-mainline, ~150 MB download).
sha512sums="
52d5aa7f94f6aa6141debf4ceb4fc7a2e75505a7cd38b8854e501be83c2b57863020f463f2fdb2fc93667e6cfe13274d077e5207a611e4797bd9404ee0e64c58  linux-postmarketos-qcom-sm8550-7.2.tar.gz
f9ae52489f6b9e6fef64952943cd09732a5bef90a0e8765db03c256483028368687d6d5a1d80dd813a513e7e80d91f8b47f49b91cff67266b76f1d6275a7fea0  config-motorola-rtwo.aarch64
53441c23146d76bb0eaa358a25f6cce4f21740cfb65b755df52bbb218daf2cda30b3d80fa6ca4e283ea1afe2b0fa708307b678b421898100710b8fb99b08d6c5  rtwo.config
91f6a22d1c3ae0a2919cdc8d31adb3bb0ef8db0ba9e3b1608eeefc9460ccf19704d54e09338556aa735c3a875a73107785ab33a795d48ad86febc1abd3ad5aba  sm8550-motorola-rtwo.dts
"
