fix(llvm): make LLVM EXE smokes use workspace target and reliable build_llvm

This commit is contained in:
nyash-codex
2025-12-18 09:22:11 +09:00
parent 4a109eb6b9
commit 46a623fd75
2 changed files with 19 additions and 30 deletions

View File

@ -38,9 +38,6 @@ if [[ ! -f "$INPUT" ]]; then
exit 1
fi
BIN=${NYASH_BIN:-./target/release/hakorune}
[[ -x "$BIN" ]] || BIN="./target/release/nyash"
if ! command -v llvm-config-18 >/dev/null 2>&1; then
echo "error: llvm-config-18 not found (install LLVM 18 dev)." >&2
exit 2
@ -49,6 +46,9 @@ fi
# Use the cargo target dir when set (helps LLVM EXE smokes that build under /tmp).
CARGO_TARGET_DIR_EFFECTIVE="${CARGO_TARGET_DIR:-$PWD/target}"
BIN_DEFAULT="$CARGO_TARGET_DIR_EFFECTIVE/release/hakorune"
BIN="${NYASH_BIN:-$BIN_DEFAULT}"
echo "[1/4] Building hakorune (feature selectable) ..."
# Select LLVM feature: default harness (llvm), or legacy inkwell when NYASH_LLVM_FEATURE=llvm-inkwell-legacy
LLVM_FEATURE=${NYASH_LLVM_FEATURE:-llvm}
@ -64,12 +64,23 @@ else
CARGO_INCREMENTAL=1 cargo build --release -j 24 -p nyash-rust --features "$LLVM_FEATURE" >/dev/null
fi
if [[ ! -x "$BIN" ]]; then
# Backward compatible fallback for older layouts.
if [[ -x "$CARGO_TARGET_DIR_EFFECTIVE/release/nyash" ]]; then
BIN="$CARGO_TARGET_DIR_EFFECTIVE/release/nyash"
else
echo "error: compiler binary not found/executable after build: $BIN" >&2
echo "hint: ensure NYASH_BIN points to an existing binary or set CARGO_TARGET_DIR correctly" >&2
exit 1
fi
fi
echo "[2/4] Emitting object (.o) via LLVM backend ..."
# Default object output path under target/aot_objects
mkdir -p "$PWD/target/aot_objects"
# Default object output path under $CARGO_TARGET_DIR/aot_objects
mkdir -p "$CARGO_TARGET_DIR_EFFECTIVE/aot_objects"
stem=$(basename "$INPUT")
stem=${stem%.hako}
OBJ="${NYASH_LLVM_OBJ_OUT:-$PWD/target/aot_objects/${stem}.o}"
OBJ="${NYASH_LLVM_OBJ_OUT:-$CARGO_TARGET_DIR_EFFECTIVE/aot_objects/${stem}.o}"
if [[ "${NYASH_LLVM_SKIP_EMIT:-0}" != "1" ]]; then
rm -f "$OBJ"
COMPILER_MODE=${NYASH_LLVM_COMPILER:-harness}