#!/bin/bash # Simple build script to produce an Emscripten-based wasm version of the state # sim. # Assumes you have emcc latest-upstream in you PATH, per their install # instructions (https://emscripten.org/docs/getting_started/downloads.html) # # git clone https://github.com/emscripten-core/emsdk.git # cd emsdk # git pull # ./emsdk install latest-upstream # ./emsdk activate latest-upstream # source ./emsdk_env.sh # Clean build every time - we use wildcards below so this keeps it simple rm -rf state_sim/nimcache # GC + emcc optimizer leads to crashes - for now, we disable the GC here ../env.sh nim c \ --cpu:i386 --os:linux --gc:none --threads:off \ -d:release -d:clang -d:emscripten -d:noSignalHandler -d:usemalloc \ --nimcache:state_sim/nimcache \ -c ../research/state_sim.nim ../env.sh emcc \ -I ../vendor/nimbus-build-system/vendor/Nim/lib \ state_sim/nimcache/*.c \ ../vendor/nim-blscurve/blscurve/csources/32/{big_384_29.c,ecp2_BLS381.c,rom_curve_BLS381.c,ecp_BLS381.c,fp2_BLS381.c,fp_BLS381.c,rom_field_BLS381.c,pair_BLS381.c,fp12_BLS381.c,fp4_BLS381.c} \ -s ERROR_ON_UNDEFINED_SYMBOLS=0 \ -s TOTAL_MEMORY=1073741824 \ -s EXTRA_EXPORTED_RUNTIME_METHODS=FS \ -s WASM=1 \ --shell-file state_sim_shell.html \ -O3 \ -o state_sim/state_sim.html