-b192ad, Close CONFIG_STRICT_DEVMEM to allow ion mem map. -7993a7, fix build. -afc71c, Add cv1812cpa configuration. -86792d, add note to nand xml. -72eeb2, add sc3336_1l config. Change-Id: Ifb76b16ce8390fa240c8e6cdc57d30496ab42d56
913 lines
25 KiB
Bash
913 lines
25 KiB
Bash
#!/bin/bash
|
|
function _build_default_env()
|
|
{
|
|
# Please keep these default value!!!
|
|
BRAND=${BRAND:-cvitek}
|
|
DEBUG=${DEBUG:-0}
|
|
RELEASE_VERSION=${RELEASE_VERSION:-0}
|
|
BUILD_VERBOSE=${BUILD_VERBOSE:-1}
|
|
ATF_BL32=${ATF_BL32:-1}
|
|
UBOOT_VBOOT=${UBOOT_VBOOT:-0}
|
|
COMPRESSOR=${COMPRESSOR:-xz}
|
|
COMPRESSOR_UBOOT=${COMPRESSOR_UBOOT:-lzma} # or none to disable
|
|
MULTI_PROCESS_SUPPORT=${MULTI_PROCESS_SUPPORT:-0}
|
|
ENABLE_BOOTLOGO=${ENABLE_BOOTLOGO:-0}
|
|
TPU_REL=${TPU_REL:-0} # TPU release build
|
|
SENSOR=${SENSOR:-sony_imx327}
|
|
}
|
|
|
|
function gettop()
|
|
{
|
|
local TOPFILE=build/envsetup_soc.sh
|
|
if [ -n "$TOP" -a -f "$TOP/$TOPFILE" ] ; then
|
|
# The following circumlocution ensures we remove symlinks from TOP.
|
|
(cd "$TOP"; PWD= /bin/pwd)
|
|
else
|
|
if [ -f $TOPFILE ] ; then
|
|
# The following circumlocution (repeated below as well) ensures
|
|
# that we record the true directory name and not one that is
|
|
# faked up with symlink names.
|
|
PWD= /bin/pwd
|
|
else
|
|
local HERE=$PWD
|
|
T=
|
|
while [ \( ! \( -f $TOPFILE \) \) -a \( $PWD != "/" \) ]; do
|
|
\cd ..
|
|
T=$(PWD= /bin/pwd -P)
|
|
done
|
|
\cd "$HERE"
|
|
if [ -f "$T/$TOPFILE" ]; then
|
|
echo "$T"
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function _build_fsbl_env()
|
|
{
|
|
export FSBL_PATH
|
|
}
|
|
|
|
function build_fsbl()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
_build_opensbi_env
|
|
cd "$BUILD_PATH" || return
|
|
make fsbl-build
|
|
)}
|
|
|
|
function clean_fsbl()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
cd "$BUILD_PATH" || return
|
|
make fsbl-clean
|
|
)}
|
|
|
|
function _build_atf_env()
|
|
{
|
|
export ATF_BL32 FAKE_BL31_32
|
|
}
|
|
|
|
function build_atf()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_atf_env
|
|
cd "$BUILD_PATH" || return
|
|
make arm-trusted-firmware
|
|
)}
|
|
|
|
function clean_atf()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_atf_env
|
|
cd "$BUILD_PATH" || return
|
|
make arm-trusted-firmware-clean
|
|
)}
|
|
|
|
function _build_uboot_env()
|
|
{
|
|
_build_atf_env
|
|
_build_fsbl_env
|
|
export UBOOT_OUTPUT_FOLDER IMGTOOL_PATH FLASH_PARTITION_XML FIP_BIN_PATH
|
|
export UBOOT_VBOOT RELEASE_VERSION ENABLE_BOOTLOGO STORAGE_TYPE COMPRESSOR_UBOOT
|
|
export PANEL_TUNING_PARAM PANEL_LANE_NUM_TUNING_PARAM PANEL_LANE_SWAP_TUNING_PARAM
|
|
}
|
|
|
|
function build_fip_pre()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
cd "$BUILD_PATH" || return
|
|
make fip-pre-merge
|
|
)}
|
|
|
|
function build_rtos()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$BUILD_PATH" || return
|
|
make rtos
|
|
)}
|
|
|
|
function clean_rtos()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$BUILD_PATH" || return
|
|
make rtos-clean
|
|
)}
|
|
|
|
function menuconfig_uboot()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
cd "$BUILD_PATH" || return
|
|
make u-boot-menuconfig || return "$?"
|
|
)}
|
|
|
|
function _link_uboot_logo()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$BUILD_PATH" || return
|
|
if [[ x"${PANEL_TUNING_PARAM}" = x"I80_panel_st7789v" ]]; then
|
|
ln -sf "$COMMON_TOOLS_PATH"/bootlogo/logo_320x240.BMP "$COMMON_TOOLS_PATH"/bootlogo/logo.jpg
|
|
fi
|
|
)}
|
|
|
|
function build_uboot()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
_build_opensbi_env
|
|
_link_uboot_logo
|
|
cd "$BUILD_PATH" || return
|
|
make u-boot
|
|
)}
|
|
|
|
function build_uboot_env_tools()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
cd "$BUILD_PATH" || return
|
|
make u-boot-env-tools
|
|
)}
|
|
|
|
function clean_uboot()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_uboot_env
|
|
cd "$BUILD_PATH" || return
|
|
make u-boot-clean
|
|
)}
|
|
|
|
function _build_kernel_env()
|
|
{
|
|
export KERNEL_OUTPUT_FOLDER RAMDISK_OUTPUT_FOLDER SYSTEM_OUT_DIR
|
|
}
|
|
|
|
function menuconfig_kernel()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_kernel_env
|
|
cd "$BUILD_PATH" || return
|
|
make kernel-menuconfig || return "$?"
|
|
)}
|
|
|
|
function setconfig_kernel()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_kernel_env
|
|
cd "$BUILD_PATH" || return
|
|
make kernel-setconfig "SCRIPT_ARG=$1" || return "$?"
|
|
)}
|
|
|
|
# shellcheck disable=SC2120
|
|
function build_kernel()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_kernel_env
|
|
cd "$BUILD_PATH" || return
|
|
make kernel || return "$?"
|
|
|
|
# generate boot.itb image.
|
|
if [[ ${1} != noitb ]]; then
|
|
pack_boot || return "$?"
|
|
fi
|
|
)}
|
|
|
|
function clean_kernel()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_kernel_env
|
|
cd "$BUILD_PATH" || return
|
|
make kernel-clean
|
|
)}
|
|
|
|
function build_bld()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$BUILD_PATH" || return
|
|
make bld
|
|
)}
|
|
|
|
function clean_bld()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$BUILD_PATH" || return
|
|
make bld-clean
|
|
)}
|
|
|
|
function _build_middleware_env()
|
|
{
|
|
export MULTI_PROCESS_SUPPORT
|
|
}
|
|
|
|
function build_middleware()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_middleware_env
|
|
cd "$BUILD_PATH" || return
|
|
|
|
make "$ROOTFS_DIR"
|
|
|
|
pushd "$MW_PATH"
|
|
make all -j$(nproc)
|
|
test $? -ne 0 && print_notice "build middleware failed !!" && popd && return 1
|
|
make install DESTDIR="$SYSTEM_OUT_DIR"
|
|
popd
|
|
|
|
# add sdk version
|
|
echo "SDK_VERSION=${SDK_VER}" > "$SYSTEM_OUT_DIR"/sdk-release
|
|
)}
|
|
|
|
function clean_middleware()
|
|
{
|
|
pushd "$MW_PATH"
|
|
make clean
|
|
make uninstall
|
|
popd
|
|
}
|
|
|
|
function _build_tpu_sdk_env()
|
|
{
|
|
export SYSTEM_OUT_DIR OSS_TARBALL_PATH OSS_PATH
|
|
}
|
|
|
|
function build_tpu_sdk()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
|
|
_build_tpu_sdk_env
|
|
# build tpu
|
|
TPU_SDK_BUILD_PATH="$TPU_SDK_PATH"/build_sdk \
|
|
TPU_SDK_INSTALL_PATH="$TPU_SDK_INSTALL_PATH" \
|
|
"$TPU_SDK_PATH"/build_tpu_sdk.sh
|
|
|
|
test "$?" -eq 0 || return 1
|
|
)}
|
|
|
|
function clean_tpu_sdk()
|
|
{
|
|
rm -rf "$TPU_SDK_INSTALL_PATH"
|
|
rm -rf "$TPU_SDK_PATH"/build_sdk
|
|
|
|
rm -f "$SYSTEM_OUT_DIR"/lib/libcnpy.so*
|
|
rm -f "$SYSTEM_OUT_DIR"/lib/libcvikernel.so*
|
|
rm -f "$SYSTEM_OUT_DIR"/lib/libcviruntime.so*
|
|
rm -f "$SYSTEM_OUT_DIR"/lib/libopencv_*
|
|
}
|
|
|
|
function build_sdk()
|
|
{
|
|
if [[ -z $1 ]]; then
|
|
echo "Please enter sdk type !"
|
|
return 1;
|
|
fi
|
|
|
|
print_notice "Run ${FUNCNAME[0]}() $1 function"
|
|
|
|
if [ ! -e "$TPU_SDK_INSTALL_PATH" ]; then
|
|
echo "$TPU_SDK_INSTALL_PATH not present, run build_tpu_sdk first"
|
|
return 1
|
|
fi
|
|
|
|
if [ "$SDK_VER" = 64bit ]; then
|
|
HOST_TOOL_PATH="$CROSS_COMPILE_PATH_64"
|
|
elif [ "$SDK_VER" = 32bit ]; then
|
|
HOST_TOOL_PATH="$CROSS_COMPILE_PATH_32"
|
|
elif [ "$SDK_VER" = uclibc ]; then
|
|
HOST_TOOL_PATH="$CROSS_COMPILE_PATH_UCLIBC"
|
|
elif [ "$SDK_VER" = glibc_riscv64 ]; then
|
|
HOST_TOOL_PATH="$CROSS_COMPILE_PATH_GLIBC_RISCV64"
|
|
elif [ "$SDK_VER" = musl_riscv64 ]; then
|
|
HOST_TOOL_PATH="$CROSS_COMPILE_PATH_MUSL_RISCV64"
|
|
else
|
|
echo "Unknown SDK_VER=$SDK_VER"
|
|
return 1
|
|
fi
|
|
local SDK_PATH=
|
|
local SDK_INSTALL_PATH=
|
|
if [[ "$1" = ive ]]; then
|
|
SDK_PATH="$IVE_SDK_PATH"
|
|
SDK_INSTALL_PATH="$IVE_SDK_INSTALL_PATH"
|
|
elif [[ "$1" = ivs ]]; then
|
|
SDK_PATH="$IVS_SDK_PATH"
|
|
SDK_INSTALL_PATH="$IVS_SDK_INSTALL_PATH"
|
|
elif [[ "$1" = ai ]]; then
|
|
SDK_PATH="$AI_SDK_PATH"
|
|
SDK_INSTALL_PATH="$AI_SDK_INSTALL_PATH"
|
|
elif [[ "$1" = cnv ]]; then
|
|
SDK_PATH="$CNV_SDK_PATH"
|
|
SDK_INSTALL_PATH="$CNV_SDK_INSTALL_PATH"
|
|
fi
|
|
pushd "$SDK_PATH"
|
|
HOST_TOOL_PATH="$HOST_TOOL_PATH" \
|
|
MW_PATH="$MW_PATH" \
|
|
CHIP_ARCH="$CHIP_ARCH" \
|
|
OPENCV_INSTALL_PATH="$TPU_SDK_INSTALL_PATH"/opencv \
|
|
TRACER_INSTALL_PATH="$IVE_SDK_INSTALL_PATH" \
|
|
TPU_SDK_INSTALL_PATH="$TPU_SDK_INSTALL_PATH" \
|
|
IVE_SDK_INSTALL_PATH="$IVE_SDK_INSTALL_PATH" \
|
|
AI_SDK_INSTALL_PATH="$AI_SDK_INSTALL_PATH" \
|
|
IVS_SDK_INSTALL_PATH="$IVS_SDK_INSTALL_PATH" \
|
|
CNV_SDK_INSTALL_PATH="$CNV_SDK_INSTALL_PATH" \
|
|
KERNEL_HEADER_PATH="$KERNEL_PATH"/"$KERNEL_OUTPUT_FOLDER"/usr/ \
|
|
scripts/sdk_release.sh
|
|
test "$?" -ne 0 && print_notice "${FUNCNAME[0]}() failed !!" && popd && return 1
|
|
popd
|
|
|
|
# copy so
|
|
cp -a "$SDK_INSTALL_PATH"/lib/*.so* "$SYSTEM_OUT_DIR"/lib/
|
|
# copy sample_xxx
|
|
if [[ "$CHIP_ARCH" != CV180X ]] && [[ "$1" = ai ]]; then
|
|
mkdir -p "$SYSTEM_OUT_DIR"/usr/bin/"$1"
|
|
cp -a "$SDK_INSTALL_PATH"/bin/sample_* "$SYSTEM_OUT_DIR"/usr/bin/"$1"
|
|
fi
|
|
}
|
|
|
|
function clean_sdk()
|
|
{
|
|
[[ "$1" = ive ]] && rm -rf "$IVE_SDK_INSTALL_PATH"
|
|
[[ "$1" = ivs ]] && rm -rf "$IVS_SDK_INSTALL_PATH"
|
|
[[ "$1" = cnv ]] && rm -rf "$CNV_SDK_INSTALL_PATH"
|
|
if [[ "$1" = ai ]]; then
|
|
rm -rf "$AI_SDK_INSTALL_PATH"
|
|
rm -rf "$AI_SDK_PATH"/tmp/_deps
|
|
fi
|
|
|
|
rm -f "$SYSTEM_OUT_DIR"/lib/libcviai.so*
|
|
rm -f "$SYSTEM_OUT_DIR"/lib/libcvi_"$1"_tpu.so*
|
|
rm -rf "${SYSTEM_OUT_DIR:?}"/usr/bin/"$1"
|
|
}
|
|
|
|
function build_ive_sdk()
|
|
{
|
|
if [[ "$CHIP_ARCH" != CV181X ]] ; then
|
|
build_sdk ive
|
|
fi
|
|
}
|
|
|
|
function clean_ive_sdk()
|
|
{
|
|
if [[ "$CHIP_ARCH" != CV181X ]] ; then
|
|
clean_sdk ive
|
|
fi
|
|
}
|
|
|
|
function build_ivs_sdk()
|
|
{
|
|
if [[ "$CHIP_ARCH" == CV182X ]] || [[ "$CHIP_ARCH" == CV183X ]]; then
|
|
build_sdk ivs
|
|
fi
|
|
}
|
|
|
|
function clean_ivs_sdk()
|
|
{
|
|
if [[ "$CHIP_ARCH" == CV182X ]] || [[ "$CHIP_ARCH" == CV183X ]]; then
|
|
clean_sdk ivs
|
|
fi
|
|
}
|
|
|
|
function build_ai_sdk()
|
|
{
|
|
build_sdk ai
|
|
}
|
|
|
|
function clean_ai_sdk()
|
|
{
|
|
clean_sdk ai
|
|
}
|
|
|
|
function build_cnv_sdk()
|
|
{
|
|
build_sdk cnv
|
|
}
|
|
|
|
function clean_cnv_sdk()
|
|
{
|
|
clean_sdk cnv
|
|
}
|
|
|
|
function build_osdrv()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() ${1} function"
|
|
|
|
cd "$BUILD_PATH" || return
|
|
make "$ROOTFS_DIR"
|
|
|
|
local osdrv_target="$1"
|
|
if [ -z "$osdrv_target" ]; then
|
|
osdrv_target=all
|
|
fi
|
|
|
|
pushd "$OSDRV_PATH"
|
|
make KERNEL_DIR="$KERNEL_PATH"/"$KERNEL_OUTPUT_FOLDER" INSTALL_DIR="$SYSTEM_OUT_DIR"/ko "$osdrv_target" || return "$?"
|
|
popd
|
|
)}
|
|
|
|
function clean_osdrv()
|
|
{
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
|
|
pushd "$OSDRV_PATH"
|
|
make KERNEL_DIR="$KERNEL_PATH"/"$KERNEL_OUTPUT_FOLDER" INSTALL_DIR="$SYSTEM_OUT_DIR"/ko clean || return "$?"
|
|
popd
|
|
}
|
|
|
|
function _build_cvi_pipeline_env()
|
|
{
|
|
export SYSTEM_OUT_DIR CROSS_COMPILE_PATH_32 CROSS_COMPILE_PATH_64 CROSS_COMPILE_PATH_UCLIBC
|
|
}
|
|
|
|
function build_cvi_pipeline()
|
|
{
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_cvi_pipeline_env
|
|
|
|
pushd "$CVI_PIPELINE_PATH"
|
|
./build.sh "1"
|
|
./install_base_pkg.sh prebuilt "$(pwd)/install"
|
|
./download_models.sh "$(pwd)/install/cvi_models"
|
|
make install DESTDIR="$(pwd)/install/system" LIBC_PATH="$TOOLCHAIN_PATH/gcc/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/"
|
|
popd
|
|
}
|
|
|
|
function clean_cvi_pipeline()
|
|
{
|
|
pushd "$CVI_PIPELINE_PATH"
|
|
make clean
|
|
rm -rf cvi_pipeline.tar.gz
|
|
rm -rf prebuilt/*
|
|
popd
|
|
}
|
|
|
|
function _build_cvi_rtsp_env()
|
|
{
|
|
export CROSS_COMPILE
|
|
}
|
|
|
|
function build_cvi_rtsp()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
_build_cvi_rtsp_env
|
|
|
|
cd "$CVI_RTSP_PATH" || return
|
|
BUILD_SERVICE=1 MW_DIR=${MW_PATH} ./build.sh
|
|
BUILD_SERVICE=1 make install DESTDIR="$(pwd)/install"
|
|
make package DESTDIR="$(pwd)/install"
|
|
|
|
if [[ "$FLASH_SIZE_SHRINK" != "y" ]]; then
|
|
BUILD_SERVICE=1 make install DESTDIR="${SYSTEM_OUT_DIR}/usr"
|
|
fi
|
|
)}
|
|
|
|
function clean_cvi_rtsp()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$CVI_RTSP_PATH" || return
|
|
BUILD_SERVICE=1 make clean
|
|
)}
|
|
|
|
function build_pqtool_server()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$PQTOOL_SERVER_PATH" || return
|
|
make all SDK_VER="$SDK_VER" MULTI_PROCESS_SUPPORT="$MULTI_PROCESS_SUPPORT"
|
|
test "$?" -ne 0 && print_notice "build pqtool_server failed !!" && popd && return 1
|
|
|
|
if [[ "$FLASH_SIZE_SHRINK" != "y" ]]; then
|
|
make install DESTDIR="$SYSTEM_OUT_DIR"
|
|
fi
|
|
)}
|
|
|
|
function clean_pqtool_server()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
cd "$PQTOOL_SERVER_PATH" || return
|
|
make clean
|
|
make uninstall DESTDIR="$SYSTEM_OUT_DIR"
|
|
)}
|
|
|
|
function build_3rd_party()
|
|
{
|
|
mkdir -p "$OSS_TARBALL_PATH"
|
|
|
|
if [ -d "${OSS_PATH}/oss_release_tarball" ]; then
|
|
echo "oss prebuilt tarball found!"
|
|
else
|
|
echo "Try to download oss_release_tarball.tar tarball ..."
|
|
#wget ...
|
|
#tar -xvf ${OSS_PATH}/oss_release_tarball.tar -C ${OSS_PATH}
|
|
fi
|
|
echo "cp -rpf ${OSS_PATH}/oss_release_tarball/${SDK_VER}/* ${OSS_TARBALL_PATH}"
|
|
cp -rpf ${OSS_PATH}/oss_release_tarball/${SDK_VER}/* ${OSS_TARBALL_PATH}
|
|
|
|
local oss_list=(
|
|
"zlib"
|
|
"glog"
|
|
"flatbuffers"
|
|
"opencv"
|
|
"live555"
|
|
"sqlite3"
|
|
"ffmpeg"
|
|
"thttpd"
|
|
"openssl"
|
|
"libwebsockets"
|
|
"json-c"
|
|
"nanomsg"
|
|
"miniz"
|
|
"uv"
|
|
"cvi-json-c"
|
|
"cvi-miniz"
|
|
)
|
|
|
|
for name in "${oss_list[@]}"
|
|
do
|
|
if [ -f "${OSS_TARBALL_PATH}/${name}.tar.gz" ]; then
|
|
echo "$name found"
|
|
"$OSS_PATH"/run_build.sh -n "$name" -e -t "$OSS_TARBALL_PATH" -i "$TPU_SDK_INSTALL_PATH"
|
|
echo "$name successfully downloaded and untared."
|
|
else
|
|
echo "$name not found"
|
|
fi
|
|
done
|
|
}
|
|
|
|
function clean_3rd_party()
|
|
{
|
|
rm -rf "$OSS_PATH"/build
|
|
rm -rf "$OSS_TARBALL_PATH"
|
|
}
|
|
|
|
function clean_ramdisk()
|
|
{
|
|
rm -rf "${RAMDISK_PATH:?}"/"$RAMDISK_OUTPUT_BASE"
|
|
rm -rf "$SYSTEM_OUT_DIR"
|
|
rm -rf "$ROOTFS_DIR"
|
|
}
|
|
|
|
function prepare_git_hook()
|
|
{
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
if [[ -d ".git" ]]; then
|
|
mkdir -p .git/hooks
|
|
cp ${TOP_DIR}/build/hook/commit-msg .git/hooks/
|
|
chmod +x .git/hooks/commit-msg
|
|
cp ${TOP_DIR}/build/hook/prepare-commit-msg .git/hooks/
|
|
chmod +x .git/hooks/prepare-commit-msg
|
|
else
|
|
print_notice "Abort .git is not exist !!!"
|
|
fi
|
|
}
|
|
|
|
# shellcheck disable=SC2120
|
|
function build_all()
|
|
{(
|
|
build_uboot || return $?
|
|
build_kernel || return $?
|
|
build_ramboot || return $?
|
|
build_osdrv || return $?
|
|
build_3rd_party || return $?
|
|
build_middleware || return $?
|
|
if [ "$TPU_REL" = 1 ]; then
|
|
build_tpu_sdk || return $?
|
|
fi
|
|
pack_cfg || return $?
|
|
pack_rootfs || return $?
|
|
pack_data || return $?
|
|
pack_system || return $?
|
|
copy_tools || return $?
|
|
pack_upgrade || return $?
|
|
)}
|
|
|
|
function clean_all()
|
|
{
|
|
clean_uboot
|
|
clean_opensbi
|
|
clean_rtos
|
|
[[ "$ATF_SRC" == y ]] && clean_atf
|
|
clean_kernel
|
|
clean_ramdisk
|
|
clean_3rd_party
|
|
if [ "$TPU_REL" = 1 ]; then
|
|
clean_ive_sdk
|
|
clean_ivs_sdk
|
|
clean_tpu_sdk
|
|
clean_ai_sdk
|
|
clean_cnv_sdk
|
|
fi
|
|
clean_middleware
|
|
clean_osdrv
|
|
}
|
|
|
|
function distclean_all()
|
|
{(
|
|
print_notice "Run ${FUNCNAME[0]}() function"
|
|
clean_all
|
|
#repo forall -c "git clean -dfx"
|
|
)}
|
|
|
|
# shellcheck disable=SC2120
|
|
function envs_sdk_ver()
|
|
{
|
|
if [ -n "$1" ]; then
|
|
SDK_VER="$1"
|
|
fi
|
|
|
|
if [ "$SDK_VER" = 64bit ]; then
|
|
CROSS_COMPILE="$CROSS_COMPILE_64"
|
|
CROSS_COMPILE_PATH="$CROSS_COMPILE_PATH_64"
|
|
SYSROOT_PATH="$SYSROOT_PATH_64"
|
|
elif [ "$SDK_VER" = 32bit ]; then
|
|
CROSS_COMPILE="$CROSS_COMPILE_32"
|
|
CROSS_COMPILE_PATH="$CROSS_COMPILE_PATH_32"
|
|
SYSROOT_PATH="$SYSROOT_PATH_32"
|
|
elif [ "$SDK_VER" = uclibc ]; then
|
|
CROSS_COMPILE="$CROSS_COMPILE_UCLIBC"
|
|
CROSS_COMPILE_PATH="$CROSS_COMPILE_PATH_UCLIBC"
|
|
SYSROOT_PATH="$SYSROOT_PATH_UCLIBC"
|
|
elif [ "$SDK_VER" = glibc_riscv64 ]; then
|
|
CROSS_COMPILE="$CROSS_COMPILE_GLIBC_RISCV64"
|
|
CROSS_COMPILE_PATH="$CROSS_COMPILE_PATH_GLIBC_RISCV64"
|
|
SYSROOT_PATH="$SYSROOT_PATH_GLIBC_RISCV64"
|
|
elif [ "$SDK_VER" = musl_riscv64 ]; then
|
|
CROSS_COMPILE="$CROSS_COMPILE_MUSL_RISCV64"
|
|
CROSS_COMPILE_PATH="$CROSS_COMPILE_PATH_MUSL_RISCV64"
|
|
SYSROOT_PATH="$SYSROOT_PATH_MUSL_RISCV64"
|
|
else
|
|
echo -e "Invalid SDK_VER=${SDK_VER}"
|
|
exit 1
|
|
fi
|
|
|
|
TPU_OUTPUT_PATH="$OUTPUT_DIR"/tpu_"$SDK_VER"
|
|
# ramdisk packages PATH
|
|
pushd $BUILD_PATH || return $?
|
|
CVI_TARGET_PACKAGES_LIBDIR=$(make print-target-packages-libdir)
|
|
CVI_TARGET_PACKAGES_INCLUDE=$(make print-target-packages-include)
|
|
popd
|
|
export CVI_TARGET_PACKAGES_LIBDIR
|
|
export CVI_TARGET_PACKAGES_INCLUDE
|
|
|
|
OSS_TARBALL_PATH="$TPU_OUTPUT_PATH"/third_party
|
|
TPU_SDK_INSTALL_PATH="$TPU_OUTPUT_PATH"/cvitek_tpu_sdk
|
|
IVE_SDK_INSTALL_PATH="$TPU_OUTPUT_PATH"/cvitek_ive_sdk
|
|
IVS_SDK_INSTALL_PATH="$TPU_OUTPUT_PATH"/cvitek_ivs_sdk
|
|
AI_SDK_INSTALL_PATH="$TPU_OUTPUT_PATH"/cvitek_ai_sdk
|
|
CNV_SDK_INSTALL_PATH="$TPU_OUTPUT_PATH"/cvitek_cnv_sdk
|
|
TPU_MODEL_PATH="$TPU_OUTPUT_PATH"/models
|
|
IVE_CMODEL_INSTALL_PATH="$TPU_OUTPUT_PATH"/tools/ive_cmodel
|
|
}
|
|
|
|
function cvi_setup_env()
|
|
{
|
|
local _tmp ret
|
|
|
|
_build_default_env
|
|
|
|
_tmp=$(python3 "${TOP_DIR}/build/scripts/boards_scan.py" --gen-board-env="${CHIP}_${BOARD}")
|
|
ret=$?
|
|
[[ "$ret" == 0 ]] || return "$ret"
|
|
|
|
# shellcheck disable=SC1090
|
|
source <(echo "${_tmp}")
|
|
|
|
if [[ "$CHIP_ARCH" == "CV183X" ]];then
|
|
export CVIARCH="CV183X"
|
|
fi
|
|
if [[ "$CHIP_ARCH" == "CV182X" ]];then
|
|
export CVIARCH="CV182X"
|
|
fi
|
|
if [[ "$CHIP_ARCH" == "CV181X" ]];then
|
|
export CVIARCH="CV181X"
|
|
fi
|
|
if [[ "$CHIP_ARCH" == "CV180X" ]];then
|
|
export CVIARCH="CV180X"
|
|
fi
|
|
if [[ "$CHIP_ARCH" == "ATHENA2" ]];then
|
|
export CVIARCH="ATHENA2"
|
|
fi
|
|
|
|
export BRAND BUILD_VERBOSE DEBUG PROJECT_FULLNAME
|
|
export OUTPUT_DIR ATF_PATH BM_BLD_PATH OPENSBI_PATH UBOOT_PATH FREERTOS_PATH
|
|
export KERNEL_PATH RAMDISK_PATH OSDRV_PATH TOOLS_PATH COMMON_TOOLS_PATH
|
|
|
|
PROJECT_FULLNAME="$CHIP"_"$BOARD"
|
|
|
|
# output folder path
|
|
INSTALL_PATH="$TOP_DIR"/install
|
|
OUTPUT_DIR="$INSTALL_PATH"/soc_"$PROJECT_FULLNAME"
|
|
ROOTFS_DIR="$OUTPUT_DIR"/rootfs
|
|
SYSTEM_OUT_DIR="$OUTPUT_DIR"/rootfs/mnt/system
|
|
|
|
# source file folders
|
|
FSBL_PATH="$TOP_DIR"/fsbl
|
|
ATF_PATH="$TOP_DIR"/arm-trusted-firmware
|
|
UBOOT_PATH="$TOP_DIR/$UBOOT_SRC"
|
|
FREERTOS_PATH="$TOP_DIR"/freertos
|
|
ALIOS_PATH="$TOP_DIR"/alios
|
|
KERNEL_PATH="$TOP_DIR"/"$KERNEL_SRC"
|
|
OSDRV_PATH="$TOP_DIR"/osdrv
|
|
RAMDISK_PATH="$TOP_DIR"/ramdisk
|
|
BM_BLD_PATH="$TOP_DIR"/bm_bld
|
|
TOOLCHAIN_PATH="$TOP_DIR"/host-tools
|
|
OSS_PATH="$TOP_DIR"/oss
|
|
OPENCV_PATH="$TOP_DIR"/opencv
|
|
APPS_PATH="$TOP_DIR"/apps
|
|
MW_PATH="$TOP_DIR"/middleware/"$MW_VER"
|
|
PQTOOL_SERVER_PATH="$MW_PATH"/modules/isp/"${CHIP_ARCH,,}"/isp-tool-daemon/isp_daemon_tool
|
|
ISP_TUNING_PATH="$TOP_DIR"/isp_tuning
|
|
TPU_SDK_PATH="$TOP_DIR"/cviruntime
|
|
IVE_SDK_PATH="$TOP_DIR"/ive
|
|
IVS_SDK_PATH="$TOP_DIR"/ivs
|
|
CNV_SDK_PATH="$TOP_DIR"/cnv
|
|
AI_SDK_PATH="$TOP_DIR"/cviai
|
|
CVI_PIPELINE_PATH="$TOP_DIR"/cvi_pipeline
|
|
CVI_RTSP_PATH="$TOP_DIR"/cvi_rtsp
|
|
OPENSBI_PATH="$TOP_DIR"/opensbi
|
|
TOOLS_PATH="$BUILD_PATH"/tools
|
|
COMMON_TOOLS_PATH="$TOOLS_PATH"/common
|
|
VENC_PATH="$MW_PATH"/modules/venc
|
|
IMGTOOL_PATH="$COMMON_TOOLS_PATH"/image_tool
|
|
EMMCTOOL_PATH="$COMMON_TOOLS_PATH"/emmc_tool
|
|
SCRIPTTOOL_PATH="$COMMON_TOOLS_PATH"/scripts
|
|
ROOTFSTOOL_PATH="$COMMON_TOOLS_PATH"/rootfs_tool
|
|
SPINANDTOOL_PATH="$COMMON_TOOLS_PATH"/spinand_tool
|
|
BOOTLOGO_PATH="$COMMON_TOOLS_PATH"/bootlogo/logo.jpg
|
|
|
|
# subfolder path for buidling, chosen accroding to .gitignore rules
|
|
UBOOT_OUTPUT_FOLDER=build/"$PROJECT_FULLNAME"
|
|
RAMDISK_OUTPUT_BASE=build/"$PROJECT_FULLNAME"
|
|
KERNEL_OUTPUT_FOLDER=build/"$PROJECT_FULLNAME"
|
|
RAMDISK_OUTPUT_FOLDER="$RAMDISK_OUTPUT_BASE"/workspace
|
|
|
|
# toolchain
|
|
export CROSS_COMPILE_64=aarch64-linux-gnu-
|
|
export CROSS_COMPILE_32=arm-linux-gnueabihf-
|
|
export CROSS_COMPILE_UCLIBC=arm-cvitek-linux-uclibcgnueabihf-
|
|
export CROSS_COMPILE_64_NONOS=aarch64-elf-
|
|
export CROSS_COMPILE_64_NONOS_RISCV64=riscv64-unknown-elf-
|
|
export CROSS_COMPILE_GLIBC_RISCV64=riscv64-unknown-linux-gnu-
|
|
export CROSS_COMPILE_MUSL_RISCV64=riscv64-unknown-linux-musl-
|
|
export CROSS_COMPILE="$CROSS_COMPILE_64"
|
|
|
|
# toolchain path
|
|
CROSS_COMPILE_PATH_64="$TOOLCHAIN_PATH"/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu
|
|
CROSS_COMPILE_PATH_32="$TOOLCHAIN_PATH"/gcc/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf
|
|
CROSS_COMPILE_PATH_UCLIBC="$TOOLCHAIN_PATH"/gcc/arm-cvitek-linux-uclibcgnueabihf
|
|
CROSS_COMPILE_PATH_64_NONOS="$TOOLCHAIN_PATH"/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-elf
|
|
CROSS_COMPILE_PATH_64_NONOS_RISCV64="$TOOLCHAIN_PATH"/gcc/riscv64-elf-x86_64
|
|
CROSS_COMPILE_PATH_GLIBC_RISCV64="$TOOLCHAIN_PATH"/gcc/riscv64-linux-x86_64
|
|
CROSS_COMPILE_PATH_MUSL_RISCV64="$TOOLCHAIN_PATH"/gcc/riscv64-linux-musl-x86_64
|
|
CROSS_COMPILE_PATH="$CROSS_COMPILE_PATH_64"
|
|
|
|
# add toolchain path
|
|
pathprepend "$CROSS_COMPILE_PATH_64"/bin
|
|
pathprepend "$CROSS_COMPILE_PATH_32"/bin
|
|
pathprepend "$CROSS_COMPILE_PATH_64_NONOS"/bin
|
|
pathprepend "$CROSS_COMPILE_PATH_64_NONOS_RISCV64"/bin
|
|
pathprepend "$CROSS_COMPILE_PATH_GLIBC_RISCV64"/bin
|
|
pathprepend "$CROSS_COMPILE_PATH_MUSL_RISCV64"/bin
|
|
pathappend "$CROSS_COMPILE_PATH_UCLIBC"/bin
|
|
|
|
# Check ccache is enable or not
|
|
pathremove "$BUILD_PATH"/output/bin
|
|
rm -rf "$BUILD_PATH"/output/bin/
|
|
if [ "$USE_CCACHE" == "y" ];then
|
|
if command -v ccache &> /dev/null;then
|
|
mkdir -p "$BUILD_PATH"/output/bin
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/aarch64-elf-gcc
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/aarch64-elf-g++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/aarch64-elf-c++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/aarch64-linux-gnu-gcc
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/aarch64-linux-gnu-g++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/aarch64-linux-gnu-c++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/arm-linux-gnueabihf-gcc
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/arm-linux-gnueabihf-g++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/arm-linux-gnueabihf-c++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/arm-cvitek-linux-uclibcgnueabihf-gcc
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/arm-cvitek-linux-uclibcgnueabihf-g++
|
|
ln -s "$(which ccache)" "$BUILD_PATH"/output/bin/arm-cvitek-linux-uclibcgnueabihf-c++
|
|
pathprepend "$BUILD_PATH"/output/bin
|
|
else
|
|
echo "You have enabled ccache but there is no ccache in your PATH. Please cheack!"
|
|
USE_CCACHE="n"
|
|
fi
|
|
fi
|
|
|
|
# sysroot
|
|
SYSROOT_PATH_64="$RAMDISK_PATH"/sysroot/sysroot-glibc-linaro-2.23-2017.05-aarch64-linux-gnu
|
|
SYSROOT_PATH_32="$RAMDISK_PATH"/sysroot/sysroot-glibc-linaro-2.23-2017.05-arm-linux-gnueabihf
|
|
SYSROOT_PATH_UCLIBC="$RAMDISK_PATH"/sysroot/sysroot-uclibc
|
|
SYSROOT_PATH_GLIBC_RISCV64="$RAMDISK_PATH"/sysroot/sysroot-glibc-riscv64
|
|
SYSROOT_PATH_MUSL_RISCV64="$RAMDISK_PATH"/sysroot/sysroot-musl-riscv64
|
|
SYSROOT_PATH="$SYSROOT_PATH_64"
|
|
|
|
# envs setup for specific ${SDK_VER}
|
|
envs_sdk_ver
|
|
|
|
if [ "${STORAGE_TYPE}" == "spinand" ]; then
|
|
PAGE_SUFFIX=2k
|
|
if [ ${NANDFLASH_PAGESIZE} == 4096 ]; then
|
|
PAGE_SUFFIX=4k
|
|
fi
|
|
|
|
if [[ "$ENABLE_ALIOS" != "y" ]]; then
|
|
pushd "$BUILD_PATH"/boards/"${CHIP_ARCH,,}"/"$PROJECT_FULLNAME"/partition/
|
|
ln -fs ../../../default/partition/partition_spinand_page_"$PAGE_SUFFIX".xml \
|
|
partition_"$STORAGE_TYPE".xml
|
|
popd
|
|
fi
|
|
fi
|
|
|
|
# configure flash partition table
|
|
if [ -z "${STORAGE_TYPE}" ]; then
|
|
FLASH_PARTITION_XML="$BUILD_PATH"/boards/default/partition/partition_none.xml
|
|
else
|
|
FLASH_PARTITION_XML="$BUILD_PATH"/boards/"${CHIP_ARCH,,}"/"$PROJECT_FULLNAME"/partition/partition_"$STORAGE_TYPE".xml
|
|
if ! [ -e "$FLASH_PARTITION_XML" ]; then
|
|
print_error "${FLASH_PARTITION_XML} does not exist!!"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
export SYSTEM_OUT_DIR
|
|
export CROSS_COMPILE_PATH
|
|
# buildroot config
|
|
export BR_DIR="$TOP_DIR"/buildroot-2021.05
|
|
export BR_BOARD=cvitek_${CHIP_ARCH}_${SDK_VER}
|
|
export BR_OVERLAY_DIR=${BR_DIR}/board/cvitek/${CHIP_ARCH}/overlay
|
|
export BR_DEFCONFIG=${BR_BOARD}_defconfig
|
|
export BR_ROOTFS_DIR="$OUTPUT_DIR"/tmp-rootfs
|
|
}
|
|
|
|
cvi_print_env()
|
|
{
|
|
echo -e ""
|
|
echo -e "\e[1;32m====== Environment Variables ======= \e[0m\n"
|
|
echo -e " PROJECT: \e[34m$PROJECT_FULLNAME\e[0m, DDR_CFG=\e[34m$DDR_CFG\e[0m"
|
|
echo -e " CHIP_ARCH: \e[34m$CHIP_ARCH\e[0m, DEBUG=\e[34m$DEBUG\e[0m"
|
|
echo -e " SDK VERSION: \e[34m$SDK_VER\e[0m, RPC=\e[34m$MULTI_PROCESS_SUPPORT\e[0m"
|
|
echo -e " ATF options: ATF_KEY_SEL=\e[34m$ATF_KEY_SEL\e[0m, BL32=\e[34m$ATF_BL32\e[0m"
|
|
echo -e " Linux source folder:\e[34m$KERNEL_SRC\e[0m, Uboot source folder: \e[34m$UBOOT_SRC\e[0m"
|
|
echo -e " CROSS_COMPILE_PREFIX: \e[34m$CROSS_COMPILE\e[0m"
|
|
echo -e " ENABLE_BOOTLOGO: $ENABLE_BOOTLOGO"
|
|
echo -e " Flash layout xml: $FLASH_PARTITION_XML"
|
|
echo -e " Sensor tuning bin: $SENSOR_TUNING_PARAM"
|
|
echo -e " Output path: \e[33m$OUTPUT_DIR\e[0m"
|
|
echo -e ""
|
|
}
|
|
|
|
function print_usage()
|
|
{
|
|
printf " -------------------------------------------------------------------------------------------------------\n"
|
|
printf " Usage:\n"
|
|
printf " (1)\33[94m menuconfig \33[0m- Use menu to configure your board.\n"
|
|
printf " ex: $ menuconfig\n\n"
|
|
printf " (2)\33[96m defconfig \$CHIP_ARCH \33[0m- List EVB boards(\$BOARD) by CHIP_ARCH.\n"
|
|
"${BUILD_PATH}/scripts/boards_scan.py" --list-chip-arch
|
|
printf " ex: $ defconfig cv181x\n\n"
|
|
printf " (3)\33[92m defconfig \$BOARD\33[0m - Choose EVB board settings.\n"
|
|
printf " ex: $ defconfig cv1813h_wevb_0007a_spinor\n"
|
|
printf " ex: $ defconfig cv1812cp_wevb_0006a_spinor\n"
|
|
printf " -------------------------------------------------------------------------------------------------------\n"
|
|
}
|
|
|
|
TOP_DIR=$(gettop)
|
|
BUILD_PATH="$TOP_DIR/build"
|
|
export TOP_DIR BUILD_PATH
|
|
"${BUILD_PATH}/scripts/boards_scan.py" --gen-build-kconfig
|
|
"${BUILD_PATH}/scripts/gen_sensor_config.py"
|
|
"${BUILD_PATH}/scripts/gen_panel_config.py"
|
|
|
|
# import common functions
|
|
# shellcheck source=./common_functions.sh
|
|
source "$TOP_DIR/build/common_functions.sh"
|
|
# shellcheck source=./release_functions.sh
|
|
#source "$TOP_DIR/build/release_functions.sh"
|
|
# shellcheck source=./riscv_functions.sh
|
|
source "$TOP_DIR/build/riscv_functions.sh"
|
|
# shellcheck source=./alios_functions.sh
|
|
#source "$TOP_DIR/build/alios_functions.sh"
|
|
|
|
print_usage
|