mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Extend wasm build to support a custom sqlite3.c to support building against sqlite3-see.c. The JS code now binds the SEE-specific functions if it detects an SEE build.
FossilOrigin-Name: dd8612c8adbaf9d06bf0d7319b9afc9bd8ca3d0fcfa1cb591a7a2fcb86480048
This commit is contained in:
5
ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-see
Normal file
5
ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-see
Normal file
@ -0,0 +1,5 @@
|
||||
_sqlite3_key
|
||||
_sqlite3_key_v2
|
||||
_sqlite3_rekey
|
||||
_sqlite3_rekey_v2
|
||||
_sqlite3_activate_see
|
@ -327,6 +327,15 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
|
||||
wasm.bindingSignatures.push(["sqlite3_normalized_sql", "string", "sqlite3_stmt*"]);
|
||||
}
|
||||
|
||||
if(wasm.exports.sqlite3_activate_see instanceof Function){
|
||||
wasm.bindingSignatures.push(
|
||||
["sqlite3_key", "int", "sqlite3*", "string", "int"],
|
||||
["sqlite3_key_v2","int","sqlite3*","string","*","int"],
|
||||
["sqlite3_rekey", "int", "sqlite3*", "string", "int"],
|
||||
["sqlite3_rekey_v2", "int", "sqlite3*", "string", "*", "int"],
|
||||
["sqlite3_activate_see", undefined, "string"]
|
||||
);
|
||||
}
|
||||
/**
|
||||
Functions which require BigInt (int64) support are separated from
|
||||
the others because we need to conditionally bind them or apply
|
||||
|
@ -168,11 +168,6 @@
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include "sqlite3.c" /* yes, .c instead of .h. */
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
# include <emscripten/console.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
** SQLITE_WASM_EXPORT is functionally identical to EMSCRIPTEN_KEEPALIVE
|
||||
@ -201,6 +196,30 @@
|
||||
// See also:
|
||||
//__attribute__((export_name("theExportedName"), used, visibility("default")))
|
||||
|
||||
/*
|
||||
** Which sqlite3.c we're using needs to be configurable to enable
|
||||
** building against a custom copy, e.g. the SEE variant. Note that we
|
||||
** #include the .c file, rather than the header, so that the WASM
|
||||
** extensions have access to private API internals.
|
||||
**
|
||||
** The caveat here is that custom variants need to account for
|
||||
** exporting any necessary symbols (e.g. sqlite3_activate_see()). We
|
||||
** cannot export them from here using SQLITE_WASM_EXPORT because that
|
||||
** attribute (apparently) has to be part of the function definition.
|
||||
*/
|
||||
#ifndef SQLITE_C
|
||||
# define SQLITE_C sqlite3.c /* yes, .c instead of .h. */
|
||||
#endif
|
||||
#define INC__STRINGIFY_(f) #f
|
||||
#define INC__STRINGIFY(f) INC__STRINGIFY_(f)
|
||||
#include INC__STRINGIFY(SQLITE_C)
|
||||
#undef INC__STRINGIFY_
|
||||
#undef INC__STRINGIFY
|
||||
#undef SQLITE_C
|
||||
|
||||
#if defined(__EMSCRIPTEN__)
|
||||
# include <emscripten/console.h>
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
/*
|
||||
|
Reference in New Issue
Block a user