Skip to content

Cannot compile the demo to wasm32-unknown-emscripten #1413

Open
@daanboer

Description

@daanboer

I am trying to compile the demo provided in this repository to the wasm32-unknown-emscripten target. According to #1121 this is simply done by issuing

cargo build --target wasm32-unknown-emscripten

in the demo directory. However, doing so results in an error: exception handling disabled, use '-fexceptions' to enable. Fortunately, this has already been reported in a comment in #1343, and I follow the solution posted in the linked issue #1317, so I run

CXXFLAGS="-DRUST_CXX_NO_EXCEPTIONS=ON" cargo build --target wasm32-unknown-emscripten

This fixes the previous error, but instead I am now greeted with linker errors:

error: linking with `emcc` failed: exit status: 1
<omitted for brevity>
wasm-ld: warning: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/build/demo-159040b455eced30/out/libcxxbridge-demo.a: archive member '8037ba413e599e6d-main.rs.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: warning: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/build/demo-159040b455eced30/out/libcxxbridge-demo.a: archive member '48d3f1b29a630f4c-blobstore.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: warning: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/libcxx-e355095e2e8f250f.rlib: archive member 'c16f17691ff6f04b-cxx.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: warning: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/liblink_cplusplus-555366c65df2217b.rlib: archive member '8d9510866275f375-dummy.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: org$blobstore$cxxbridge1$new_blobstore_client
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: cxxbridge1$unique_ptr$org$blobstore$BlobstoreClient$raw
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: cxxbridge1$unique_ptr$org$blobstore$BlobstoreClient$get
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: org$blobstore$cxxbridge1$BlobstoreClient$put
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: cxxbridge1$unique_ptr$org$blobstore$BlobstoreClient$get
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: org$blobstore$cxxbridge1$BlobstoreClient$tag
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: cxxbridge1$unique_ptr$org$blobstore$BlobstoreClient$get
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: org$blobstore$cxxbridge1$BlobstoreClient$metadata
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: cxxbridge1$unique_ptr$org$blobstore$BlobstoreClient$drop
wasm-ld: error: /home/daan/git/cxx/target/wasm32-unknown-emscripten/release/deps/demo.demo.223578a9ea247727-cgu.0.rcgu.o: undefined symbol: cxxbridge1$unique_ptr$org$blobstore$BlobstoreClient$drop
emcc: error: '/nix/store/qz8x3jsspa8y7q9497skabscihl3d2ry-emscripten-llvm-3.1.64/bin/wasm-ld @/tmp/nix-shell.Sc6YqU/emscripten_aybnisi6.rsp.utf-8' failed (returned 1)

I am not sure why this happens, it seems that perhaps some intermediate libraries are not compiled to wasm?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions