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