#!/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/toolchains-medany/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