59 lines
1.8 KiB
Bash
Executable File
59 lines
1.8 KiB
Bash
Executable File
#!/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 <stdlib.h>' \
|
|
'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"
|