#!/usr/bin/env bash
set -euo pipefail
# Run from the same pinned source checkout after build.sh.
out="${1:?Pass the absolute output directory used by build.sh}"
case "$out" in /*) ;; *) echo 'Output directory must be absolute' >&2; exit 1 ;; esac
helper="$(cd -- "$(dirname -- "$0")" && pwd)/attribute.py"
target="$out/target-simd-symbols"
raw="$target/wasm32-unknown-unknown/release"
# Change stripping for the final crate only; dependencies keep their profile.
RUSTFLAGS='-C target-feature=+simd128' CARGO_TARGET_DIR="$target" \
  cargo +1.94.1 rustc --locked --release --target wasm32-unknown-unknown \
  -p vizcrush-aggregate -- -C strip=none
python3 "$helper" prepare \
  "$out/target-simd/wasm32-unknown-unknown/release/vizcrush_aggregate.wasm" \
  "$raw/vizcrush_aggregate.wasm" "$raw/vizcrush_aggregate_name_only.wasm"
wasm-bindgen --target nodejs --out-name vizcrush_aggregate \
  --out-dir "$out/simd-symbols" "$raw/vizcrush_aggregate_name_only.wasm"
wasm-dis "$out/simd-symbols/vizcrush_aggregate_bg.wasm" \
  -o "$out/simd-symbols/aggregate.wat"
python3 "$helper" inspect \
  "$out/simd/vizcrush_aggregate_bg.wasm" "$out/simd-symbols/vizcrush_aggregate_bg.wasm" \
  "$out/simd/aggregate.wat" "$out/simd-symbols/aggregate.wat" > "$out/attribution.json"
echo "Verified function inventory: $out/attribution.json"
