blob: 52ed893e06d1d16b07c9183189a5b47fd8932b63 [file] [log] [blame]
James Kuszmaul27da8142019-07-21 16:13:55 -07001#!/bin/bash
2# Originally sourced from https://github.com/ribrdb/rules_emscripten
3set -euo pipefail
4EM_CONFIG="LLVM_ROOT='$(pwd -P)/external/emscripten_clang';"
5EM_CONFIG+="EMSCRIPTEN_NATIVE_OPTIMIZER='external/emscripten_clang/optimizer';"
6EM_CONFIG+="BINARYEN_ROOT='external/emscripten_clang/binaryen';"
7EM_CONFIG+="NODE_JS='$(pwd -P)/external/nodejs/bin/node';"
8EM_CONFIG+="EMSCRIPTEN_ROOT='external/emscripten_toolchain';"
9EM_CONFIG+="SPIDERMONKEY_ENGINE='';"
10EM_CONFIG+="V8_ENGINE='';"
11EM_CONFIG+="TEMP_DIR='tmp';"
12EM_CONFIG+="COMPILER_ENGINE=NODE_JS;"
13EM_CONFIG+="JS_ENGINES=[NODE_JS];"
14export EM_CONFIG
15
16export EM_EXCLUSIVE_CACHE_ACCESS=1
17export EMCC_SKIP_SANITY_CHECK=1
18# export EMCC_DEBUG=2
19export EMCC_WASM_BACKEND=0
20export EMMAKEN_NO_SDK=1
21
22mkdir -p "tmp/emscripten_cache"
23export EM_CACHE="$(pwd -P)/tmp/emscripten_cache"
24export EMCC_TEMP_DIR="$(pwd -P)/tmp"
25
26# Prepare the cache content so emscripten doesn't try to rebuild it all the time
27cache_source=tools/cpp/emscripten/emscripten_cache
28if [ -d toolchain/emscripten_cache ]; then
29 cache_source=toolchain/emscripten_cache
30elif [ -d external/rules_emscripten/toolchain/emscripten_cache ]; then
31 cache_source=external/rules_emscripten/toolchain/emscripten_cache
32fi
33(
34 cd tmp/emscripten_cache;
35 for n in "../../$cache_source"/*;do
36 ln -s "$n"
37 done
38)
39
40argv=("$@")
41tarfile=
42# Find the -o option, and strip the .tar from it.
43for (( i=0; i<$#; i++ )); do
44 if [[ "x${argv[i]}" == x-o ]]; then
45 arg=${argv[$((i+1))]}
46 if [[ "x$arg" == x*.tar ]];then
47 tarfile="$(cd $(dirname "$arg"); pwd -P)/$(basename "$arg")"
48 emfile="$(dirname "$arg")/$(basename $arg .tar)"
49 basearg="$(basename "$(basename "$(basename "$emfile" .js)" .html)" .wasm)"
50 baseout="$(dirname "$arg")/$basearg"
51 argv[$((i+1))]="$emfile"
52 fi
53 fi
54done
55python external/emscripten_toolchain/emcc.py "${argv[@]}"
56# Now create the tarfile
57shopt -s extglob
58if [ "x$tarfile" != x ]; then
59 outdir="$(dirname "$baseout")"
60 outbase="$(basename "$baseout")"
61 (
62 cd "$outdir";
63 tar cf "$tarfile" "$outbase."?(html|js|wasm|mem|data|worker.js)
64 )
65fi