143 lines
3.0 KiB
Bash
Raw Normal View History

2025-05-10 21:49:39 +08:00
#!/bin/bash -e
build_uefi()
{
check_config RK_KERNEL_DTB || return 1
if [ "$RK_CHIP" != rk3588 -o ! -d uefi ]; then
echo "UEFI not supported!"
return 1
fi
if [ ! -f "$RK_KERNEL_DTB" ]; then
echo "$RK_KERNEL_DTB not exists!"
return 1
fi
UEFI_DIR=uefi/edk2-platforms/Platform/Rockchip/DeviceTree
run_command cp "$RK_KERNEL_DTB" $UEFI_DIR/$RK_CHIP.dtb
run_command cd uefi
run_command $UMAKE $RK_UBOOT_CFG
}
build_uboot()
{
check_config RK_UBOOT_CFG || return 0
if [ -z "$DRY_RUN" ]; then
rm -f u-boot/*.bin u-boot/*.img
fi
UARGS_COMMON="$RK_UBOOT_OPTS \
${RK_UBOOT_INI:+../rkbin/RKBOOT/$RK_UBOOT_INI} \
${RK_UBOOT_TRUST_INI:+../rkbin/RKTRUST/$RK_UBOOT_TRUST_INI}"
UARGS="$UARGS_COMMON ${RK_UBOOT_SPL:+--spl-new} \
${RK_SECURITY_BURN_KEY:+--burn-key-hash}"
if [ "$RK_SECURITY" ]; then
for IMAGE in ${1:-boot.img ${RK_RECOVERY_CFG:+recovery.img}}; do
[ "$DRY_RUN" ] || \
cp "$RK_FIRMWARE_DIR/$IMAGE" u-boot/
UARGS="$UARGS --${IMAGE/./_} $SDK_DIR/u-boot/$IMAGE"
done
fi
run_command cd u-boot
run_command $UMAKE $RK_UBOOT_CFG $RK_UBOOT_CFG_FRAGMENTS $UARGS
if [ "$RK_UBOOT_SPL" ]; then
if [ "$DRY_RUN" ] || \
! grep -q "ROCKCHIP_FIT_IMAGE_PACK=y" .config; then
# Repack SPL for non-FIT u-boot
run_command $UMAKE $UARGS_COMMON --spl
fi
fi
if [ "$RK_UBOOT_RAW" ]; then
run_command $UMAKE $UARGS_COMMON --idblock
fi
run_command cd ..
if [ "$DRY_RUN" ]; then
return 0
fi
if [ "$RK_SECURITY" ];then
for IMAGE in u-boot/boot.img u-boot/recovery.img; do
[ ! -r $IMAGE ] || \
ln -rsf $IMAGE "$RK_SECURITY_FIRMWARE_DIR"
done
fi
LOADER="$(echo u-boot/*_loader_*.bin | head -1)"
ln -rsf "$LOADER" "$RK_FIRMWARE_DIR"/MiniLoaderAll.bin
ln -rsf u-boot/uboot.img "$RK_FIRMWARE_DIR"
[ ! -e u-boot/trust.img ] || \
ln -rsf u-boot/trust.img "$RK_FIRMWARE_DIR"
}
# Hooks
usage_hook()
{
echo -e "loader[:cmds] \tbuild loader (uboot)"
echo -e "uboot[:cmds] \tbuild u-boot"
echo -e "uefi[:cmds] \tbuild uefi"
}
clean_hook()
{
make -C u-boot distclean
}
BUILD_CMDS="loader uboot uefi"
build_hook()
{
if [ "$RK_RTOS" ]; then
RK_UBOOT_TOOLCHAIN="$(get_toolchain "$RK_RTOS_ARCH" arm none)"
else
RK_UBOOT_TOOLCHAIN="$(get_toolchain "$RK_UBOOT_ARCH")"
fi
echo "Toolchain for loader (u-boot):"
echo "${RK_UBOOT_TOOLCHAIN:-gcc}"
echo
export UMAKE="./make.sh CROSS_COMPILE=$RK_UBOOT_TOOLCHAIN"
if [ "$DRY_RUN" ]; then
echo -e "\e[35mCommands of building $1:\e[0m"
else
echo "=========================================="
echo " Start building $1"
echo "=========================================="
fi
TARGET="$1"
shift
[ "$1" != cmds ] || shift
case "$TARGET" in
uboot | loader) build_uboot $@ ;;
uefi) build_uefi $@ ;;
*) usage ;;
esac
if [ -z "$DRY_RUN" ]; then
finish_build build_$TARGET $@
fi
}
build_hook_dry()
{
DRY_RUN=1 build_hook $@
}
source "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}"
build_hook ${@:-loader}