2021-03-10 20:30:39 +03:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
# Usage: ./build-wasm.sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
set -x
|
|
|
|
|
|
|
|
# Run script from the context of the script-containing directory
|
|
|
|
cd "$(dirname $0)"
|
|
|
|
|
|
|
|
# This file replicates the instructions found in ./README.md under "Build WASM"
|
|
|
|
# with slight adjustments to be able to run the build script multiple times without having to clone all dependencies
|
|
|
|
# as per "As long as you don't update any submodule, just follow steps in `4.ii` to recompile."
|
|
|
|
|
|
|
|
# 1. Download and Install Emscripten using following instructions (unless the EMSDK env var is already set)
|
|
|
|
if [ "$EMSDK" == "" ]; then
|
|
|
|
EMSDK_UPDATE_REQUIRED=0
|
|
|
|
if [ ! -d "emsdk" ]; then
|
|
|
|
git clone https://github.com/emscripten-core/emsdk.git
|
|
|
|
EMSDK_UPDATE_REQUIRED=1
|
|
|
|
else
|
|
|
|
cd emsdk
|
|
|
|
git fetch
|
|
|
|
# Only pull if necessary
|
|
|
|
if [ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]; then
|
|
|
|
git pull --ff-only
|
|
|
|
EMSDK_UPDATE_REQUIRED=1
|
|
|
|
fi
|
|
|
|
cd -
|
|
|
|
fi
|
|
|
|
if [ "$EMSDK_UPDATE_REQUIRED" == "1" ]; then
|
|
|
|
cd emsdk
|
|
|
|
./emsdk install latest
|
|
|
|
./emsdk activate latest
|
|
|
|
cd -
|
|
|
|
fi
|
|
|
|
source ./emsdk/emsdk_env.sh
|
|
|
|
fi
|
|
|
|
|
|
|
|
# 4. Compile
|
2021-05-04 12:00:01 +03:00
|
|
|
# 1. Create a folder where you want to build all the artifacts (`build-wasm` in this case)
|
2021-03-10 20:30:39 +03:00
|
|
|
if [ ! -d "build-wasm" ]; then
|
|
|
|
mkdir build-wasm
|
|
|
|
fi
|
|
|
|
cd build-wasm
|
|
|
|
|
2021-05-04 12:00:01 +03:00
|
|
|
# 2. Compile the artifacts
|
2021-05-12 09:59:32 +03:00
|
|
|
emcmake cmake -DCOMPILE_WASM=on ../
|
2021-04-14 13:03:33 +03:00
|
|
|
emmake make -j3
|
2021-03-10 20:30:39 +03:00
|
|
|
|
2021-03-11 06:57:13 +03:00
|
|
|
# 3. Enable SIMD Wormhole via Wasm instantiation API in generated artifacts
|
2021-04-14 15:51:08 +03:00
|
|
|
bash ../wasm/patch-artifacts-enable-wormhole.sh
|
2021-03-11 06:57:13 +03:00
|
|
|
|
2021-05-04 12:00:01 +03:00
|
|
|
# The artifacts (.js and .wasm files) will be available in the build directory ("build-wasm" in this case).
|
2021-03-10 20:30:39 +03:00
|
|
|
|
|
|
|
exit 0
|