blob: 18c6d4d7bd3012a051b6f41b367892a2eb262c7d [file] [log] [blame]
Move some code to libsqlite3.so to avoid duplication.
Link executables against libsqlite3.so.
Increase timeout for fuzzcheck.
Fix building with dlopen() not available.
--- /Makefile.in
+++ /Makefile.in
@@ -311,6 +311,9 @@
# Source code for extensions
#
SRC += \
+ $(TOP)/ext/expert/sqlite3expert.c \
+ $(TOP)/ext/expert/sqlite3expert.h
+SRC += \
$(TOP)/ext/fts1/fts1.c \
$(TOP)/ext/fts1/fts1.h \
$(TOP)/ext/fts1/fts1_hash.c \
@@ -363,8 +366,11 @@
$(TOP)/ext/rbu/sqlite3rbu.h \
$(TOP)/ext/rbu/sqlite3rbu.c
SRC += \
+ $(TOP)/ext/misc/appendvfs.c \
$(TOP)/ext/misc/json1.c \
- $(TOP)/ext/misc/stmt.c
+ $(TOP)/ext/misc/sqlar.c \
+ $(TOP)/ext/misc/stmt.c \
+ $(TOP)/ext/misc/zipfile.c
# Generated source code files
#
@@ -434,7 +440,6 @@
# Statically linked extensions
#
TESTSRC += \
- $(TOP)/ext/expert/sqlite3expert.c \
$(TOP)/ext/expert/test_expert.c \
$(TOP)/ext/misc/amatch.c \
$(TOP)/ext/misc/carray.c \
@@ -460,7 +465,6 @@
$(TOP)/ext/misc/totype.c \
$(TOP)/ext/misc/unionvtab.c \
$(TOP)/ext/misc/wholenumber.c \
- $(TOP)/ext/misc/zipfile.c \
$(TOP)/ext/userauth/userauth.c
# Source code to the library files needed by the test fixture
@@ -639,25 +643,25 @@
libtclsqlite3.la: tclsqlite.lo libsqlite3.la
$(LTLINK) -no-undefined -o $@ tclsqlite.lo \
- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \
+ libsqlite3.la @TCL_STUB_LIB_SPEC@ \
-rpath "$(TCLLIBDIR)" \
-version-info "8:6:8" \
-avoid-version
-sqlite3$(TEXE): shell.c sqlite3.c
- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \
- shell.c sqlite3.c \
- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)"
+sqlite3$(TEXE): shell.c libsqlite3.la
+ $(LTLINK) $(READLINE_FLAGS) -o $@ \
+ shell.c libsqlite3.la \
+ $(LIBREADLINE)
-sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h
- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS)
+sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la
+ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la
-dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h
- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS)
+dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la
+ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la
-scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo
+scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la
$(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \
- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS)
+ $(TOP)/ext/misc/scrub.c libsqlite3.la
srcck1$(BEXE): $(TOP)/tool/srcck1.c
$(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c
@@ -767,7 +771,7 @@
# Rule to build the amalgamation
#
sqlite3.lo: sqlite3.c
- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c
+ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c
# Rules to build the LEMON compiler generator
#
@@ -1067,14 +1071,9 @@
# Source files that go into making shell.c
SHELL_SRC = \
$(TOP)/src/shell.c.in \
- $(TOP)/ext/misc/appendvfs.c \
$(TOP)/ext/misc/shathree.c \
$(TOP)/ext/misc/fileio.c \
$(TOP)/ext/misc/completion.c \
- $(TOP)/ext/misc/sqlar.c \
- $(TOP)/ext/expert/sqlite3expert.c \
- $(TOP)/ext/expert/sqlite3expert.h \
- $(TOP)/ext/misc/zipfile.c \
$(TOP)/ext/misc/memtrace.c \
$(TOP)/src/test_windirent.c
@@ -1242,15 +1241,15 @@
# Fuzz testing
fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
- ./fuzzcheck$(TEXE) $(FUZZDATA)
+ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
fastfuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
- ./fuzzcheck$(TEXE) --limit-mem 100M $(FUZZDATA)
+ ./fuzzcheck$(TEXE) --limit-mem 100M --timeout 3600 $(FUZZDATA)
./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
+ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
# The veryquick.test TCL tests.
@@ -1281,24 +1280,23 @@
smoketest: $(TESTPROGS) fuzzcheck$(TEXE)
./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS)
-sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
+sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in
$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c
-sqlite3_analyzer$(TEXE): sqlite3_analyzer.c
- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS)
+sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la
+ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL)
-sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
+sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in
$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c
-sqltclsh$(TEXE): sqltclsh.c
- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS)
+sqltclsh$(TEXE): sqltclsh.c libsqlite3.la
+ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL)
-sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c
- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS)
+sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la
+ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la
CHECKER_DEPS =\
$(TOP)/tool/mkccode.tcl \
- sqlite3.c \
$(TOP)/src/tclsqlite.c \
$(TOP)/ext/repair/sqlite3_checker.tcl \
$(TOP)/ext/repair/checkindex.c \
@@ -1309,36 +1307,36 @@
sqlite3_checker.c: $(CHECKER_DEPS)
$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
-sqlite3_checker$(TEXE): sqlite3_checker.c
- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
+sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la
+ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
-dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
+dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la
$(LTLINK) -DDBDUMP_STANDALONE -o $@ \
- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
+ $(TOP)/ext/misc/dbdump.c libsqlite3.la
-dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
+dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
+ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
-showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
+showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la
+ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
-showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
+showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la
+ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
-showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
+showjournal$(TEXE): $(TOP)/tool/showjournal.c
+ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c
-showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
+showwal$(TEXE): $(TOP)/tool/showwal.c
+ $(LTLINK) -o $@ $(TOP)/tool/showwal.c
showshm$(TEXE): $(TOP)/tool/showshm.c
$(LTLINK) -o $@ $(TOP)/tool/showshm.c
-index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
+index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la
+ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
-changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo
- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
+changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la
+ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo
$(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
@@ -1363,11 +1361,11 @@
kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c
$(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS)
-rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo
- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS)
+rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la
+ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la
-loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS)
+loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
+ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@
# This target will fail if the SQLite amalgamation contains any exported
# symbols that do not begin with "sqlite3_". It is run as part of the
--- /configure.ac
+++ /configure.ac
@@ -587,6 +587,9 @@
if test "${enable_load_extension}" = "yes" ; then
OPT_FEATURE_FLAGS=""
AC_SEARCH_LIBS(dlopen, dl)
+ if test "${ac_cv_search_dlopen}" = "no" ; then
+ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
+ fi
else
OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1"
fi
--- /ext/misc/sqlar.c
+++ /ext/misc/sqlar.c
@@ -14,6 +14,8 @@
** for working with sqlar archives and used by the shell tool's built-in
** sqlar support.
*/
+#ifdef SQLITE_HAVE_ZLIB
+
#include "sqlite3ext.h"
SQLITE_EXTENSION_INIT1
#include <zlib.h>
@@ -119,3 +121,5 @@
}
return rc;
}
+
+#endif /* SQLITE_HAVE_ZLIB */
--- /ext/misc/zipfile.c
+++ /ext/misc/zipfile.c
@@ -24,6 +24,8 @@
** * No support for zip64 extensions
** * Only the "inflate/deflate" (zlib) compression method is supported
*/
+#ifdef SQLITE_HAVE_ZLIB
+
#include "sqlite3ext.h"
SQLITE_EXTENSION_INIT1
#include <stdio.h>
@@ -2176,3 +2178,5 @@
(void)pzErrMsg; /* Unused parameter */
return zipfileRegister(db);
}
+
+#endif /* SQLITE_HAVE_ZLIB */
--- /ext/repair/sqlite3_checker.c.in
+++ /ext/repair/sqlite3_checker.c.in
@@ -2,6 +2,7 @@
** Read an SQLite database file and analyze its space utilization. Generate
** text on standard output.
*/
+#define SQLITE_CORE 1
#define TCLSH_INIT_PROC sqlite3_checker_init_proc
#define SQLITE_ENABLE_DBPAGE_VTAB 1
#define SQLITE_ENABLE_JSON1 1
@@ -14,7 +15,7 @@
#define SQLITE_OMIT_SHARED_CACHE 1
#define SQLITE_DEFAULT_MEMSTATUS 0
#define SQLITE_MAX_EXPR_DEPTH 0
-INCLUDE sqlite3.c
+#include "sqlite3.h"
INCLUDE $ROOT/src/tclsqlite.c
INCLUDE $ROOT/ext/misc/btreeinfo.c
INCLUDE $ROOT/ext/repair/checkindex.c
--- /src/shell.c.in
+++ /src/shell.c.in
@@ -61,6 +61,7 @@
#include <stdio.h>
#include <assert.h>
#include "sqlite3.h"
+#include "ext/expert/sqlite3expert.h"
typedef sqlite3_int64 i64;
typedef sqlite3_uint64 u64;
typedef unsigned char u8;
@@ -127,6 +128,10 @@
# define SHELL_USE_LOCAL_GETLINE 1
#endif
+#ifdef SQLITE_HAVE_ZLIB
+#include <zlib.h>
+#endif
+
#if defined(_WIN32) || defined(WIN32)
# include <io.h>
@@ -939,14 +944,7 @@
INCLUDE ../ext/misc/shathree.c
INCLUDE ../ext/misc/fileio.c
INCLUDE ../ext/misc/completion.c
-INCLUDE ../ext/misc/appendvfs.c
INCLUDE ../ext/misc/memtrace.c
-#ifdef SQLITE_HAVE_ZLIB
-INCLUDE ../ext/misc/zipfile.c
-INCLUDE ../ext/misc/sqlar.c
-#endif
-INCLUDE ../ext/expert/sqlite3expert.h
-INCLUDE ../ext/expert/sqlite3expert.c
#if defined(SQLITE_ENABLE_SESSION)
/*
@@ -3934,7 +3932,9 @@
sqlite3_shathree_init(p->db, 0, 0);
sqlite3_completion_init(p->db, 0, 0);
#ifdef SQLITE_HAVE_ZLIB
+ extern int sqlite3_zipfile_init(sqlite3 *, char **, const sqlite3_api_routines *);
sqlite3_zipfile_init(p->db, 0, 0);
+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
sqlite3_sqlar_init(p->db, 0, 0);
#endif
sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
@@ -5868,6 +5868,7 @@
goto end_ar_command;
}
sqlite3_fileio_init(cmd.db, 0, 0);
+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
sqlite3_sqlar_init(cmd.db, 0, 0);
sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
shellPutsFunc, 0, 0);
@@ -9045,6 +9046,7 @@
#endif
}
data.out = stdout;
+ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
sqlite3_appendvfs_init(0,0,0);
/* Go ahead and open the database file if it already exists. If the
--- /test/sessionfuzz.c
+++ /test/sessionfuzz.c
@@ -700,42 +700,6 @@
#include <assert.h>
#include "zlib.h"
-/*
-** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
-**
-** Parameter SZ is interpreted as an integer. If it is less than or
-** equal to zero, then this function returns a copy of X. Or, if
-** SZ is equal to the size of X when interpreted as a blob, also
-** return a copy of X. Otherwise, decompress blob X using zlib
-** utility function uncompress() and return the results (another
-** blob).
-*/
-static void sqlarUncompressFunc(
- sqlite3_context *context,
- int argc,
- sqlite3_value **argv
-){
- uLong nData;
- uLongf sz;
-
- assert( argc==2 );
- sz = sqlite3_value_int(argv[1]);
-
- if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
- sqlite3_result_value(context, argv[0]);
- }else{
- const Bytef *pData= sqlite3_value_blob(argv[0]);
- Bytef *pOut = sqlite3_malloc(sz);
- if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
- sqlite3_result_error(context, "error in uncompress()", -1);
- }else{
- sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
- }
- sqlite3_free(pOut);
- }
-}
-
-
/* Run a chunk of SQL. If any errors happen, print an error message
** and exit.
*/
--- /tool/mksqlite3c.tcl
+++ /tool/mksqlite3c.tcl
@@ -117,6 +117,7 @@
rtree.h
sqlite3session.h
sqlite3.h
+ sqlite3expert.h
sqlite3ext.h
sqlite3rbu.h
sqliteicu.h
@@ -403,6 +404,10 @@
sqlite3session.c
fts5.c
stmt.c
+ appendvfs.c
+ sqlar.c
+ sqlite3expert.c
+ zipfile.c
} {
copy_file tsrc/$file
}
--- /tool/sqlite3_analyzer.c.in
+++ /tool/sqlite3_analyzer.c.in
@@ -14,9 +14,6 @@
#define SQLITE_DEFAULT_MEMSTATUS 0
#define SQLITE_MAX_EXPR_DEPTH 0
#define SQLITE_OMIT_LOAD_EXTENSION 1
-#ifndef USE_EXTERNAL_SQLITE
-INCLUDE sqlite3.c
-#endif
INCLUDE $ROOT/src/tclsqlite.c
const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
--- /tool/sqltclsh.c.in
+++ /tool/sqltclsh.c.in
@@ -27,19 +27,17 @@
#define SQLITE_OMIT_SHARED_CACHE 1
#define SQLITE_DEFAULT_MEMSTATUS 0
#define SQLITE_MAX_EXPR_DEPTH 0
-INCLUDE sqlite3.c
-INCLUDE $ROOT/ext/misc/appendvfs.c
-#ifdef SQLITE_HAVE_ZLIB
-INCLUDE $ROOT/ext/misc/zipfile.c
-INCLUDE $ROOT/ext/misc/sqlar.c
-#endif
+#include "sqlite3.h"
INCLUDE $ROOT/src/tclsqlite.c
const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
(void)interp;
+ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
sqlite3_appendvfs_init(0,0,0);
#ifdef SQLITE_HAVE_ZLIB
+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
+ extern int sqlite3_zipfile_init(sqlite3 *, char **, const sqlite3_api_routines *);
sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
#endif