function echo_stdout()
{
echo -e "[setup.sh] $@"
}
function print_menu()
{
echo_stdout
echo_stdout "Build selection menu... choose from the following:"
echo_stdout
echo_stdout "1. Build for host platform"
echo_stdout "2. Arm device build using OpenCORE (Android) cross-compiler"
echo_stdout "3. Build using default linux-arm cross-compiler"
echo_stdout "4. Arm device build using OpenCORE (Android) cross-compiler inside AccuRev workspace"
echo_stdout
}
function clean_env()
{
echo_stdout "=================================="
echo_stdout "Cleaning ARCHITECTURE"
unset ARCHITECTURE
echo_stdout "Cleaning ANDROID_BASE"
unset ANDROID_BASE
echo_stdout "Setting PATH back to the original"
export PATH=$BASE_PATH
echo_stdout "=================================="
}
function menu()
{
if [ "$1" ] ; then
CHOICE=$1
else
print_menu
read -p "[setup.sh] Which selection would you like? " CHOICE
fi
case $CHOICE in
1)
echo_stdout "Choice is to build for the host platform."
clean_env
;;
2)
echo_stdout "Choice is to build for target with OpenCORE (Android) cross-compiler"
## clean the environment
clean_env
## set path up for linux OpenCore build
android_gcc_arm_path=/opt/environments/android/toolchain-eabi-4.2.1/bin
export ARCHITECTURE=android
echo_stdout "ARCHITECTURE set to ==> $ARCHITECTURE"
export PATH=$android_gcc_arm_path:$BASE_PATH
export ANDROID_BASE=/opt/environments/android
echo_stdout "ANDROID_BASE set to ==> $ANDROID_BASE"
;;
3)
echo_stdout "Choice is to build for target with the default linux-arm cross-compiler"
# clean the environment
clean_env
# set path up for linux-arm compiler
linux_arm_path=/opt/environments/linux_arm/data/omapts/linux/arm-tc/gcc-3.4.0-1/bin
export ARCHITECTURE=linux_arm
export PATH=$linux_arm_path:$BASE_PATH
;;
4)
echo_stdout "Choice is to build for target with workspace's OpenCORE (Android) cross-compiler"
## clean the environment
clean_env
## set path up for linux OpenCore build
android_gcc_arm_path=$BASE_DIR/toolchains/android/toolchain-eabi-4.2.1/bin
export ARCHITECTURE=android
echo_stdout "ARCHITECTURE set to ==> $ARCHITECTURE"
export PATH=$android_gcc_arm_path:$BASE_PATH
export ANDROID_BASE=$BASE_DIR/toolchains/android
echo_stdout "ANDROID_BASE set to ==> $ANDROID_BASE"
;;
*)
echo_stdout "Invalid selection. Please enter your selection again."
print_menu
return
;;
esac
}
function mkcmdcmpl()
{
printf "\nGetting make cmdline completion values...\n"
export PV_MAKE_COMPLETION_TARGETS=`make -j completion_targets`
printf "Done getting make cmdline completion values.\n\n"
}
echo_stdout "started."
echo_stdout "setting up build environment with default configuration"
export PROJECT_DIR=$PWD
if [[ $# -ge 1 ]]; then
export BASE_DIR=${1%/}
fi
if [[ -z $BASE_DIR ]]; then
echo_stdout "ERROR: BASE_DIR is not set!"
fi
echo_stdout "BASE_DIR ==> $BASE_DIR"
export SRC_ROOT=$BASE_DIR
echo_stdout "SRC_ROOT ==> $SRC_ROOT"
export BUILD_ROOT=$PROJECT_DIR/build
echo_stdout "BUILD_ROOT ==> $BUILD_ROOT"
export CFG_DIR=$PWD
echo_stdout "CFG_DIR ==> $CFG_DIR"
export MK=$BASE_DIR/tools_v2/build/make
echo_stdout "MK ==> $MK"
extern_tools_path=$BASE_DIR/extern_tools_v2/bin/linux
export PATH=$extern_tools_path:$PATH
export BASE_PATH=$PATH
_pv_make_completion()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="${PV_MAKE_COMPLETION_TARGETS}"
case "${prev}" in
-f)
COMPREPLY=( $(compgen -f ${cur}) )
return 0
;;
*)
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
;;
esac
}
complete -F _pv_make_completion make
###
echo_stdout
echo_stdout "environment is ready if no errors reported."
echo_stdout "complete."