mirror of
https://github.com/isar/rusqlite.git
synced 2025-03-25 23:06:04 +08:00
wasm
This commit is contained in:
parent
e093d7db7b
commit
97f041d6be
@ -43,6 +43,10 @@ winsqlite3 = []
|
||||
[dependencies]
|
||||
openssl-sys = { version = "0.9", optional = true }
|
||||
|
||||
[target.wasm32-unknown-unknown.dependencies]
|
||||
compiler-rt-builtins = "0.1"
|
||||
wasm32-unknown-unknown-openbsd-libc = "0.2"
|
||||
|
||||
[build-dependencies]
|
||||
bindgen = { version = "0.66", optional = true, default-features = false, features = ["runtime"] }
|
||||
pkg-config = { version = "0.3.19", optional = true }
|
||||
|
@ -115,22 +115,15 @@ mod build_bundled {
|
||||
.flag("-DSQLITE_CORE")
|
||||
.flag("-DSQLITE_DEFAULT_FOREIGN_KEYS=1")
|
||||
.flag("-DSQLITE_ENABLE_API_ARMOR")
|
||||
.flag("-DSQLITE_ENABLE_COLUMN_METADATA")
|
||||
.flag("-DSQLITE_ENABLE_DBSTAT_VTAB")
|
||||
.flag("-DSQLITE_ENABLE_FTS3")
|
||||
.flag("-DSQLITE_ENABLE_FTS3_PARENTHESIS")
|
||||
.flag("-DSQLITE_ENABLE_FTS5")
|
||||
.flag("-DSQLITE_ENABLE_JSON1")
|
||||
.flag("-DSQLITE_ENABLE_LOAD_EXTENSION=1")
|
||||
.flag("-DSQLITE_ENABLE_MEMORY_MANAGEMENT")
|
||||
.flag("-DSQLITE_ENABLE_RTREE")
|
||||
.flag("-DSQLITE_ENABLE_STAT2")
|
||||
.flag("-DSQLITE_ENABLE_STAT4")
|
||||
.flag("-DSQLITE_SOUNDEX")
|
||||
.flag("-DSQLITE_THREADSAFE=1")
|
||||
.flag("-DSQLITE_USE_URI")
|
||||
.flag("-DHAVE_USLEEP=1")
|
||||
.flag("-D_POSIX_THREAD_SAFE_FUNCTIONS") // cross compile with MinGW
|
||||
.flag("-DSQLITE_DEFAULT_MEMSTATUS=0")
|
||||
.flag("-DSQLITE_MAX_EXPR_DEPTH=0")
|
||||
.flag("-DSQLITE_OMIT_DECLTYPE")
|
||||
.flag("-DSQLITE_OMIT_DEPRECATED")
|
||||
.flag("-DSQLITE_OMIT_PROGRESS_CALLBACK")
|
||||
.flag("-DSQLITE_LIKE_DOESNT_MATCH_BLOBS")
|
||||
.warnings(false);
|
||||
|
||||
if cfg!(feature = "bundled-sqlcipher") {
|
||||
@ -234,7 +227,7 @@ mod build_bundled {
|
||||
if vs_has_nan {
|
||||
cfg.flag("-DHAVE_ISNAN");
|
||||
}
|
||||
} else {
|
||||
} else if env::var("TARGET") != Ok("wasm32-unknown-unknown".to_string()) {
|
||||
cfg.flag("-DHAVE_ISNAN");
|
||||
}
|
||||
if !win_target() {
|
||||
@ -249,6 +242,57 @@ mod build_bundled {
|
||||
cfg.file("sqlite3/wasm32-wasi-vfs.c");
|
||||
}
|
||||
}
|
||||
if env::var("TARGET") == Ok("wasm32-unknown-unknown".to_string()) {
|
||||
// Apple clang doesn't support wasm32, so use Homebrew clang by default.
|
||||
if env::var("HOST") == Ok("x86_64-apple-darwin".to_string()) {
|
||||
if env::var("CC").is_err() {
|
||||
std::env::set_var("CC", "/usr/local/opt/llvm/bin/clang");
|
||||
}
|
||||
if env::var("AR").is_err() {
|
||||
std::env::set_var("AR", "/usr/local/opt/llvm/bin/llvm-ar");
|
||||
}
|
||||
} else if env::var("HOST") == Ok("aarch64-apple-darwin".to_string()) {
|
||||
if env::var("CC").is_err() {
|
||||
std::env::set_var("CC", "/opt/homebrew/opt/llvm/bin/clang");
|
||||
}
|
||||
if env::var("AR").is_err() {
|
||||
std::env::set_var("AR", "/opt/homebrew/opt/llvm/bin/llvm-ar");
|
||||
}
|
||||
}
|
||||
|
||||
cfg.flag("-DSQLITE_OS_OTHER")
|
||||
.flag("-DSQLITE_TEMP_STORE=3")
|
||||
.flag("-DSQLITE_OMIT_LOCALTIME")
|
||||
.flag("-Wno-incompatible-library-redeclaration");
|
||||
|
||||
let supported_features = [
|
||||
"atomics",
|
||||
"bulk-memory",
|
||||
"exception-handling",
|
||||
"multivalue",
|
||||
"mutable-globals",
|
||||
"nontrapping-fptoint",
|
||||
"reference-types",
|
||||
"relaxed-simd",
|
||||
"sign-ext",
|
||||
"simd128",
|
||||
];
|
||||
for feature in env::var("CARGO_CFG_TARGET_FEATURE")
|
||||
.unwrap_or_default()
|
||||
.split(',')
|
||||
{
|
||||
if supported_features.contains(&feature) {
|
||||
cfg.flag(&format!("-m{feature}"));
|
||||
}
|
||||
}
|
||||
|
||||
cfg.include(
|
||||
std::env::var_os("DEP_WASM32_UNKNOWN_UNKNOWN_OPENBSD_LIBC_INCLUDE").unwrap(),
|
||||
);
|
||||
|
||||
println!("cargo:rustc-link-lib=compiler-rt-builtins");
|
||||
println!("cargo:rustc-link-lib=wasm32-unknown-unknown-openbsd-libc");
|
||||
}
|
||||
if cfg!(feature = "unlock_notify") {
|
||||
cfg.flag("-DSQLITE_ENABLE_UNLOCK_NOTIFY");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user