40 lines
1.5 KiB
Shell
Executable file
40 lines
1.5 KiB
Shell
Executable file
#!/bin/bash
|
|
# Gate-1 smoke for the wasm ngspice build: compiles smoke.c against the
|
|
# installed sysroot artifacts and runs it under node. Proves, in one shot:
|
|
# static sharedspice links; RC transient numerics; XSPICE code models resolve
|
|
# through the static registry; CIDER (numd) simulates; bg_run/bg_halt work on
|
|
# a real pthread. See smoke.c for the assertions.
|
|
#
|
|
# Usage: scripts/deps/ngspice-wasm/smoke/run-smoke.sh
|
|
# (build ngspice first: scripts/deps/build-ngspice.sh)
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
QUIET=1 source "${SCRIPT_DIR}/../../../common/env.sh"
|
|
|
|
SMOKE_BUILD="${BUILD_ROOT}/ngspice-smoke"
|
|
mkdir -p "${SMOKE_BUILD}"
|
|
|
|
# NODERAWFS: the wasm module sees the real filesystem, so the NGSPICEDATADIR
|
|
# baked into libngspice (the sysroot prefix) resolves and spinit + code-model
|
|
# registration run exactly as they will in the service worker.
|
|
# PROXY_TO_PTHREAD: main() may block (usleep) while ngspice's bg thread runs.
|
|
emcc "${SCRIPT_DIR}/smoke.c" -o "${SMOKE_BUILD}/smoke.js" \
|
|
-I"${SYSROOT}/include" \
|
|
-O1 -g -pthread ${DEPS_EH_FLAGS} \
|
|
"${SYSROOT}/lib/libngspice.a" \
|
|
"${SYSROOT}"/lib/ngspice/*.cm \
|
|
"${SYSROOT}/lib/ngspice/ngcm_common.a" \
|
|
-sENVIRONMENT=node \
|
|
-sNODERAWFS=1 \
|
|
-sALLOW_MEMORY_GROWTH=1 \
|
|
-sINITIAL_MEMORY=256MB \
|
|
-sPROXY_TO_PTHREAD \
|
|
-sPTHREAD_POOL_SIZE=8 \
|
|
-sEXIT_RUNTIME=1 \
|
|
-sSTACK_SIZE=4MB \
|
|
-sDEFAULT_PTHREAD_STACK_SIZE=2MB
|
|
|
|
# Optional argument: run a single scenario (rc|xspice|cider|halt).
|
|
node "${SMOKE_BUILD}/smoke.js" "$@"
|