Files
device_rockchip/common/build.sh
Weiwen Chen 5c02c954b2 common: support package update_sdcard.img
Configure:
RK_PACKAGE_FILE_AB to build update_ab.img
RK_PACKAGE_FILE_SDCARD_UPDATE to build update_sdcard.img
RK_PACKAGE_FILE_OTA to build update_ota.img

Signed-off-by: Weiwen Chen <cww@rock-chips.com>
Change-Id: I8beec81e55d22547d8902f36b84317680b7e94c6
2021-02-08 15:54:36 +08:00

771 lines
20 KiB
Bash
Executable File

#!/bin/bash
export LC_ALL=C
unset RK_CFG_TOOLCHAIN
err_handler() {
ret=$?
[ "$ret" -eq 0 ] && return
echo "ERROR: Running ${FUNCNAME[1]} failed!"
echo "ERROR: exit code $ret from line ${BASH_LINENO[0]}:"
echo " $BASH_COMMAND"
exit $ret
}
trap 'err_handler' ERR
set -eE
function finish_build(){
echo "Running ${FUNCNAME[1]} succeeded."
cd $TOP_DIR
}
function check_config(){
unset missing
for var in $@; do
eval [ \$$var ] && continue
missing="$missing $var"
done
[ -z "$missing" ] && return 0
echo "Skipping ${FUNCNAME[1]} for missing configs: $missing."
return 1
}
function choose_target_board()
{
echo
echo "You're building on Linux"
echo "Lunch menu...pick a combo:"
echo ""
echo "0. default BoardConfig.mk"
echo ${RK_TARGET_BOARD_ARRAY[@]} | xargs -n 1 | sed "=" | sed "N;s/\n/. /"
local INDEX
read -p "Which would you like? [0]: " INDEX
INDEX=$((${INDEX:-0} - 1))
if echo $INDEX | grep -vq [^0-9]; then
RK_BUILD_TARGET_BOARD="${RK_TARGET_BOARD_ARRAY[$INDEX]}"
else
echo "Lunching for Default BoardConfig.mk boards..."
RK_BUILD_TARGET_BOARD=BoardConfig.mk
fi
}
function build_select_board()
{
RK_TARGET_BOARD_ARRAY=( $(cd ${TARGET_PRODUCT_DIR}/; ls BoardConfig*.mk | sort) )
RK_TARGET_BOARD_ARRAY_LEN=${#RK_TARGET_BOARD_ARRAY[@]}
if [ $RK_TARGET_BOARD_ARRAY_LEN -eq 0 ]; then
echo "No available Board Config"
return
fi
choose_target_board
ln -rfs $TARGET_PRODUCT_DIR/$RK_BUILD_TARGET_BOARD device/rockchip/.BoardConfig.mk
echo "switching to board: `realpath $BOARD_CONFIG`"
}
function unset_board_config_all()
{
local tmp_file=`mktemp`
grep -oh "^export.*RK_.*=" `find device -name "Board*.mk"` > $tmp_file
source $tmp_file
rm -f $tmp_file
}
CMD=`realpath $0`
COMMON_DIR=`dirname $CMD`
TOP_DIR=$(realpath $COMMON_DIR/../../..)
cd $TOP_DIR
BOARD_CONFIG=$TOP_DIR/device/rockchip/.BoardConfig.mk
TARGET_PRODUCT="$TOP_DIR/device/rockchip/.target_product"
TARGET_PRODUCT_DIR=$(realpath ${TARGET_PRODUCT})
if [ ! -L "$BOARD_CONFIG" -a "$1" != "lunch" ]; then
build_select_board
fi
unset_board_config_all
[ -L "$BOARD_CONFIG" ] && source $BOARD_CONFIG
source device/rockchip/common/Version.mk
function usagekernel()
{
check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0
echo "cd kernel"
echo "make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT"
echo "make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS"
}
function usageuboot()
{
check_config RK_UBOOT_DEFCONFIG || return 0
cd u-boot
echo "cd u-boot"
if [ -f "configs/$RK_UBOOT_DEFCONFIG_FRAGMENT" ]; then
if [ -f "configs/${RK_UBOOT_DEFCONFIG}_defconfig" ]; then
echo "make ${RK_UBOOT_DEFCONFIG}_defconfig $RK_UBOOT_DEFCONFIG_FRAGMENT"
else
echo "make ${RK_UBOOT_DEFCONFIG}.config $RK_UBOOT_DEFCONFIG_FRAGMENT"
fi
echo "./make.sh \
${RK_TRUST_INI_CONFIG:+../rkbin/RKTRUST/$RK_TRUST_INI_CONFIG} \
${RK_SPL_INI_CONFIG:+../rkbin/RKBOOT/$RK_SPL_INI_CONFIG} \
${RK_UBOOT_SIZE_CONFIG:+--sz-uboot $RK_UBOOT_SIZE_CONFIG} \
${RK_TRUST_SIZE_CONFIG:+--sz-trust $RK_TRUST_SIZE_CONFIG}"
else
echo "./make.sh $RK_UBOOT_DEFCONFIG" \
"${RK_TRUST_INI_CONFIG:+../rkbin/RKTRUST/$RK_TRUST_INI_CONFIG}" \
"${RK_SPL_INI_CONFIG:+../rkbin/RKBOOT/$RK_SPL_INI_CONFIG}" \
"${RK_UBOOT_SIZE_CONFIG:+--sz-uboot $RK_UBOOT_SIZE_CONFIG}" \
"${RK_TRUST_SIZE_CONFIG:+--sz-trust $RK_TRUST_SIZE_CONFIG}"
fi
if [ "$RK_LOADER_UPDATE_SPL" = "true" ]; then
echo "./make.sh --spl"
fi
if [ "$RK_IDBLOCK_UPDATE_SPL" = "true" ]; then
echo "./make.sh --idblock --spl"
fi
finish_build
}
function usagerootfs()
{
check_config RK_ROOTFS_IMG || return 0
if [ "${RK_CFG_BUILDROOT}x" != "x" ];then
echo "source envsetup.sh $RK_CFG_BUILDROOT"
else
if [ "${RK_CFG_RAMBOOT}x" != "x" ];then
echo "source envsetup.sh $RK_CFG_RAMBOOT"
else
echo "Not found config buildroot. Please Check !!!"
fi
fi
case "${RK_ROOTFS_SYSTEM:-buildroot}" in
yocto)
;;
debian)
;;
distro)
;;
*)
echo "make"
;;
esac
}
function usagerecovery()
{
check_config RK_CFG_RECOVERY || return 0
echo "source envsetup.sh $RK_CFG_RECOVERY"
echo "$COMMON_DIR/mk-ramdisk.sh recovery.img $RK_CFG_RECOVERY"
}
function usageramboot()
{
check_config RK_CFG_RAMBOOT || return 0
echo "source envsetup.sh $RK_CFG_RAMBOOT"
echo "$COMMON_DIR/mk-ramdisk.sh ramboot.img $RK_CFG_RAMBOOT"
}
function usagemodules()
{
check_config RK_KERNEL_DEFCONFIG || return 0
echo "cd kernel"
echo "make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG"
echo "make ARCH=$RK_ARCH modules -j$RK_JOBS"
}
function usage()
{
echo "Usage: build.sh [OPTIONS]"
echo "Available options:"
echo "BoardConfig*.mk -switch to specified board config"
echo "lunch -list current SDK boards and switch to specified board config"
echo "uboot -build uboot"
echo "spl -build spl"
echo "loader -build loader"
echo "kernel -build kernel"
echo "modules -build kernel modules"
echo "toolchain -build toolchain"
echo "rootfs -build default rootfs, currently build buildroot as default"
echo "buildroot -build buildroot rootfs"
echo "ramboot -build ramboot image"
echo "multi-npu_boot -build boot image for multi-npu board"
echo "yocto -build yocto rootfs"
echo "debian -build debian10 buster/x11 rootfs"
echo "distro -build debian10 buster/wayland rootfs"
echo "pcba -build pcba"
echo "recovery -build recovery"
echo "all -build uboot, kernel, rootfs, recovery image"
echo "cleanall -clean uboot, kernel, rootfs, recovery"
echo "firmware -pack all the image we need to boot up system"
echo "updateimg -pack update image"
echo "otapackage -pack ab update otapackage image"
echo "sdpackage -pack update sdcard package image (sdupdate.img-data)"
echo "save -save images, patches, commands used to debug"
echo "allsave -build all & firmware & updateimg & save"
echo "check -check the environment of building"
echo "info -see the current board building information"
echo ""
echo "Default option is 'allsave'."
}
function build_info(){
if [ ! -L $TARGET_PRODUCT_DIR ];then
echo "No found target product!!!"
fi
if [ ! -L $BOARD_CONFIG ];then
echo "No found target board config!!!"
fi
echo "Current Building Information:"
echo "Target Product: $TARGET_PRODUCT_DIR"
echo "Target BoardConfig: `realpath $BOARD_CONFIG`"
echo "Target Misc config:"
echo "`env |grep "^RK_" | grep -v "=$" | sort`"
}
function build_check(){
local build_depend_cfg="build-depend-tools.txt"
common_product_build_tools="device/rockchip/common/$build_depend_cfg"
target_product_build_tools="device/rockchip/$RK_TARGET_PRODUCT/$build_depend_cfg"
cat $common_product_build_tools $target_product_build_tools 2>/dev/null | while read chk_item
do
chk_item=${chk_item###*}
if [ -z "$chk_item" ]; then
continue
fi
dst=${chk_item%%,*}
src=${chk_item##*,}
echo "**************************************"
if eval $dst &>/dev/null;then
echo "Check [OK]: $dst"
else
echo "Please install ${dst%% *} first"
echo " sudo apt-get install $src"
fi
done
}
function build_uboot(){
check_config RK_UBOOT_DEFCONFIG || return 0
echo "============Start building uboot============"
echo "TARGET_UBOOT_CONFIG=$RK_UBOOT_DEFCONFIG"
echo "========================================="
cd u-boot
rm -f *_loader_*.bin
if [ -f "configs/$RK_UBOOT_DEFCONFIG_FRAGMENT" ]; then
if [ -f "configs/${RK_UBOOT_DEFCONFIG}_defconfig" ]; then
make ${RK_UBOOT_DEFCONFIG}_defconfig $RK_UBOOT_DEFCONFIG_FRAGMENT
else
make ${RK_UBOOT_DEFCONFIG}.config $RK_UBOOT_DEFCONFIG_FRAGMENT
fi
./make.sh \
${RK_TRUST_INI_CONFIG:+../rkbin/RKTRUST/$RK_TRUST_INI_CONFIG} \
${RK_SPL_INI_CONFIG:+../rkbin/RKBOOT/$RK_SPL_INI_CONFIG} \
${RK_UBOOT_SIZE_CONFIG:+--sz-uboot $RK_UBOOT_SIZE_CONFIG} \
${RK_TRUST_SIZE_CONFIG:+--sz-trust $RK_TRUST_SIZE_CONFIG}
else
./make.sh $RK_UBOOT_DEFCONFIG \
${RK_TRUST_INI_CONFIG:+../rkbin/RKTRUST/$RK_TRUST_INI_CONFIG} \
${RK_SPL_INI_CONFIG:+../rkbin/RKBOOT/$RK_SPL_INI_CONFIG} \
${RK_UBOOT_SIZE_CONFIG:+--sz-uboot $RK_UBOOT_SIZE_CONFIG} \
${RK_TRUST_SIZE_CONFIG:+--sz-trust $RK_TRUST_SIZE_CONFIG}
fi
if [ "$RK_LOADER_UPDATE_SPL" = "true" ]; then
rm -f *spl.bin
./make.sh --spl
fi
if [ "$RK_IDBLOCK_UPDATE_SPL" = "true" ]; then
./make.sh --idblock --spl
fi
finish_build
}
function build_spl(){
check_config RK_SPL_DEFCONFIG || return 0
echo "============Start building spl============"
echo "TARGET_SPL_CONFIG=$RK_SPL_DEFCONFIG"
echo "========================================="
cd u-boot
rm -f *spl.bin
./make.sh $RK_SPL_DEFCONFIG
./make.sh --spl
finish_build
}
function build_loader(){
check_config RK_LOADER_BUILD_TARGET || return 0
echo "============Start building loader============"
echo "RK_LOADER_BUILD_TARGET=$RK_LOADER_BUILD_TARGET"
echo "=========================================="
cd loader
./build.sh $RK_LOADER_BUILD_TARGET
finish_build
}
function build_kernel(){
check_config RK_KERNEL_DTS RK_KERNEL_DEFCONFIG || return 0
echo "============Start building kernel============"
echo "TARGET_ARCH =$RK_ARCH"
echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG"
echo "TARGET_KERNEL_DTS =$RK_KERNEL_DTS"
echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT"
echo "=========================================="
cd kernel
make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT
make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS
if [ -f "$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_KERNEL_FIT_ITS" ]; then
$COMMON_DIR/mk-fitimage.sh $TOP_DIR/kernel/$RK_BOOT_IMG \
$TOP_DIR/device/rockchip/$RK_TARGET_PRODUCT/$RK_KERNEL_FIT_ITS
fi
finish_build
}
function build_modules(){
check_config RK_KERNEL_DEFCONFIG || return 0
echo "============Start building kernel modules============"
echo "TARGET_ARCH =$RK_ARCH"
echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG"
echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT"
echo "=================================================="
cd kernel
make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT
make ARCH=$RK_ARCH modules -j$RK_JOBS
finish_build
}
function build_toolchain(){
check_config RK_CFG_TOOLCHAIN || return 0
echo "==========Start building toolchain =========="
echo "TARGET_TOOLCHAIN_CONFIG=$RK_CFG_TOOLCHAIN"
echo "========================================="
/usr/bin/time -f "you take %E to build toolchain" \
$COMMON_DIR/mk-toolchain.sh $BOARD_CONFIG
finish_build
}
function build_buildroot(){
check_config RK_CFG_BUILDROOT || return 0
echo "==========Start building buildroot=========="
echo "TARGET_BUILDROOT_CONFIG=$RK_CFG_BUILDROOT"
echo "========================================="
/usr/bin/time -f "you take %E to build builroot" \
$COMMON_DIR/mk-buildroot.sh $BOARD_CONFIG
finish_build
}
function build_ramboot(){
check_config RK_CFG_RAMBOOT || return 0
echo "=========Start building ramboot========="
echo "TARGET_RAMBOOT_CONFIG=$RK_CFG_RAMBOOT"
echo "====================================="
/usr/bin/time -f "you take %E to build ramboot" \
$COMMON_DIR/mk-ramdisk.sh ramboot.img $RK_CFG_RAMBOOT
ln -rsf buildroot/output/$RK_CFG_RAMBOOT/images/ramboot.img \
rockdev/boot.img
finish_build
}
function build_multi-npu_boot(){
check_config RK_MULTINPU_BOOT || return 0
echo "=========Start building multi-npu boot========="
echo "TARGET_RAMBOOT_CONFIG=$RK_CFG_RAMBOOT"
echo "====================================="
/usr/bin/time -f "you take %E to build multi-npu boot" \
$COMMON_DIR/mk-multi-npu_boot.sh
finish_build
}
function build_yocto(){
check_config RK_YOCTO_MACHINE || return 0
echo "=========Start building ramboot========="
echo "TARGET_MACHINE=$RK_YOCTO_MACHINE"
echo "====================================="
cd yocto
ln -sf $RK_YOCTO_MACHINE.conf build/conf/local.conf
source oe-init-build-env
LANG=en_US.UTF-8 LANGUAGE=en_US.en LC_ALL=en_US.UTF-8 \
bitbake core-image-minimal -r conf/include/rksdk.conf
finish_build
}
function build_debian(){
echo "=========Start building debian========="
case $RK_ARCH in
arm) ARCH=armhf ;;
*) ARCH=arm64 ;;
esac
cd debian
[ ! -e linaro-buster-alip-*.tar.gz ] && \
RELEASE=buster TARGET=desktop ARCH=$ARCH ./mk-base-debian.sh
VERSION=debug ARCH=$ARCH ./mk-rootfs-buster.sh
./mk-image.sh
finish_build
}
function build_distro(){
check_config RK_DISTRO_DEFCONFIG || return 0
echo "===========Start building distro==========="
echo "TARGET_ARCH=$RK_ARCH"
echo "RK_DISTRO_DEFCONFIG=$RK_DISTRO_DEFCONFIG"
echo "========================================"
cd distro
make $RK_DISTRO_DEFCONFIG
/usr/bin/time -f "you take %E to build distro" distro/make.sh
finish_build
}
function build_rootfs(){
check_config RK_ROOTFS_IMG || return 0
RK_ROOTFS_DIR=.rootfs
ROOTFS_IMG=${RK_ROOTFS_IMG##*/}
rm -rf $RK_ROOTFS_IMG $RK_ROOTFS_DIR
mkdir -p ${RK_ROOTFS_IMG%/*} $RK_ROOTFS_DIR
case "$1" in
yocto)
build_yocto
ln -rsf yocto/build/latest/rootfs.img \
$RK_ROOTFS_DIR/rootfs.ext4
;;
debian)
build_debian
ln -rsf debian/linaro-rootfs.img \
$RK_ROOTFS_DIR/rootfs.ext4
;;
distro)
build_distro
for f in $(ls distro/output/images/rootfs.*);do
ln -rsf $f $RK_ROOTFS_DIR/
done
;;
*)
build_buildroot
for f in $(ls buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.*);do
ln -rsf $f $RK_ROOTFS_DIR/
done
;;
esac
if [ ! -f "$RK_ROOTFS_DIR/$ROOTFS_IMG" ]; then
echo "There's no $ROOTFS_IMG generated..."
exit 1
fi
ln -rsf $RK_ROOTFS_DIR/$ROOTFS_IMG $RK_ROOTFS_IMG
finish_build
}
function build_recovery(){
check_config RK_CFG_RECOVERY || return 0
echo "==========Start building recovery=========="
echo "TARGET_RECOVERY_CONFIG=$RK_CFG_RECOVERY"
echo "========================================"
/usr/bin/time -f "you take %E to build recovery" \
$COMMON_DIR/mk-ramdisk.sh recovery.img $RK_CFG_RECOVERY
finish_build
}
function build_pcba(){
check_config RK_CFG_PCBA || return 0
echo "==========Start building pcba=========="
echo "TARGET_PCBA_CONFIG=$RK_CFG_PCBA"
echo "===================================="
/usr/bin/time -f "you take %E to build pcba" \
$COMMON_DIR/mk-ramdisk.sh pcba.img $RK_CFG_PCBA
finish_build
}
function build_all(){
echo "============================================"
echo "TARGET_ARCH=$RK_ARCH"
echo "TARGET_PLATFORM=$RK_TARGET_PRODUCT"
echo "TARGET_UBOOT_CONFIG=$RK_UBOOT_DEFCONFIG"
echo "TARGET_SPL_CONFIG=$RK_SPL_DEFCONFIG"
echo "TARGET_KERNEL_CONFIG=$RK_KERNEL_DEFCONFIG"
echo "TARGET_KERNEL_DTS=$RK_KERNEL_DTS"
echo "TARGET_TOOLCHAIN_CONFIG=$RK_CFG_TOOLCHAIN"
echo "TARGET_BUILDROOT_CONFIG=$RK_CFG_BUILDROOT"
echo "TARGET_RECOVERY_CONFIG=$RK_CFG_RECOVERY"
echo "TARGET_PCBA_CONFIG=$RK_CFG_PCBA"
echo "TARGET_RAMBOOT_CONFIG=$RK_CFG_RAMBOOT"
echo "============================================"
#note: if build spl, it will delete loader.bin in uboot directory,
# so can not build uboot and spl at the same time.
if [ -z $RK_SPL_DEFCONFIG ]; then
build_uboot
else
build_spl
fi
build_loader
build_kernel
build_toolchain
build_rootfs ${RK_ROOTFS_SYSTEM:-buildroot}
build_recovery
build_ramboot
finish_build
}
function build_cleanall(){
echo "clean uboot, kernel, rootfs, recovery"
cd u-boot
make distclean
cd -
cd kernel
make distclean
cd -
rm -rf buildroot/output
rm -rf yocto/build/tmp
rm -rf distro/output
rm -rf debian/binary
finish_build
}
function build_firmware(){
./mkfirmware.sh $BOARD_CONFIG
finish_build
}
function build_updateimg(){
IMAGE_PATH=$TOP_DIR/rockdev
PACK_TOOL_DIR=$TOP_DIR/tools/linux/Linux_Pack_Firmware
cd $PACK_TOOL_DIR/rockdev
if [ -f "$RK_PACKAGE_FILE_AB" ]; then
build_sdcard_package
build_otapackage
cd $PACK_TOOL_DIR/rockdev
echo "Make Linux a/b update_ab.img."
source_package_file_name=`ls -lh package-file | awk -F ' ' '{print $NF}'`
ln -fs "$RK_PACKAGE_FILE_AB" package-file
./mkupdate.sh
mv update.img $IMAGE_PATH/update_ab.img
ln -fs $source_package_file_name package-file
else
echo "Make update.img"
if [ -f "$RK_PACKAGE_FILE" ]; then
source_package_file_name=`ls -lh package-file | awk -F ' ' '{print $NF}'`
ln -fs "$RK_PACKAGE_FILE" package-file
./mkupdate.sh
ln -fs $source_package_file_name package-file
else
./mkupdate.sh
fi
mv update.img $IMAGE_PATH
fi
finish_build
}
function build_otapackage(){
IMAGE_PATH=$TOP_DIR/rockdev
PACK_TOOL_DIR=$TOP_DIR/tools/linux/Linux_Pack_Firmware
echo "Make ota ab update_ota.img"
cd $PACK_TOOL_DIR/rockdev
if [ -f "$RK_PACKAGE_FILE_OTA" ]; then
source_package_file_name=`ls -lh $PACK_TOOL_DIR/rockdev/package-file | awk -F ' ' '{print $NF}'`
ln -fs "$RK_PACKAGE_FILE_OTA" package-file
./mkupdate.sh
mv update.img $IMAGE_PATH/update_ota.img
ln -fs $source_package_file_name package-file
fi
finish_build
}
function build_sdcard_package(){
IMAGE_PATH=$TOP_DIR/rockdev
PACK_TOOL_DIR=$TOP_DIR/tools/linux/Linux_Pack_Firmware
echo "Make sdcard update update_sdcard.img"
cd $PACK_TOOL_DIR/rockdev
if [ -f "$RK_PACKAGE_FILE_SDCARD_UPDATE" ]; then
source_package_file_name=`ls -lh $PACK_TOOL_DIR/rockdev/package-file | awk -F ' ' '{print $NF}'`
ln -fs "$RK_PACKAGE_FILE_SDCARD_UPDATE" package-file
./mkupdate.sh
mv update.img $IMAGE_PATH/update_sdcard.img
ln -fs $source_package_file_name package-file
fi
finish_build
}
function build_save(){
IMAGE_PATH=$TOP_DIR/rockdev
DATE=$(date +%Y%m%d.%H%M)
STUB_PATH=Image/"$RK_KERNEL_DTS"_"$DATE"_RELEASE_TEST
STUB_PATH="$(echo $STUB_PATH | tr '[:lower:]' '[:upper:]')"
export STUB_PATH=$TOP_DIR/$STUB_PATH
export STUB_PATCH_PATH=$STUB_PATH/PATCHES
mkdir -p $STUB_PATH
#Generate patches
.repo/repo/repo forall -c \
"$TOP_DIR/device/rockchip/common/gen_patches_body.sh"
#Copy stubs
.repo/repo/repo manifest -r -o $STUB_PATH/manifest_${DATE}.xml
mkdir -p $STUB_PATCH_PATH/kernel
cp kernel/.config $STUB_PATCH_PATH/kernel
cp kernel/vmlinux $STUB_PATCH_PATH/kernel
mkdir -p $STUB_PATH/IMAGES/
cp $IMAGE_PATH/* $STUB_PATH/IMAGES/
#Save build command info
echo "UBOOT: defconfig: $RK_UBOOT_DEFCONFIG" >> $STUB_PATH/build_cmd_info
echo "KERNEL: defconfig: $RK_KERNEL_DEFCONFIG, dts: $RK_KERNEL_DTS" >> $STUB_PATH/build_cmd_info
echo "BUILDROOT: $RK_CFG_BUILDROOT" >> $STUB_PATH/build_cmd_info
finish_build
}
function build_allsave(){
build_all
build_firmware
build_updateimg
build_save
finish_build
}
#=========================
# build targets
#=========================
if echo $@|grep -wqE "help|-h"; then
if [ -n "$2" -a "$(type -t usage$2)" == function ]; then
echo "###Current SDK Default [ $2 ] Build Command###"
eval usage$2
else
usage
fi
exit 0
fi
OPTIONS="${@:-allsave}"
[ -f "device/rockchip/$RK_TARGET_PRODUCT/$RK_BOARD_PRE_BUILD_SCRIPT" ] \
&& source "device/rockchip/$RK_TARGET_PRODUCT/$RK_BOARD_PRE_BUILD_SCRIPT" # board hooks
for option in ${OPTIONS}; do
echo "processing option: $option"
case $option in
BoardConfig*.mk)
option=device/rockchip/$RK_TARGET_PRODUCT/$option
;&
*.mk)
CONF=$(realpath $option)
echo "switching to board: $CONF"
if [ ! -f $CONF ]; then
echo "not exist!"
exit 1
fi
ln -rsf $CONF $BOARD_CONFIG
;;
lunch) build_select_board ;;
all) build_all ;;
save) build_save ;;
allsave) build_allsave ;;
check) build_check ;;
cleanall) build_cleanall ;;
firmware) build_firmware ;;
updateimg) build_updateimg ;;
otapackage) build_otapackage ;;
sdpackage) build_sdcard_package ;;
toolchain) build_toolchain ;;
spl) build_spl ;;
uboot) build_uboot ;;
loader) build_loader ;;
kernel) build_kernel ;;
modules) build_modules ;;
rootfs|buildroot|debian|distro|yocto) build_rootfs $option ;;
pcba) build_pcba ;;
ramboot) build_ramboot ;;
recovery) build_recovery ;;
multi-npu_boot) build_multi-npu_boot ;;
info) build_info ;;
*) usage ;;
esac
done