Thanks Dylan! The __cxa_uncaught_exception issue sounds like an unknown bug - can you please file an issue with a testcase?
I agree we should add more docs on the differences between the backends, good idea! I opened https://github.com/emscripten-core/emscripten/pull/9119 - Alon On Fri, Jul 26, 2019 at 10:08 AM Dylan Staley <[email protected]> wrote: > Hello again! I just wanted to drop a note detailing my experiences > building Telegram's Database Library (https://github.com/tdlib/td) with > the new WASM backend. Overall the experience was a bit rough, mainly due to > errors that did not occur using fastcomp, primarily the new strict pthreads > checking and lack of support for Position Independent Code. > > To get TdLib building, I had to make the following changes: > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index 3ec8c456..96736d4f 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -36,7 +36,7 @@ set(CMAKE_MODULE_PATH > "${CMAKE_CURRENT_SOURCE_DIR}/CMake" "${CMAKE_MODULE_PATH}" > > set(CMAKE_EXPORT_COMPILE_COMMANDS 1) > > -set(CMAKE_POSITION_INDEPENDENT_CODE ON) > +# set(CMAKE_POSITION_INDEPENDENT_CODE ON) > > enable_testing() > > @@ -98,8 +98,8 @@ if (EMSCRIPTEN) > set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=0 -Wno-almost-asm") > else() > set(TD_EMSCRIPTEN td_wasm) > - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1") > - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1") > + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s WASM=1 -s > ERROR_ON_UNDEFINED_SYMBOLS=0") > + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s WASM=1 -s > ERROR_ON_UNDEFINED_SYMBOLS=0") > endif() > endif() > > diff --git a/example/web/build-openssl.sh b/example/web/build-openssl.sh > index faf4f657..0031bef8 100755 > --- a/example/web/build-openssl.sh > +++ b/example/web/build-openssl.sh > @@ -12,7 +12,7 @@ echo "Unpacking OpenSSL sources..." > tar xzf $OPENSSL.tar.gz || exit 1 > cd openssl-$OPENSSL > > -emconfigure ./Configure linux-generic32 no-shared no-dso no-engine > no-unit-test no-ui || exit 1 > +emconfigure ./Configure linux-generic32 no-threads no-pic no-asm > no-shared no-dso no-engine no-unit-test no-ui || exit 1 > sed -i.bak 's/CROSS_COMPILE=.*/CROSS_COMPILE=/g' Makefile || exit 1 > sed -i.bak 's/-ldl //g' Makefile || exit 1 > echo "Building OpenSSL..." > > These changes disabled threading and PIC when building OpenSSL, and also > disabled the error on undefined symbols. The latter change was necessary as > I was running into "error: undefined symbol: __cxa_uncaught_exception". > > Once those changes were made, I was able to successfully compile TdLib to > WASM! Sadly I didn't see any significant size changes: the original > fastcomp WASM module was 7.7 MB, and the new module was 7.5 MB. While the > module seems to load and perform some actions correctly, the WebSocket > connections are closed before a connection is established, so I wasn't able > to make any calls to the Telegram API. I'm not a C++ developer, so I > probably can't debug that particular issue and will have to wait for the > Telegram developers to take a look. > > I just wanted to share my experiences trying to compile a non-trivial WASM > library with the new upstream backend. The only suggestions I can make are > to add warnings to the fastcomp compiler for things that won't be supported > in the new backend, such as linking a library built with threads support > with a library that doesn't support it. > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/bcd7836d-555a-4a68-aeb5-8f7c07510877%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/bcd7836d-555a-4a68-aeb5-8f7c07510877%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTca6GqVPwxvsVPUuNOyZrjY7-zk3KSjRRb8E2bvgUq%3DQ%40mail.gmail.com.
