mosra / magnum

Lightweight and modular C++11 graphics middleware for games and data visualization
https://magnum.graphics/
Other
4.74k stars 439 forks source link

Emscripten link error "MagnumEmscriptenApplication.bc:1:2: error: expected integer" #639

Closed linuxaged closed 2 months ago

linuxaged commented 2 months ago

emsdk version 3.1.52 link options

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -fno-rtti -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-exceptions -finline-hint-functions -flto -Wno-old-style-cast")
target_link_options(${PROJECT_NAME} PRIVATE "SHELL:
    -flto
    -s MAX_WEBGL_VERSION=2
    -s ASSERTIONS=1
    -s MAXIMUM_MEMORY=4GB
    -s ALLOW_MEMORY_GROWTH
    -s ALLOW_TABLE_GROWTH
    -s ASYNCIFY
    -s --bind
    -s EXPORTED_RUNTIME_METHODS='[\"ccall\", \"UTF8ToString\"]'
    -s EXPORTED_FUNCTIONS='[
    \"_main\",
    \"_malloc\",
    \"_BonApi_setDevicePixelRatio\"]'"
)

full error log

[239/240] Linking CXX executable C:\workspace\BonViewer\bin\Release\BonViewer.js
FAILED: C:/workspace/BonViewer/bin/Release/BonViewer.js
C:\Windows\system32\cmd.exe /C "cd . && C:\workspace\emsdk\upstream\emscripten\em++.bat -Wno-warn-absolute-paths -O3 -fno-rtti -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-exceptions -finline-hint-functions -flto -Wno-old-style-cast -DNDEBUG -O3 -O3 -DNDEBUG -s WASM=1 -O3 --llvm-lto 1   -flto -s MAX_WEBGL_VERSION=2 -s ASSERTIONS=1 -s MAXIMUM_MEMORY=4GB -s ALLOW_MEMORY_GROWTH -s ALLOW_TABLE_GROWTH -s ASYNCIFY -s --bind -s "EXPORTED_RUNTIME_METHODS=[\"ccall\", \"UTF8ToString\"]" -s "EXPORTED_FUNCTIONS=[\"_main\",\"_malloc\",\"_BonApi_getSteps\",\"_BonApi_step\",\"_BonApi_viewLeft\",\"_BonApi_viewRight\",\"_BonApi_viewFront\",\"_BonApi_viewBack\",\"_BonApi_viewTop\",\"_BonApi_viewBottom\",\"_BonApi_setJawUpVisible\",\"_BonApi_setJawLowVisible\",\"_BonApi_setGumVisible\",\"_BonApi_setAttachmentVisible\",\"_BonApi_setOriginalToothVisible\",\"_BonApi_setGridVisible\",\"_BonApi_setIprVisible\",\"_BonApi_setGapVisible\",\"_BonApi_getMovements\",\"_BonApi_setViewport\",\"_BonApi_setFdiVisible\",\"_BonApi_setSingleViewMode\",\"_BonApi_setCompareViewMode\",\"_BonApi_setJawCompareViewMode\",\"_BonApi_touchPressEvent\",\"_BonApi_touchMoveEvent\",\"_BonApi_touchTranslateEvent\",\"_BonApi_touchScrollEvent\",\"_BonApi_touchReleaseEvent\",\"_BonApi_setHexBgc\",\"_BonApi_setRgbBgc\",\"_BonApi_getBiteJumpStep\",\"_BonApi_loadBonV_wasm\",\"_BonApi_loadBonM_wasm\",\"_BonApi_loadBonMAndBonS_wasm\",\"_BonApi_setDevicePixelRatio\"]" -s USE_WEBGL2=1 src/CMakeFiles/BonViewer.dir/resource_Resources.cpp.o src/CMakeFiles/BonViewer.dir/sdf/BitmapFont.cpp.o src/CMakeFiles/BonViewer.dir/sdf/OVR_UTF8Util.cpp.o src/CMakeFiles/BonViewer.dir/sdf/SdfShader.cpp.o src/CMakeFiles/BonViewer.dir/ArcBall.cpp.o src/CMakeFiles/BonViewer.dir/BaseRenderer.cpp.o src/CMakeFiles/BonViewer.dir/BonvRenderer.cpp.o src/CMakeFiles/BonViewer.dir/BonmRenderer.cpp.o src/CMakeFiles/BonViewer.dir/GridShader.cpp.o src/CMakeFiles/BonViewer.dir/Grid.cpp.o src/CMakeFiles/BonViewer.dir/PhongShader.cpp.o src/CMakeFiles/BonViewer.dir/ToothShader.cpp.o src/CMakeFiles/BonViewer.dir/CompensatorShader.cpp.o src/CMakeFiles/BonViewer.dir/GumShader.cpp.o src/CMakeFiles/BonViewer.dir/Scene.cpp.o src/CMakeFiles/BonViewer.dir/AppDesktop.cpp.o src/CMakeFiles/BonViewer.dir/__/magnum-plugins/src/MagnumPlugins/StbImageImporter/importStaticPlugin.cpp.o -o C:\workspace\BonViewer\bin\Release\BonViewer.js  magnum/src/Magnum/Platform/MagnumEmscriptenApplication.bc  meshoptimizer/meshoptimizer.bc  corrade/src/Corrade/Utility/CorradeUtility.bc  magnum/src/Magnum/Magnum.bc  magnum/src/Magnum/MeshTools/MagnumMeshTools.bc  magnum/src/Magnum/Primitives/MagnumPrimitives.bc  magnum/src/Magnum/Trade/MagnumTrade.bc  magnum/src/Magnum/Shaders/MagnumShaders.bc  magnum/src/Magnum/SceneGraph/MagnumSceneGraph.bc  magnum/src/Magnum/GL/MagnumGL.bc  magnum-plugins/src/MagnumPlugins/StbImageImporter/StbImageImporter.bc  zstd/zstd.bc  lxd/lxd.bc  --js-library C:/workspace/BonViewer/build-emscripten/magnum/src/Magnum/Platform/Platform.js  magnum/src/Magnum/MeshTools/MagnumMeshTools.bc  magnum/src/Magnum/GL/MagnumGL.bc  -lGL  magnum/src/Magnum/Trade/MagnumTrade.bc  magnum/src/Magnum/Magnum.bc  corrade/src/Corrade/PluginManager/CorradePluginManager.bc  corrade/src/Corrade/Utility/CorradeUtility.bc  --js-library C:/workspace/BonViewer/build-emscripten/corrade/src/Corrade/Utility/Utility.js && cd ."
emcc:WARNING: --llvm-lto ignored when using llvm backend
magnum/src/Magnum/Platform/MagnumEmscriptenApplication.bc:1:2: error: expected integer
    1 | !<arch>
      |  ^
1 error generated.
em++: error: 'C:/workspace/emsdk/upstream/bin\clang++.exe -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default --sysroot=C:\workspace\emsdk\upstream\emscripten\cache\sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include\fakesdl -Xclang -iwithsysroot/include\compat -O3 -fno-rtti -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-exceptions -finline-hint-functions -flto -Wno-old-style-cast -DNDEBUG -O3 -O3 -DNDEBUG -O3 -flto magnum/src/Magnum/Platform/MagnumEmscriptenApplication.bc -c -o C:\Users\dev\AppData\Local\Temp\emscripten_temp_xpz2d13e\MagnumEmscriptenApplication_0.o' failed (returned 1)
ninja: build stopped: subcommand failed.

related issue emscripten-core/emscripten#21128

mosra commented 2 months ago

See https://github.com/mosra/magnum/issues/633 -- this is fixed as of https://github.com/mosra/toolchains/commit/7c5e5047b3afd3f7a8292d8458d3c347ce265078.

To make it work on your side, update the toolchains submodule in your project (if you have your own clone) and rebuild from scratch to make it generate *.a files instead of *.bc.