#!/bin/bash # builds src/web/zc.wasm (or the path given as the first argument): the microcore, with the compiler genome inside, as # WebAssembly. needs clang with the wasm32 target and wasm-ld. the page # (src/web/index.html) loads it next to src/web/zc.js. set -e case "${1:-}" in --help|-h) printf '%s\n' 'usage: src/web/build.sh [OUTFILE.wasm]' 'builds the browser compiler vm; defaults to src/web/zc.wasm.' 'requires clang with wasm32 support and wasm-ld.'; exit 0 ;; -*) echo "web build: unknown option $1; use --help for usage" >&2; exit 2 ;; esac cd "$(dirname "$0")/../.." clang --target=wasm32 -O2 -w -fwrapv -nostdlib -fno-builtin -mbulk-memory -DJTYPE=int \ -Isrc/core -Isrc/micro src/micro/micro.c src/web/port_wasm.c \ -Wl,--no-entry -Wl,--export=wasm_input -Wl,--export=wasm_input_cap -Wl,--export=wasm_set_input -Wl,--export=wasm_run \ -Wl,--export=memory -Wl,--allow-undefined -Wl,--initial-memory=33554432 -Wl,-z,stack-size=65536 \ -o "${1:-src/web/zc.wasm}" ls -l "${1:-src/web/zc.wasm}"