Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
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 andcross-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.
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: d8c0e01842 user: drh tags: trunk) | |
14:36 | Restore the amalgamation-tarball and snapshot-tarball targets, at least for now. (Closed-Leaf check-in: 1baf4b9488 user: drh tags: autosetup) | |
13:56 | Minor auto.def cleanups and doc addtions. (check-in: ea53aba82b user: stephan tags: autosetup) | |
12:22 | New jimsh0.c file for autosetup. (check-in: cfacf86411 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: deb5994bb1 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: e0286e258b 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: 131a2a7ef8 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: 0f2555ea3c user: stephan tags: autosetup) | |
04:16 | Internal cleanups and docs in hwaci-common.tcl. (check-in: 30699b57d2 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: 0d5da3888e 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: ce6bc4603c 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: 800b083c3a 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: 9f861f66e2 user: drh tags: autosetup) | |
19:17 | Basic builds now appear to work using jimsh0 on Windows. (check-in: d8f5193970 user: drh tags: autosetup) | |
17:16 | Fix a bug in jimsh0.c for when it is compiled using MSVC. (check-in: f7def0be74 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: 61f18c9618 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: 7e7b3b2edb user: drh tags: autosetup) | |
15:14 | Add the tool/cp.tcl script and use it to simplify Makefile.msc. (check-in: b7db2146a8 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: b063317352 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: e911303b8d user: drh tags: autosetup) | |
12:57 | Minor makefile tweaks to account for customizations via a custom hand-built makefile. (check-in: 7f92e820e6 user: stephan tags: autosetup) | |
12:18 | Fix jimsh0.c so that it compiles using MSVC: "cl jimsh0.c" (check-in: f531825d4e user: drh tags: autosetup) | |
12:03 | Fix the sqlite3(.EXE) build to honor --disable-amalgamation. (check-in: bd66222721 user: stephan tags: autosetup) | |
11:20 | Merge all the latest trunk enhancements into the autosetup branch. (check-in: d0554ac468 user: drh tags: autosetup) | |
11:11 | Update the version number for the TEA extension. (check-in: 56353bcffa 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: 58a0f7e79c user: stephan tags: autosetup) | |
05:33 | More potentially-controversial makefile symbol renaming. This is simply more readable to my eyes. (check-in: 6d4d1d5fef 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: 4193d90f21 user: stephan tags: autosetup) | |
04:56 | Potentially controversial/unconventional makefile symbol renamings and docs explaining them. (check-in: 7eceb7539d user: stephan tags: autosetup) | |
04:34 | Generic build cleanups. (check-in: be7b32a77f 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: a555ff6dbc 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: 85b2c73ccb 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: fdb5844215 user: stephan tags: autosetup) | |
00:02 | Fix out-of-tree builds configured with --disable-amalgamation. (check-in: 182dac1c46 user: stephan tags: autosetup) | |
2024-10-23
| ||
17:40 | Remove unused configure check for clang-18. (check-in: d73ac7286a user: stephan tags: autosetup) | |
17:17 | Remove three autotools files which are not needed in the autosetup port. (check-in: fc20861443 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: 9b105abf6f 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: ea6a14a6e6 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: aeac23359b 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: 6c5826d752 user: stephan tags: autosetup) | |
15:05 | Add missing export of LDFLAGS_DLOPEN to Makefile.in. (check-in: d18af84bf7 user: stephan tags: autosetup) | |
11:33 | Reorder conditions in sqlite3PagerDirectReadOk() for coverage. (check-in: da9124fee2 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: 19d78fcef4 user: stephan tags: autosetup) | |
02:22 | Latest autosetup/autosetup-find-tclsh from autosetup ticket #67. (check-in: 0e33f6cd48 user: stephan tags: autosetup) | |
02:17 | Reorder some auto.def code to avoid breaking --help. (check-in: 151d7dfc8d user: stephan tags: autosetup) | |
02:11 | Minor cleanups in the --with-wasi-sdk bits. (check-in: d952c17981 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: 359741bc76 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: cd447e50d1 user: stephan tags: autosetup) | |
01:18 | Use pkg-config for readline detection, if available. Unrelated minor tcl cleanups. (check-in: 3a41ac08a4 user: stephan tags: autosetup) | |
2024-10-22
| ||
17:57 | Minor build docs and cleanups. (check-in: 0eb96ea2d1 user: stephan tags: autosetup) | |