Initial project import

This commit is contained in:
Agila Forge Importer committed 2026-07-13 15:20:32 +00:00
commit 23f2d29e32
11957 files changed
+1754577

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
#!/bin/sh
# tools/fv/fv - Flying V build wrapper.
# The public Agila source now uses the .fv extension, but the underlying V
# compiler only accepts .v files. This wrapper stages temporary .v copies of
# every .fv file in the project, invokes tools/v/v, and then removes the copies.
set -eu
ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)
V_CMD="./tools/v/v"
stage_all_fv() {
# Copy every .fv source to a sibling .v, except inside the V compiler tree.
find "$ROOT" -name '*.fv' -not -path '*/tools/v/*' -print0 \
| while IFS= read -r -d '' fv; do
cp "$fv" "${fv%.fv}.v"
done
}
cleanup() {
# Remove any temporary .v files we created, but never touch the V compiler.
find "$ROOT" -name '*.v' -not -path '*/tools/v/*' -delete
}
trap cleanup EXIT INT TERM
stage_all_fv
# Rewrite arguments from .fv to .v and make them relative to ROOT so the V
# compiler does not have to deal with the space in the parent directory name.
new_args=""
for arg in "$@"; do
rel="$arg"
case "$arg" in
"$ROOT"/*) rel="${arg#$ROOT/}" ;;
"$ROOT") rel="." ;;
esac
case "$rel" in
*.fv) new_args="$new_args ${rel%.fv}.v" ;;
*) new_args="$new_args $rel" ;;
esac
done
cd "$ROOT"
"$V_CMD" $new_args