11# Grida Canvas WASM Build System
22# Unified build system for all WASM build configurations
33
4+ # Shared snippet used by debug/release builds.
5+ # Keep this inline (vs. a separate recipe) so the sourced `emsdk_env.sh` affects the same shell.
6+ _wasm32_unknown_emscripten_env := " rustup target add wasm32-unknown-emscripten; (cd ../.. && ./bin/activate-emsdk); . ../../third_party/externals/emsdk/emsdk_env.sh; command -v emcc >/dev/null 2>&1; export CC=emcc CXX=em++ AR=emar"
7+
48# Default recipe - shows available commands
59default :
610 @ echo " 🚀 Grida Canvas WASM Build System"
8185# Internal recipe: Build WASM (debug mode)
8286_ build_wasm32_unknown_emscripten_debug :
8387 @ echo " 🔨 Building for wasm32-unknown-emscripten target..."
84- @ bash -c ' . ../../third_party/externals/emsdk/emsdk_env.sh && \
85- export CC=emcc && \
86- export CXX=em++ && \
87- export AR=emar && \
88+ @ bash -c ' set -euo pipefail; \
89+ {{ _wasm32 _unknown_emscripten_env}} ; \
90+ echo "🧰 $(emcc --version | { IFS= read -r l; echo "$l"; })"; \
8891 time cargo build --target wasm32-unknown-emscripten'
8992 @ echo " ✅ Build completed successfully!"
9093 @ echo " 📁 Output file: ../../target/wasm32-unknown-emscripten/debug/grida_canvas_wasm.wasm"
@@ -93,10 +96,9 @@ _build_wasm32_unknown_emscripten_debug:
9396# Internal recipe: Build WASM (release mode)
9497_ build_wasm32_unknown_emscripten_release :
9598 @ echo " 🔨 Building for wasm32-unknown-emscripten target (Production Mode)..."
96- @ bash -c ' . ../../third_party/externals/emsdk/emsdk_env.sh && \
97- export CC=emcc && \
98- export CXX=em++ && \
99- export AR=emar && \
99+ @ bash -c ' set -euo pipefail; \
100+ {{ _wasm32 _unknown_emscripten_env}} ; \
101+ echo "🧰 $(emcc --version | { IFS= read -r l; echo "$l"; })"; \
100102 time cargo build --release --target wasm32-unknown-emscripten'
101103 @ echo " ✅ Production build completed successfully!"
102104 @ echo " 📁 Output file: ../../target/wasm32-unknown-emscripten/release/grida_canvas_wasm.wasm"
0 commit comments