Skip to content

WASM build fails when using rust nightly #1041

@illegitimate-egg

Description

@illegitimate-egg

I have a project where some targets use std::simd (which requires rust nightly to build). Although I have written in scalar solutions for the wasm32-unknown-unknown target, macroquad itself fails to run under these conditions.

I get some nice linker errors which I've copied below:

error: linking with `rust-lld` failed: exit status: 1
  |
  = note:  "rust-lld" "-flavor" "wasm" "--export" "main" "--export" "CONTEXT" "--export" "allocate_vec_u8" "--export" "crate_version" "--export" "file_loaded" "--export" "focus" "--export" "frame" "--export" "key_down" "--export" "key_press" "--export" "key_up" "--export" "mouse_down" "--export" "mouse_move" "--export" "mouse_up" "--export" "mouse_wheel" "--export" "on_clipboard_paste" "--export" "on_file_dropped" "--export" "on_files_dropped_finish" "--export" "on_files_dropped_start" "--export" "raw_mouse_move" "--export" "resize" "--export" "touch" "--export" "macroquad_audio_crate_version" "--export" "__getrandom_custom" "--export" "quad_url_crate_version" "--export" "sapp_jsutils_crate_version" "-z" "stack-size=1048576" "--stack-first" "--no-demangle" "--no-entry" "<105 object files omitted>" "<sysroot>/lib/rustlib/wasm32-unknown-unknown/lib/libpanic_abort-*.rlib" "/home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/{libegui_macroquad-da21c70b19037e42,libegui_miniquad-3b759a3d051da6fc,libquad_url-0267aff896de8f89,libsapp_jsutils-efd322c4c57aa6ab,libgetrandom-ee02072bdd90eb54,libegui-a9c675487172f863,libbitflags-ab399b013cc6b631,libepaint-bc8110fb15b5ada4,libnohash_hasher-b5450c324c198995,libprofiling-9711a6dae74a09ba,libahash-44548d19441bc1ef,libonce_cell-35ffb9219bf1ab6c,libzerocopy-8507f86eab4be2c4,libepaint_default_fonts-b91bda4129437a45,libab_glyph-d297c5b5156ea35d,libowned_ttf_parser-3e46d8a0f031374e,libttf_parser-769eecb1343ec423,libab_glyph_rasterizer-4b5814986408a572,libparking_lot-8021c01699c43619,libparking_lot_core-0524dbe7672775ce,libsmallvec-b82fc91668f31c66,liblock_api-805b65884da984d3,libscopeguard-f313b1d335eda75f,libecolor-ec8f2793442de3d2,libemath-cd4fcde900c5d80b,libphysical_constants-c3b520c825e90a9c,libmacroquad-fcf63f0c4b25b502,libfontdue-54a0b78b4cf3b5ae,libhashbrown-cfcd5373c0524b00,libfoldhash-57230a33641b5342,libequivalent-08b71d04ab950f97,liballocator_api2-faa51543a8376a54,libttf_parser-22f6ca3d1cc0c582,libimage-2bbd44769c3fcc08,libbytemuck-52b8f31f1b9d0516,libcolor_quant-08956c2ff4caf814,libbyteorder-f18882460b00e527,libpng-7941a579ce01bcb7,libbitflags-4e732593f9f39ae0,libflate2-f1a6c62c4c0a911d,libminiz_oxide-69247a887c382bcd,libfdeflate-85784fe069819ddb,libsimd_adler32-12c116083dbad50d,libcrc32fast-e48aef906c4672db,libcfg_if-769ea1d819b8bd06,libnum_traits-ee4c8ab8e8452a20,libquad_rand-9754a596bee29ed9,libglam-34185939aef21f05,libquad_snd-7488d9ce8ca61757,libminiquad-12217de891e6e5c7}.rlib" "<sysroot>/lib/rustlib/wasm32-unknown-unknown/lib/{libstd-*,libdlmalloc-*,libcfg_if-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-L" "<sysroot>/lib/rustlib/wasm32-unknown-unknown/lib/self-contained" "-o" "/home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.wasm" "--gc-sections" "-O0"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments
  = note: rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: init_webgl
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: setup_canvas_size
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: canvas_width
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: canvas_height
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: dpi_scale
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: run_animation_loop
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/butt_gravity-b77fcc440ebc7108.b5hj17ue0oab1eyadaw1tcung.0ih3wy9.rcgu.o: undefined symbol: console_log
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libquad_url-0267aff896de8f89.rlib(quad_url-0267aff896de8f89.quad_url.7ec12d201f4b3bdb-cgu.0.rcgu.o): undefined symbol: quad_url_link_open
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libsapp_jsutils-efd322c4c57aa6ab.rlib(sapp_jsutils-efd322c4c57aa6ab.sapp_jsutils.46b9d17e9b3050e5-cgu.0.rcgu.o): undefined symbol: js_free_object
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libsapp_jsutils-efd322c4c57aa6ab.rlib(sapp_jsutils-efd322c4c57aa6ab.sapp_jsutils.46b9d17e9b3050e5-cgu.0.rcgu.o): undefined symbol: js_create_string
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libmacroquad-fcf63f0c4b25b502.rlib(macroquad-fcf63f0c4b25b502.macroquad.cedfe871b91df2bf-cgu.04.rcgu.o): undefined symbol: glBindTexture
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libmacroquad-fcf63f0c4b25b502.rlib(macroquad-fcf63f0c4b25b502.macroquad.cedfe871b91df2bf-cgu.04.rcgu.o): undefined symbol: glCopyTexImage2D
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libmacroquad-fcf63f0c4b25b502.rlib(macroquad-fcf63f0c4b25b502.macroquad.cedfe871b91df2bf-cgu.08.rcgu.o): undefined symbol: glFlush
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libmacroquad-fcf63f0c4b25b502.rlib(macroquad-fcf63f0c4b25b502.macroquad.cedfe871b91df2bf-cgu.08.rcgu.o): undefined symbol: glFinish
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libquad_snd-7488d9ce8ca61757.rlib(quad_snd-7488d9ce8ca61757.quad_snd.428ac05f3b91b725-cgu.0.rcgu.o): undefined symbol: audio_init
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libminiquad-12217de891e6e5c7.rlib(miniquad-12217de891e6e5c7.miniquad.87bb3e8b6433ea54-cgu.1.rcgu.o): undefined symbol: glGetUniformLocation
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libminiquad-12217de891e6e5c7.rlib(miniquad-12217de891e6e5c7.miniquad.87bb3e8b6433ea54-cgu.1.rcgu.o): undefined symbol: glGetIntegerv
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libminiquad-12217de891e6e5c7.rlib(miniquad-12217de891e6e5c7.miniquad.87bb3e8b6433ea54-cgu.1.rcgu.o): undefined symbol: glGenFramebuffers
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libminiquad-12217de891e6e5c7.rlib(miniquad-12217de891e6e5c7.miniquad.87bb3e8b6433ea54-cgu.1.rcgu.o): undefined symbol: glBindFramebuffer
          rust-lld: error: /home/illegitimate-egg/src/butt-gravity/target/wasm32-unknown-unknown/debug/deps/libminiquad-12217de891e6e5c7.rlib(miniquad-12217de891e6e5c7.miniquad.87bb3e8b6433ea54-cgu.1.rcgu.o): undefined symbol: glFramebufferTexture2D
          rust-lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)

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