grovesNL / spirv_cross

Safe Rust wrapper around SPIRV-Cross
Apache License 2.0
87 stars 42 forks source link

Support for wasm32-wasi #162

Open tomaka opened 3 years ago

tomaka commented 3 years ago

This crate currently seems to use cfg(target_arch = "wasm32") in order to mean "the web". However, wasm32-wasi is meant to be an actual operating-system-like environment. The WASI SDK for example provides a clang toolchain that can compile C/C++ code. Trying to compiling this crate for wasm32-wasi yields errors about JsValue not being found.

I would suggest using target_os = "emscripten" rather than target_arch = "wasm32" for everything Emscripten-related, and treat target_os = "wasi" in a cross-platform manner.

grovesNL commented 3 years ago

Sounds good to me :+1:

Emscripten is only used when compiling C++ part for the web (e.g. using emcc directly, not going through rustc), but wasm32-unknown-unknown is used for the rest. I guess we could specify the wasm32-unknown-unknown triple to make wasm32-wasi work too but I haven't experimented much with wasi yet.