MC3302_SDK_V1.0.3_20251215_SRC/sdk/X-AIOS-LT00/build-base.sh

1493 lines
54 KiB
Bash
Raw Normal View History

2026-01-08 04:12:46 +00:00
#!/bin/bash
[ -e ".config.env.unset" ] && source ./.config.env.unset
source ./.config.env
export BUILD_FASTBOOT=${CONFIG_XOS_BUILD_FASTBOOT}
export BUILD_SDK=${CONFIG_XOS_BUILD_SDK}
export BUILD_STORAGE=${CONFIG_STORAGE_TYPE_SPINOR}
export BUILD_NOQUI=${CONFIG_XOS_USE_NO_QUAUI}
export APP_DEBUG=${CONFIG_XOS_APP_DEBUG}
echo "BUILD_SDK=$BUILD_SDK"
echo "BUILD_FASTBOOT=$BUILD_FASTBOOT"
echo "BUILD_STORAGE=$BUILD_STORAGE"
echo "BUILD_NOQUI=$BUILD_NOQUI"
echo "APP_DEBUG=$APP_DEBUG"
usage()
{
echo "USAGE: [-C] [-U] [-K] [-Q] [-A] [-V] [-I] [-J] [-R] [-?] [-H] [-h]"
echo "No ARGS means use default build option "
echo "Option: -C = build clean "
echo " -U = build uboot "
echo " -K = build kernel "
echo " -Q = build quadrv "
echo " -A = build ALL "
echo " -V = build with 'userdebug' or 'user' "
echo " -I = generate firmware images(*.img) "
echo " -J = jobs number "
echo " -N = distclean "
echo " -R = post-build RTOS "
echo " -?/-h/-H = help information "
exit 1
}
export BUILD_MEDIUM=""
export BUILD_CLEAN=false
export BUILD_UBOOT=false
export BUILD_KERNEL=false
export BUILD_QUADRV=false
export BUILD_ALL=false
export BUILD_TYPE="userdebug"
export BUILD_FW_IMG=false
export BUILD_PACKAGES=false
export BUILD_JOBS=1 # =$(nproc)
export BUILD_DISTCLEAN=false
export BUILD_RTOS_POSTBUILD=false
if [ "$BUILD_STORAGE" = true ]; then
BUILD_MEDIUM="norflash"
fi
# check pass argument
while getopts "NCUKQARIV:J:hH?" OPT
do
case $OPT in
U)
echo "build u-boot"
BUILD_UBOOT=true
;;
K)
echo "build kernel"
BUILD_KERNEL=true
;;
Q)
echo "build quadrv"
BUILD_QUADRV=true
;;
A)
echo "build all"
BUILD_ALL=true
;;
V)
echo "build with $OPTARG"
BUILD_TYPE=$OPTARG
;;
J)
echo "build CPU JOBS $OPTARG"
BUILD_JOBS=$OPTARG
;;
C)
echo "build with clean"
CLEAN=clean
BUILD_CLEAN=true
;;
N)
echo "distclean"
BUILD_DISTCLEAN=true
;;
I)
echo "generate firmware images(*.img)"
BUILD_FW_IMG=true
;;
R)
echo "RTOS Post Build"
BUILD_RTOS_POSTBUILD=true
;;
h|H)
usage ;;
?)
usage ;;
esac
done
_sdk_fb_=""
_sdk_FB_=""
if [ "$BUILD_FASTBOOT" = true ];then
_sdk_fb_="_fb"
_sdk_FB_="FB=1"
fi
_sdk_64mb_=""
if [ "$BUILD_SDK" = "linux_64" ]; then
echo "Information! 64MB linux SDK will be selected."
_sdk_64mb_="_64mb"
fi
_sdk_name_=""
_realboard=""
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
_sdk_name_=fy00_linux
_realboard=fy00b$_sdk_64mb_$_sdk_fb_/$CONFIG_XOS_PROJECT_TYPE
BUILD_JOBS=8
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
source ./build/script/envsetup4qm102d.sh
_sdk_cross_compile=arm-molv2-linux-uclibcgnueabi-
fi
if [[ "$BUILD_SDK" = "qm10xd_rtt" ]]; then
source ./build/script/qm10xd/envsetup4rttos.sh
_sdk_cross_compile=arm-molv2-linux-uclibcgnueabi-
fi
if [[ "$BUILD_SDK" = "qm10xh_linux" ]]; then
source ./build/script/envsetup4qm108h.sh
_sdk_cross_compile=arm-fhv512-linux-uclibcgnueabihf-
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
source ./build/script/envsetup4qm102v.sh
_sdk_cross_compile=arm-fhv512-linux-uclibcgnueabihf-
fi
if [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
source ./build/script/envsetup4qm108hv2.sh
_sdk_cross_compile=arm-fhva12c-linux-uclibcgnueabihf-
fi
if [[ "$BUILD_SDK" = "qm10xv_rtt" ]]; then
source ./build/script/qm10xv/envsetup4rttos.sh
_sdk_cross_compile=arm-fullhanv2-eabi-
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
source ./build/script/envsetup4linux.sh
_sdk_cross_compile=arm-mol-linux-uclibcgnueabihf-
fi
if [[ "$BUILD_SDK" = "rtt" || "$BUILD_SDK" = "fy00_rtt" ]]; then
source ./build/script/envsetup4rttos.sh
_sdk_cross_compile=arm-linux-musleabi-
fi
if [[ "$BUILD_SDK" = "qm10xh_linux" ]]; then
_soc_pkg_vxxx=qm10xh_linux
fi
_sdk_build_name_=${BUILD_SDK}
export _top_img_out_dir_=$_sdk_build_name_$_sdk_64mb_$_is_fb_
export _xos_img_out_dir_=out/$_top_img_out_dir_/xos
_sdk_img_out_dir_=out/$_top_img_out_dir_/image
export _soc_pkg_path=${CONFIG_XOS_SDK_PATH}
export _soc_pkg_to_root_dir=../../../..
_xos_etc_path=core/board/generic/
## recovery
_recovery_dir=core/package/recovery/recovery
_sdk_old_img_out_dir_=out/$_top_img_out_dir_/old_image
_sdk_new_img_out_dir_=out/$_top_img_out_dir_/new_image
_qmdiff_img_out_dir_=out/$_top_img_out_dir_/qmdiff_image
_qmdiff_rollback_img_out_dir_=out/$_top_img_out_dir_/qmdiff_rollback_image
if [[ "$BUILD_SDK" = "qm10xv_rtt" ]]; then
_soc_pkg_build_board_dir=output/${BUILD_SDK}_${CONFIG_XOS_PROJECT_TYPE}
_soc_pkg_build_bsp_dir=output
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
_soc_pkg_build_board_dir=output
_soc_pkg_build_bsp_dir=output
fi
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
_soc_pkg_build_board_dir=output/$CONFIG_XOS_PROJECT_TYPE
_soc_pkg_build_bsp_dir=$_soc_pkg_build_board_dir/bsp # $_sdk_fb_
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
_soc_pkg_build_board_dir=output/qm102v
_soc_pkg_build_bsp_dir=$_soc_pkg_build_board_dir/bsp
create_xmodem_tools_dir=prebuilts/${CONFIG_XOS_PROJECT_TYPE}/bsp/tools/flash_upgrade
export _soc_pkg_bsp_path=$_soc_pkg_path/board_support
export _soc_pkg_media_path=$_soc_pkg_path/media_support
export _soc_bsp_sub_path=board_support
export _soc_bsp_uboot_path=$_soc_bsp_sub_path/uboot
export _soc_bsp_kernel_path=$_soc_bsp_sub_path/kernel
export _soc_media_sub_path=media_support
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
_soc_pkg_build_board_dir=output/qm10xd_$CONFIG_XOS_PROJECT_TYPE
_soc_pkg_build_bsp_dir=$_soc_pkg_build_board_dir/bsp # $_sdk_fb_
_soc_pkg_prebuilts_recovery_dir=prebuilts/$CONFIG_XOS_PROJECT_TYPE/bsp/recovery
fi
if [[ "$BUILD_SDK" = "qm10xd_rtt" ]]; then
_soc_pkg_build_board_dir=output/qm10xd_${CONFIG_XOS_PROJECT_TYPE}${CONFIG_STORAGE_TYPE}_dmb
_soc_pkg_build_bsp_dir=$_soc_pkg_build_board_dir/bsp # $_sdk_fb_
_soc_pkg_prebuilts_recovery_dir=prebuilts/$CONFIG_XOS_PROJECT_TYPE/bsp/recovery
fi
_soc_pkg_build_ouput_dir=$_soc_pkg_path/output
_soc_pkg_build_rootfs_dir=$_soc_pkg_build_bsp_dir/rootfs
echo "_top_img_out_dir_=$_top_img_out_dir_"
echo "_soc_pkg_build_board_dir=$_soc_pkg_build_board_dir"
echo "_soc_pkg_build_bsp_dir=$_soc_pkg_build_bsp_dir"
echo "_soc_pkg_build_ouput_dir=$_soc_pkg_build_ouput_dir"
echo "_soc_pkg_build_rootfs_dir=$_soc_pkg_build_rootfs_dir"
echo "_soc_pkg_prebuilts_recovery_dir=$_soc_pkg_prebuilts_recovery_dir"
CMD1=`realpath $0`
export XOS_SCRIPT_DIR=`dirname $CMD1`
export PRJ_TOP_DIR=$(realpath $XOS_SCRIPT_DIR/../../..)
export _top_board_conf_dir_="${PRJ_TOP_DIR}/product/${CONFIG_XOS_PROJECT_TYPE}"
echo "_top_board_conf_dir_: ${_top_board_conf_dir_}"
export drv_path=core/package/hardware/quaDrv
export _kernel_obj_dest
function make_strip() {
local dir_path="$1"
if [ -d "$dir_path" ]; then
#find "$dir_path" -type f -exec ${_sdk_cross_compile}strip -v --strip-debug {} \;
find "$dir_path" -type f -not -name "*.ko" -exec ${_sdk_cross_compile}strip {} \;
else
return 1
fi
}
function unset_board_config_all()
{
echo "unset_board_config_all"
local tmp_file=`mktemp`
grep -o "^export.*QM_SYS_.*=" `find $PRJ_TOP_DIR/product -name "project*.mk" -type f` -h | sort | uniq > $tmp_file
grep -o "^export.*CONFIG_XOS_.*=" `find $PRJ_TOP_DIR/product -name "project*.mk" -type f` -h | sort | uniq >> $tmp_file
source $tmp_file
rm -f $tmp_file
}
function finish_build(){
echo "Running ${FUNCNAME[1]} succeeded."
cd $PRJ_TOP_DIR
}
function copy_etc_to_rootfs()
{
#mkdir
cp_to_rootfs_dir=$_soc_pkg_path/$_soc_pkg_build_rootfs_dir
_xos_etc_dir_=core/board/generic/${CONFIG_XOS_BUILD_BOARD}/etc
echo "copy rcS to $cp_to_rootfs_dir"
#cp -arf $_xos_etc_dir_/rcS $cp_to_rootfs_dir/../../bsp_fb/rootfs/etc/init.d/
cp -arf $_xos_etc_dir_/rcS $cp_to_rootfs_dir/../../bsp/rootfs/etc/init.d/
#cp -arf $_xos_etc_dir_/qboot.sh $cp_to_rootfs_dir/../../bsp_fb/rootfs/usr/qsh/qboot.sh
cp -arf $_xos_etc_dir_/qboot.sh $cp_to_rootfs_dir/../../bsp/rootfs/usr/qsh/qboot.sh
}
function copy_output_to_out()
{
if [ ! -d "$_xos_img_out_dir_/res" ]; then
mkdir -p "$_xos_img_out_dir_/res"
fi
if [ ! -d "$_xos_img_out_dir_/lib" ]; then
mkdir -p "$_xos_img_out_dir_/lib"
fi
if [ ! -d "$_xos_img_out_dir_/bin" ]; then
mkdir -p "$_xos_img_out_dir_/bin"
fi
if [ -d "output/res" ];then
cp -arf output/res/* "$_xos_img_out_dir_/res/"
fi
if [ -d "output/lib" ];then
cp -arf output/lib/* "$_xos_img_out_dir_/lib/"
rm $_xos_img_out_dir_/lib/*.a
fi
if [ -d "output/bin" ];then
cp -arf output/bin/* "$_xos_img_out_dir_/bin/"
fi
if [ -f "output/qxosui" ];then
cp -arf output/qxosui "$_xos_img_out_dir_/bin/"
fi
if [ -f "output/qxosui.elf" ];then
cp -arf output/qxosui.elf "$_xos_img_out_dir_/bin/"
mv $_xos_img_out_dir_/bin/qxosui.elf $_xos_img_out_dir_/bin/qxosui
fi
##${_sdk_cross_compile}strip $_xos_img_out_dir_/bin/qxosui
if [ -d "output/etc/temp" ];then
mkdir -p "$_xos_img_out_dir_/etc/temp"
cp -arf output/etc/temp/* "$_xos_img_out_dir_/etc/temp/"
fi
}
function xz_overlay()
{
tmppath=$(mktemp -d)
pushd $tmppath
FAKEROOT_PATH=$(PATH=".:$PATH" which fakeroot)
if [ -z "$FAKEROOT_PATH" ]; then
echo "Error: fakeroot not found. Please install with: sudo apt install fakeroot"
popd >/dev/null
rm -rf "$tmppath"
exit 1
fi
"$FAKEROOT_PATH" xz -d -c "$1" | cpio -id
rsync -aHAXr --exclude='overlay_for_precopy.sh' "$2/" $tmppath
rm dev/console > /dev/null 2>&1
rm dev/null > /dev/null 2>&1
"$FAKEROOT_PATH" -u sh -c "
mknod -m 666 dev/console c 5 1
mknod -m 666 dev/null c 1 3
make_strip lib
find . -print0 | cpio --null -ov --format=newc | xz --check=crc32 -c -k --lzma2 >"$3"
"
popd
rm -rf $tmppath
}
function qm10xh_make_rootfs()
{
echo qm10xh_make_rootfs
rootfs_overlay_path=$_top_board_conf_dir_/rootfs_overlay
if [ -f "$rootfs_overlay_path/overlay_for_precopy.sh" ]; then
$rootfs_overlay_path/overlay_for_precopy.sh
else
echo "Warning: $rootfs_overlay_path/overlay_for_precopy.sh not found"
exit 1
fi
pushd prebuilts/${CONFIG_XOS_PROJECT_TYPE}/bsp/rootfs
rootfs_origin=$(realpath "origin.rootfs.cpio.xz")
rootfs_dest=$(realpath "rootfs.cpio.$CONFIG_ROOTFS_FORMAT")
popd
echo "rootfs_origin=$rootfs_origin"
echo "rootfs_dest=$rootfs_dest"
echo "rootfs_overlay_path=$rootfs_overlay_path"
if [[ "$CONFIG_ROOTFS_FORMAT" = "xz" ]]; then
mk_cmd="find . -print0 | cpio --null -ov --format=newc | xz --check=crc32 -c -k --lzma2 > $rootfs_dest"
elif [[ "$CONFIG_ROOTFS_FORMAT" = "lz4" ]]; then
mk_cmd="find . -print0 | cpio --null -ov --format=newc | lz4 -l -c > $rootfs_dest"
elif [[ "$CONFIG_ROOTFS_FORMAT" = "ubifs" ]]; then
mk_cmd="find . -print0 | cpio --null -ov --format=newc > $rootfs_dest"
else
echo "Unsupported compressed format: $CONFIG_ROOTFS_FORMAT"
exit 1
fi
tmppath=$(mktemp -d)
pushd $tmppath
fakeroot -u sh -c "
xz -d -c $rootfs_origin | cpio -id
rsync -aHAXr --exclude='overlay_for_precopy.sh' $rootfs_overlay_path/ $tmppath
$mk_cmd
"
popd
rm -rf $tmppath
}
# 新增针对V2版本的rootfs构建函数
function qm10xhv2_make_rootfs()
{
echo qm10xhv2_make_rootfs
rootfs_overlay_path=$_top_board_conf_dir_/rootfs_overlay
if [ -f "$rootfs_overlay_path/overlay_for_precopy.sh" ]; then
$rootfs_overlay_path/overlay_for_precopy.sh
else
echo "Warning: $rootfs_overlay_path/overlay_for_precopy.sh not found"
exit 1
fi
pushd prebuilts/${CONFIG_XOS_PROJECT_TYPE}/bsp/rootfs
rootfs_origin=$(realpath "origin.rootfs.cpio.xz")
# rootfs_dest=$(realpath "rootfs.cpio.$CONFIG_ROOTFS_FORMAT")
rootfs_dest=$(realpath "rootfs.cpio")
popd
echo "rootfs_origin=$rootfs_origin"
echo "rootfs_dest=$rootfs_dest"
echo "rootfs_overlay_path=$rootfs_overlay_path"
# if [[ "$CONFIG_ROOTFS_FORMAT" = "xz" ]]; then
# mk_cmd="find . -print0 | cpio --null -ov --format=newc | xz --check=crc32 -c -k --lzma2 > $rootfs_dest"
# elif [[ "$CONFIG_ROOTFS_FORMAT" = "lz4" ]]; then
# mk_cmd="find . -print0 | cpio --null -ov --format=newc | lz4 -l -c > $rootfs_dest"
# elif [[ "$CONFIG_ROOTFS_FORMAT" = "ubifs" ]]; then
# mk_cmd="find . -print0 | cpio --null -ov --format=newc > $rootfs_dest"
# else
# echo "Unsupported compressed format: $CONFIG_ROOTFS_FORMAT"
# exit 1
# fi
mk_cmd="find . -print0 | cpio --null -ov --format=newc > $rootfs_dest"
tmppath=$(mktemp -d)
if [ "$APP_DEBUG" = true ]; then
echo "APP_DEBUG = true"
pushd $tmppath
fakeroot -u sh -c "
xz -d -c $rootfs_origin | cpio -id
rsync -aHAXr --exclude='overlay_for_precopy.sh' $rootfs_overlay_path/ $tmppath
mkdir -p $tmppath/system/qua
cp -r $PRJ_TOP_DIR/$_soc_pkg_path/prebuilts/${CONFIG_XOS_PROJECT_TYPE}/media/* $tmppath/system/qua/
$mk_cmd
"
popd
else
echo "no APP_DEBUG"
pushd $tmppath
fakeroot -u sh -c "
xz -d -c $rootfs_origin | cpio -id
rsync -aHAXr --exclude='overlay_for_precopy.sh' $rootfs_overlay_path/ $tmppath
mkdir -p $tmppath/system/qua
mkdir -p $tmppath/system/qua/lib
cp -r $PRJ_TOP_DIR/$_soc_pkg_path/prebuilts/${CONFIG_XOS_PROJECT_TYPE}/media/* $tmppath/system/qua/
rm -rf "lib/libstdc++"*
cp -arf $PRJ_TOP_DIR/core/package/libnative/qlibquaAVM/qm10xh/fb/quaAVM_test $tmppath/system/qua
cp -arf $PRJ_TOP_DIR/core/package/libnative/qlibquaAVM/qm10xh/fb/libquaAVM.so $tmppath/system/qua/lib
cp -arf $PRJ_TOP_DIR/core/package/libnative/qlibquafbcam/qm10xh/libquafbcam.so $tmppath/system/qua/lib
cp -arf $PRJ_TOP_DIR/core/package/libnative/qlibqualink/qm10xh/libqualink.so $tmppath/system/qua/lib
arm-fhva12c-linux-uclibcgnueabihf-strip $tmppath/system/qua/lib/*
arm-fhva12c-linux-uclibcgnueabihf-strip $tmppath/system/lib/*
rm $tmppath/etc/init.d/S00devs
mv $tmppath/etc/init.d/S01udev $tmppath/etc/init.d/S20udev
rm $tmppath/usr/bin/lib*
rm $tmppath/bin/perfmon_xc
$mk_cmd
"
popd
fi
rm -rf $tmppath
}
function qm10xv_make_rootfs()
{
rootfs_overlay_path=$_top_board_conf_dir_/rootfs_overlay
if [ -f "$rootfs_overlay_path/overlay_for_precopy.sh" ]; then
$rootfs_overlay_path/overlay_for_precopy.sh
else
echo "Warning: $rootfs_overlay_path/overlay_for_precopy.sh not found"
exit 1
fi
pushd prebuilts/${CONFIG_XOS_PROJECT_TYPE}/bsp/rootfs
rootfs_origin=$(realpath "origin.rootfs.cpio.xz")
rootfs_dest=$(realpath "rootfs.cpio.$CONFIG_ROOTFS_FORMAT")
popd
echo "rootfs_origin=$rootfs_origin"
echo "rootfs_dest=$rootfs_dest"
echo "rootfs_overlay_path=$rootfs_overlay_path"
if [[ "$CONFIG_ROOTFS_FORMAT" = "xz" ]]; then
mk_cmd="find . -print0 | cpio --null -ov --format=newc | xz --check=crc32 -c -k --lzma2 > $rootfs_dest"
elif [[ "$CONFIG_ROOTFS_FORMAT" = "lz4" ]]; then
mk_cmd="find . -print0 | cpio --null -ov --format=newc | lz4 -l -c > $rootfs_dest"
elif [[ "$CONFIG_ROOTFS_FORMAT" = "ubifs" ]]; then
mk_cmd="find . -print0 | cpio --null -ov --format=newc > $rootfs_dest"
else
echo "Unsupported compressed format: $CONFIG_ROOTFS_FORMAT"
exit 1
fi
tmppath=$(mktemp -d)
pushd $tmppath
fakeroot -u sh -c "
xz -d -c $rootfs_origin | cpio -id
rsync -aHAXr --exclude='overlay_for_precopy.sh' $rootfs_overlay_path/ $tmppath
$mk_cmd
"
popd
rm -rf $tmppath
}
function copy_app_to_rootfs()
{
echo "copy_app_to_rootfs"
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
cp_to_rootfs_dir=$_soc_pkg_path/$_soc_pkg_build_rootfs_dir
if [ ! -d $cp_to_rootfs_dir ];then
mkdir -p $cp_to_rootfs_dir
fi
if [ ! -d "$cp_to_rootfs_dir/usr/elf/" ]; then
mkdir -p "$cp_to_rootfs_dir/usr/elf/"
fi
if [[ "$BUILD_NOQUI" != true ]]; then
#cp or exit
if [ -f "$_xos_img_out_dir_/bin/qxosui" ];then
cp -arf $_xos_img_out_dir_/bin/qxosui "$cp_to_rootfs_dir/usr/elf/"
else
echo "copy_app_to_rootfs failed. no qxosui and exit."
exit
fi
fi
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
cp_to_rootfs_dir=$_soc_pkg_path/output/rootfs_uclibc
mkdir -p "$cp_to_rootfs_dir/usr/elf/"
mkdir -p "$cp_to_rootfs_dir/usr/lib/quamm/"
mkdir -p "$cp_to_rootfs_dir/res/"
mkdir -p "$cp_to_rootfs_dir/res/ttf/"
if [[ "$BUILD_NOQUI" != true ]]; then
#cp or exit
if [ -f "$_xos_img_out_dir_/bin/qxosui" ];then
cp -arf $_xos_img_out_dir_/bin/qxosui "$cp_to_rootfs_dir/usr/elf/"
${_sdk_cross_compile}strip $cp_to_rootfs_dir/usr/elf/qxosui
else
echo "copy_app_to_rootfs failed. no qxosui and exit."
exit
fi
fi
echo "copy to $cp_to_rootfs_dir"
cp -arf $_xos_img_out_dir_/lib/*.so* $cp_to_rootfs_dir/usr/lib/
cp -arf $_xos_img_out_dir_/lib/quamm/*.so* $cp_to_rootfs_dir/usr/lib/quamm/
make_strip $cp_to_rootfs_dir/usr/lib/quamm/
make_strip $cp_to_rootfs_dir/usr/lib/
make_strip $cp_to_rootfs_dir/usr/bin/
cp -arf $_xos_img_out_dir_/res/ttf/*.ttf $cp_to_rootfs_dir/res/ttf/
cp -r $_xos_img_out_dir_/res/skin/ $cp_to_rootfs_dir/res/
if [ -d "$_xos_img_out_dir_/res/video/" ];then
cp -r $_xos_img_out_dir_/res/video/ $cp_to_rootfs_dir/res/
fi
if [ -f "$_xos_img_out_dir_/res/settings.json" ];then
cp $_xos_img_out_dir_/res/settings.json $cp_to_rootfs_dir/res/
fi
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
cp_to_rootfs_dir=$_soc_pkg_path/board_support/rootfs/rootfs_pub
if [ ! -d "$cp_to_rootfs_dir/usr/elf/" ]; then
mkdir -p "$cp_to_rootfs_dir/usr/elf/"
fi
if [[ "$BUILD_NOQUI" != true ]]; then
if [ -f "$_xos_img_out_dir_/bin/qxosui" ];then
cp -arf $_xos_img_out_dir_/bin/qxosui "$cp_to_rootfs_dir/usr/elf/"
else
echo "copy_app_to_rootfs failed. no qxosui and exit."
exit
fi
fi
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
cp_to_rootfs_dir=$_soc_pkg_path/$_soc_pkg_build_rootfs_dir
OVERLAY_ROOTFS=$_top_board_conf_dir_/rootfs_overlay
echo $OVERLAY_ROOTFS
#$OVERLAY_ROOTFS/overlay_for_precopy.sh
#rsync -aHAXr --exclude='overlay_for_precopy.sh' $OVERLAY_ROOTFS/ $cp_to_rootfs_dir/
if [ ! -d "$cp_to_rootfs_dir/usr/elf/" ]; then
mkdir -p "$cp_to_rootfs_dir/usr/elf/"
fi
if [[ "$BUILD_NOQUI" != true ]]; then
#cp or exit
if [ -f "$_xos_img_out_dir_/bin/qxosui" ];then
cp -arf $_xos_img_out_dir_/bin/qxosui "$cp_to_rootfs_dir/usr/elf/"
else
echo "copy_app_to_rootfs failed. no qxosui and exit."
exit
fi
fi
fi
}
function build_pkg_envsetup()
{
echo $(pwd): $CONFIG_XOS_PROJECT_TYPE
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || \
[[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
./envsetup.sh
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
./envsetup.sh
fi
if [[ "$BUILD_SDK" = "qm10xd_rtt" ]]; then
# envsetup for rtt_dmb and rtt_nand(1:nand 2:nor)
./envsetup.sh
fi
}
function fastbuild_zImage()
{
echo "fastbuild_zImage"
copy_output_to_out
copy_app_to_rootfs
#copy bin/* to sdk/out and package to zImage
pushd $_soc_pkg_path
build_pkg_envsetup
make ramdisk || exit "$$?"
make kernel_image || exit "$$?"
mkdir -p $_soc_pkg_to_root_dir$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
popd
echo "fastbuild_zImage done"
}
function build_soc_pkg_rootfs
{
echo "build_soc_pkg_rootfs"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]]; then
build_pkg_envsetup
# make clean
make rootfs || exit "$$?"
# copy_etc_to_rootfs
qm10xh_make_rootfs
fi
# 新增对linuxrttv2版本的独立处理
if [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
build_pkg_envsetup
make rootfs || exit "$$?"
qm10xhv2_make_rootfs # 调用新增的V2专用函数
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
echo "make myboard=$_realboard clean"
echo "make myboard=$_realboard rootfs -j$BUILD_JOBS || exit "$?""
make myboard=$_realboard clean
make myboard=$_realboard rootfs -j$BUILD_JOBS || exit "$$?"
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
qm10xv_make_rootfs
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
build_pkg_envsetup
# make clean
make rootfs || exit "$$?"
# copy_etc_to_rootfs
fi
# do this after rootfs unzip.
popd
echo "build_soc_pkg_rootfs done"
}
function build_soc_pkg_rootfs_post
{
echo "build_soc_pkg_rootfs_post"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
if [[ -f "$_top_board_conf_dir_/rootfs_post_copy.sh" ]]; then
#execute rootfs_post_copy.sh
$_top_board_conf_dir_/rootfs_post_copy.sh || exit "$?"
fi
make_strip output/rootfs_uclibc/lib
make_strip output/rootfs_uclibc/usr/lib
make_strip output/rootfs_uclibc/bin
OVERLAY_ROOTFS=$_top_board_conf_dir_/rootfs_overlay
echo $OVERLAY_ROOTFS
if [[ -f "$OVERLAY_ROOTFS/overlay_for_precopy.sh" ]]; then
$OVERLAY_ROOTFS/overlay_for_precopy.sh || exit "$?"
fi
rsync -aHAXr --exclude='overlay_for_precopy.sh' $OVERLAY_ROOTFS/ output/rootfs_uclibc/
${_sdk_cross_compile}strip --strip-debug output/rootfs_uclibc/ko/*.ko
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fakeroot mkfs.cramfs output/rootfs_uclibc/ $_soc_pkg_to_root_dir/$_sdk_img_out_dir_/ramdisk
fi
# if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
# pushd board_support/rootfs/rootfs_pub
# fakeroot chown -R root:root .
# find . | cpio -o -H newc > ../rootfs.cpio
# cd ..
# xz --check=none rootfs.cpio
# cp -arf rootfs.cpio.xz ../kernel/rootfs_scripts/
# popd
# fi
popd
echo "build_soc_pkg_rootfs_post done"
}
function build_soc_pkg_uboot
{
echo "build_soc_pkg_uboot"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
build_pkg_envsetup
make boot_clean -j$BUILD_JOBS
make boot -j$BUILD_JOBS || exit "$$?"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf output/$CONFIG_XOS_PROJECT_TYPE/bsp/boot $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
make O=./build myboard=$_realboard boot_clean -j$BUILD_JOBS
make O=./build myboard=$_realboard boot -j$BUILD_JOBS || exit "$$?"
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
pushd $_soc_bsp_uboot_path
make O=.build clean -j$BUILD_JOBS
make O=.build || exit "$$?"
popd
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/uboot/uboot/.build/uboot.bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/uboot/uboot/.build/uboot $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
#copy uboot to flash_upgrade dir
cp -arf $_soc_bsp_uboot_path/uboot/.build/u-boot.bin $create_xmodem_tools_dir
#create xmodem.img
pushd $create_xmodem_tools_dir
./mkflashimgv4 QM102V_normal.ini
popd
#copy xmodem.img to output dir
cp -arf $create_xmodem_tools_dir/xmodem.img $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
build_pkg_envsetup
make O=.build boot #Uboot 全编译
make O=.build boot_build #Uboot&SDL
make O=.build ramboot #PDL&SPL
echo "make boot -j$BUILD_JOBS done"
fi
if [[ "$BUILD_SDK" = "qm10xd_rtt" ]]; then
build_pkg_envsetup
make boot || exit "$$?" #boot 全编译
echo "make boot rtt -j$BUILD_JOBS done"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
popd
echo "build_soc_pkg_uboot done"
}
function build_soc_pkg_kernel
{
echo "build_soc_pkg_kernel"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
build_pkg_envsetup
make O=.build kernel_clean -j$BUILD_JOBS
make O=.build kernel || exit "$$?"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
echo "$_soc_pkg_to_root_dir"
echo "$_sdk_img_out_dir_"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf output/$CONFIG_XOS_PROJECT_TYPE/bsp/kernel $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
make O=./.build myboard=$_realboard kernel_clean -j$BUILD_JOBS
make O=./.build myboard=$_realboard kernel -j$BUILD_JOBS || exit "$$?"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
pushd $_soc_bsp_kernel_path
make O=.build clean -j$BUILD_JOBS
make O=.build || exit "$$?"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
popd
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/kernel/linux-4.9/.build/arch/arm/boot/uImage $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/kernel/linux-4.9/.build/arch/arm/boot/Image $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
build_pkg_envsetup
make O=.build kernel
echo "$_soc_pkg_to_root_dir"
echo "$_sdk_img_out_dir_"
echo "make kernel -j$BUILD_JOBS done"
fi
if [[ "$BUILD_SDK" = "qm10xd_rtt" ]]; then
build_pkg_envsetup
make rtt || exit "$$?" #rtt 全编译
echo "make boot rtt -j$BUILD_JOBS done"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
# cp -arf bsp/rt-thread/app/out/bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf bsp/rt-thread/app/quaxos/out/bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
popd
echo "build_soc_pkg_kernel done"
}
function build_soc_pkg
{
echo "build_soc_pkg"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]]; then
make O=.build boot_clean -j$BUILD_JOBS
make O=.build boot || exit "$$?"
#echo "make boot -j$BUILD_JOBS done"
#make kernel_clean -j$BUILD_JOBS
make O=.build kernel || exit "$$?"
# echo "make kernel -j$BUILD_JOBS done"
make post_build FB=0 || exit "$$?"
echo "make post_build -j$BUILD_JOBS done"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
make O=.build boot_clean -j$BUILD_JOBS
make O=.build boot || exit "$$?"
#echo "make boot -j$BUILD_JOBS done"
#make kernel_clean -j$BUILD_JOBS
make O=.build kernel || exit "$$?"
# echo "make kernel -j$BUILD_JOBS done"
make rtt || exit "$$?"
make post_build FB=0 || exit "$$?"
echo "make post_build -j$BUILD_JOBS done"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
make O=.build myboard=$_realboard kernel_clean -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard kernel -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard ramdisk -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard kernel_image -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard boot_clean -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard boot -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard jffs2 -j$BUILD_JOBS || exit "$$?"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir/boot/* $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir/kernel/* $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
# 先编译 kernel
pushd $_soc_bsp_kernel_path
make O=.build clean -j$BUILD_JOBS
make O=.build || exit "$$?"
_kernel_obj_dest=$(realpath $(dirname $(find ./ -iname .config |grep -i linux)))
popd
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/kernel/linux-4.9/.build/arch/arm/boot/uImage $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/kernel/linux-4.9/.build/arch/arm/boot/Image $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
# 修改 bootcmd 里的 kernel size然后再编译 uboot
linuxkernelfilesize=$(stat -c%s board_support/kernel/linux-4.9/.build/arch/arm/boot/uImage)
linuxkernelhex_size=$(printf "0x%x" "$linuxkernelfilesize")
echo "kernel file hex size:$linuxkernelhex_size"
# 导出 linuxkernelhex_size 环境变量
export linuxkernelhex_size
echo "bootcmd env linux kernel size replace as $linuxkernelhex_size"
pushd $_soc_bsp_uboot_path
make O=.build clean -j$BUILD_JOBS
make O=.build || exit "$$?"
popd
cp -arf board_support/uboot/uboot/.build/u-boot.bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf board_support/uboot/uboot/.build/u-boot $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
#copy uboot to flash_upgrade dir
cp -arf $_soc_bsp_uboot_path/uboot/.build/u-boot.bin $create_xmodem_tools_dir
#create xmodem.img
pushd $create_xmodem_tools_dir
./mkflashimgv4 QM102V_normal.ini
popd
#copy xmodem.img to output dir
cp -arf $create_xmodem_tools_dir/xmodem.img $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $create_xmodem_tools_dir/Flash.img $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
#make boot || exit "$$?" #Uboot 全编译
#make boot_build || exit "$$?" #Uboot&SDL
#make ramboot || exit "$$?" #PDL&SPL
#echo "make boot -j$BUILD_JOBS done"
OVERLAY_ROOTFS=$_top_board_conf_dir_/rootfs_overlay
echo $(pwd)
$OVERLAY_ROOTFS/overlay_for_precopy.sh
SRC_FILE_ROOTFS=${PRJ_TOP_DIR}/$_soc_pkg_path/prebuilts/${CONFIG_XOS_PROJECT_TYPE}/bsp/rootfs
pushd $SRC_FILE_ROOTFS
rootfs_origin=$(realpath "origin-initramfs-v510.cpio.xz")
rootfs_overlay=$(realpath "$OVERLAY_ROOTFS")
rootfs_dest=$(realpath "initramfs-v510.cpio.xz")
xz_overlay "$rootfs_origin" "$rootfs_overlay" "$rootfs_dest"
popd
#make O=.build clean -j$BUILD_JOBS
#make O=.build || exit "$$?"
make O=.build kernel || exit "$$?"
echo "$_soc_pkg_to_root_dir"
echo "$_sdk_img_out_dir_"
echo "make kernel -j$BUILD_JOBS done"
#echo "majiwei test create $_soc_pkg_to_root_dir/$_sdk_img_out_dir_ dir"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
#cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp $_soc_pkg_build_bsp_dir/kernel/zImage-dtb $_soc_pkg_to_root_dir/$_sdk_img_out_dir_/
#修改bootcmd里的kernel size然后再编译uboot
linuxkernelfilesize=$(stat -c%s $_soc_pkg_build_bsp_dir/kernel/zImage-dtb)
linuxkernelhex_size=$(printf "0x%x" "$linuxkernelfilesize")
echo "kernel file hex size:$linuxkernelhex_size"
# 导出 linuxkernelhex_size 环境变量
export linuxkernelhex_size
echo "bootcmd env linux kernel size replace as $linuxkernelhex_size"
# 新增recovery内核尺寸处理
recoverykernelfilesize=$(stat -c%s $_soc_pkg_prebuilts_recovery_dir/recovery.img)
recoverykernelhex_size=$(printf "0x%x" "$recoverykernelfilesize")
echo "recovery kernel file hex size:$recoverykernelhex_size"
# 导出 recoverykernelhex_size 环境变量
export recoverykernelhex_size
echo "bootcmd env recovery kernel size replace as $recoverykernelhex_size"
make O=.build boot || exit "$$?" #Uboot 全编译
make O=.build boot_build || exit "$$?" #Uboot&SDL
make O=.build ramboot || exit "$$?" #PDL&SPL
echo "make boot -j$BUILD_JOBS done"
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xv_rtt" ]]; then
local _soc_bsp_uboot_path=bsp/uboot-2016
pushd $_soc_bsp_uboot_path
make O=.build distclean -j$BUILD_JOBS
make O=.build || exit "$$?"
popd
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_bsp_uboot_path/uboot/.build/u-boot.bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_bsp_uboot_path/uboot/.build/u-boot $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
local _soc_bsp_kernel_path=rt-thread
pushd $_soc_bsp_kernel_path
make clean
make qm10xv_defconfig || exit "$$?"
#make appconfig || exit "$$?"
make || exit "$$?"
popd
cp -arf $_soc_bsp_kernel_path/app/helloworld/out/bin/*.bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_bsp_kernel_path/app/media_demo/out/bin/*.bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
#copy uboot to flash_upgrade dir
local _create_xmodem_tools_dir=$_soc_pkg_build_board_dir/mkflashimg
mkdir -p $_create_xmodem_tools_dir
cp -arf docs_tools/software/pc/flashimg-tool/QM10XV/* $_create_xmodem_tools_dir
cp -arf docs_tools/software/pc/flashimg-tool/mkflashimgv4 $_create_xmodem_tools_dir
cp -arf $_soc_bsp_uboot_path/uboot/u-boot.bin $_create_xmodem_tools_dir
cp -arf $_soc_bsp_kernel_path/app/media_demo/out/bin/media_demo.img $_create_xmodem_tools_dir/app.img
#create xmodem.img
pushd $_create_xmodem_tools_dir
./mkflashimgv4 QM102V_normal.ini
popd
#copy xmodem.img to output dir
cp -arf $_create_xmodem_tools_dir/xmodem.img $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_create_xmodem_tools_dir/Flash.img $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
if [[ "$BUILD_SDK" = "qm10xd_rtt" ]]; then
build_pkg_envsetup
make boot || exit "$$?" #boot 全编译
make rtt || exit "$$?" #rtt 全编译
echo "make boot rtt -j$BUILD_JOBS done"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
# cp -arf bsp/rt-thread/app/out/bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf bsp/rt-thread/app/quaxos/out/bin $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
popd
echo "build_soc_pkg done"
}
function build_backup_xos4dbg()
{
echo "build_backup_xos4dbg"
# 检查文件是否存在
if [ -f "output/qxosui.elf" ]; then
# 如果文件存在,执行拷贝操作
mkdir -p out/$BUILD_SDK/qmimages/backup_xos4dbg/
cp output/qxosui.elf "out/$BUILD_SDK/qmimages/backup_xos4dbg/"
echo "File output/qxosui.elf copied to out/$BUILD_SDK/qmimages/backup_xos4dbg"
# add more backup copy files here
tar -czvf out/$BUILD_SDK/qmimages/backup_xos4dbg.tar.gz out/$BUILD_SDK/qmimages/backup_xos4dbg
rm -rf out/$BUILD_SDK/qmimages/backup_xos4dbg
fi
echo "build_backup_xos4dbg end"
}
function build_misc()
{
echo "build "$_sdk_img_out_dir_/misc.img
./build/script/mk-misc.sh $_sdk_img_out_dir_/misc.img
}
function build_diff_images()
{
echo "start xxx_fs"
local __conf_dir __mkupdatetools
__proj_dir=$(echo $CONFIG_XOS_PROJECT_TYPE | sed 's/^ *//;s/ *$//' | cut -d'_' -f1)
_sdk_qmimg_out_dir_=out/$_top_img_out_dir_/qmimages
echo "__proj_dir=$__proj_dir,out_dir:$_sdk_qmimg_out_dir_"
#
local __bsp_dir=$(pwd)
echo "bsp directory: $__bsp_dir"
cp -rf ./product/$__proj_dir/package-file $_sdk_qmimg_out_dir_/
cp -rf ./product/$__proj_dir/parameter.txt $_sdk_qmimg_out_dir_/
# start to build ota full package
#
if [ ! -d "$_recovery_dir/tools/pc/ota_linux/qmdiff" ]; then
echo "no $_recovery_dir/tools/pc/ota_linux/qmdiff, skip building diff package"
return 0
fi
pushd $_recovery_dir/tools/pc/ota_linux/qmdiff
echo "build full system_fs.img package"
./pack-qmfsimage.sh $__bsp_dir/out/$_top_img_out_dir_/mkimg_part/system "QMFS10/FULL" $__bsp_dir/out/$_top_img_out_dir_/qmimages/system_fs.img
echo "build full rootfs_fs.img package"
./pack-qmfsimage.sh $__bsp_dir/out/$_top_img_out_dir_/mkimg_part/rootfs "QMFS10/FULL" $__bsp_dir/out/$_top_img_out_dir_/qmimages/rootfs_fs.img
popd
# build normal diff pkg
echo "start build diff pkg: $__bsp_dir/$_sdk_old_img_out_dir_"
if [ -d "$__bsp_dir/$_sdk_old_img_out_dir_" ]; then
mkdir -p $__bsp_dir/$_sdk_new_img_out_dir_/images/
cp -rf $__bsp_dir/$_sdk_qmimg_out_dir_/zImage-dtb $__bsp_dir/$_sdk_new_img_out_dir_/images/
cp -rf $__bsp_dir/$_sdk_qmimg_out_dir_/uboot.img $__bsp_dir/$_sdk_new_img_out_dir_/images/
cp -rf $__bsp_dir/$_sdk_qmimg_out_dir_/gpt.img $__bsp_dir/$_sdk_new_img_out_dir_/images/
mkdir -p $__bsp_dir/$_sdk_old_img_out_dir_/images/
cp -rf $__bsp_dir/$_sdk_old_img_out_dir_/zImage-dtb $__bsp_dir/$_sdk_old_img_out_dir_/images/
cp -rf $__bsp_dir/$_sdk_old_img_out_dir_/uboot.img $__bsp_dir/$_sdk_old_img_out_dir_/images/
cp -rf $__bsp_dir/$_sdk_old_img_out_dir_/gpt.img $__bsp_dir/$_sdk_old_img_out_dir_/images/
pushd $_recovery_dir/tools/pc/ota_linux/qmdiff
echo "DEBUG: About to call build.sh with parameters:"
echo "DEBUG: Param1 (OLD): '$__bsp_dir/$_sdk_old_img_out_dir_/images/'"
echo "DEBUG: Param2 (NEW): '$__bsp_dir/$_sdk_new_img_out_dir_/images/'"
echo "DEBUG: Param3 (OUT): '$__bsp_dir/$_qmdiff_img_out_dir_/images/'"
echo "build image diff pkg: $__bsp_dir/$_sdk_old_img_out_dir_/images -> $__bsp_dir/$_sdk_new_img_out_dir_/images -> $__bsp_dir/$_qmdiff_img_out_dir_/images"
./build.sh $__bsp_dir/$_sdk_old_img_out_dir_/images/ $__bsp_dir/$_sdk_new_img_out_dir_/images/ $__bsp_dir/$_qmdiff_img_out_dir_/images/
# unpack qmfs image to files
./unpack-qmfsimage.sh $__bsp_dir/$_sdk_old_img_out_dir_/system_fs.img $__bsp_dir/$_sdk_old_img_out_dir_/system_fs/
./unpack-qmfsimage.sh $__bsp_dir/$_sdk_qmimg_out_dir_/system_fs.img $__bsp_dir/$_sdk_new_img_out_dir_/system_fs/
./unpack-qmfsimage.sh $__bsp_dir/$_sdk_old_img_out_dir_/rootfs_fs.img $__bsp_dir/$_sdk_old_img_out_dir_/rootfs_fs/
./unpack-qmfsimage.sh $__bsp_dir/$_sdk_qmimg_out_dir_/rootfs_fs.img $__bsp_dir/$_sdk_new_img_out_dir_/rootfs_fs/
echo "build fs files diff package"
./build.sh $__bsp_dir/$_sdk_old_img_out_dir_/system_fs $__bsp_dir/$_sdk_new_img_out_dir_/system_fs $__bsp_dir/$_qmdiff_img_out_dir_/system_fs
./build.sh $__bsp_dir/$_sdk_old_img_out_dir_/rootfs_fs $__bsp_dir/$_sdk_new_img_out_dir_/rootfs_fs $__bsp_dir/$_qmdiff_img_out_dir_/rootfs_fs
# pack qmfs ota diff image
./pack-qmfsimage.sh $__bsp_dir/$_qmdiff_img_out_dir_/system_fs "QMFS10/DIFF" $__bsp_dir/$_qmdiff_img_out_dir_/images/system_fs.img
./pack-qmfsimage.sh $__bsp_dir/$_qmdiff_img_out_dir_/rootfs_fs "QMFS10/DIFF" $__bsp_dir/$_qmdiff_img_out_dir_/images/rootfs_fs.img
echo "build rollback diff images"
mkdir -p $__bsp_dir/$_qmdiff_rollback_img_out_dir_/images/
./build.sh $__bsp_dir/$_sdk_new_img_out_dir_/images $__bsp_dir/$_sdk_old_img_out_dir_/images $__bsp_dir/$_qmdiff_rollback_img_out_dir_/images
./build.sh $__bsp_dir/$_sdk_new_img_out_dir_/system_fs $__bsp_dir/$_sdk_old_img_out_dir_/system_fs $__bsp_dir/$_qmdiff_rollback_img_out_dir_/system_fs
./build.sh $__bsp_dir/$_sdk_new_img_out_dir_/rootfs_fs $__bsp_dir/$_sdk_old_img_out_dir_/rootfs_fs $__bsp_dir/$_qmdiff_rollback_img_out_dir_/rootfs_fs
./pack-qmfsimage.sh $__bsp_dir/$_qmdiff_rollback_img_out_dir_/system_fs "QMFS10/DIFF" $__bsp_dir/$_qmdiff_rollback_img_out_dir_/images/system_fs.img
./pack-qmfsimage.sh $__bsp_dir/$_qmdiff_rollback_img_out_dir_/rootfs_fs "QMFS10/DIFF" $__bsp_dir/$_qmdiff_rollback_img_out_dir_/images/rootfs_fs.img
popd
else
echo "no $__bsp_dir/$_sdk_old_img_out_dir_, no diff build"
echo "if you wanna build diff package, please copy old images into $__bsp_dir/$_sdk_old_img_out_dir_"
fi
echo "End to build xxxx_fs.img"
}
function build_update()
{
echo "start build_update"
local __conf_dir __mkupdatetools
__proj_dir=$(echo $CONFIG_XOS_PROJECT_TYPE | sed 's/^ *//;s/ *$//' | cut -d'_' -f1)
echo "__proj_dir=$__proj_dir,out_dir:$_qmdiff_img_out_dir_"
# <20><>ȡ<EFBFBD><C8A1>ǰĿ¼
local __bsp_dir=$(pwd)
echo "bsp directory: $__bsp_dir"
# start to build ota full package
if [ ! -d "$_recovery_dir/tools/pc/ota_linux/mkupdate" ]; then
echo "no $_recovery_dir/tools/pc/ota_linux/mkupdate, skip building update.pkg"
return 0
fi
# build normal diff pkg
if [ -d "$__bsp_dir/$_sdk_old_img_out_dir_" ]; then
cp -rf ./product/$__proj_dir/package-file $_qmdiff_img_out_dir_/images/
cp -rf ./product/$__proj_dir/parameter.txt $_qmdiff_img_out_dir_/images/
pushd $_recovery_dir/tools/pc/ota_linux/mkupdate
echo "build update.qmdiff.pkg"
./build.sh $__bsp_dir/$_qmdiff_img_out_dir_/images
popd
echo "build: update.qmdiff.${old_build_id}.${old_version}-${BUILD_ID}.${release_version}.pkg"
# get the version from file name :update.xxx.Vxx.pkg
#find "$__bsp_dir/$_sdk_old_img_out_dir_" -type f -name "update.*" -size 0 -exec rm -f {} \;
old_version=$(ls $__bsp_dir/$_sdk_old_img_out_dir_/update.J*.*.pkg | sed -n 's/.*\.J[^.]*\.\([^.]*\)\.pkg/\1/p')
cp -rf "$__bsp_dir/$_qmdiff_img_out_dir_/images/update.pkg" "${__bsp_dir}/${_sdk_qmimg_out_dir_}/update.qmdiff.J${old_build_id}.${old_version}-J${BUILD_ID}.${release_version}.pkg"
rm -rf $__bsp_dir/$_qmdiff_img_out_dir_/images/
echo "build rollback diff package"
cp -rf ./product/$__proj_dir/package-file $_qmdiff_rollback_img_out_dir_/images/
cp -rf ./product/$__proj_dir/parameter.txt $_qmdiff_rollback_img_out_dir_/images/
pushd $_recovery_dir/tools/pc/ota_linux/mkupdate
echo "build update.qmdiff.rollback.pkg"
./build.sh $__bsp_dir/$_qmdiff_rollback_img_out_dir_/images
popd
echo "build: update.qmdiff.J${BUILD_ID}.${release_version}-J${old_build_id}.${old_version}.pkg"
cp -rf "$__bsp_dir/$_qmdiff_rollback_img_out_dir_/images/update.pkg" "${__bsp_dir}/${_sdk_qmimg_out_dir_}/update.qmdiff.J${BUILD_ID}.${release_version}-J${old_build_id}.${old_version}.pkg"
rm -rf $__bsp_dir/$_qmdiff_rollback_img_out_dir_/images/
else
echo "no $__bsp_dir/$_sdk_old_img_out_dir_, no diff build"
echo "if you wanna build diff package, please copy old images into $__bsp_dir/$_sdk_old_img_out_dir_"
fi
echo "End to build update.pkg"
}
function build_firmware(){
echo " build_firmware"
#build_backup_xos4dbg
# TODO
# build_strip_all
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
pushd $XOS_SCRIPT_DIR
source ./mkfirmware.sh
local __err=$?
popd
fi
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
pushd $XOS_SCRIPT_DIR
source ./mkfirmware.sh
local __err=$?
popd
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
pushd $_soc_pkg_path
cp -arf $_soc_pkg_build_bsp_dir/boot/* $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir/kernel/* $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
if [[ "$CONFIG_XOS_USE_FW_STORE_SPINAND" = true ]]; then
echo "copy spi nand 128M script.ini"
cp -arf $_soc_pkg_to_root_dir/tools/partition/mc331x/los_spi-nand/64M/script.ini $_soc_pkg_to_root_dir/$_sdk_img_out_dir_/
else
echo "copy spi nor 16M script.ini"
cp -arf $_soc_pkg_to_root_dir/tools/partition/mc331x/los_spi-nor/16M/script.ini $_soc_pkg_to_root_dir/$_sdk_img_out_dir_/
fi
popd
fi
#if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
if [[ "$BUILD_SDK" = "qm10xd_linux" || "$BUILD_SDK" = "qm10xd_rtt" ]]; then
pushd $XOS_SCRIPT_DIR
source ./mkfirmware.sh
local __err=$?
popd
fi
finish_build
echo " build_firmware done"
}
function build_clean()
{
echo "build_clean"
rm -rf out/
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
make boot_clean -j$BUILD_JOBS
make kernel_clean -j$BUILD_JOBS
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
make O=.build myboard=$_realboard kernel_clean -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard boot_clean -j$BUILD_JOBS || exit "$$?"
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
pushd $_soc_bsp_uboot_path
make O=.build clean -j$BUILD_JOBS
popd
pushd $_soc_bsp_kernel_path
make O=.build clean -j$BUILD_JOBS
popd
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
make O=.build boot_clean -j$BUILD_JOBS
make O=.build kernel_clean -j$BUILD_JOBS
fi
popd
echo "build_clean done"
}
function build_drv()
{
echo "Start to build_drv"
_kernel_obj_dest=$(realpath $(dirname $(find $_soc_pkg_path/bsp/kernel -iname .config)))
echo KERN_OBJ:$_kernel_obj_dest
export drv_kernel_obj_dest=$(realpath $_kernel_obj_dest)
if [[ "$BUILD_SDK" = "qm10xh_linux" ]]; then
drv_sdk_cross_compile=arm-fhv512-linux-uclibcgnueabihf
fi
if [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
drv_sdk_cross_compile=arm-fhva12c-linux-uclibcgnueabihf
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
drv_sdk_cross_compile=arm-fhv512-linux-uclibcgnueabihf
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
drv_sdk_cross_compile=arm-mol-linux-uclibcgnueabihf
fi
if [[ "$BUILD_SDK" = "rtt" ]]; then
#drv_sdk_cross_compile=arm-linux-musleabi
exit
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
drv_sdk_cross_compile=arm-molv2-linux-uclibcgnueabi
fi
export drv_sdk_cross_compile
echo $drv_sdk_cross_compile
echo $drv_kernel_obj_dest
pushd $drv_path
#make clean && make $ARGS|| exit "$?"
make clean && make || exit "$?"
if [ ! -d "out" ]; then
echo "out does not exist."
exit 1
fi
if [ ! -d $_soc_pkg_to_root_dir/output/ko ]; then
mkdir -p $_soc_pkg_to_root_dir/output/ko
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
cp -rvf out/lib/* $_soc_pkg_to_root_dir/$_soc_pkg_path/output/rootfs_uclibc/lib
cp -rvf out/ko/* $_soc_pkg_to_root_dir/$_soc_pkg_path/output/rootfs_uclibc/ko
#cp -rvf out/lib/* $_soc_pkg_to_root_dir/$_soc_pkg_path/output/lib
#cp -rvf out/ko/* $_soc_pkg_to_root_dir/$_soc_pkg_path/output/ko
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
cp -rvf out/lib/* $_soc_pkg_to_root_dir/output/lib
cp -rvf out/ko/* $_soc_pkg_to_root_dir/output/ko
fi
case "$BUILD_SDK" in
"qm10xv_linux")
target_dir="../../libnative/qlibquadrv/qm10xv_linux"
;;
"qm10xd_linux")
target_dir="../../libnative/qlibquadrv/qm10xd_linux"
;;
"qm10xh_linux")
target_dir="../../libnative/qlibquadrv/qm10xh_linux"
;;
"qm10xh_linuxrttv2")
target_dir="../../libnative/qlibquadrv/qm10xh_linux"
;;
"linux_128"|"linux_64")
target_dir="../../libnative/qlibquadrv/fy00_linux"
;;
*)
target_dir="../../libnative/qlibquadrv/fy00_rtt"
;;
esac
cp -rvf out/lib/* "$target_dir"
popd
echo "End to build_drv"
}
function build_distclean()
{
echo "build_distclean"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]] || [[ "$BUILD_SDK" = "qm10xh_linuxrttv2" ]]; then
make O=.build distclean -j$BUILD_JOBS
fi
if [[ "$BUILD_SDK" = "linux_128" ]] || [[ "$BUILD_SDK" = "linux_64" ]]; then
make O=.build myboard=$_realboard kernel_clean -j$BUILD_JOBS || exit "$$?"
make O=.build myboard=$_realboard boot_clean -j$BUILD_JOBS || exit "$$?"
fi
if [[ "$BUILD_SDK" = "qm10xv_linux" ]]; then
pushd $_soc_bsp_uboot_path
make O=.build distclean -j$BUILD_JOBS
popd
pushd $_soc_bsp_kernel_path
make O=.build distclean -j$BUILD_JOBS
popd
fi
if [[ "$BUILD_SDK" = "qm10xd_linux" ]]; then
make distclean -j$BUILD_JOBS
fi
popd
echo "build_distclean done"
}
function build_all()
{
echo "build_all"
local __start_time __end_time __exec_time
__start_time=$(date +%s)
echo "BUILD_SDK=$BUILD_SDK"
# 处理 qm10xv_rtt 的特殊情况
if [[ "$BUILD_SDK" == "qm10xv_rtt" ]]; then
build_soc_pkg
# 处理 qm10xd_rtt 的情况
elif [[ "$BUILD_SDK" == "qm10xd_rtt" ]]; then
build_soc_pkg
copy_output_to_out
build_firmware # 新增固件构建步骤
# 处理非 qm10xv_rtt 的通用情况
else
# 核心构建步骤 (所有非 qm10xv_rtt 情况都执行)
build_soc_pkg_rootfs
copy_output_to_out
# 特殊处理非 Linux 变体的情况
if [[ "$BUILD_SDK" != "qm10xv_linux" && \
"$BUILD_SDK" != "qm10xd_linux" ]]; then
copy_app_to_rootfs
build_soc_pkg_rootfs_post
fi
# 公共构建步骤
build_soc_pkg
build_misc
build_firmware
fi
if [[ "$CONFIG_PRODUCT_NXF7E" = true ]]; then
build_diff_images
build_update
fi
echo "End to build linux xos!"
__end_time=$(date +%s)
__exec_time=$((__end_time - __start_time))
echo "build all executed time: $__exec_time seconds"
exit
}
function postbuild_rttap()
{
echo "postbuild_rttap"
pushd $_soc_pkg_path
if [[ "$BUILD_SDK" = "qm10xh_linux" ]]; then
echo "make post_build FB=1 RTT_AP=1"
make post_build FB=1 RTT_AP=1 || exit "$$?"
echo "_sdk_img_out_dir_=$_sdk_img_out_dir_"
mkdir -p $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
cp -arf $_soc_pkg_build_bsp_dir $_soc_pkg_to_root_dir/$_sdk_img_out_dir_
fi
popd
echo "postbuild_rttap done"
}
if [[ "$BUILD_DISTCLEAN" = true ]]; then
echo "build distclean"
build_distclean
exit
fi
if [[ "$BUILD_CLEAN" = true ]]; then
echo "build clean"
build_clean
exit
fi
if [[ "$BUILD_ALL" = true ]]; then
echo "build all"
build_all
fi
if [[ "$BUILD_UBOOT" = true ]]; then
echo "build soc pkg uboot"
build_soc_pkg_uboot
exit
fi
if [[ "$BUILD_KERNEL" = true ]]; then
echo "build soc pkg kernel"
build_soc_pkg_rootfs
build_soc_pkg_kernel
exit
fi
if [[ "$BUILD_QUADRV" = true ]]; then
echo "build quadrv"
build_soc_pkg_rootfs
build_soc_pkg_kernel
build_drv
exit
fi
if [[ "$BUILD_PACKAGES" = true ]]; then
echo "build packages"
fastbuild_zImage
exit
fi
if [[ "$BUILD_FW_IMG" = true ]]; then
echo "build fireware images"
build_firmware
exit
fi
if [[ "$BUILD_RTOS_POSTBUILD" = true ]]; then
echo "build uboot"
build_soc_pkg_uboot
echo "post build rtt-ap"
postbuild_rttap
exit
fi
echo "build all default. BUILD_PACKAGES=$BUILD_PACKAGES"
build_all
echo -e "\e[36m build_all: ready \e[0m"