777 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			777 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
if [ -d BSP/rtos ]; then
 | 
						|
DEFAULT_NVT_CROSS=gcc-6.5-newlib-2.4-2019.11-arm-ca9-eabihf
 | 
						|
DEFAULT_NVTCONFIG_FILE_NAME=.nvt_default
 | 
						|
DEFAULT_NVT_ACTIVE_PROJ="rtos"
 | 
						|
DEFAULT_NVT_MODEL_CFG="565_HUNTING_EVB_LINUX_4G_68CS"
 | 
						|
else
 | 
						|
DEFAULT_NVT_CROSS=arm-ca9-linux-uclibcgnueabihf-8.4.01
 | 
						|
DEFAULT_NVTCONFIG_FILE_NAME=.nvt_default
 | 
						|
DEFAULT_NVT_ACTIVE_PROJ="Linux"
 | 
						|
DEFAULT_NVT_MODEL_CFG="565_HUNTING_EVB_LINUX_4G_68CS"
 | 
						|
fi
 | 
						|
DEFAULT_NVT_UBOOT_CROSS_FOR_RTOS=arm-ca9-linux-gnueabihf-6.5
 | 
						|
 | 
						|
function hmm() {
 | 
						|
cat <<EOF
 | 
						|
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
 | 
						|
- lunch:   lunch <OS> <ModelConfig> <Toolchain>
 | 
						|
- croot:   Changes directory to the top of the tree.
 | 
						|
- m:       Makes from the top of the tree.
 | 
						|
- mr:      Makes rootfs.
 | 
						|
- cso:     Copy shared libraries to rootfs.
 | 
						|
 | 
						|
Environemnt options:
 | 
						|
- SANITIZE_HOST: Set to 'true' to use ASAN for all host modules. Note that
 | 
						|
                 ASAN_OPTIONS=detect_leaks=0 will be set by default until the
 | 
						|
                 build is leak-check clean.
 | 
						|
 | 
						|
Look at the source to view more functions. The complete list is:
 | 
						|
EOF
 | 
						|
	T=$(gettop)
 | 
						|
	local A
 | 
						|
	A=""
 | 
						|
	for i in `cat $T/build/envsetup.sh | sed -n "/^[ \t]*function /s/function \([a-z_]*\).*/\1/p" | sort | uniq`; do
 | 
						|
		A="$A $i"
 | 
						|
	done
 | 
						|
	echo $A
 | 
						|
}
 | 
						|
 | 
						|
function show_env_by_name()
 | 
						|
{
 | 
						|
	echo $1 = ${!1}
 | 
						|
}
 | 
						|
 | 
						|
function get_stuff_for_environment()
 | 
						|
{
 | 
						|
	echo "======================================== NVT Setting ========================================"
 | 
						|
	show_env_by_name NVT_PRJCFG_CFG
 | 
						|
	show_env_by_name NVT_PRJCFG_MODEL_CFG
 | 
						|
	show_env_by_name LINUX_BUILD_TOP
 | 
						|
	show_env_by_name UBOOT_DIR
 | 
						|
	show_env_by_name OPTEE_DIR
 | 
						|
	show_env_by_name KERNELDIR
 | 
						|
	show_env_by_name BUSYBOX_DIR
 | 
						|
	show_env_by_name TOYBOX_DIR
 | 
						|
	show_env_by_name ROOTFS_DIR
 | 
						|
	show_env_by_name APP_DIR
 | 
						|
	show_env_by_name LIBRARY_DIR
 | 
						|
	show_env_by_name INCLUDE_DIR
 | 
						|
	show_env_by_name NVT_DRIVER_DIR
 | 
						|
	show_env_by_name NVT_HDAL_DIR
 | 
						|
	show_env_by_name NVT_VOS_DIR
 | 
						|
	show_env_by_name NVT_RTOS_MAIN_DIR
 | 
						|
	show_env_by_name SAMPLE_DIR
 | 
						|
	show_env_by_name TOOLS_DIR
 | 
						|
	show_env_by_name OUTPUT_DIR
 | 
						|
	show_env_by_name LOGS_DIR
 | 
						|
	show_env_by_name BUILD_DIR
 | 
						|
	show_env_by_name CONFIG_DIR
 | 
						|
	show_env_by_name PLATFORM_CFLAGS
 | 
						|
	show_env_by_name PLATFORM_AFLAGS
 | 
						|
	show_env_by_name NVT_HOST
 | 
						|
	show_env_by_name LINUX_CPU_TYPE
 | 
						|
	show_env_by_name NVT_LINUX_VER
 | 
						|
	show_env_by_name NVT_MULTI_CORES_FLAG
 | 
						|
	show_env_by_name CROSS_COMPILE
 | 
						|
	show_env_by_name CROSS_TOOLCHAIN_PATH
 | 
						|
	show_env_by_name CROSS_TOOLCHAIN_BIN_PATH
 | 
						|
	show_env_by_name SYSROOT_PATH
 | 
						|
	show_env_by_name UBOOT_CROSS_COMPILE
 | 
						|
	show_env_by_name AS
 | 
						|
	show_env_by_name CC
 | 
						|
	show_env_by_name CXX
 | 
						|
	show_env_by_name LD
 | 
						|
	show_env_by_name LDD
 | 
						|
	show_env_by_name AR
 | 
						|
	show_env_by_name NM
 | 
						|
	show_env_by_name GDB
 | 
						|
	show_env_by_name STRIP
 | 
						|
	show_env_by_name OBJCOPY
 | 
						|
	show_env_by_name OBJDUMP
 | 
						|
	show_env_by_name PATH
 | 
						|
	show_env_by_name LD_LIBRARY_PATH
 | 
						|
	echo "============================================================================================="
 | 
						|
}
 | 
						|
 | 
						|
function clear_nvt_environment()
 | 
						|
{
 | 
						|
	rm -rf ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
	unset NVT_PRJCFG_CFG
 | 
						|
	unset NVT_PRJCFG_MODEL_CFG
 | 
						|
	unset LINUX_BUILD_TOP
 | 
						|
	unset UBOOT_DIR
 | 
						|
	unset OPTEE_DIR
 | 
						|
	unset KERNELDIR
 | 
						|
	unset BUSYBOX_DIR
 | 
						|
	unset TOYBOX_DIR
 | 
						|
	unset ROOTFS_DIR
 | 
						|
	unset APP_DIR
 | 
						|
	unset LIBRARY_DIR
 | 
						|
	unset NVT_DRIVER_DIR
 | 
						|
	unset NVT_HDAL_DIR
 | 
						|
	unset NVT_VOS_DIR
 | 
						|
	unset NVT_RTOS_MAIN_DIR
 | 
						|
	unset SAMPLE_DIR
 | 
						|
	unset TOOLS_DIR
 | 
						|
	unset OUTPUT_DIR
 | 
						|
	unset LOGS_DIR
 | 
						|
	unset BUILD_DIR
 | 
						|
	unset CONFIG_DIR
 | 
						|
	unset NVT_DSP_DIR
 | 
						|
	unset PLATFORM_CFLAGS
 | 
						|
	unset PLATFORM_AFLAGS
 | 
						|
	unset NVT_HOST
 | 
						|
	unset LINUX_CPU_TYPE
 | 
						|
	unset NVT_LINUX_VER
 | 
						|
	unset NVT_CROSS
 | 
						|
	unset CROSS_COMPILE
 | 
						|
	unset CROSS_TOOLCHAIN_PATH
 | 
						|
	unset CROSS_TOOLCHAIN_BIN_PATH
 | 
						|
	unset SYSROOT_PATH
 | 
						|
	unset UBOOT_CROSS_COMPILE
 | 
						|
	unset KBUILD_OUTPUT
 | 
						|
	unset NVT_MULTI_CORES_FLAG
 | 
						|
	unset AS
 | 
						|
	unset CC
 | 
						|
	unset CXX
 | 
						|
	unset LD
 | 
						|
	unset LDD
 | 
						|
	unset AR
 | 
						|
	unset NM
 | 
						|
	unset GDB
 | 
						|
	unset STRIP
 | 
						|
	unset OBJCOPY
 | 
						|
	unset OBJDUMP
 | 
						|
	unset NVT_GCOV
 | 
						|
	unset NVT_KGCOV
 | 
						|
}
 | 
						|
 | 
						|
function reset_nvt_environment_crosscompiler()
 | 
						|
{
 | 
						|
	unset AS
 | 
						|
	unset CC
 | 
						|
	unset CXX
 | 
						|
	unset LD
 | 
						|
	unset LDD
 | 
						|
	unset AR
 | 
						|
	unset NM
 | 
						|
	unset GDB
 | 
						|
	unset STRIP
 | 
						|
	unset OBJCOPY
 | 
						|
	unset OBJDUMP
 | 
						|
	unset CPP
 | 
						|
}
 | 
						|
export -f reset_nvt_environment_crosscompiler
 | 
						|
 | 
						|
function restore_nvt_environment_crosscompiler()
 | 
						|
{
 | 
						|
	export AS="${CROSS_COMPILE}as"
 | 
						|
	export CC="${CROSS_COMPILE}gcc"
 | 
						|
	export CPP="${CROSS_COMPILE}gcc"
 | 
						|
	export CXX="${CROSS_COMPILE}g++"
 | 
						|
	export LD=${CROSS_COMPILE}ld
 | 
						|
	export LDD="${CROSS_COMPILE}ldd"
 | 
						|
	export AR=${CROSS_COMPILE}ar
 | 
						|
	export NM=${CROSS_COMPILE}nm
 | 
						|
	export GDB=${CROSS_COMPILE}gdb
 | 
						|
	export STRIP=${CROSS_COMPILE}strip
 | 
						|
	export OBJCOPY=${CROSS_COMPILE}objcopy
 | 
						|
	export OBJDUMP=${CROSS_COMPILE}objdump
 | 
						|
}
 | 
						|
export -f restore_nvt_environment_crosscompiler
 | 
						|
 | 
						|
function chk_for_the_same_codebase()
 | 
						|
{
 | 
						|
	ret=`echo $NVT_PRJCFG_MODEL_CFG | grep ${PWD}`
 | 
						|
	if [ -z $ret ]; then
 | 
						|
		return 0
 | 
						|
	else
 | 
						|
		cfg_model=`echo $NVT_PRJCFG_MODEL_CFG | awk -F'ModelConfig.mk' '{print $1}'`
 | 
						|
		if [ -d $cfg_model ]; then
 | 
						|
			return 1;
 | 
						|
		else
 | 
						|
			return 0;
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function gettop
 | 
						|
{
 | 
						|
	if [ -n "$LINUX_BUILD_TOP" ] ; then
 | 
						|
		echo $LINUX_BUILD_TOP
 | 
						|
		return
 | 
						|
	fi
 | 
						|
	echo $PWD
 | 
						|
}
 | 
						|
 | 
						|
function gen_modelconfig()
 | 
						|
{
 | 
						|
	echo export NVT_PRJCFG_CFG=${NVT_PRJCFG_CFG} > ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
	echo export NVT_CROSS=${NVT_CROSS} >> ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
	echo -n export NVT_PRJCFG_MODEL_CFG='${CONFIG_DIR}/${NVT_PRJCFG_CFG}/' >> ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
	MODEL=`echo $NVT_PRJCFG_MODEL_CFG | awk -F'/' '{print $(NF-1)}'`;
 | 
						|
	echo ${MODEL}/ModelConfig.mk >> ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
}
 | 
						|
 | 
						|
function setsymbolic()
 | 
						|
{
 | 
						|
	# remove old symbolic
 | 
						|
	if [ -L code/hdal/drivers/k_driver/include/plat ]; then
 | 
						|
		unlink code/hdal/drivers/k_driver/include/plat
 | 
						|
	fi
 | 
						|
	if [ -L base/hdal/drivers/k_driver/include/plat ]; then
 | 
						|
		unlink base/hdal/drivers/k_driver/include/plat
 | 
						|
	fi
 | 
						|
	if [ -L code/hdal ]; then
 | 
						|
		rm code/hdal
 | 
						|
	fi
 | 
						|
	if [ -L code/vos ]; then
 | 
						|
		rm code/vos
 | 
						|
	fi
 | 
						|
	if [ -L code ]; then
 | 
						|
		rm code
 | 
						|
	fi
 | 
						|
	if [ -L BSP/u-boot ]; then
 | 
						|
		rm BSP/u-boot
 | 
						|
	fi
 | 
						|
	if [ -L BSP ]; then
 | 
						|
		rm BSP
 | 
						|
	fi
 | 
						|
	if [ -d base ]; then
 | 
						|
		# make new symbolic
 | 
						|
		if [ $NVT_PRJCFG_CFG == "Linux" ]; then
 | 
						|
			ln -s base/linux-BSP BSP
 | 
						|
			ln -s ../u-boot BSP/u-boot
 | 
						|
			ln -s base/linux-code code
 | 
						|
			ln -s ../hdal code/hdal
 | 
						|
			ln -s ../vos code/vos
 | 
						|
		elif [ $NVT_PRJCFG_CFG == "rtos" ]; then
 | 
						|
			ln -s base/rtos-BSP BSP
 | 
						|
			ln -s ../u-boot BSP/u-boot
 | 
						|
			ln -s base/rtos-code code
 | 
						|
			ln -s ../hdal code/hdal
 | 
						|
			ln -s ../vos code/vos
 | 
						|
			if [ -L code/hdal/drivers/k_driver/include/plat ]; then
 | 
						|
				unlink code/hdal/drivers/k_driver/include/plat
 | 
						|
			fi
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
	if [ $NVT_PRJCFG_CFG == "rtos" ]; then
 | 
						|
		ln -s rtos_${SDK_CODENAME} code/hdal/drivers/k_driver/include/plat
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function setpaths()
 | 
						|
{
 | 
						|
	T=$(gettop)
 | 
						|
	if [ ! "$T" ]; then
 | 
						|
		echo "Couldn't locate the top of the tree.  Try setting TOP."
 | 
						|
		return
 | 
						|
	fi
 | 
						|
 | 
						|
	##################################################################
 | 
						|
	#                                                                #
 | 
						|
	#              Read me before you modify this code               #
 | 
						|
	#                                                                #
 | 
						|
	#   This function sets CROSS_TOOLCHAIN_PATH to what it is adding #
 | 
						|
	#   to PATH, and the next time it is run, it removes that from   #
 | 
						|
	#   PATH.  This is required so lunch can be run more than once   #
 | 
						|
	#   and still have working paths.                                #
 | 
						|
	#                                                                #
 | 
						|
	##################################################################
 | 
						|
 | 
						|
	# Note: on windows/cygwin, LINUX_BUILD_PATH will contain spaces
 | 
						|
	# due to "C:\Program Files" being in the path.
 | 
						|
 | 
						|
	# out with the old
 | 
						|
	if [ -n "$LINUX_BUILD_PATH" ] ; then
 | 
						|
		export PATH=${PATH/$LINUX_BUILD_PATH/}
 | 
						|
		# strip leading ':', if any
 | 
						|
		export PATH=${PATH#*:}
 | 
						|
	fi
 | 
						|
	if [ -n "$CROSS_TOOLCHAIN_PATH" ] ; then
 | 
						|
		export LD_LIBRARY_PATH=${LD_LIBRARY_PATH/$CROSS_TOOLCHAIN_PATH\/usr\/local\/lib}
 | 
						|
		# strip leading ':', if any
 | 
						|
		export LD_LIBRARY_PATH=${LD_LIBRARY_PATH#*:}
 | 
						|
	fi
 | 
						|
	if [ -n "$XM4TOOLS" ] ; then
 | 
						|
		export PATH=${PATH/$XM4TOOL/}
 | 
						|
		# strip leading ':', if any
 | 
						|
		export PATH=${PATH#*:}
 | 
						|
		export PATH=${PATH%:\.}
 | 
						|
	fi
 | 
						|
 | 
						|
	chk_for_the_same_codebase
 | 
						|
	ret=$?
 | 
						|
	# To config default setting if first get codebase.
 | 
						|
	if [ -z "$NVT_PRJCFG_MODEL_CFG" ] || [ $ret -ne 1 ]; then
 | 
						|
		export NVT_PRJCFG_CFG=${DEFAULT_NVT_ACTIVE_PROJ}
 | 
						|
		export NVT_PRJCFG_MODEL_CFG=${CONFIG_DIR}/${NVT_PRJCFG_CFG}/cfg_${DEFAULT_NVT_MODEL_CFG}/ModelConfig.mk
 | 
						|
	fi
 | 
						|
 | 
						|
	make -C ${CONFIG_DIR} clean > /dev/null 2>&1
 | 
						|
	make -C ${CONFIG_DIR} gen_dtb
 | 
						|
	make -C ${CONFIG_DIR} gen_modelcfg
 | 
						|
 | 
						|
	# envconfig.sh will handle this function to do the toolchain environment setup.
 | 
						|
	setpath_toolchain_config
 | 
						|
	export AS="${CROSS_COMPILE}as"
 | 
						|
	export CC="${CROSS_COMPILE}gcc"
 | 
						|
	export CXX="${CROSS_COMPILE}g++"
 | 
						|
	export LD=${CROSS_COMPILE}ld
 | 
						|
	export LDD="${CROSS_COMPILE}ldd"
 | 
						|
	export AR=${CROSS_COMPILE}ar
 | 
						|
	export NM=${CROSS_COMPILE}nm
 | 
						|
	export GDB=${CROSS_COMPILE}gdb
 | 
						|
	export STRIP=${CROSS_COMPILE}strip
 | 
						|
	export OBJCOPY=${CROSS_COMPILE}objcopy
 | 
						|
	export OBJDUMP=${CROSS_COMPILE}objdump
 | 
						|
	if [ -z "`echo $LD_LIBRARY_PATH | grep ${CROSS_TOOLCHAIN_PATH}/usr/local/lib`" ]; then
 | 
						|
		if [ ! -z "${LD_LIBRARY_PATH}" ]; then
 | 
						|
			export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CROSS_TOOLCHAIN_PATH}/usr/local/lib
 | 
						|
		else
 | 
						|
			export LD_LIBRARY_PATH=${CROSS_TOOLCHAIN_PATH}/usr/local/lib
 | 
						|
		fi
 | 
						|
		if [ $NVT_PRJCFG_CFG == "rtos" ]; then
 | 
						|
			if [ -z "`echo $LD_LIBRARY_PATH | grep ${UBOOT_CROSS_TOOLCHAIN_PATH}/usr/local/lib`" ]; then
 | 
						|
				export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${UBOOT_CROSS_TOOLCHAIN_PATH}/usr/local/lib
 | 
						|
			fi
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
 | 
						|
	gen_modelconfig
 | 
						|
 | 
						|
	if [ -d /opt/CEVA-ToolBox/V17/XM4/ ]; then
 | 
						|
			source /opt/CEVA-ToolBox/V17/XM4/CEVA-XM4_set.sh
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
# Clear this variable.  It will be built up again when the vendorsetup.sh
 | 
						|
# files are included at the end of this file.
 | 
						|
unset LUNCH_MENU_CHOICES
 | 
						|
function add_lunch_combo()
 | 
						|
{
 | 
						|
	local new_combo=$1
 | 
						|
	local c
 | 
						|
	for c in ${LUNCH_MENU_CHOICES[@]} ; do
 | 
						|
		if [ "$new_combo" = "$c" ] ; then
 | 
						|
			return
 | 
						|
		fi
 | 
						|
	done
 | 
						|
	LUNCH_MENU_CHOICES=(${LUNCH_MENU_CHOICES[@]} $new_combo)
 | 
						|
}
 | 
						|
 | 
						|
unset LUNCH_TOOLCHAIN_MENU_CHOICES
 | 
						|
function add_lunch_toolchain_combo()
 | 
						|
{
 | 
						|
	local new_combo=$1
 | 
						|
	local c
 | 
						|
	for c in ${LUNCH_TOOLCHAIN_MENU_CHOICES[@]} ; do
 | 
						|
		if [ "$new_combo" = "$c" ] ; then
 | 
						|
			return
 | 
						|
		fi
 | 
						|
	done
 | 
						|
	LUNCH_TOOLCHAIN_MENU_CHOICES=(${LUNCH_TOOLCHAIN_MENU_CHOICES[@]} $new_combo)
 | 
						|
}
 | 
						|
 | 
						|
unset LUNCH_PROJ_CONFIG_MENU_CHOICES
 | 
						|
function add_lunch_proj_config_combo()
 | 
						|
{
 | 
						|
	local new_combo=$1
 | 
						|
	local c
 | 
						|
	for c in ${LUNCH_PROJ_CONFIG_MENU_CHOICES[@]} ; do
 | 
						|
		if [ "$new_combo" = "$c" ] ; then
 | 
						|
			return
 | 
						|
		fi
 | 
						|
	done
 | 
						|
	LUNCH_PROJ_CONFIG_MENU_CHOICES=(${LUNCH_PROJ_CONFIG_MENU_CHOICES[@]} $new_combo)
 | 
						|
}
 | 
						|
 | 
						|
function add_modelconfig()
 | 
						|
{
 | 
						|
	unset LUNCH_MENU_CHOICES
 | 
						|
	local model_list=`cd ${CONFIG_DIR}/${NVT_PRJCFG_CFG}; ls -d */ | grep -v cfg_gen | grep -v include | cut -f1 -d'/'`
 | 
						|
	for n in ${model_list}
 | 
						|
	do
 | 
						|
		add_lunch_combo $n
 | 
						|
	done
 | 
						|
}
 | 
						|
 | 
						|
function print_lunch_prjcfg_menu()
 | 
						|
{
 | 
						|
	local uname=$(uname)
 | 
						|
	echo
 | 
						|
	echo "You're building on" $uname
 | 
						|
	echo
 | 
						|
	echo "Lunch menu... select your Project config:"
 | 
						|
 | 
						|
	local i=1
 | 
						|
	local choice
 | 
						|
	for choice in ${LUNCH_PROJ_CONFIG_MENU_CHOICES[@]}
 | 
						|
	do
 | 
						|
		echo "     $i. $choice"
 | 
						|
		i=$(($i+1))
 | 
						|
	done
 | 
						|
 | 
						|
	echo
 | 
						|
}
 | 
						|
 | 
						|
function print_lunch_menu()
 | 
						|
{
 | 
						|
	local uname=$(uname)
 | 
						|
	echo
 | 
						|
	echo "You're building on" $uname
 | 
						|
	echo
 | 
						|
	echo "Lunch menu... select your Model config:"
 | 
						|
 | 
						|
	local i=1
 | 
						|
	local choice
 | 
						|
	for choice in ${LUNCH_MENU_CHOICES[@]}
 | 
						|
	do
 | 
						|
		echo "     $i. $choice"
 | 
						|
		i=$(($i+1))
 | 
						|
	done
 | 
						|
 | 
						|
	echo
 | 
						|
}
 | 
						|
 | 
						|
function print_lunch_toolchain_menu()
 | 
						|
{
 | 
						|
	local uname=$(uname)
 | 
						|
	echo
 | 
						|
	echo
 | 
						|
	echo "Lunch menu... select your toolchain:"
 | 
						|
 | 
						|
	local i=1
 | 
						|
	local choice
 | 
						|
	for choice in ${LUNCH_TOOLCHAIN_MENU_CHOICES[@]}
 | 
						|
	do
 | 
						|
		echo "     $i. $choice"
 | 
						|
		i=$(($i+1))
 | 
						|
	done
 | 
						|
 | 
						|
	echo
 | 
						|
}
 | 
						|
 | 
						|
function check_is_clean()
 | 
						|
{
 | 
						|
	if [ -d $ROOTFS_DIR/bin ]; then
 | 
						|
		return 0;
 | 
						|
	elif [ -d $OUTPUT_DIR ]; then
 | 
						|
		return 0;
 | 
						|
	else
 | 
						|
		return 1;
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function check_path_is_right()
 | 
						|
{
 | 
						|
	if [ ! -z "$LINUX_BUILD_TOP" ]; then
 | 
						|
		cur_path=`pwd`;
 | 
						|
		cond=`echo $cur_path | grep $LINUX_BUILD_TOP`
 | 
						|
		if [ ! -z $cond ]; then
 | 
						|
			return 1;
 | 
						|
		else
 | 
						|
			return 0;
 | 
						|
		fi
 | 
						|
	else
 | 
						|
		return 0;
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
# Check if the toolchain menu is updated
 | 
						|
function check_toolchain_default_setting_is_right()
 | 
						|
{
 | 
						|
	local cur_conf=$1
 | 
						|
	local i=1
 | 
						|
	local choice
 | 
						|
	for choice in ${LUNCH_TOOLCHAIN_MENU_CHOICES[@]}
 | 
						|
	do
 | 
						|
		if [ "$choice" == "$cur_conf" ]; then
 | 
						|
			return 1;
 | 
						|
		fi
 | 
						|
		i=$(($i+1))
 | 
						|
	done
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
function lunch()
 | 
						|
{
 | 
						|
	# Add OS type menu
 | 
						|
	add_prjcfgconfig
 | 
						|
	local answer
 | 
						|
 | 
						|
	check_path_is_right
 | 
						|
	if [ $? -eq 0 ]; then
 | 
						|
		echo -e "\e[1;45mYour path is wrong!!\e[0m: SDK top path is $LINUX_BUILD_TOP\r\n"
 | 
						|
		return 0;
 | 
						|
	fi
 | 
						|
 | 
						|
	# Show error if your codebase is not clean
 | 
						|
	check_is_clean
 | 
						|
	if [ $? -eq 0 ]; then
 | 
						|
		echo -e "\e[1;45mChange model\e[0m: The menu can't be launched, please do clean build\e[1;45m(\$make clean)\e[0m first\r\n"
 | 
						|
		echo -e "\e[1;37mCurrent selection: \e[0m"
 | 
						|
		echo -e "\e[1;33m\t\tProject Config: $NVT_PRJCFG_CFG\e[0m"
 | 
						|
		echo -e "\e[1;33m\t\tModel Config: `echo ${NVT_PRJCFG_MODEL_CFG} | awk -F'/' '{print $(NF-1)}'`\e[0m"
 | 
						|
		echo -e "\e[1;33m\t\ttoolchain: ${NVT_CROSS}\e[0m"
 | 
						|
		return 0;
 | 
						|
	fi
 | 
						|
 | 
						|
	# To load previous setting or default setting
 | 
						|
	# Include previous default setting
 | 
						|
	if [ -f ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME} ]; then
 | 
						|
		echo "Loading default..."
 | 
						|
		source ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
		NVT_DEFAULT_NVT_MODEL=`echo ${NVT_PRJCFG_MODEL_CFG} | awk -F'/' '{print $(NF-1)}'`
 | 
						|
		NVT_DEFAULT_NVT_CROSS=${NVT_CROSS}
 | 
						|
		NVT_DEFAULT_PRJCFG_CFG=${NVT_PRJCFG_CFG}
 | 
						|
	else
 | 
						|
		NVT_DEFAULT_PRJCFG_CFG=${DEFAULT_NVT_ACTIVE_PROJ}
 | 
						|
		NVT_DEFAULT_NVT_MODEL=${DEFAULT_NVT_MODEL_CFG}
 | 
						|
		NVT_DEFAULT_NVT_CROSS=${DEFAULT_NVT_CROSS}
 | 
						|
	fi
 | 
						|
 | 
						|
	check_toolchain_default_setting_is_right ${NVT_DEFAULT_NVT_CROSS}
 | 
						|
	if [ $? -eq 0 ]; then
 | 
						|
		NVT_DEFAULT_NVT_CROSS=${DEFAULT_NVT_CROSS}
 | 
						|
	fi
 | 
						|
 | 
						|
	# To select "OS" type: Pure Linux, rtos...etc
 | 
						|
	if [ "$1" ] ; then
 | 
						|
		num=1
 | 
						|
		answer="NONE"
 | 
						|
		for n in ${LUNCH_PROJ_CONFIG_MENU_CHOICES[@]}
 | 
						|
		do
 | 
						|
			if [ "$1" == "$n" ]; then
 | 
						|
				answer=$num
 | 
						|
				break
 | 
						|
			fi
 | 
						|
			num=$((num + 1))
 | 
						|
		done
 | 
						|
	else
 | 
						|
		print_lunch_prjcfg_menu
 | 
						|
		echo -n "Which would you like? [${NVT_DEFAULT_PRJCFG_CFG}] "
 | 
						|
		read answer
 | 
						|
	fi
 | 
						|
 | 
						|
	local selection=
 | 
						|
	if [ -z "$answer" ]
 | 
						|
	then
 | 
						|
		selection=${NVT_DEFAULT_PRJCFG_CFG}
 | 
						|
	elif (echo -n $answer | grep -q -e "^[0-9][0-9]*$")
 | 
						|
	then
 | 
						|
		if [ $answer -le ${#LUNCH_PROJ_CONFIG_MENU_CHOICES[@]} ]
 | 
						|
		then
 | 
						|
			selection=${LUNCH_PROJ_CONFIG_MENU_CHOICES[$(($answer-1))]}
 | 
						|
			export NVT_PRJCFG_CFG=${selection}
 | 
						|
		fi
 | 
						|
	elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$")
 | 
						|
	then
 | 
						|
		selection=$answer
 | 
						|
	fi
 | 
						|
 | 
						|
	if [ -z "$selection" ]
 | 
						|
	then
 | 
						|
		echo
 | 
						|
		echo "Invalid lunch project config combo: $answer"
 | 
						|
		return 1
 | 
						|
	fi
 | 
						|
 | 
						|
	# Model config selection: the models will have different OS combination
 | 
						|
	# Linux: Model_1, Model_2
 | 
						|
	# RTOS: Model_3, Model_4
 | 
						|
	add_modelconfig
 | 
						|
	if [ "$2" ] ; then
 | 
						|
		num=1
 | 
						|
		answer="NONE"
 | 
						|
		for n in ${LUNCH_MENU_CHOICES[@]}
 | 
						|
		do
 | 
						|
			if [ "$2" == "$n" ]; then
 | 
						|
				answer=$num
 | 
						|
				break
 | 
						|
			fi
 | 
						|
			num=$((num + 1))
 | 
						|
		done
 | 
						|
	else
 | 
						|
		print_lunch_menu
 | 
						|
		echo -n "Which would you like? [${NVT_DEFAULT_NVT_MODEL}] "
 | 
						|
		read answer
 | 
						|
	fi
 | 
						|
 | 
						|
	local selection=
 | 
						|
 | 
						|
	if [ -z "$answer" ]
 | 
						|
	then
 | 
						|
		selection=${NVT_DEFAULT_NVT_MODEL}
 | 
						|
	elif (echo -n $answer | grep -q -e "^[0-9][0-9]*$")
 | 
						|
	then
 | 
						|
		if [ $answer -le ${#LUNCH_MENU_CHOICES[@]} ]
 | 
						|
		then
 | 
						|
			selection=${LUNCH_MENU_CHOICES[$(($answer-1))]}
 | 
						|
		fi
 | 
						|
	elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$")
 | 
						|
	then
 | 
						|
		selection=$answer
 | 
						|
	fi
 | 
						|
 | 
						|
	if [ -z "$selection" ]
 | 
						|
	then
 | 
						|
		echo
 | 
						|
		echo "Invalid lunch model config combo: $answer"
 | 
						|
		return 1
 | 
						|
	fi
 | 
						|
 | 
						|
	export NVT_PRJCFG_MODEL_CFG=${CONFIG_DIR}/${NVT_PRJCFG_CFG}/${selection}/ModelConfig.mk
 | 
						|
 | 
						|
	add_lunch_toolchain_menu
 | 
						|
	if [ "$3" ] ; then
 | 
						|
		num=1
 | 
						|
		answer="NONE"
 | 
						|
 | 
						|
		for n in ${LUNCH_TOOLCHAIN_MENU_CHOICES[@]}
 | 
						|
		do
 | 
						|
			if [ "$3" == "$n" ]; then
 | 
						|
				answer=$num
 | 
						|
				break
 | 
						|
			fi
 | 
						|
			num=$((num + 1))
 | 
						|
		done
 | 
						|
	else
 | 
						|
		print_lunch_toolchain_menu
 | 
						|
		echo -n "Which toolchain would you like? [${NVT_DEFAULT_NVT_CROSS}] "
 | 
						|
		read answer
 | 
						|
	fi
 | 
						|
 | 
						|
	local selection=
 | 
						|
 | 
						|
	if [ -z "$answer" ]
 | 
						|
	then
 | 
						|
		selection=${NVT_DEFAULT_NVT_CROSS}
 | 
						|
	elif (echo -n $answer | grep -q -e "^[0-9][0-9]*$")
 | 
						|
	then
 | 
						|
		if [ $answer -le ${#LUNCH_TOOLCHAIN_MENU_CHOICES[@]} ]
 | 
						|
		then
 | 
						|
			selection=${LUNCH_TOOLCHAIN_MENU_CHOICES[$(($answer-1))]}
 | 
						|
		fi
 | 
						|
	elif (echo -n $answer | grep -q -e "^[^\-][^\-]*-[^\-][^\-]*$")
 | 
						|
	then
 | 
						|
		selection=$answer
 | 
						|
	fi
 | 
						|
 | 
						|
	if [ -z "$selection" ]
 | 
						|
	then
 | 
						|
		echo
 | 
						|
		echo "Invalid lunch toolchain combo: $answer"
 | 
						|
		return 1
 | 
						|
	fi
 | 
						|
 | 
						|
	export NVT_CROSS=${selection}
 | 
						|
	echo -e "\e[1;33mToolchain: ${NVT_CROSS}\e[0m"
 | 
						|
	echo -e "\e[1;33mProject: ${NVT_PRJCFG_CFG}\e[0m"
 | 
						|
	echo -e "\e[1;33mModel: ${NVT_PRJCFG_MODEL_CFG}\e[0m"
 | 
						|
	set_stuff_for_environment
 | 
						|
}
 | 
						|
 | 
						|
# Tab completion for lunch.
 | 
						|
function _lunch()
 | 
						|
{
 | 
						|
	local cur prev opts
 | 
						|
	COMPREPLY=()
 | 
						|
	cur="${COMP_WORDS[COMP_CWORD]}"
 | 
						|
	prev="${COMP_WORDS[COMP_CWORD-1]}"
 | 
						|
 | 
						|
	COMPREPLY=( $(compgen -W "${LUNCH_MENU_CHOICES[*]}" -- ${cur}) )
 | 
						|
	return 0
 | 
						|
}
 | 
						|
complete -F _lunch lunch
 | 
						|
 | 
						|
function addcompletions()
 | 
						|
{
 | 
						|
	local T dir f
 | 
						|
 | 
						|
	# Keep us from trying to run in something that isn't bash.
 | 
						|
	if [ -z "${BASH_VERSION}" ]; then
 | 
						|
		return
 | 
						|
	fi
 | 
						|
 | 
						|
	# Keep us from trying to run in bash that's too old.
 | 
						|
	if [ ${BASH_VERSINFO[0]} -lt 3 ]; then
 | 
						|
		return
 | 
						|
	fi
 | 
						|
 | 
						|
	dir="sdk/bash_completion"
 | 
						|
	if [ -d ${dir} ]; then
 | 
						|
		for f in `/bin/ls ${dir}/[a-z]*.bash 2> /dev/null`; do
 | 
						|
			echo "including $f"
 | 
						|
			. $f
 | 
						|
		done
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function croot()
 | 
						|
{
 | 
						|
	T=$(gettop)
 | 
						|
	if [ "$T" ]; then
 | 
						|
		\cd $(gettop)
 | 
						|
	else
 | 
						|
		echo "Couldn't locate the top of the tree.  Try setting TOP."
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function m()
 | 
						|
{
 | 
						|
	local T=$(gettop)
 | 
						|
	if [ "$T" ]; then
 | 
						|
		cd $(gettop);make;cd -
 | 
						|
	else
 | 
						|
		echo "Couldn't locate the top of the tree.  Try setting TOP."
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function mr()
 | 
						|
{
 | 
						|
	local T=$(gettop)
 | 
						|
	if [ "$T" ]; then
 | 
						|
		cd $(gettop);make rootfs;cd -
 | 
						|
	else
 | 
						|
		echo "Couldn't locate the top of the tree.  Try setting TOP."
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
function cso()
 | 
						|
{
 | 
						|
	file=$(gettop)/build/copyso.sh
 | 
						|
	sh $file
 | 
						|
}
 | 
						|
 | 
						|
if [ "x$SHELL" != "x/bin/bash" ]; then
 | 
						|
	case `ps -o command -p $$` in
 | 
						|
		*bash*)
 | 
						|
			;;
 | 
						|
		*)
 | 
						|
			echo "WARNING: Only bash is supported, use of other shell would lead to erroneous results"
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
fi
 | 
						|
 | 
						|
if [ -f ${PWD}/build/envsetup.sh ]; then
 | 
						|
	# include global options
 | 
						|
	source build/envoption.sh
 | 
						|
	source build/envconfig.sh
 | 
						|
	# Include previous default setting
 | 
						|
	if [ -f ${PWD}/build/${DEFAULT_NVTCONFIG_FILE_NAME} ]; then
 | 
						|
		# export necessary dirs for load .nvt_default
 | 
						|
		export LINUX_BUILD_TOP=$PWD
 | 
						|
		export BUILD_DIR=${LINUX_BUILD_TOP}/build
 | 
						|
		export CONFIG_DIR=${LINUX_BUILD_TOP}/configs
 | 
						|
		source ${BUILD_DIR}/${DEFAULT_NVTCONFIG_FILE_NAME}
 | 
						|
	fi
 | 
						|
	set_stuff_for_environment
 | 
						|
	echo "Env setup configured"
 | 
						|
else
 | 
						|
	echo "Can't support execute env setup on ${PWD}"
 | 
						|
fi
 |