mirror of
https://github.com/isar/rusqlite.git
synced 2025-11-22 07:48:56 +08:00
Improve wasm32-wasi support
[Starting from 3.41.0 SQLite has wasm32-wasi support out of the
box.][0]
- Set `-DSQLITE_THREADSAFE=0`. Fixes:
```
$ wasmtime target/wasm32-wasi/release/examples/persons.wasm
Error: failed to run main module `target/wasm32-wasi/release/examples/persons.wasm`
Caused by:
0: failed to instantiate "target/wasm32-wasi/release/examples/persons.wasm"
1: unknown import: `env::pthread_mutexattr_init` has not been defined
```
- Drop `-DSQLITE_OS_OTHER`. Fixes:
```
$ wasmtime target/wasm32-wasi/release/examples/persons.wasm
Error: failed to run main module `target/wasm32-wasi/release/examples/persons.wasm`
Caused by:
0: failed to instantiate "target/wasm32-wasi/release/examples/persons.wasm"
1: unknown import: `env::sqlite3_os_init` has not been defined
```
- [Add wasi specific build flags][1]
- Add basic example
- Also, add instructions how to run it against wasm32-wasi.
Using of file databases is also working, though `--mapdir` arg
should be provided to `wasmtime run`.
[0]: https://wasmlabs.dev/articles/sqlite-wasi-support/
[1]: https://github.com/vmware-labs/webassembly-language-runtimes/blob/main/libs/sqlite/wasi-patches/wlr-build.sh#L11
This commit is contained in:
@@ -239,11 +239,16 @@ mod build_bundled {
|
||||
if !win_target() {
|
||||
cfg.flag("-DHAVE_LOCALTIME_R");
|
||||
}
|
||||
// Target wasm32-wasi can't compile the default VFS
|
||||
if env::var("TARGET").map_or(false, |v| v == "wasm32-wasi") {
|
||||
cfg.flag("-DSQLITE_OS_OTHER")
|
||||
cfg.flag("-USQLITE_THREADSAFE")
|
||||
.flag("-DSQLITE_THREADSAFE=0")
|
||||
// https://github.com/rust-lang/rust/issues/74393
|
||||
.flag("-DLONGDOUBLE_TYPE=double");
|
||||
.flag("-DLONGDOUBLE_TYPE=double")
|
||||
.flag("-D_WASI_EMULATED_MMAN")
|
||||
.flag("-D_WASI_EMULATED_GETPID")
|
||||
.flag("-D_WASI_EMULATED_SIGNAL")
|
||||
.flag("-D_WASI_EMULATED_PROCESS_CLOCKS");
|
||||
|
||||
if cfg!(feature = "wasm32-wasi-vfs") {
|
||||
cfg.file("sqlite3/wasm32-wasi-vfs.c");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user