1*4882a593Smuzhiyun#!/bin/bash -e 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunbuild_uefi() 4*4882a593Smuzhiyun{ 5*4882a593Smuzhiyun check_config RK_KERNEL_DTB || return 1 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun if [ "$RK_CHIP" != rk3588 -o ! -d uefi ]; then 8*4882a593Smuzhiyun echo "UEFI not supported!" 9*4882a593Smuzhiyun return 1 10*4882a593Smuzhiyun fi 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun if [ ! -f "$RK_KERNEL_DTB" ]; then 13*4882a593Smuzhiyun echo "$RK_KERNEL_DTB not exists!" 14*4882a593Smuzhiyun return 1 15*4882a593Smuzhiyun fi 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun UEFI_DIR=uefi/edk2-platforms/Platform/Rockchip/DeviceTree 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun run_command cp "$RK_KERNEL_DTB" $UEFI_DIR/$RK_CHIP.dtb 20*4882a593Smuzhiyun run_command cd uefi 21*4882a593Smuzhiyun run_command $UMAKE $RK_UBOOT_CFG 22*4882a593Smuzhiyun} 23*4882a593Smuzhiyun 24*4882a593Smuzhiyunbuild_uboot() 25*4882a593Smuzhiyun{ 26*4882a593Smuzhiyun check_config RK_UBOOT_CFG || return 0 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun if [ -z "$DRY_RUN" ]; then 29*4882a593Smuzhiyun rm -f u-boot/*.bin u-boot/*.img 30*4882a593Smuzhiyun fi 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun UARGS_COMMON="$RK_UBOOT_OPTS \ 33*4882a593Smuzhiyun ${RK_UBOOT_INI:+../rkbin/RKBOOT/$RK_UBOOT_INI} \ 34*4882a593Smuzhiyun ${RK_UBOOT_TRUST_INI:+../rkbin/RKTRUST/$RK_UBOOT_TRUST_INI}" 35*4882a593Smuzhiyun UARGS="$UARGS_COMMON ${RK_UBOOT_SPL:+--spl-new} \ 36*4882a593Smuzhiyun ${RK_SECURITY_BURN_KEY:+--burn-key-hash}" 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun if [ "$RK_SECURITY" ]; then 39*4882a593Smuzhiyun for IMAGE in ${1:-boot.img ${RK_RECOVERY_CFG:+recovery.img}}; do 40*4882a593Smuzhiyun [ "$DRY_RUN" ] || \ 41*4882a593Smuzhiyun cp "$RK_FIRMWARE_DIR/$IMAGE" u-boot/ 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun UARGS="$UARGS --${IMAGE/./_} $SDK_DIR/u-boot/$IMAGE" 44*4882a593Smuzhiyun done 45*4882a593Smuzhiyun fi 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun run_command cd u-boot 48*4882a593Smuzhiyun run_command $UMAKE $RK_UBOOT_CFG $RK_UBOOT_CFG_FRAGMENTS $UARGS 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun if [ "$RK_UBOOT_SPL" ]; then 51*4882a593Smuzhiyun if [ "$DRY_RUN" ] || \ 52*4882a593Smuzhiyun ! grep -q "ROCKCHIP_FIT_IMAGE_PACK=y" .config; then 53*4882a593Smuzhiyun # Repack SPL for non-FIT u-boot 54*4882a593Smuzhiyun run_command $UMAKE $UARGS_COMMON --spl 55*4882a593Smuzhiyun fi 56*4882a593Smuzhiyun fi 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun if [ "$RK_UBOOT_RAW" ]; then 59*4882a593Smuzhiyun run_command $UMAKE $UARGS_COMMON --idblock 60*4882a593Smuzhiyun fi 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun run_command cd .. 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun if [ "$DRY_RUN" ]; then 65*4882a593Smuzhiyun return 0 66*4882a593Smuzhiyun fi 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun if [ "$RK_SECURITY" ];then 69*4882a593Smuzhiyun for IMAGE in u-boot/boot.img u-boot/recovery.img; do 70*4882a593Smuzhiyun [ ! -r $IMAGE ] || \ 71*4882a593Smuzhiyun ln -rsf $IMAGE "$RK_SECURITY_FIRMWARE_DIR" 72*4882a593Smuzhiyun done 73*4882a593Smuzhiyun fi 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun LOADER="$(echo u-boot/*_loader_*.bin | head -1)" 76*4882a593Smuzhiyun ln -rsf "$LOADER" "$RK_FIRMWARE_DIR"/MiniLoaderAll.bin 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun ln -rsf u-boot/uboot.img "$RK_FIRMWARE_DIR" 79*4882a593Smuzhiyun [ ! -e u-boot/trust.img ] || \ 80*4882a593Smuzhiyun ln -rsf u-boot/trust.img "$RK_FIRMWARE_DIR" 81*4882a593Smuzhiyun} 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun# Hooks 84*4882a593Smuzhiyun 85*4882a593Smuzhiyunusage_hook() 86*4882a593Smuzhiyun{ 87*4882a593Smuzhiyun echo -e "loader[:cmds] \tbuild loader (uboot)" 88*4882a593Smuzhiyun echo -e "uboot[:cmds] \tbuild u-boot" 89*4882a593Smuzhiyun echo -e "uefi[:cmds] \tbuild uefi" 90*4882a593Smuzhiyun} 91*4882a593Smuzhiyun 92*4882a593Smuzhiyunclean_hook() 93*4882a593Smuzhiyun{ 94*4882a593Smuzhiyun make -C u-boot distclean 95*4882a593Smuzhiyun} 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunBUILD_CMDS="loader uboot uefi" 98*4882a593Smuzhiyunbuild_hook() 99*4882a593Smuzhiyun{ 100*4882a593Smuzhiyun if [ "$RK_RTOS" ]; then 101*4882a593Smuzhiyun RK_UBOOT_TOOLCHAIN="$(get_toolchain "$RK_RTOS_ARCH" arm none)" 102*4882a593Smuzhiyun else 103*4882a593Smuzhiyun RK_UBOOT_TOOLCHAIN="$(get_toolchain "$RK_UBOOT_ARCH")" 104*4882a593Smuzhiyun fi 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun echo "Toolchain for loader (u-boot):" 107*4882a593Smuzhiyun echo "${RK_UBOOT_TOOLCHAIN:-gcc}" 108*4882a593Smuzhiyun echo 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun export UMAKE="./make.sh CROSS_COMPILE=$RK_UBOOT_TOOLCHAIN" 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun if [ "$DRY_RUN" ]; then 113*4882a593Smuzhiyun echo -e "\e[35mCommands of building $1:\e[0m" 114*4882a593Smuzhiyun else 115*4882a593Smuzhiyun echo "==========================================" 116*4882a593Smuzhiyun echo " Start building $1" 117*4882a593Smuzhiyun echo "==========================================" 118*4882a593Smuzhiyun fi 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun TARGET="$1" 121*4882a593Smuzhiyun shift 122*4882a593Smuzhiyun [ "$1" != cmds ] || shift 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun case "$TARGET" in 125*4882a593Smuzhiyun uboot | loader) build_uboot $@ ;; 126*4882a593Smuzhiyun uefi) build_uefi $@ ;; 127*4882a593Smuzhiyun *) usage ;; 128*4882a593Smuzhiyun esac 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun if [ -z "$DRY_RUN" ]; then 131*4882a593Smuzhiyun finish_build build_$TARGET $@ 132*4882a593Smuzhiyun fi 133*4882a593Smuzhiyun} 134*4882a593Smuzhiyun 135*4882a593Smuzhiyunbuild_hook_dry() 136*4882a593Smuzhiyun{ 137*4882a593Smuzhiyun DRY_RUN=1 build_hook $@ 138*4882a593Smuzhiyun} 139*4882a593Smuzhiyun 140*4882a593Smuzhiyunsource "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}" 141*4882a593Smuzhiyun 142*4882a593Smuzhiyunbuild_hook ${@:-loader} 143