The SQLite team is migrating the next release to use Autosetup instead of GNU Autotools and warns that although little will change for most users, “some build-level breakage is unavoidable,” because of differences between the tools and the wide variety of configurations used by automated build processes.
The purpose of these tools is to configure a build correctly for the local environment and with customization via compile-time options according to the developer’s requirements. The output includes a makefile which contains the tasks to be executed when the project is built using the make utility.
Many open source projects use GNU Autotools, but the SQLite developers identified several advantages in using Autosetup, created by embedded Linux consultant Steve Bennett. Autosetup is driven by TCL, a high level interpreted language, whereas GNU Autoconf generates shell scripts using GNU M4, a macro processor. This makes Autosetup build files easier to maintain thanks to the “comparatively user-friendly TCL.”
Another point in favour of Autosetup is that all its files are maintained in the SQLite source tree, whereas GNT Autotools are an external dependency. Autosetup is already used by Fossil SCM, the software configuration manager created by Dr D Richard Hipp, who also developed SQLite.
According to the official post from Fossil contributor Stephan Beal about the migration, “for those of you who simply run ‘./configure && make’, very little, if anything, will change.” That said, Autotools is not fully compatible with Autoconf. An example is that SQLite’s –enable-tempstore option has to become –with-tempstore in Autosetup, where –enable has a special meaning.
The biggest issue is not with developers building SQLite as a standalone tool, but rather with automated build processes where SQLite is embedded in another project. It is likely that reconfiguration will be needed in some cases.
Another problem is that Autosetup does not run on as many platforms as Autoconf, which will impact “more obscure target platforms” including BlackBerrry QNX. The team proposes that “a fallback option would be to provide static makefiles for such platforms, similar to how is currently done for Windows platforms.”
The migration shows the willingness of Hipp’s SQLite team not to follow the mainstream. Hipp is a Git sceptic and glad to use Fossil for source code management. According to Beal, “one of Richard’s philosophies is ‘freedom means being able to take care of yourself,’ and that philosophy permeates all of his software projects, which eschew external dependencies because every single one reduces the project’s level of freedom … to the point of sometimes reinventing the wheel to extreme degrees (like implementing his own SCM).”
Dropping Autoconf in favor of a lesser-known but in his view superior tool is in character.