2025-08-29 10:22:44 +09:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
2025-09-08 01:08:59 +09:00
|
|
|
ROOT_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
|
|
|
|
cd "$ROOT_DIR"
|
2025-08-29 10:22:44 +09:00
|
|
|
|
2025-11-06 15:41:52 +09:00
|
|
|
APP=${1:-apps/tests/mir-branch-ret/main.hako}
|
2025-09-20 09:11:52 +09:00
|
|
|
OUT=${2:-tmp/app_aot}
|
2025-09-08 01:08:59 +09:00
|
|
|
OBJ_DIR=${OBJ_DIR:-target/aot_objects}
|
2025-11-06 15:41:52 +09:00
|
|
|
OBJ_BASENAME=$(basename "$APP" .hako)
|
2025-09-08 01:08:59 +09:00
|
|
|
OBJ_PATH="$OBJ_DIR/$OBJ_BASENAME.o"
|
2025-08-29 10:22:44 +09:00
|
|
|
|
2025-12-10 00:01:53 +09:00
|
|
|
echo "[1/5] build hakorune (cranelift-jit)"
|
2025-09-08 01:08:59 +09:00
|
|
|
cargo build --release --features cranelift-jit
|
2025-08-29 10:22:44 +09:00
|
|
|
|
2025-09-08 01:08:59 +09:00
|
|
|
echo "[2/5] build nyrt (static lib)"
|
|
|
|
|
cargo build -p nyrt --release
|
2025-08-29 10:22:44 +09:00
|
|
|
|
2025-09-08 01:08:59 +09:00
|
|
|
echo "[3/5] emit object (.o) via jit-direct"
|
|
|
|
|
mkdir -p "$OBJ_DIR"
|
2025-12-10 00:01:53 +09:00
|
|
|
BIN=${NYASH_BIN:-./target/release/hakorune}
|
|
|
|
|
env -u NYASH_OPT_DIAG_FORBID_LEGACY NYASH_SKIP_TOML_ENV=1 NYASH_PLUGIN_ONLY=1 NYASH_AOT_OBJECT_OUT="$OBJ_DIR" "$BIN" --jit-direct "$APP"
|
2025-08-29 10:22:44 +09:00
|
|
|
|
2025-09-08 01:08:59 +09:00
|
|
|
if [[ ! -f "$OBJ_PATH" ]]; then
|
|
|
|
|
echo "❌ object not found: $OBJ_PATH" >&2
|
|
|
|
|
echo "Contents of $OBJ_DIR:" >&2
|
|
|
|
|
ls -la "$OBJ_DIR" >&2 || true
|
2025-08-29 23:11:21 +09:00
|
|
|
exit 1
|
|
|
|
|
fi
|
2025-09-08 01:08:59 +09:00
|
|
|
ls -l "$OBJ_PATH"
|
2025-08-29 10:22:44 +09:00
|
|
|
|
2025-09-20 09:11:52 +09:00
|
|
|
# Ensure output directory exists
|
|
|
|
|
mkdir -p "$(dirname "$OUT")"
|
2025-09-08 01:08:59 +09:00
|
|
|
echo "[4/5] link with nyrt -> $OUT"
|
|
|
|
|
cc "$OBJ_PATH" \
|
2025-08-29 10:22:44 +09:00
|
|
|
-L crates/nyrt/target/release \
|
|
|
|
|
-Wl,--whole-archive -lnyrt -Wl,--no-whole-archive \
|
|
|
|
|
-lpthread -ldl -lm -o "$OUT"
|
|
|
|
|
|
2025-09-08 01:08:59 +09:00
|
|
|
echo "[5/5] run $OUT"
|
|
|
|
|
./"$OUT"
|