Files
salvium-rs/scripts/build-wasm.sh
T
Matt Hess 65d596a6ea Add sync cancellation via AtomicBool flag for FFI consumers
Allows Android/FFI callers to interrupt an in-progress wallet sync
  cleanly between batches. Adds salvium_wallet_stop_sync FFI export,
  WalletError::Cancelled, SyncEvent::Cancelled, and WalletHandle
  wrapper that pairs each wallet with its cancellation flag.
2026-02-26 02:23:12 +00:00

61 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Build salvium-crypto as a WASM package for browser/Cloudflare Workers.
#
# Produces:
# prebuilt/wasm/salvium_crypto.js
# prebuilt/wasm/salvium_crypto_bg.wasm
# prebuilt/wasm/salvium_crypto.d.ts
# prebuilt/wasm/package.json
#
# Prerequisites:
# rustup target add wasm32-unknown-unknown
# cargo install wasm-pack
#
# For Cloudflare Workers, import with:
# import * as salvium from './salvium_crypto';
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT_DIR="$SCRIPT_DIR/.."
OUT_DIR="$ROOT_DIR/prebuilt/wasm"
# Default to bundler target (works with Workers, Webpack, Vite, etc.)
# Use --target web for plain <script> usage, --target nodejs for Node.
TARGET="${WASM_TARGET:-bundler}"
echo "==> Building salvium-crypto WASM package (target: $TARGET)..."
wasm-pack build \
"$ROOT_DIR/crates/salvium-crypto" \
--release \
--target "$TARGET" \
--out-dir "$OUT_DIR" \
--out-name salvium_crypto
# Remove wasm-pack's generated .gitignore (we want to commit/ship this)
rm -f "$OUT_DIR/.gitignore"
# Build WASM static library (C ABI, no wasm-bindgen glue).
# Produces libsalvium_crypto.a for direct linking (e.g. Cloudflare Worker).
echo ""
echo "==> Building WASM static library (C ABI)..."
cargo build -p salvium-crypto \
--target wasm32-unknown-unknown \
--release \
--no-default-features
cp "$ROOT_DIR/target/wasm32-unknown-unknown/release/libsalvium_crypto.a" "$OUT_DIR/"
echo ""
echo "==> Done:"
ls -lh "$OUT_DIR/"*
echo ""
echo "Exports:"
if command -v wasm-objdump &>/dev/null; then
wasm-objdump -x "$OUT_DIR/salvium_crypto_bg.wasm" | grep "^ - func" | head -20
echo " ..."
else
echo " (install wabt for wasm-objdump to list exports)"
fi