all : subst index.html
#For tools (Works in Ubuntu 20.04 (Including WSL), Mint)
# sudo apt-get install clang-10 lld-10 binaryen
# sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 20
# sudo update-alternatives --install /usr/bin/wasm-ld wasm-ld /usr/bin/wasm-ld-10 20
#node-uglify lld clang-10 lld-10 binaryen
#Path to rawdraw
CFLAGS:=-I..
CLANG?=clang
WASMOPT?=wasm-opt
TERSER?=terser
TERSERFLAGS?= --ecma 2017 -d RAWDRAW_USE_LOOP_FUNCTION=false -d RAWDRAW_NEED_BLITTER=true
CFLAGS+=-DWASM -nostdlib --target=wasm32 \
-flto -Oz \
-Wl,--lto-O3 \
-Wl,--no-entry \
-Wl,--allow-undefined \
-Wl,--import-memory
WOFLAGS:=--asyncify --pass-arg=asyncify-imports@bynsyncify.* --pass-arg=asyncify-ignore-indirect
opt.js : template.js main.wasm
cat main.wasm | base64 | sed -e "$$ ! {/./s/$$/ \\\\/}" > blob_b64;
./subst template.js -s -f BLOB blob_b64 -o mid.js
#Comment the below line out if you don't want to uglify the javascript.
$(TERSER) $(TERSERFLAGS) mid.js -o opt.js
rm mid.js blob_b64
index.html : template.ht opt.js
./subst template.ht -s -f JAVASCRIPT_DATA opt.js -o $@
subst : subst.c
cc -o $@ $^
main.wasm: rawdraw.c
$(CLANG) $(CFLAGS) $^ -o $@
$(WASMOPT) $(WOFLAGS) -Oz main.wasm -o main.wasm
#wasm-objdump -d main.wasm > main.disassembly.txt
clean:
rm -rf main.wasm opt.js index.html blob_b64