emscripten icon indicating copy to clipboard operation
emscripten copied to clipboard

Can I add -latomic to UNSUPPORTED_LLD_FLAGS?

Open skhaz opened this issue 1 year ago • 1 comments

After adding OpenAL to my project, when compiling to WebAssembly using the Emscripten compiler, I encounter an error during the linking stage. I’m unsure if I should add -latomic to UNSUPPORTED_LLD_FLAGS or if it’s an issue on my end.

My question is: can I open a PR to do this, or is it a different problem?

PS. I read that OpenAL is supported, just like SDL has shims to work on the web.

Other platforms (Windows, Linux & macOS) compile it without issues.

wasm-ld: error: unable to find library -latomic
em++: error: '/home/runner/.conan2/p/emsdkf6ec8ba132793/p/bin/upstream/bin/wasm-ld -o carimbo.wasm CMakeFiles/carimbo.dir/src/application.cpp.o CMakeFiles/carimbo.dir/src/audiodevice.cpp.o CMakeFiles/carimbo.dir/src/delay.cpp.o CMakeFiles/carimbo.dir/src/engine.cpp.o CMakeFiles/carimbo.dir/src/enginefactory.cpp.o CMakeFiles/carimbo.dir/src/entity.cpp.o CMakeFiles/carimbo.dir/src/entitymanager.cpp.o CMakeFiles/carimbo.dir/src/eventmanager.cpp.o CMakeFiles/carimbo.dir/src/eventreceiver.cpp.o CMakeFiles/carimbo.dir/src/filesystem.cpp.o CMakeFiles/carimbo.dir/src/framerate.cpp.o CMakeFiles/carimbo.dir/src/garbagecollector.cpp.o CMakeFiles/carimbo.dir/src/io.cpp.o CMakeFiles/carimbo.dir/src/main.cpp.o CMakeFiles/carimbo.dir/src/pixmap.cpp.o CMakeFiles/carimbo.dir/src/pixmappool.cpp.o CMakeFiles/carimbo.dir/src/point.cpp.o CMakeFiles/carimbo.dir/src/rect.cpp.o CMakeFiles/carimbo.dir/src/renderer.cpp.o CMakeFiles/carimbo.dir/src/resourcemanager.cpp.o CMakeFiles/carimbo.dir/src/scriptengine.cpp.o CMakeFiles/carimbo.dir/src/singleton.cpp.o CMakeFiles/carimbo.dir/src/size.cpp.o CMakeFiles/carimbo.dir/src/soundfx.cpp.o CMakeFiles/carimbo.dir/src/soundmanager.cpp.o CMakeFiles/carimbo.dir/src/statemanager.cpp.o CMakeFiles/carimbo.dir/src/ticks.cpp.o CMakeFiles/carimbo.dir/src/timermanager.cpp.o CMakeFiles/carimbo.dir/src/window.cpp.o -L/home/runner/.conan2/p/b/libav4ae9d6069b74e/p/lib -L/home/runner/.conan2/p/b/libyu936eedb0e5411/p/lib -L/home/runner/.conan2/p/b/libjpbf86af4143940/p/lib -L/home/runner/.conan2/p/b/libao367da7c743e1c/p/lib -L/home/runner/.conan2/p/b/dav1d438190289702b/p/lib -L/home/runner/.conan2/p/b/libwe31dfcdc54368d/p/lib -L/home/runner/.conan2/p/b/libcu9de5804dcd8a4/p/lib -L/home/runner/.conan2/p/b/opens7ae3198b64e96/p/lib -L/home/runner/.conan2/p/b/zlib81c2cf1399b11/p/lib -L/home/runner/.conan2/p/b/fmtbf5d6d0240ad8/p/lib -L/home/runner/.conan2/p/b/ogg43e3f72f930e0/p/lib -L/home/runner/.conan2/p/b/opena2cd86f06347fe/p/lib -L/home/runner/.conan2/p/b/physf2f40ace7e0195/p/lib -L/home/runner/.conan2/p/b/libspd800477dd7153/p/lib -L/home/runner/.conan2/p/b/lua31d1792b677d8/p/lib -L/home/runner/.conan2/p/b/vorbi715dd61bf4993/p/lib /home/runner/.conan2/p/b/libav4ae9d6069b74e/p/lib/libavif.a /home/runner/.conan2/p/b/libyu936eedb0e5411/p/lib/libyuv.a /home/runner/.conan2/p/b/libjpbf86af4143940/p/lib/libjpeg.a /home/runner/.conan2/p/b/libao367da7c743e1c/p/lib/libaom.a /home/runner/.conan2/p/b/dav1d438190289702b/p/lib/libdav1d.a /home/runner/.conan2/p/b/libwe31dfcdc54368d/p/lib/libsharpyuv.a /home/runner/.conan2/p/b/libcu9de5804dcd8a4/p/lib/libcurl.a /home/runner/.conan2/p/b/opens7ae3198b64e96/p/lib/libssl.a /home/runner/.conan2/p/b/opens7ae3198b64e96/p/lib/libcrypto.a /home/runner/.conan2/p/b/fmtbf5d6d0240ad8/p/lib/libfmt.a /home/runner/.conan2/p/b/opena2cd86f06347fe/p/lib/libopenal.a -latomic /home/runner/.conan2/p/b/physf2f40ace7e0195/p/lib/libphysfs.a /home/runner/.conan2/p/b/libspd800477dd7153/p/lib/libspng_static.a /home/runner/.conan2/p/b/zlib81c2cf1399b11/p/lib/libz.a /home/runner/.conan2/p/b/lua31d1792b677d8/p/lib/liblua.a /home/runner/.conan2/p/b/vorbi715dd61bf4993/p/lib/libvorbisfile.a /home/runner/.conan2/p/b/vorbi715dd61bf4993/p/lib/libvorbisenc.a /home/runner/.conan2/p/b/vorbi715dd61bf4993/p/lib/libvorbis.a /home/runner/.conan2/p/b/ogg43e3f72f930e0/p/lib/libogg.a -L/home/runner/.conan2/p/emsdkf6ec8ba132793/p/bin/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /home/runner/.conan2/p/emsdkf6ec8ba132793/p/bin/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libSDL2.a -lGL -lal -lhtml5 -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmp2e5go_ytlibemscripten_js_symbols.so --strip-debug --export-if-defined=main --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=__main_argc_argv --export=stackSave --export=stackRestore --export=stackAlloc --export=__errno_location --export=__wasm_call_ctors --export-table -z stack-size=65536 --initial-memory=134217728 --no-entry --max-memory=2147483648 --global-base=1024' failed (returned 1)

skhaz avatar Sep 29 '24 21:09 skhaz

IIUC libatomic is normally provided by glibc? In that case I think adding it to map_to_js_libs in tools/link.py would make the most sense (alongside 'dl', 'm', and 'rt')

sbc100 avatar Sep 30 '24 00:09 sbc100