all : 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
UGLIFYJS?=uglifyjs
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
bash -c 'export BLOB=$$(cat main.wasm | base64 | sed -e "$$ ! {/./s/$$/ \\\\/}" ); envsubst < template.js > opt.js'
#Comment the below line out if you don't want to uglify the javascript.
$(UGLIFYJS) opt.js -o opt.js
index.html : template.ht opt.js
bash -c 'export JAVASCRIPT_DATA=$$(cat opt.js); envsubst < template.ht > $@'
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