#!/usr/bin/env bash set -e args="-Os" if [[ "$1" == "--debug" ]]; then args="-s ASSERTIONS=1 SAFE_HEAP=1 -O0" fi mkdir -p target/scratch target/release docker run \ --rm \ -v $(pwd):/src \ -u $(id -u) \ -e EMCC_FORCE_STDLIBS=libc++ \ trzeci/emscripten-slim \ \ emcc \ -s WASM=1 \ -s ALLOW_MEMORY_GROWTH \ -s MAIN_MODULE=1 \ -s EXPORT_ALL=1 \ $args \ -std=c99 \ -D 'fprintf(...)=' \ -I lib/src \ -I lib/include \ -I lib/utf8proc \ --js-library lib/web/imports.js \ --pre-js lib/web/prefix.js \ --post-js lib/web/binding.js \ lib/src/lib.c \ lib/web/binding.c \ -o target/scratch/tree-sitter.js if [ ! -d lib/web/node_modules/terser ]; then ( cd lib/web npm install ) fi lib/web/node_modules/.bin/terser \ --compress \ --mangle \ --keep-fnames \ --keep-classnames \ -- target/scratch/tree-sitter.js \ > target/release/tree-sitter.js mv target/scratch/tree-sitter.wasm target/release/tree-sitter.wasm