SQLite

Timeline
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

About branch autosetup

The purpose of the autosetup branch is to explore porting of the SQLite build process from the venerable GNU Autotools to Steve Bennett's Autosetup. This branch does not represent a project-level commitment to actually follow through with such a port. Whether or not that will be feasible, given this project's unusually wide end-user footprint and compatibility concerns, remains to be seen.

Perceived advantages of such a port:

  • Autosetup lives entirely in the project source tree, so is not subject to incompatibilities when developers upgrade their Autotools.

  • Autosetup is far simpler to work with. Where Autotools is based on a mix of GNU m4 and POSIX shell code, Autosetup uses only TCL, and includes a single-file distribution of JimTCL for use on systems which don't have tclsh installed (noting that JimTCL shares the same maintainer as Autosetup). The SQLite project has a long history of using TCL for its build-time and testing tooling, making TCL a natural choice for a project configuration language.

    • Closely related: through the intended support lifetime of SQLite, it seems likely that we will need to migrate to other build processes at least twice. We won't, long term, realistically be able to cling to the version of the Autotools which we currently restrict ourselves to.
  • Ease of maintenance. The autotools-based build files are low-maintenance only in the sense that we don't edit them unless it's absolutely necessary to do so. Autosetup, on the other hand, is comprised entirely of comparatively user-friendly TCL, so is more welcoming.

  • As of 2024-09-27, all of the TCL-generated source code can be generated using the Autosetup-provided copy of JimTCL. i.e. the tree no longer needs an external TCL binary to build but does for the tests, as those rely on the project's TCL SQLite bindings.

Potential disadvantages:

  • It does not automagically handle the build-tool portability, in particular for some of the more obscure target platforms, e.g. AIX or QNX. Autosetup assumes POSIX-style platforms and it is, as of this writing, as yet unclear whether it will be suitable for use on some of the outlier platforms which SQLite's build process has historically supported. If not, a fallback option would be to provide static makefiles for such platforms, similar to how is currently done for Windows platforms.

  • How much effort will be required to get out-of-tree and cross-compilation working is currently unclear. (Out-of-tree builds work "out of the box" so long as a tiny bit of care is taken in writing the Makefile rules.)

  • Because of differences in how Autotools and Autosetup handle configure script switches, some switches will need to be renamed or change semantics. i.e. it is unavoidable that some downstream automated build processes would need to be ever-so-slightly adapted. A concrete example of this is the --enable-tempstore flag: Autosetup internally applies special meaning to the --enable- and --disable- flag prefixes, forcing such flags to be boolean-only, which necessitates a rename of that flag to --with-tempstore in this build process so that it may retain the same semantics that it has historically had. Similarly, Autosetup uses --debug for its own purposes, necessitating a rename of that build flag.

    • That said: build processes, as a rule, are not guaranteed interfaces.

Sidebars:

  • SQLite's sibling project, the Fossil SCM, has used Autosetup since July of 2011 with no issues, so we know that it works well and is painless to upgrade.

  • Both the SQLite and Fossil projects have a long history of positive interactions with Autosetup's creator, which of course biases us somewhat in his favor.

100 most recent check-ins related to "autosetup"
2024-10-25
14:39
Rework the configure+make system to use autosetup rather than autoconf. Autosetup runs faster and is easier to maintain, and it allows for common targets (such as "sqlite3" and "sqlite3.c") to be built within having to install "tclsh". (check-in: d8c0e018 user: drh tags: trunk)
14:36
Restore the amalgamation-tarball and snapshot-tarball targets, at least for now. (Closed-Leaf check-in: 1baf4b94 user: drh tags: autosetup)
13:56
Minor auto.def cleanups and doc addtions. (check-in: ea53aba8 user: stephan tags: autosetup)
12:22
New jimsh0.c file for autosetup. (check-in: cfacf864 user: drh tags: autosetup)
12:06
Update the LICENSE.md file to describe BSD-licensed code that is included in the repository as a convenience to developers but which is not itself actually a part of SQLite. (check-in: deb5994b user: drh tags: autosetup)
05:53
Ensure that jimsh is built in the proper dir in an out-of-tree build and that jimsh0 is cleaned up by distclean. (check-in: e0286e25 user: stephan tags: autosetup)
04:48
Rename config-defines.json to config.defines.json for consistent with other generated config.* files. Rename --defs-json-include-lowercase to the even less wieldy --defines-json-include-lowercase. (check-in: 131a2a7e user: stephan tags: autosetup)
04:39
Add --defs-json-include-lowercase configure flag to cause config-defs.json to include lower-case defines, which are primarily the various build-related system paths. (check-in: 0f2555ea user: stephan tags: autosetup)
04:16
Internal cleanups and docs in hwaci-common.tcl. (check-in: 30699b57 user: stephan tags: autosetup)
03:56
Docs related to the -array defs-dump option. Rename some internal-use hwaci-common.tcl APIs after discovering that a - as a symbol suffix fails for var derefs (but works for procs calls). (check-in: 0d5da388 user: stephan tags: autosetup)
03:35
Experimentally add the -array formatting option to hwaci-dump-defs-json and emit OPT_FEATURE_FLAGS/OPT_SHELL in both flat string and array forms. (check-in: ce6bc460 user: stephan tags: autosetup)
03:18
./configure now emits config-defs.json, a JSON-formatted counterpart of the DEFS=... info which the pre-built autotools bundles emit. (check-in: 800b083c user: stephan tags: autosetup)
2024-10-24
19:56
The "WITHOUT_JIMSH=1" option on the nmake command-line forces the use of standard TCL for building, instead of jimsh0. (check-in: 9f861f66 user: drh tags: autosetup)
19:17
Basic builds now appear to work using jimsh0 on Windows. (check-in: d8f51939 user: drh tags: autosetup)
17:16
Fix a bug in jimsh0.c for when it is compiled using MSVC. (check-in: f7def0be user: drh tags: autosetup)
15:57
Fix the new tool/cp.tcl so that it works with older TCL versions, such as jimtcl. (check-in: 61f18c96 user: drh tags: autosetup)
15:36
Fix harmless compiler warnings. One of the warnings was code that deliberately committed memory errors to test the systems ability to cope. But compilers don't allow that any more, so we'll have to leave that capability untested. (check-in: 7e7b3b2e user: drh tags: autosetup)
15:14
Add the tool/cp.tcl script and use it to simplify Makefile.msc. (check-in: b7db2146 user: drh tags: autosetup)
14:33
Back out [bd66222721] because it causes conflicts with test runs, apparently due to .o files being built with different flags. This means that the CLI shell currently does not honor --disable-amalgamation. (check-in: b0633173 user: stephan tags: autosetup)
13:27
Tweaks to help make jimsh0 usable to build using nmake. Does not quite work yet, but getting closer. (check-in: e911303b user: drh tags: autosetup)
12:57
Minor makefile tweaks to account for customizations via a custom hand-built makefile. (check-in: 7f92e820 user: stephan tags: autosetup)
12:18
Fix jimsh0.c so that it compiles using MSVC: "cl jimsh0.c" (check-in: f531825d user: drh tags: autosetup)
12:03
Fix the sqlite3(.EXE) build to honor --disable-amalgamation. (check-in: bd662227 user: stephan tags: autosetup)
11:20
Merge all the latest trunk enhancements into the autosetup branch. (check-in: d0554ac4 user: drh tags: autosetup)
11:11
Update the version number for the TEA extension. (check-in: 56353bcf user: drh tags: autosetup)
07:31
Various build cleanups centered around straightening out various uses of CFLAGS and its cousins. Teach Makefile.linux-generic to figure out the TOP dir on its own (a GNU Make-ism, but it's a Linux-specific makefile). (check-in: 58a0f7e7 user: stephan tags: autosetup)
05:33
More potentially-controversial makefile symbol renaming. This is simply more readable to my eyes. (check-in: 6d4d1d5f user: stephan tags: autosetup)
05:03
Bump version number to 3.48.0 (in this branch only - in trunk, doing so requires a specific autoconf version) and rename the RELEASE and VERSION makefile symbols for clarity's sake. (check-in: 4193d90f user: stephan tags: autosetup)
04:56
Potentially controversial/unconventional makefile symbol renamings and docs explaining them. (check-in: 7eceb753 user: stephan tags: autosetup)
04:34
Generic build cleanups. (check-in: be7b32a7 user: stephan tags: autosetup)
03:50
Get Makefile.linux-generic (formerly Makefile.linux-gcc) working with jimsh in out-of-tree builds. Pass on -DHAVE_READLINE=1 to the sqlite3 shell if configure detects it. (check-in: a555ff6d user: stephan tags: autosetup)
03:14
General make cleanups. Start adding a sanity-check mechanism to main.mk which does basic validation of the vars it expects to be set by the file which includes it. Get Makefile.linux-gcc working for the core-most rules. (check-in: 85b2c73c user: stephan tags: autosetup)
01:26
Rename some build vars for legibility. Fix hwaci-make-from-dot-in when the input file list is multi-line. (check-in: fdb58442 user: stephan tags: autosetup)
00:02
Fix out-of-tree builds configured with --disable-amalgamation. (check-in: 182dac1c user: stephan tags: autosetup)
2024-10-23
17:40
Remove unused configure check for clang-18. (check-in: d73ac728 user: stephan tags: autosetup)
17:17
Remove three autotools files which are not needed in the autosetup port. (check-in: fc208614 user: stephan tags: autosetup)
16:59
Fix a #define typo in jimsh0.c, eliminating the need to explicitly pass -DJIM_COMPAT when building it. This fix has since made its way upstream. (check-in: 9b105abf user: stephan tags: autosetup)
16:46
After compiling jimsh, run sanity tests on it to ensure that it is built with -DJIM_COMPAT and one of (-DHAVE_REALPATH, -DHAVE__FULLPATH). (check-in: ea6a14a6 user: stephan tags: autosetup)
16:03
Work around a minor JimTCL regexp incompatibility in tool/vdbe-compress.tcl. Summary: it thinks that backslash-escaped octal values are back-references, which it does not like. (check-in: aeac2335 user: stephan tags: autosetup)
15:13
Remove the configure-script VERSION check from tool/srctree-check.tcl, as it's not relevant in the autosetup build. (check-in: 6c5826d7 user: stephan tags: autosetup)
15:05
Add missing export of LDFLAGS_DLOPEN to Makefile.in. (check-in: d18af84b user: stephan tags: autosetup)
11:33
Reorder conditions in sqlite3PagerDirectReadOk() for coverage. (check-in: da9124fe user: drh tags: trunk)
02:36
Another fix for autosetup/autosetup-find-tclsh for the case where a tclsh is found on the system. (check-in: 19d78fce user: stephan tags: autosetup)
02:22
Latest autosetup/autosetup-find-tclsh from autosetup ticket #67. (check-in: 0e33f6cd user: stephan tags: autosetup)
02:17
Reorder some auto.def code to avoid breaking --help. (check-in: 151d7dfc user: stephan tags: autosetup)
02:11
Minor cleanups in the --with-wasi-sdk bits. (check-in: d952c179 user: stephan tags: autosetup)
01:59
Get auto.def handling the case that no tclsh is installed in a default location. If not, use jimsh if we can find realpath(), else bail out. (check-in: 359741bc user: stephan tags: autosetup)
01:33
Fix /dev/null and stderr redirection ordering in autosetup/autosetup-find-tclsh so that the extraneous strlcpy()/snprintf()/rand() warning output from ld on OpenBSD does not break detection of jimsh0. (check-in: cd447e50 user: stephan tags: autosetup)
01:18
Use pkg-config for readline detection, if available. Unrelated minor tcl cleanups. (check-in: 3a41ac08 user: stephan tags: autosetup)
2024-10-22
17:57
Minor build docs and cleanups. (check-in: 0eb96ea2 user: stephan tags: autosetup)
13:02
Minor cleanups to how configure generates tool/emcc.sh. (check-in: 4484b462 user: stephan tags: autosetup)
12:56
Teach ext/wasm/GNUmakefile to use tool/emcc.sh and fix a syntax error in tool/emcc.sh.in. Work around a JimTCL incompatibility in tool/mkshellc.tcl. (check-in: 24e0f6ec user: stephan tags: autosetup)
03:56
After discussing [4d4423df8d14] with Steve Bennett, do not prepend $prefix/bin to the search path for binaries, as that path is commonly used for cross-compiled targets and we want binaries which will run on the build host. (check-in: f2008a7d user: stephan tags: autosetup)
03:33
Touch configure-generated files at configure-time even if autosetup does not update them because their contents would not be changed. Works around wonky deps causing too-frequent rebuilds. (check-in: 339b48af user: stephan tags: autosetup)
03:12
Rename hwaci-error to the more descriptive hwaci-fatal. Use autosetup's file-isexec instead of [file executable] for portability. Remove the binary file lookup cache - unnecessary complexity. When searching for tools like tclsh, check under $prefix/bin before checking the $PATH. This seems like the right thing to do, but the fact that autosetup's file-search API's do not do that by default leaves some room for doubt about the wisdom of this change. (check-in: 4d4423df user: stephan tags: autosetup)
2024-10-21
22:15
Bring checksymbols target up to date and add a TODO based on a feature request from the forum. (check-in: c00a0325 user: stephan tags: autosetup)
21:32
Resolve two build FIXMEs. (check-in: 4de51c16 user: stephan tags: autosetup)
21:22
Get most of the numerous misc tool binaries building. (check-in: fa74cbb4 user: stephan tags: autosetup)
20:12
Simplify how the targets which may or may not be enabled, depending on config flags, are formulated in main.mk. (check-in: 7bea793c user: stephan tags: autosetup)
19:51
More build doc tweaks and get ./startup building. (check-in: cee28502 user: stephan tags: autosetup)
17:50
Start moving most Makefile.in docs over to main.mk. Fix compilation of tclsqlite.c. (check-in: 5b154e08 user: stephan tags: autosetup)
16:06
Add docs introducing how to define and use autosetup configure flags. Use -DJIM_COMPAT when building jimsh to force its expr command to be syntax-compatible with canonical TCL. (check-in: a6a275de user: stephan tags: autosetup)
13:11
Merge trunk into autosetup branch. (check-in: 347a50e6 user: stephan tags: autosetup)
10:47
Avoid using LIKE in sqlite3expert.c, in case "PRAGMA case_sensitive_like" has been used or the "like" UDF replaced by something unexpected. (check-in: 9f642b3d user: dan tags: trunk)
2024-10-20
02:47
Build doc touchups. (check-in: 109d441b user: stephan tags: autosetup)
02:35
A possible fix for some as-yet-unused configure code which looks for a module loader. (check-in: c6c799a5 user: stephan tags: autosetup)
01:41
Cosmetic tweaks to auto.def. (check-in: 476d2407 user: stephan tags: autosetup)
01:34
Minor doc updates. (check-in: 6578a8d5 user: stephan tags: autosetup)
01:14
Do not check for Emscripten when doing a --with-wasi-sdk build. (check-in: 111cff2c user: stephan tags: autosetup)
01:09
Generic build cleanups and reorgs. (check-in: 365a3d71 user: stephan tags: autosetup)
2024-10-19
20:53
More build cleanups and get it working with BSD make (which apparently does not support $<). (check-in: dcf4fc78 user: stephan tags: autosetup)
20:26
Move most of the makefile code into the static main.mk. (check-in: 09905ed0 user: stephan tags: autosetup)
18:31
Factor out all autosetup-processed @if/@else blocks from Makefile.in in prep for moving most of the makefile code into main.mk (which has, so far, been completely overlooked in this port but will now become the main basis for the static parts of the build). The idea is that all build configuration goes into a platform-dependent makefile which then includes main.mk. (check-in: 707e0f58 user: stephan tags: autosetup)
16:58
Generic build cleanups. (check-in: 510afccf user: stephan tags: autosetup)
13:51
Merge trunk into autosetup branch. (check-in: 2923a892 user: stephan tags: autosetup)
13:44
Get tool-zip target, and its prerequisites, building. (check-in: 38cc5db3 user: stephan tags: autosetup)
13:38
Add missing TEXE suffixes in the tool-zip makefile target. (check-in: 5a594dbc user: stephan tags: trunk)
13:19
Get more of the test/utility targets building. (check-in: 24c81c6c user: stephan tags: autosetup)
13:18
Work around a JimTCL regsub incompatibility in mkccode.tcl. (check-in: c2e5dd79 user: stephan tags: autosetup)
12:47
Get the spell-checking targets working. Rename some symbols. (check-in: e389ef9c user: stephan tags: autosetup)
00:49
Get mptest(er) building. (check-in: f740f6a4 user: stephan tags: autosetup)
2024-10-18
16:47
Remove the problematic dbfuzz2-asan/msan targets, which Richard says are not used anymore. (check-in: 503ce205 user: stephan tags: autosetup)
16:39
Get most of the fuzzing-related apps building, sans dbuzz2-asan/msan, both of which refuse to link with clang v18 because it's trying to use -lstdc++ despite the app being only C. (check-in: 3e843452 user: stephan tags: autosetup)
2024-10-17
22:20
Merge current trunk into the autosetup branch. (check-in: 352da23b user: stephan tags: autosetup)
22:19
General cleanups. Rename BTCL to BTCLSH for some clarity. (check-in: 83eaef7d user: stephan tags: autosetup)
12:14
Ensure that the OPFS VFS's xOpen() writes back the read-only flag to the output flags. Resolves the problem reported in forum post cf37d5ff1182c31081. (check-in: 0a326240 user: stephan tags: trunk)
2024-10-16
14:04
Get testfixture building. (check-in: 9a7e56a0 user: stephan tags: autosetup)
13:02
Merge trunk into this branch. (check-in: 9c3bb3dc user: stephan tags: autosetup)
11:05
Change the name of the new utility program from sqlite3-rsync to sqlite3_rsync - dash changed to underscore - for consistency with the preexisting sqlite3_analyzer. (check-in: 86e794cb user: drh tags: trunk)
2024-10-09
13:26
Add sqlite3rc.h build. (check-in: 8d5f99f7 user: stephan tags: autosetup)
13:20
More work on the tcl build parts. (check-in: 292ad7d5 user: stephan tags: autosetup)
08:05
Remove extra layer of quotes around install target dirs. (check-in: f2e3cf21 user: stephan tags: autosetup)
07:12
More work on the tcl build bits. (check-in: f00988a9 user: stephan tags: autosetup)
05:28
Generic build cleanups. (check-in: 2cd213b3 user: stephan tags: autosetup)
04:27
More work on the --with-tcl bits. (check-in: 4d4cc49b user: stephan tags: autosetup)
04:01
Get much of the --with-tcl-related bits working. (check-in: 4e4a7403 user: stephan tags: autosetup)
2024-10-08
16:33
Fix build portability problems discovered on an ARM OpenBSD system. (check-in: ef5348dc user: stephan tags: autosetup)
16:06
Get some basic install rules working. (check-in: e9ab211f user: stephan tags: autosetup)
16:05
Make tool/emcc.sh.in Bourne-friendly. (check-in: a69ab884 user: stephan tags: autosetup)
2024-10-05
12:06
Merge trunk into autosetup branch. (check-in: 6cbb05fd user: stephan tags: autosetup)