This repository has been archived by the owner on Dec 14, 2023. It is now read-only.
forked from browsermt/bergamot-translator
-
Notifications
You must be signed in to change notification settings - Fork 10
/
build-wasm.sh
executable file
·85 lines (72 loc) · 2.06 KB
/
build-wasm.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env bash
set -e
set -x
# Usage
Usage="Build translator to wasm (with/without wormhole).
Usage: $(basename "$0") [WORMHOLE]
where:
WORMHOLE An optional string argument
- when specified on command line, builds wasm artifacts with wormhole
- when not specified (the default behaviour), builds wasm artifacts without wormhole."
if [ "$#" -gt 1 ]; then
echo "Illegal number of parameters passed"
echo "$Usage"
exit
fi
WORMHOLE=false
if [ "$#" -eq 1 ]; then
if [ "$1" = "WORMHOLE" ]; then
WORMHOLE=true
else
echo "Illegal parameter passed"
echo "$Usage"
exit
fi
fi
# Run script from the context of the script-containing directory
cd "$(dirname $0)"
# Prerequisite: 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 3.1.8
./emsdk activate 3.1.8
cd -
fi
source ./emsdk/emsdk_env.sh
fi
# Compile
# 1. Create a folder where you want to build all the artifacts and compile
BUILD_DIRECTORY="build-wasm"
if [ ! -d ${BUILD_DIRECTORY} ]; then
mkdir ${BUILD_DIRECTORY}
fi
cd ${BUILD_DIRECTORY}
if [ "$WORMHOLE" = true ]; then
emcmake cmake -DCOMPILE_WASM=on ../
else
emcmake cmake -DCOMPILE_WASM=on -DWORMHOLE=off ../
fi
emmake make -j2
# 2. Enable SIMD Wormhole via Wasm instantiation API in generated artifacts
if [ "$WORMHOLE" = true ]; then
bash ../wasm/patch-artifacts-enable-wormhole.sh
fi
# 3. Import GEMM library from a separate wasm module
bash ../wasm/patch-artifacts-import-gemm-module.sh
# The artifacts (.js and .wasm files) will be available in the build directory
exit 0