77 lines
2.7 KiB
Bash
Executable File
77 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 "${RISCV_TOOLCHAIN:-}" ]]; then
|
|
_gps_candidates=("$RISCV_TOOLCHAIN" "$RISCV_TOOLCHAIN/bin")
|
|
elif [[ -n "${TOOLCHAIN:-}" ]]; then
|
|
_gps_candidates=("$TOOLCHAIN")
|
|
else
|
|
_gps_candidates=(
|
|
"$GPS_ROOT/tools/local/riscv/bin"
|
|
/tools/toolchains-medany/bin
|
|
/tools/toolchains/rvtc-medany/bin
|
|
/tools/toolchain/bin
|
|
/tools/toolchains/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
|