diff --git a/embed/build.sh b/embed/build.sh index c50112c..54aa170 100755 --- a/embed/build.sh +++ b/embed/build.sh @@ -20,6 +20,7 @@ WASI_SDK="$ROOT/tools/wasi-sdk-22.0/bin" -Wl,--stack-first \ -Wl,--import-undefined \ -D_HAVE_SQLITE_CONFIG_H \ + -DSQLITE_CUSTOM_INCLUDE=sqlite_opt.h \ $(awk '{print "-Wl,--export="$0}' exports.txt) trap 'rm -f sqlite3.tmp' EXIT diff --git a/sqlite3/sqlite_cfg.h b/sqlite3/sqlite_cfg.h index 7da18b3..524cc72 100644 --- a/sqlite3/sqlite_cfg.h +++ b/sqlite3/sqlite_cfg.h @@ -33,52 +33,10 @@ #define HAVE_MALLOC_H 1 #define HAVE_MALLOC_USABLE_SIZE 1 -// Recommended Options - -#define SQLITE_DQS 0 -#define SQLITE_THREADSAFE 0 -#define SQLITE_DEFAULT_MEMSTATUS 0 -#define SQLITE_DEFAULT_WAL_SYNCHRONOUS 1 -#define SQLITE_LIKE_DOESNT_MATCH_BLOBS -#define SQLITE_MAX_EXPR_DEPTH 0 -#define SQLITE_STRICT_SUBTYPE 1 -#define SQLITE_USE_ALLOCA -#define SQLITE_OMIT_DEPRECATED -#define SQLITE_OMIT_SHARED_CACHE -#define SQLITE_OMIT_AUTOINIT -// #define SQLITE_OMIT_DECLTYPE -// #define SQLITE_OMIT_PROGRESS_CALLBACK - -// Other Options - -#define SQLITE_ALLOW_URI_AUTHORITY -#define SQLITE_TRUSTED_SCHEMA 0 -#define SQLITE_DEFAULT_FOREIGN_KEYS 1 -#define SQLITE_ENABLE_ATOMIC_WRITE -#define SQLITE_ENABLE_BATCH_ATOMIC_WRITE - // Because Wasm does not support shared memory, // SQLite disables WAL for Wasm builds. -// We patch SQLite to use exclusive locking mode instead. -// https://sqlite.org/wal.html#noshm +// But we want it. #undef SQLITE_OMIT_WAL -// We have our own memdb VFS. -// To avoid interactions between the two, -// omit sqlite3_serialize/sqlite3_deserialize, -// which we also don't wrap. -#define SQLITE_OMIT_DESERIALIZE - -// Amalgamated Extensions - -#define SQLITE_ENABLE_MATH_FUNCTIONS 1 -#define SQLITE_ENABLE_JSON1 1 -#define SQLITE_ENABLE_FTS5 1 -#define SQLITE_ENABLE_RTREE 1 -#define SQLITE_ENABLE_GEOPOLY 1 - -#define SQLITE_SOUNDEX -#define SQLITE_UNTESTABLE - // Implemented in vfs.c. int localtime_s(struct tm *const pTm, time_t const *const pTime); \ No newline at end of file diff --git a/sqlite3/sqlite_opt.h b/sqlite3/sqlite_opt.h new file mode 100644 index 0000000..199a142 --- /dev/null +++ b/sqlite3/sqlite_opt.h @@ -0,0 +1,42 @@ +// Recommended Options + +#define SQLITE_DQS 0 +#define SQLITE_THREADSAFE 0 +#define SQLITE_DEFAULT_MEMSTATUS 0 +#define SQLITE_DEFAULT_WAL_SYNCHRONOUS 1 +#define SQLITE_LIKE_DOESNT_MATCH_BLOBS +#define SQLITE_MAX_EXPR_DEPTH 0 +#define SQLITE_STRICT_SUBTYPE 1 +#define SQLITE_USE_ALLOCA +#define SQLITE_OMIT_DEPRECATED +#define SQLITE_OMIT_SHARED_CACHE +#define SQLITE_OMIT_AUTOINIT + +// We need these: +// #define SQLITE_OMIT_DECLTYPE +// #define SQLITE_OMIT_PROGRESS_CALLBACK + +// Other Options + +#define SQLITE_ALLOW_URI_AUTHORITY +#define SQLITE_TRUSTED_SCHEMA 0 +#define SQLITE_DEFAULT_FOREIGN_KEYS 1 +#define SQLITE_ENABLE_ATOMIC_WRITE +#define SQLITE_ENABLE_BATCH_ATOMIC_WRITE + +// We have our own memdb VFS. +// To avoid interactions between the two, +// omit sqlite3_serialize/sqlite3_deserialize, +// which we also don't wrap. +#define SQLITE_OMIT_DESERIALIZE + +// Amalgamated Extensions + +#define SQLITE_ENABLE_MATH_FUNCTIONS 1 +#define SQLITE_ENABLE_JSON1 1 +#define SQLITE_ENABLE_FTS5 1 +#define SQLITE_ENABLE_RTREE 1 +#define SQLITE_ENABLE_GEOPOLY 1 + +#define SQLITE_SOUNDEX +#define SQLITE_UNTESTABLE \ No newline at end of file diff --git a/vfs/tests/mptest/testdata/build.sh b/vfs/tests/mptest/testdata/build.sh index c6fb46f..598a19d 100755 --- a/vfs/tests/mptest/testdata/build.sh +++ b/vfs/tests/mptest/testdata/build.sh @@ -21,6 +21,7 @@ WASI_SDK="$ROOT/tools/wasi-sdk-22.0/bin" -DSQLITE_DEFAULT_LOCKING_MODE=0 \ -DSQLITE_NO_SYNC -DSQLITE_THREADSAFE=0 \ -DSQLITE_OMIT_LOAD_EXTENSION -DHAVE_USLEEP \ + -DSQLITE_CUSTOM_INCLUDE=sqlite_opt.h \ -D_WASI_EMULATED_GETPID -lwasi-emulated-getpid \ $(awk '{print "-Wl,--export="$0}' exports.txt) diff --git a/vfs/tests/speedtest1/testdata/build.sh b/vfs/tests/speedtest1/testdata/build.sh index 875daf6..061ae52 100755 --- a/vfs/tests/speedtest1/testdata/build.sh +++ b/vfs/tests/speedtest1/testdata/build.sh @@ -17,6 +17,7 @@ WASI_SDK="$ROOT/tools/wasi-sdk-22.0/bin" -Wl,--stack-first \ -Wl,--import-undefined \ -D_HAVE_SQLITE_CONFIG_H -DSQLITE_USE_URI \ + -DSQLITE_CUSTOM_INCLUDE=sqlite_opt.h \ $(awk '{print "-Wl,--export="$0}' exports.txt) "$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \