| # Make stderr and stdout line buffered. |
| # stdbuf -i0 -oL -eL |
| |
| # Close STDERR FD |
| exec 2<&- |
| # Redirect STDERR to STDOUT |
| exec 2>&1 |
| |
| # Some colors, use it like following; |
| # echo -e "Hello ${YELLOW}yellow${NC}" |
| GRAY='\033[0;90m' |
| RED='\033[0;31m' |
| GREEN='\033[0;32m' |
| YELLOW='\033[0;33m' |
| PURPLE='\033[0;35m' |
| NC='\033[0m' # No Color |
| |
| if ! declare -F action_nanoseconds &>/dev/null; then |
| function action_nanoseconds() { |
| return 0; |
| } |
| fi |
| export -f action_nanoseconds |
| |
| if ! declare -F action_fold &>/dev/null; then |
| function action_fold() { |
| if [ "$1" = "start" ]; then |
| echo "::group::$2" |
| SECONDS=0 |
| else |
| duration=$SECONDS |
| echo "::endgroup::" |
| printf "${GRAY}took $(($duration / 60)) min $(($duration % 60)) sec.${NC}\n" |
| fi |
| return 0; |
| } |
| fi |
| export -f action_fold |
| |
| if [ -z "$DATESTR" ]; then |
| if [ -z "$DATESHORT" ]; then |
| export DATESTR=$(date -u +%Y%m%d%H%M%S) |
| echo "Setting long date string of $DATESTR" |
| else |
| export DATESTR=$(date -u +%y%m%d%H%M) |
| echo "Setting short date string of $DATESTR" |
| fi |
| fi |
| |
| make_target () { |
| target=$1 |
| max_fail_tests=${3:-1} |
| |
| if [ ! -v MAX_CORES ]; then |
| export MAX_CORES=$(nproc) |
| echo "Setting MAX_CORES to $MAX_CORES" |
| fi; |
| |
| export VPR_NUM_WORKERS=${MAX_CORES} |
| |
| start_section "[F4PGA] $target" "$2" |
| ninja_status=0 |
| ninja -k$max_fail_tests -j${MAX_CORES} $target || ninja_status=$? |
| end_section "[F4PGA] $target" |
| |
| # When the build fails, produce the failure output in a clear way |
| if [ ${MAX_CORES} -ne 1 -a $ninja_status -ne 0 ]; then |
| start_section "[F4PGA] failure" "${RED}Build failure output..${NC}" |
| ninja -j1 $target |
| end_section "[F4PGA] failure" |
| exit 1 |
| else |
| return $ninja_status |
| fi |
| } |
| |
| run_section () { |
| start_section $1 "$2 ($3)" |
| $3 |
| end_section $1 |
| } |
| |
| start_section () { |
| action_fold start "$1" |
| echo -e "${PURPLE}F4PGA Architecture Definitions${NC}: - $2${NC}" |
| echo -e "${GRAY}-------------------------------------------------------------------${NC}" |
| } |
| |
| end_section () { |
| echo -e "${GRAY}-------------------------------------------------------------------${NC}" |
| action_fold end "$1" |
| } |
| |
| enable_vivado () { |
| echo |
| echo "=======================================" |
| echo "Creating Vivado Symbolic Link" |
| echo "---------------------------------------" |
| ln -s /mnt/aux/Xilinx /opt/Xilinx |
| ls /opt/Xilinx/Vivado |
| export XRAY_VIVADO_SETTINGS="/opt/Xilinx/Vivado/$1/settings64.sh" |
| source /opt/Xilinx/Vivado/$1/settings64.sh |
| vivado -version |
| } |
| |
| heading () { |
| echo |
| echo "========================================" |
| echo "$@" |
| echo "----------------------------------------" |
| } |