===== 框架模板 =====
#!/bin/bash
function script_function()
{
# 现场环境 ----------------------------------------------------------------------------------------------------
local SCRIPT_NAME=${BASH_SOURCE[0]##*/}
local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}}; fi; pwd)
local WORKIN_PATH=$(pwd)
# 调试信息 ----------------------------------------------------------------------------------------------------
[[ " $* " =~ " --quiet " ]] && local run_quiet=1
function run() { if [ "${run_quiet}" == "1" ] ; then "$@" 1>/dev/null; else "$@"; fi; }
run echo -e "\033[1;30mOptions: ${SCRIPT_NAME} --quiet Quiet mode compilation\033[0m"; run sleep 0.8
# ----------------------------------------------------------------------------------------------------
function STEP_TRACE_INIT() { step_break_name=$1;step_break_num=0;step_break_color=3;[ "$2" != "" ] && step_break_color=$2;}
function STEP_TRACE_INFO() { step_break_num=$[${step_break_num}+1]; echo -e "\033[1;3${step_break_color}m[${step_break_name}] ${step_break_num} ($1) --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------\033[0m"; }
# 编译标签 ----------------------------------------------------------------------------------------------------
[ "$GCC_TARGET_TAG" == "" ] && local GCC_TARGET_TAG=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')-$(${CC} -v 2>&1 | grep "gcc version" | cut -d " " -f 3)
[ "$GCC_TARGET" == "" ] && local GCC_TARGET=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')
[[ "${GCC_TARGET_TAG}" != *-*-*.* ]] && echo -e "\033[1;31mERROR:\033[0m GCC_TARGET_TAG=${GCC_TARGET_TAG} (CC=$CC; CXX=$CXX). Wait 10 seconds to exit." && sleep 10 && read && return
run echo "GCC_TARGET_TAG=${GCC_TARGET_TAG}"
run echo "GCC_TARGET =${GCC_TARGET}"
# 工程路径和编译参数 ----------------------------------------------------------------------------------------------------
local CPU_CNT=$[$(nproc --all)-2]
local WORKSPACE=${WORKIN_PATH}/workspace
{
local BINUTILS_SOURCE_PATH=${SCRIPT_PATH}/source/binutils-2.30
local BINUTILS_BUILD_PATH=${WORKSPACE}/build/binutils_${GCC_TARGET_TAG}
local BINUTILS_INSTALL_PATH=${WORKSPACE}/package/binutils_${GCC_TARGET_TAG}
}
function binutils_org_build()
{
mkdir -p ${BINUTILS_BUILD_PATH}/current
cd ${BINUTILS_BUILD_PATH}/current
{
sleep 1
}
}
binutils_org_build $*
}
script_function $*
===== 常用脚本 =====
==== 进入脚本文件 ====
#!/bin/bash
function script_function()
{
# ----------------------------------------------------------------------------------------------------
local SCRIPT_NAME=${BASH_SOURCE[0]##*/}
local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}}; fi; pwd)
local WORKIN_PATH=$(pwd)
}
script_function $*
==== 安静模式运行 ====
# ----------------------------------------------------------------------------------------------------
[[ " $* " =~ " --quiet " ]] && local run_quiet=1
function run() { if [ "${run_quiet}" == "1" ] ; then $* 1>/dev/null; else $*; fi; }
==== GCC_TARGET_TAG ====
aarch64-linux-8.3.0 \\
aarch64-qnx7.0.0-5.4.0 \\
aarch64-qnx7.1.0-8.3.0 \\
# ----------------------------------------------------------------------------------------------------
[ "$CC" == "" ] && echo -e "\033[1;31mThe variable CC is not defined.\033[0m" && return
[ "$GCC_TARGET_TAG" == "" ] && local GCC_TARGET_TAG=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')-$(${CC} -v 2>&1 | grep "gcc version" | cut -d " " -f 3)
[ "$GCC_TARGET" == "" ] && local GCC_TARGET=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')
echo "GCC_TARGET_TAG=${GCC_TARGET_TAG}"
echo "GCC_TARGET =${GCC_TARGET}"
==== STEP_TRACE ====
# ----------------------------------------------------------------------------------------------------
function STEP_TRACE_INIT() { step_break_name=$1;step_break_num=0;step_break_color=3;[ "$2" != "" ] && step_break_color=$2;}
function STEP_TRACE_INFO() { step_break_num=$[${step_break_num}+1]; echo -e "\033[1;3${step_break_color}m[${step_break_name}] ${step_break_num} ($1) --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------\033[0m"; }
STEP_TRACE_INIT binutils
STEP_TRACE_INFO
STEP_TRACE_INFO
STEP_TRACE_INIT binutils 5
STEP_TRACE_INFO
STEP_TRACE_INFO