#!/bin/bash
kernel="kernel.img"
boot_img_url="https://getduff.com/share/root-boot.img"
magisk_url="https://github.com/topjohnwu/Magisk/releases/download/v20.4/Magisk-v20.4.zip"
magisk_file=`echo $magisk_url | rev | cut -d '/' -f1 | rev`
cpu=`cat /proc/cpuinfo | grep processor | wc -l`

select s in Compile_new Compile_update Clean_all
do
        break
done

if [ $s = "Clean_all" ];then
	echo clean
	rm -fr ./mkbootimg
	rm -fr ./Packing
	rm -fr ./KERNEL
	rm -fr ./KERNEL_OUT
	rm -fr ./MAGISK
	rm -f ./$kernel
	rm -f ./$kernel.backup
	exit 0
fi

read -p "Magisk root (y/n)?" choice
case "$choice" in
  y|Y ) root=yes;;
  n|N ) root=no;;
  * ) echo "invalid";;
esac

function new {
git clone https://github.com/osm0sis/mkbootimg
cd mkbootimg
sed -i '/uint32_t kernel_offset/c\    uint32_t kernel_offset  = 0xEC080100U;' ./mkbootimg.c
sed -i '/uint32_t ramdisk_offset/c\    uint32_t ramdisk_offset = 0x01000100U;' ./mkbootimg.c
sed -i '/uint32_t second_offset/c\    uint32_t second_offset  = 0xECF00100U;' ./mkbootimg.c
make -j$cpu
cd ..
mkdir Packing && cd Packing
wget $boot_img_url
../mkbootimg/unpackbootimg -i root-boot.img -o .
cd ..
git clone https://github.com/deadman96385/android_kernel_planet_mt6771.git KERNEL
make O=../KERNEL_OUT -C KERNEL ARCH=arm64 k71v1_64_bsp_defconfig
cd KERNEL
sed -i '/-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs/c\KBUILD_CFLAGS   := -w -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \\' ./Makefile
sed -i '/^.*after_dashes;/a flags |= MODULE_INIT_IGNORE_MODVERSIONS;\nflags |= MODULE_INIT_IGNORE_VERMAGIC;\n' ./kernel/module.c
}

function modify {
make O=../KERNEL_OUT ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
sed -i 's/# CONFIG_MODULE_FORCE_LOAD is not set/CONFIG_MODULE_FORCE_LOAD=y/' ../KERNEL_OUT/.config
make O=../KERNEL_OUT -j$cpu ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
cd ../Packing/
cp ../KERNEL_OUT/arch/arm64/boot/Image.gz-dtb .
../mkbootimg/mkbootimg --kernel Image.gz-dtb --ramdisk root-boot.img-ramdisk.gz --base 0x53ffff00 --cmdline 'bootopt=64S3,32N2,64N2 buildvariant=user veritykeyid=id:7e4333f9bba00adfe0ede979e28ed1920492b40f' -o ../$kernel
}

function magisk {
cd ..
mkdir MAGISK
cd ./MAGISK
wget $magisk_url
unzip -o ./$magisk_file
cd x86
chmod +x *

./magiskboot unpack ../../$kernel
./magiskboot cpio ramdisk.cpio \
"add 750 init magiskinit" \
"patch" \
"backup ramdisk.cpio.orig" \
"mkdir 000 .backup" \
"add 000 .backup/.magisk config"

./magiskboot cpio ramdisk.cpio compress

./magiskboot hexpatch kernel \
736B69705F696E697472616D667300 \
77616E745F696E697472616D667300

./magiskboot repack ../../$kernel

mv ../../$kernel ../../$kernel.backup
mv ./new-boot.img ../../$kernel
cd ../../
rm -fr ./MAGISK
}


if [ $s = "Compile_new" ];then
	rm -fr ./mkbootimg
	rm -fr ./Packing
	rm -fr ./KERNEL
	rm -fr ./KERNEL_OUT
	rm -f ./$kernel
	new
	modify
	if [ $root = "yes" ]; then
		magisk
	fi
fi

if [ $s = "Compile_update" ];then
echo $root
	rm -f ./$kernel
	cd KERNEL
	modify
	if [ $root = "yes" ]; then
		magisk
	fi
fi

