#!/bin/bash
build_kernel() {
echo "==========Building kernel image=========="
cd $ANDROID_BUILD_TOP
source build/envsetup.sh
lunch walleye-userdebug
cd $LOCAL_KERNEL_HOME
. ./build.config
make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} ${DEFCONFIG}
make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} -j32
cp $LOCAL_KERNEL_HOME/arch/arm64/boot/Image.lz4-dtb arch/arm64/boot/dtbo.img `find . -name '*.ko'` $ANDROID_BUILD_TOP/device/google/wahoo-kernel
}
build_image() {
cd $ANDROID_BUILD_TOP
source build/envsetup.sh
lunch walleye-userdebug
if [ "$1" = "bootimage" ]; then
echo "==========Building bootimage=========="
make -j32 vendorimage-nodeps
make -j32 vbmetaimage-nodeps
make -j32 bootimage
else
echo "==========Building complete image=========="
make -j32
fi
}
wait_for_fastboot() {
# wait for device to enter fastboot, max wait is 200secs
local i=0
while [ $i -lt 100 ]
do
if [ -n "`fastboot devices`" ]; then
break
else
sleep 2
i=$((i+1))
fi
done
}
flash_android() {
# reboot the device if it's online
if [ "`adb devices`" != "List of devices attached" ]; then
echo "==========Rebooting the device into fastboot=========="
adb reboot bootloader
fi
echo "==========Waiting for device to enter fastboot=========="
wait_for_fastboot
if [ -z "`fastboot devices`" ]; then
echo "==========Device failed to enter fastboot=========="
exit
fi
# flash the device
if [ "$1" = "bootimage" ]; then
echo "==========Flashing bootimage=========="
fastboot flash vbmeta
fastboot flash vendor
fastboot flash boot
fastboot reboot
else
echo "==========Flashing complete image=========="
fastboot flashall
fi
echo "==========Waiting for device to come online=========="
# wait for device to boot
adb wait-for-device
}
# check input parameters
if [ "$1" != "kernel" ] && [ "$1" != "all" ]; then
echo "First parameter \"$1\" is invalid. Should be \"kernel\" or \"all\"."
exit
fi
if [ "$2" != "build" ] && [ "$2" != "flash" ]; then
echo "Second parameter \"$2\" is invalid. Should be \"build\" or \"flash\"."
exit
fi
if [ -z "$ANDROID_BUILD_TOP" ]; then
echo "ANDROID_BUILD_TOP environment variable is not set."
exit
fi
if [ -z "$LOCAL_KERNEL_HOME" ]; then
echo "LOCAL_KERNEL_HOME environment variable is not set."
exit
fi
if [ "$2" = "build" ]; then
build_kernel
if [ "$1" = "kernel" ]; then
build_image bootimage
else
build_image
fi
else
if [ "$1" = "kernel" ]; then
flash_android bootimage
else
flash_android
fi
fi