Skip to content

Commit b5ff880

Browse files
authored
Update Emscripten to v2.0.7. (#63)
Signed-off-by: Piotr Sikora <piotrsikora@google.com>
1 parent 569994e commit b5ff880

File tree

11 files changed

+30
-25
lines changed

11 files changed

+30
-25
lines changed

‎Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ ${CPP_API}/libprotobuf.a ${CPP_API}/libprotobuf-lite.a:
1818
&& cd wasm-patches && git checkout 4bba8b2f38b5004f87489642b6ca4525ae72fe7f \
1919
&& cd .. && git apply wasm-patches/*.patch \
2020
&& ./autogen.sh \
21-
&& emconfigure ./configure --disable-shared CXXFLAGS="-O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1" \
21+
&& emconfigure ./configure --disable-shared CXXFLAGS="-O3 -flto" \
2222
&& emmake make \
23-
&& cp src/.libs/libprotobuf-lite.a ${CPP_API}/libprotobuf-lite.a \
24-
&& cp src/.libs/libprotobuf.a ${CPP_API}/libprotobuf.a
23+
&& cd .. \
24+
&& cp protobuf-wasm/src/.libs/libprotobuf-lite.a ${CPP_API}/libprotobuf-lite.a \
25+
&& cp protobuf-wasm/src/.libs/libprotobuf.a ${CPP_API}/libprotobuf.a
2526

2627
clean:
2728
rm -f proxy_wasm_intrinsics.pb.h proxy_wasm_intrinsics_lite.pb.h struct_lite.pb.h ${CPP_API}/libprotobuf.a ${CPP_API}/libprotobuf-lite.a

‎Makefile.base

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ else
55
endif
66

77
%.wasm: %.cc ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_enums.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_externs.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_api.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
8-
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${PROXY_WASM_CPP_SDK} -I/usr/local/include --js-library ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.js $*.cc ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${PROXY_WASM_CPP_SDK}/libprotobuf.a -o $*.wasm
8+
em++ --no-entry -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -I${PROXY_WASM_CPP_SDK} -I/usr/local/include --js-library ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.js $*.cc ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${PROXY_WASM_CPP_SDK}/libprotobuf.a -o $*.wasm
99

1010
clean:
1111
rm *.wasm

‎Makefile.base_lite

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ else
55
endif
66

77
%.wasm %.wat: %.cc ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_enums.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_externs.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_api.h ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
8-
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -DPROXY_WASM_PROTOBUF_LITE=1 -I${PROXY_WASM_CPP_SDK} -I/usr/local/include --js-library ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.js $*.cc ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics_lite.pb.cc ${PROXY_WASM_CPP_SDK}/struct_lite.pb.cc ${CPP_CONTEXT_LIB} ${PROXY_WASM_CPP_SDK}/libprotobuf-lite.a -o $*.wasm
8+
em++ --no-entry -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -DPROXY_WASM_PROTOBUF_LITE=1 -I${PROXY_WASM_CPP_SDK} -I/usr/local/include --js-library ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics.js $*.cc ${PROXY_WASM_CPP_SDK}/proxy_wasm_intrinsics_lite.pb.cc ${PROXY_WASM_CPP_SDK}/struct_lite.pb.cc ${CPP_CONTEXT_LIB} ${PROXY_WASM_CPP_SDK}/libprotobuf-lite.a -o $*.wasm
99

1010
clean:
1111
rm *.wasm

‎README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ all: plugin.wasm
110110
111111
%.wasm %.wat: %.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_enums.h ${CPP_API}/proxy_wasm_externs.h ${CPP_API}/proxy_wasm_api.h ${CPP_API}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
112112
ls /root
113-
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js ${ABSL_CPP} $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a -o $*.wasm
113+
em++ --no-entry -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js ${ABSL_CPP} $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a -o $*.wasm
114114
```
115115

116116
Precompiled abseil libraries are also available, so the above can also be done as:
@@ -126,7 +126,7 @@ all: plugin.wasm
126126
127127
%.wasm %.wat: %.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_enums.h ${CPP_API}/proxy_wasm_externs.h ${CPP_API}/proxy_wasm_api.h ${CPP_API}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
128128
ls /root
129-
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a ${ABSL_LIBS} -o $*.wasm
129+
em++ --no-entry -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a ${ABSL_LIBS} -o $*.wasm
130130
```
131131

132132
### Ownership of the resulting .wasm files
@@ -175,8 +175,8 @@ sudo make install
175175
git clone https://github.com/emscripten-core/emsdk.git
176176
cd emsdk
177177
./emsdk update-tags
178-
./emsdk install 1.39.2
179-
./emsdk activate 1.39.2
178+
./emsdk install 2.0.7
179+
./emsdk activate 2.0.7
180180

181181
source ./emsdk\_env.sh
182182
```
@@ -189,7 +189,7 @@ It is possible later versions will work, e.g.
189189
./emsdk activate latest
190190
```
191191

192-
However 1.39.2 is known to work.
192+
However 2.0.7 is known to work.
193193

194194
### Rebuilding the libprotobuf.a files
195195

@@ -203,10 +203,11 @@ git clone https://github.com/kwonoj/protobuf-wasm wasm-patches
203203
cd wasm-patches && git checkout 4bba8b2f38b5004f87489642b6ca4525ae72fe7f && cd ..
204204
git apply wasm-patches/*.patch
205205
./autogen.sh
206-
emconfigure ./configure --disable-shared CXXFLAGS="-O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1"
206+
emconfigure ./configure --disable-shared CXXFLAGS="-O3 -flto"
207207
emmake make
208-
cp src/.libs/libprotobuf-lite.a ${CPP_API}/libprotobuf-lite.a
209-
cp src/.libs/libprotobuf.a ${CPP_API}/libprotobuf.a
208+
cd ..
209+
cp protobuf-wasm/src/.libs/libprotobuf-lite.a ${CPP_API}/libprotobuf-lite.a
210+
cp protobuf-wasm/src/.libs/libprotobuf.a ${CPP_API}/libprotobuf.a
210211
```
211212

212213
### WAVM binaries

‎WORKSPACE

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ http_archive(
99
name = "emscripten_toolchain",
1010
build_file = "//:emscripten-toolchain.BUILD",
1111
patch_cmds = [
12-
"./emsdk install 1.39.19-upstream",
13-
"./emsdk activate --embedded 1.39.19-upstream",
12+
"./emsdk install 2.0.7",
13+
"./emsdk activate --embedded 2.0.7",
1414
],
15-
strip_prefix = "emsdk-dec8a63594753fe5f4ad3b47850bf64d66c14a4e",
16-
url = "https://github.com/emscripten-core/emsdk/archive/dec8a63594753fe5f4ad3b47850bf64d66c14a4e.tar.gz",
15+
strip_prefix = "emsdk-2.0.7",
16+
url = "https://github.com/emscripten-core/emsdk/archive/2.0.7.tar.gz",
17+
sha256 = "ce7a5c76e8b425aca874cea329fd9ac44b203b777053453b6a37b4496c5ce34f"
1718
)
1819

1920
# required by com_google_protobuf

‎libprotobuf-lite.a

-192 KB
Binary file not shown.

‎libprotobuf.a

-901 KB
Binary file not shown.

‎sdk_container.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,16 @@ rm -rf protobuf
5151
git clone https://github.com/emscripten-core/emsdk.git
5252
cd emsdk
5353
./emsdk update-tags
54-
./emsdk install 1.39.2
55-
./emsdk activate 1.39.2
54+
./emsdk install 2.0.7
55+
./emsdk activate 2.0.7
5656
source ./emsdk_env.sh
5757
cd
5858

5959
# abseil (optional)
6060
git clone https://github.com/abseil/abseil-cpp
6161
cd abseil-cpp
6262
git checkout 14550beb3b7b97195e483fb74b5efb906395c31e -b Jul302019 # Jul 30 2019
63-
emconfigure cmake -DCMAKE_CXX_STANDARD=17 "."
63+
emcmake cmake -DCMAKE_CXX_STANDARD=17 "."
6464
emmake make
6565
cd
6666

‎toolchain/cc_toolchain_config.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def _impl(ctx):
131131
actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
132132
flag_groups = [
133133
flag_group(
134-
flags = ["-O3", "-ffunction-sections", "-fdata-sections", "--llvm-lto", "1", "-flto"],
134+
flags = ["-O3", "-ffunction-sections", "-fdata-sections", "-flto"],
135135
),
136136
],
137137
),
@@ -141,7 +141,7 @@ def _impl(ctx):
141141
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
142142
ACTION_NAMES.cpp_link_executable,
143143
],
144-
flag_groups = [flag_group(flags = ["-O3", "-Wl,--gc-sections", "--llvm-lto", "1", "-flto"])],
144+
flag_groups = [flag_group(flags = ["-O3", "-Wl,--gc-sections", "-flto"])],
145145
),
146146
],
147147
)

‎toolchain/common.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ export EMCC_WASM_BACKEND=1
3131

3232
#echo "$(pwd)/external/emscripten_toolchain/emsdk_env.sh"
3333
#realpath "external/emscripten_toolchain/emsdk_env.sh"
34-
source "${EMSCRIPTEN_ROOT}/emsdk_env.sh"
34+
pushd "${EMSCRIPTEN_ROOT}"
35+
source "./emsdk_env.sh"
36+
popd
3537

3638
# the emscripten sdk does some path comparison, so make EM_CACHE an absolute path to make it work.
3739
mkdir -p "${TOOLCHAIN_ROOT}/tmp/emscripten_cache"

‎toolchain/emcc.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ set -euo pipefail
1818

1919
. $(dirname $0)/common.sh
2020

21-
emcc -s EMIT_EMSCRIPTEN_METADATA=1 -s STANDALONE_WASM=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] "$@"
21+
emcc --no-entry -s EXPORTED_FUNCTIONS=['_malloc'] "$@"
2222

2323
# clang doesn't support `-no-canonical-system-headers` so sed it
2424
# find the .d file in the args and fix it:
2525

2626
for arg in "$@"
2727
do
28-
if [ ${arg: -2} == ".d" ]; then
28+
if [ "${arg: -2}" == ".d" ]; then
2929
echo Fixing $arg
3030
sed -e 's%[^ ]*/external/emscripten_toolchain/upstream/emscripten/system/%external/emscripten_toolchain/upstream/emscripten/system/%' $arg > $arg.tmp
3131
mv $arg.tmp $arg

0 commit comments

Comments
 (0)