|
1 | | -#!/bin/bash |
2 | | -if [ $# -lt 1 ]; then |
3 | | - echo "Usage: $0 <source.c>" |
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +if [[ $# -ne 1 ]]; then |
| 5 | + echo "usage: $0 <example-dir>" |
| 6 | + exit 1 |
| 7 | +fi |
| 8 | + |
| 9 | +TARGET="$1" |
| 10 | + |
| 11 | +# Enter the example directory |
| 12 | +pushd "$TARGET" >/dev/null |
| 13 | + |
| 14 | +# Now everything is relative to the example dir |
| 15 | +echo "[cwd] $(pwd)" |
| 16 | + |
| 17 | +# Load per-example config |
| 18 | +if [[ ! -f build.conf ]]; then |
| 19 | + echo "missing build.conf" |
4 | 20 | exit 1 |
5 | 21 | fi |
| 22 | +source build.conf |
| 23 | + |
| 24 | +CLANG="${CLANG:-/home/lind/lind-wasm/clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04/bin/clang}" |
| 25 | +SYSROOT="${SYSROOT:-/home/lind/lind-wasm/src/glibc/sysroot}" |
| 26 | +WASM_OPT="${WASM_OPT:-/home/lind/lind-wasm/tools/binaryen/bin/wasm-opt}" |
| 27 | +WASMTIME="${WASMTIME:-/home/lind/lind-wasm/src/wasmtime/target/release/wasmtime}" |
6 | 28 |
|
7 | | -SRC="$1" |
8 | | -BASE="${SRC%.c}" |
| 29 | +SRC_DIR="src" |
| 30 | +mkdir -p output |
| 31 | +OUT="output/${ENTRY%.c}" |
9 | 32 |
|
10 | | -CLANG="/home/lind/lind-wasm/clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04/bin/clang" |
11 | | -SYSROOT="/home/lind/lind-wasm/src/glibc/sysroot" |
12 | | -WASM_OPT="/home/lind/lind-wasm/tools/binaryen/bin/wasm-opt" |
13 | | -WASMTIME="/home/lind/lind-wasm/src/wasmtime/target/release/wasmtime" |
| 33 | +MAX_MEMORY="${MAX_MEMORY:-268435456}" |
| 34 | +EXTRA_CFLAGS="${EXTRA_CFLAGS:-}" |
| 35 | +EXTRA_WASM_OPT="${EXTRA_WASM_OPT:-}" |
| 36 | + |
| 37 | +echo "[build] $OUT (max-mem=$MAX_MEMORY)" |
14 | 38 |
|
15 | 39 | "$CLANG" -pthread \ |
16 | | - --target=wasm32-unknown-wasi \ |
17 | | - --sysroot "$SYSROOT" \ |
18 | | - -Wl,--import-memory,--export-memory,--max-memory=67108864,\ |
| 40 | + --target=wasm32-unknown-wasi \ |
| 41 | + --sysroot "$SYSROOT" \ |
| 42 | + -Wl,--import-memory,--export-memory,--max-memory="$MAX_MEMORY",\ |
19 | 43 | --export=__stack_pointer,--export=__stack_low,--export=pass_fptr_to_wt \ |
20 | | - "$SRC" \ |
21 | | - -g -O0 -o "${BASE}.wasm" |
| 44 | + $EXTRA_CFLAGS \ |
| 45 | + "$SRC_DIR"/*.c \ |
| 46 | + -g -O0 -o "$OUT.wasm" |
| 47 | + |
| 48 | +"$WASM_OPT" \ |
| 49 | + --asyncify \ |
| 50 | + --epoch-injection \ |
| 51 | + --debuginfo \ |
| 52 | + $EXTRA_WASM_OPT \ |
| 53 | + "$OUT.wasm" -o "$OUT.wasm" |
22 | 54 |
|
23 | | -"$WASM_OPT" --asyncify --epoch-injection --debuginfo "${BASE}.wasm" -o "${BASE}.wasm" |
| 55 | +"$WASMTIME" compile "$OUT.wasm" -o "$OUT.cwasm" |
24 | 56 |
|
25 | | -"$WASMTIME" compile "${BASE}.wasm" -o "${BASE}.cwasm" |
| 57 | +# Return to original directory |
| 58 | +popd >/dev/null |
0 commit comments