stephan [Tue, 19 Nov 2024 19:47:51 +0000 (19:47 +0000)]
Get sqlite3_analyzer optionally linking against libsqlite3.so instead of embedding sqlite3.c. Patch mkccode.tcl to accept digits in its IFDEF/IFNDEF checks and sqlite3_analyzer.c.in to only include sqlite3.c if -DINCLUDE_SQLITE3_C is passed to mkccode.tcl.
drh [Tue, 19 Nov 2024 18:26:47 +0000 (18:26 +0000)]
Enhancements to tool/mkccode.tcl such that it recognizes -D command line
arguments and can use them in internal IFDEF and IFNDEF macros. Update
the tool/sqlite3_analyzer.c.in script such that it omits the SQLite amalgamation
if -DSQLITE_ENABLE_DBSTAT_VTAB is defined.
stephan [Tue, 19 Nov 2024 17:41:13 +0000 (17:41 +0000)]
Revert linking the shell to the dll for reasons explained in new makefile comments. Move the --with-debug configure flag into the developer options set and add commentary about why it should never be used for production builds.
stephan [Tue, 19 Nov 2024 16:40:49 +0000 (16:40 +0000)]
Reformulate sqldiff deps and rules so that the target matches the resulting file name, to avoid rebuilding it on every make invocation. Apply the same treatment to the sqlite3 CLI shell.
stephan [Tue, 19 Nov 2024 15:20:47 +0000 (15:20 +0000)]
Initial configure support for linking certain binaries to libsqlite3.so instead of embedding it dynamically (which they typically do). This currently applies only to sqldiff, but support for adding the same for other tools is planned. This requires disabling the soname because setting it causes the build to link to whatever libsqlite3.so.0 is installed system-wide, so the soname now defaults to off.
stephan [Sun, 17 Nov 2024 09:49:53 +0000 (09:49 +0000)]
buildtclext.tcl: add docs explaining the DESTDIR check and break out of the auto_path search loop early if the DESTDIR is not writable, rather than re-checking that repeatedly.
drh [Sat, 16 Nov 2024 17:39:34 +0000 (17:39 +0000)]
Fix argument expansion in sqlite-tclsh on Windows such that if an argument
does not match a filename even after glob expansion, it is appended to the
argument list verbatim.
stephan [Sat, 16 Nov 2024 17:09:55 +0000 (17:09 +0000)]
Handle DESTDIR at an earlier phase in buildtclext.tcl to account for the is-writable-dir check and to filter out //zipfs: dirs as (im)possible installation targets.
drh [Fri, 15 Nov 2024 20:39:41 +0000 (20:39 +0000)]
Enhance the vfstrace extension such that the output can be controlled using
the "PRAGMA vfstrace('...');" statement. See header comment on the source code
for details.
stephan [Fri, 15 Nov 2024 19:42:49 +0000 (19:42 +0000)]
In the interest of minimizing downstream disruption, set the soname of libsqlite3.so to (by default) its legacy value of libsqlite3.so.0 and unconditionally create (or replace) a symlink with that name at install-time, in addition to the newer-named symlinks.
stephan [Fri, 15 Nov 2024 15:31:13 +0000 (15:31 +0000)]
buildtclext.tcl: work around a case, reported in [forum:0683a49cb02f31a1|forum post 0683a49cb0], in which package maintainers edit their copy of tclConfig.sh to change the TCL_SHLIB_LD command.
stephan [Fri, 15 Nov 2024 10:07:57 +0000 (10:07 +0000)]
An experiment in optionally using pkg-config to determine the libs to link in for ICU support, but its ldflags is missing one required lib on both Linux and OpenBSD. Keeping this for later reference, as it demonstrates how to use pkg-config from autosetup.
stephan [Thu, 14 Nov 2024 19:34:28 +0000 (19:34 +0000)]
Fix typo in the handling of the new --dev flag which caused it to set the --debug flag instead of the --with-debug flag (the former is for autosetup's internal use).
stephan [Thu, 14 Nov 2024 19:25:23 +0000 (19:25 +0000)]
Remove $prefix/include from the default -I path because it can cause the build to pick up an unintended copy of sqlite3.h. Extend the ICU configure support (the origin of -I$prefix/include) to enable fetching the -I path from icu-config and apply it only to those objects which need it.
drh [Thu, 14 Nov 2024 19:06:00 +0000 (19:06 +0000)]
Add new makefile target "sqlite3d" (where the "d" means either "development" or
"debug") that always uses separate source files, regardless of the
--disable-amalgmation setting.
drh [Wed, 13 Nov 2024 18:04:49 +0000 (18:04 +0000)]
Fix a memory leak in the ".dump" command of the CLI that can occur if an
error other than database corruption is seen while trying to query the
database.
drh [Tue, 12 Nov 2024 13:37:00 +0000 (13:37 +0000)]
Ensure that the sqlite3_index_info.idxStr string coming back from FTS5
is always zero-terminated, even if the xBestIndex call fails with an
SQLITE_CONSTRAINT error.
drh [Mon, 11 Nov 2024 21:11:02 +0000 (21:11 +0000)]
Clarify the documentation to make it clear that rows inserted by a
CREATE TABLE AS SELECT statement are not counted by sqlite3_count64().
[forum:/forumpost/1e6cde5648|Forum post 1e6cde5648].
stephan [Mon, 11 Nov 2024 18:15:50 +0000 (18:15 +0000)]
Wrap some exceptionally long lines in main.mk. Add option to override LDFLAGS on the sqlite3.dll target. Audit: all targets for which it is hypothetically relevant can now inherit user-supplied LDFLAGS, but only those provided to the configure script, not at make-time, in order to mimic the historical build's restriction in that regard.
drh [Mon, 11 Nov 2024 17:02:29 +0000 (17:02 +0000)]
Use Win32 APIs to read/write the console in Windows unless the
SQLITE_USE_STDIO_FOR_CONSOLE option is defined. This is an attempt to get
the build working on MinGW.
stephan [Sat, 9 Nov 2024 10:23:04 +0000 (10:23 +0000)]
Simplify usage of proj-assert by making the expr prefix implicit. Add an optional description arg to proj-assert, defaulting to the body of the assertion script.
drh [Fri, 8 Nov 2024 20:57:45 +0000 (20:57 +0000)]
Increase the minimum SQLITE_LENGTH_LIMIT from 1 to 30 to avoid problems doing
simple things like converting strings into integers. See also
[8fd5b8ec4ab9b555].
stephan [Fri, 8 Nov 2024 13:37:00 +0000 (13:37 +0000)]
Add 'tcl' makefile target which builds all but tclextension (which does not have a well-defined name and dependencies). Improve the deps for .tclenv.sh to avoid getting a stale tclsh when re-configuring with a different --with-tcl(sh).
stephan [Fri, 8 Nov 2024 07:37:12 +0000 (07:37 +0000)]
More closely emulate the legacy build's handling of LDFLAGS, permitting them to be passed to configure but not to make. We cannot 100% enforce that because main.mk is not filtered by the configure script, so we instead add a level of indirection to make passing of LDFLAGS=... to make a no-op.
stephan [Fri, 8 Nov 2024 06:22:15 +0000 (06:22 +0000)]
Support clients passing in LDFLAGS to configure/make, but in a more limited form than the legacy build it (i.e. only to select targets rather than all targets). Rename make-side internal uses of CFLAGS to CFLAGS.env for consistency with the new LDFLAGS.env. See discussion in [forum:5fcbea40f3|forum thread 5fcbea40f3].
stephan [Fri, 8 Nov 2024 05:26:26 +0000 (05:26 +0000)]
Disable setting of the SONAME (enabled by [2a2419ef742]), as it's not clear whether blindly setting the SONAME, which now differs from its historical value, will cause more grief than it solves. Add a (disabled) experiment which permits setting (or not) the SONAME to the legacy or current values. This change is up for further change as experimentation proves whether we truly need/want the SONAME. See discussion in/around [forum:0c6fc6f46b2cb3|forum post 0c6fc6f46b2cb3].
stephan [Thu, 7 Nov 2024 15:04:15 +0000 (15:04 +0000)]
tcl configuration: --with-tcl=prefix is equivalent to passing the --prefix dir to it. If --with-tcl or --enable-tcl are explicitly passed in and tclConfig.sh is not found, fail fatally. When TCL is either explicitly disabled or default search for it fails non-fatally, be more explicit about which components are not available.
stephan [Thu, 7 Nov 2024 07:31:25 +0000 (07:31 +0000)]
When --with-linenoise refers to the msteveb flavor and jimsh is the TCL used for code generation, enable linenoise in jimsh. Remove some dead auto.def code.
stephan [Thu, 7 Nov 2024 05:26:09 +0000 (05:26 +0000)]
For platforms where tclsh is found but tclConfig.sh is not, set HAVE_TCL to 0. We can't build the TCL components on those. Problem reported in [forum:5106aee3a8|forum post 5106aee3a8].
drh [Wed, 6 Nov 2024 19:19:49 +0000 (19:19 +0000)]
Fix an FTS3 corruption test case that depends on the specific pseudo-random
byte sequence generated by sqlite3_randomness(), which is different on
big-endian platforms than it is on little-endian platforms.
stephan [Wed, 6 Nov 2024 04:38:05 +0000 (04:38 +0000)]
Add autosetup/README.md - maintenance-related docs for SQLite developers (e.g. how to update autosetup). Start marking up the proj.tcl APIs with autosetup's doc markup so that they appear in the ./configure --reference output.
stephan [Wed, 6 Nov 2024 02:59:59 +0000 (02:59 +0000)]
Enhance the --with-emsdk flag to use a default value of 'auto', meaning to search the environment for it, and to fail fatally if --with-emsdk is explicitly provided but the SDK is not found.
stephan [Tue, 5 Nov 2024 13:34:30 +0000 (13:34 +0000)]
Work around a TCL {list-quoting} quirk when escaped/deferred var derefs are passed in as values to the autotools-conventional --XYZdir flags (as seen in a downstream package build script).