mirror of
https://github.com/ApfelTeeSaft/WebMetal.git
synced 2026-08-26 19:43:24 +00:00
43 lines
1.4 KiB
Bash
Executable File
43 lines
1.4 KiB
Bash
Executable File
set -euo pipefail
|
|
|
|
EMSDK_VERSION="${WEBMETAL_EMSDK_VERSION:-5.0.7}"
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
EMSDK_DIR="$REPO_ROOT/.emsdk"
|
|
|
|
if [[ "${1:-}" == "--install" ]]; then
|
|
if [[ ! -d "$EMSDK_DIR" ]]; then
|
|
git clone --depth 1 https://github.com/emscripten-core/emsdk.git "$EMSDK_DIR"
|
|
fi
|
|
"$EMSDK_DIR/emsdk" install "$EMSDK_VERSION"
|
|
"$EMSDK_DIR/emsdk" activate "$EMSDK_VERSION"
|
|
fi
|
|
|
|
if ! command -v emcmake >/dev/null 2>&1; then
|
|
if [[ -f "$EMSDK_DIR/emsdk_env.sh" ]]; then
|
|
# shellcheck disable=SC1091
|
|
source "$EMSDK_DIR/emsdk_env.sh" >/dev/null 2>&1
|
|
fi
|
|
fi
|
|
|
|
if ! command -v emcmake >/dev/null 2>&1; then
|
|
echo "error: Emscripten (emcmake) not found." >&2
|
|
echo "Run: scripts/build-wasm.sh --install (installs emsdk $EMSDK_VERSION into .emsdk/)" >&2
|
|
echo "or activate your own emsdk first: source <emsdk>/emsdk_env.sh" >&2
|
|
exit 1
|
|
fi
|
|
|
|
BUILD_DIR="$REPO_ROOT/wasm/build-wasm"
|
|
OUT_DIR="$REPO_ROOT/frontend/public/wasm"
|
|
|
|
echo "== configuring (emscripten: $(command -v emcc))"
|
|
emcmake cmake -S "$REPO_ROOT/wasm" -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release >/dev/null
|
|
|
|
echo "== building"
|
|
cmake --build "$BUILD_DIR" --parallel
|
|
|
|
echo "== installing into frontend/public/wasm/"
|
|
mkdir -p "$OUT_DIR"
|
|
cp "$BUILD_DIR/webmetal-engine.mjs" "$BUILD_DIR/webmetal-engine.wasm" "$OUT_DIR/"
|
|
ls -la "$OUT_DIR"
|
|
echo "done - the app will pick the engine up on next load."
|