Files
gps/source.sh
T

76 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Source this file from any directory:
# source /path/to/gps/source.sh
# Optional override:
# RISCV_TOOLCHAIN=/tools/toolchain source /path/to/gps/source.sh
_gps_source="${BASH_SOURCE[0]}"
GPS_ROOT="$(cd "$(dirname "$_gps_source")" && pwd -P)"
export GPS_ROOT
export SOC_TOOLS_ROOT="${SOC_TOOLS_ROOT:-/tools/soc-tools}"
_gps_default_java="$SOC_TOOLS_ROOT/jdk17"
_gps_default_mill="$SOC_TOOLS_ROOT/mill-current"
_gps_default_firtool="$SOC_TOOLS_ROOT/circt-current/bin/firtool"
[[ -x "$_gps_default_java/bin/java" ]] || _gps_default_java="$GPS_ROOT/tools/local/jdk17"
[[ -x "$_gps_default_mill" ]] || _gps_default_mill="$GPS_ROOT/tools/local/mill"
[[ -x "$_gps_default_firtool" ]] || _gps_default_firtool="$GPS_ROOT/tools/local/circt/bin/firtool"
export JAVA_HOME="${JAVA_HOME:-$_gps_default_java}"
export MILL="${MILL:-$_gps_default_mill}"
export FIRTOOL="${FIRTOOL:-$_gps_default_firtool}"
_gps_z3_dir=""
for _gps_dir in "$SOC_TOOLS_ROOT/z3-current/bin" "$GPS_ROOT"/tools/local/z3/*/bin; do
if [[ -f "$_gps_dir/libz3.so" ]]; then
_gps_z3_dir="$_gps_dir"
break
fi
done
export Z3_LIB_DIR="${Z3_LIB_DIR:-$_gps_z3_dir}"
_gps_riscv_gcc=""
if [[ -n "${TOOLCHAIN:-}" ]]; then
_gps_candidates=("$TOOLCHAIN")
elif [[ -n "${RISCV_TOOLCHAIN:-}" ]]; then
_gps_candidates=("$RISCV_TOOLCHAIN" "$RISCV_TOOLCHAIN/bin")
else
_gps_candidates=(
"$GPS_ROOT/tools/local/riscv/bin"
/tools/toolchain/bin
/tools/toolchains/bin
/tools/toolchains/rvtc-medany/bin
)
fi
for _gps_dir in "${_gps_candidates[@]}"; do
for _gps_name in riscv64-unknown-elf-gcc riscv64-none-elf-gcc; do
if [[ -x "$_gps_dir/$_gps_name" ]]; then
_gps_riscv_gcc="$_gps_dir/$_gps_name"
break 2
fi
done
done
if [[ -z "$_gps_riscv_gcc" ]]; then
_gps_riscv_gcc="$(command -v riscv64-unknown-elf-gcc 2>/dev/null || command -v riscv64-none-elf-gcc 2>/dev/null || true)"
fi
if [[ -n "$_gps_riscv_gcc" ]]; then
export TOOLCHAIN="$(dirname "$_gps_riscv_gcc")"
_gps_gcc_name="$(basename "$_gps_riscv_gcc")"
export RISCV_PREFIX="${RISCV_PREFIX:-${_gps_gcc_name%gcc}}"
else
export TOOLCHAIN="${TOOLCHAIN:-}"
export RISCV_PREFIX="${RISCV_PREFIX:-riscv64-unknown-elf-}"
fi
_gps_path="$JAVA_HOME/bin:$(dirname "$FIRTOOL")"
[[ -n "$TOOLCHAIN" ]] && _gps_path="$_gps_path:$TOOLCHAIN"
export PATH="$_gps_path:$PATH"
_gps_ld_path="$(dirname "$(dirname "$FIRTOOL")")/lib"
[[ -n "$Z3_LIB_DIR" ]] && _gps_ld_path="$Z3_LIB_DIR:$_gps_ld_path"
export LD_LIBRARY_PATH="$_gps_ld_path${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
unset _gps_source _gps_default_java _gps_default_mill _gps_default_firtool _gps_z3_dir _gps_riscv_gcc _gps_gcc_name _gps_path _gps_ld_path _gps_dir _gps_name _gps_candidates