#!/usr/bin/env bash set -u repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" # shellcheck source=../source.sh source "$repo_dir/source.sh" status=0 check() { local label="$1" local command_path="$2" shift 2 if [[ -n "$command_path" && -x "$command_path" ]] && "$command_path" "$@" >/dev/null 2>&1; then printf 'OK %-10s %s\n' "$label" "$command_path" else printf 'MISSING %-10s %s\n' "$label" "${command_path:-not found}" status=1 fi } printf 'Project: %s\n' "$GPS_ROOT" printf 'Platform: %s-%s\n' "$(uname -s)" "$(uname -m)" check java "$JAVA_HOME/bin/java" -version check mill "$MILL" --version check firtool "$FIRTOOL" --version riscv_gcc="" if [[ -n "$TOOLCHAIN" ]]; then riscv_gcc="$TOOLCHAIN/${RISCV_PREFIX}gcc" fi check riscv-gcc "$riscv_gcc" --version if [[ -n "$riscv_gcc" && -x "$riscv_gcc" ]]; then medany_dir="$(mktemp -d "${TMPDIR:-/tmp}/gps-medany-check.XXXXXXXX")" printf '%s\n' \ '#include ' \ 'void _start(void) { void *p = malloc(16); free(p); for (;;) {} }' \ > "$medany_dir/check.c" if "$riscv_gcc" \ -march=rv64imafdc_zicsr_zifencei -mabi=lp64d -mcmodel=medany \ -Os -ffreestanding -fno-builtin -static -nostartfiles \ -Wl,-Ttext=0x80000000 -Wl,--unresolved-symbols=ignore-all \ "$medany_dir/check.c" -Wl,--start-group -lc -lgcc -Wl,--end-group \ -o "$medany_dir/check.elf" >/dev/null 2>&1; then printf 'OK %-10s %s\n' riscv-libc 'medany @ 0x80000000' else printf 'INCOMPAT %-10s %s\n' riscv-libc \ 'libc is not medany; select RISCV_TOOLCHAIN=/tools/toolchains/rvtc-medany' status=1 fi rm -rf "$medany_dir" fi if [[ "$(uname -s)" != Linux || "$(uname -m)" != x86_64 ]]; then printf 'WARNING Kilitli JDK/CIRCT paketleri Linux-x86_64 icindir.\n' fi exit "$status"