1/* 2** This is the source code to a "tclsh" that has SQLite built-in. 3** 4** The startup script is located as follows: 5** 6** (1) Open the executable as an appended SQLite database and try to 7** read the startup script out of that database. 8** 9** (2) If the first argument is a readable file, try to open that file 10** as an SQLite database and read the startup script out of that 11** database. 12** 13** (3) If the first argument is a readable file with a ".tcl" extension, 14** then try to run that script directly. 15** 16** If none of the above steps work, then the program runs as an interactive 17** tclsh. 18*/ 19#define TCLSH_INIT_PROC sqlite3_tclapp_init_proc 20#define SQLITE_ENABLE_DBSTAT_VTAB 1 21#undef SQLITE_THREADSAFE 22#define SQLITE_THREADSAFE 0 23#undef SQLITE_ENABLE_COLUMN_METADATA 24#define SQLITE_OMIT_DECLTYPE 1 25#define SQLITE_OMIT_DEPRECATED 1 26#define SQLITE_OMIT_PROGRESS_CALLBACK 1 27#define SQLITE_OMIT_SHARED_CACHE 1 28#define SQLITE_DEFAULT_MEMSTATUS 0 29#define SQLITE_MAX_EXPR_DEPTH 0 30INCLUDE sqlite3.c 31INCLUDE $ROOT/ext/misc/appendvfs.c 32#ifdef SQLITE_HAVE_ZLIB 33INCLUDE $ROOT/ext/misc/zipfile.c 34INCLUDE $ROOT/ext/misc/sqlar.c 35#endif 36INCLUDE $ROOT/src/tclsqlite.c 37 38const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){ 39 (void)interp; 40 sqlite3_appendvfs_init(0,0,0); 41#ifdef SQLITE_HAVE_ZLIB 42 sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init); 43 sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init); 44#endif 45 46 return 47BEGIN_STRING 48INCLUDE $ROOT/tool/sqltclsh.tcl 49END_STRING 50; 51} 52