# the case of a default value.
########################################################################
set allFlags {
- # Structure: a list of M {Z}, where M is a descriptive option
- # group name and Z is a list of X Y pairs. X is a list of
- # $buildMode name(s) to which these flags apply, or {*} to apply
+ # Structure: a list of M {Z} pairs, where M is a descriptive
+ # option group name and Z is a list of X Y pairs. X is a list of
+ # $buildMode name(s) to which the Y flags apply, or {*} to apply
# to all builds. Y is a {block} in the form expected by
# autosetup's [options] command. Each block which is applicable
# to $buildMode is appended to a new list before that list is
# passed on to [options]. The order of each Y and sub-Y is
# retained, which is significant for rendering of --help.
- # When writing {help text blocks}, be aware that autosetup formats
- # them differently (left-aligned, directly under the --flag) if the
- # block starts with a newline. It does NOT expand vars and commands,
- # but we use a [subst] call below which will replace (only) var
- # refs.
+ # When writing {help text blocks}, be aware that:
+ #
+ # A) autosetup formats them differently if the {block} starts with
+ # a newline: it starts left-aligned, directly under the --flag, and
+ # the rest of the block is pasted verbatim rather than
+ # pretty-printed.
+ #
+ # B) Vars and commands are NOT expanded, but we use a [subst] call
+ # below which will replace (only) var refs.
+ # Options for how to build the library
build-modes {
{*} {
shared=1 => {Disable build of shared libary}
static=1 => {Disable build of static library (mostly)}
}
{canonical} {
- amalgamation=1 => {Disable the amalgamation and instead build all files separately.}
+ amalgamation=1 => {Disable the amalgamation and instead build all files separately}
}
}
+ # Library-level features and defaults
lib-features {
{*} {
threadsafe=1 => {Disable mutexing}
with-tempstore:=no => {Use an in-RAM database for temporary tables: never,no,yes,always}
largefile=1 => {Disable large file support}
+ # ^^^ It's not clear that this actually does anything, as
+ # HAVE_LFS is not checked anywhere in the .c/.h/.in files.
load-extension=1 => {Disable loading of external extensions}
math=1 => {Disable math functions}
json=1 => {Disable JSON functions}
}
}
+ # Options for TCL support
tcl {
{canonical} {
- with-tcl:DIR =>
- {Directory containing tclConfig.sh or a directory one level up from
- that, from which we can derive a directory containing tclConfig.sh.
- A dir name of "prefix" is equivalent to the directory specified by
- the --prefix flag.}
- with-tclsh:PATH =>
- {Full pathname of tclsh to use. It is used for (A) trying to find
- tclConfig.sh and (B) all TCL-based code generation. Warning: if
- its containing dir has multiple tclsh versions, it may select the
- wrong tclConfig.sh!}
- tcl=1 =>
- {Disable components which require TCL, including all tests.
- This tree requires TCL for code generation but can use the in-tree
- copy of autosetup/jimsh0.c for that. The SQLite TCL extension and the
- test code require a canonical tclsh.}
+ with-tcl:DIR
+ => {Directory containing tclConfig.sh or a directory one level up from
+ that, from which we can derive a directory containing tclConfig.sh.
+ A dir name of "prefix" is equivalent to the directory specified by
+ the --prefix flag.}
+ with-tclsh:PATH
+ => {Full pathname of tclsh to use. It is used for (A) trying to find
+ tclConfig.sh and (B) all TCL-based code generation. Warning: if
+ its containing dir has multiple tclsh versions, it may select the
+ wrong tclConfig.sh!}
+ tcl=1
+ => {Disable components which require TCL, including all tests.
+ This tree requires TCL for code generation but can use the in-tree
+ copy of autosetup/jimsh0.c for that. The SQLite TCL extension and the
+ test code require a canonical tclsh.}
}
}
+ # Options for line-editing modes for the CLI shell
line-editing {
{*} {
- readline=1 => {Disable readline support}
+ readline=1
+ => {Disable readline support}
# --with-readline-lib is a backwards-compatible alias for
# --with-readline-ldflags
with-readline-lib:
with-readline-ldflags:=auto
- => {Readline LDFLAGS, e.g. -lreadline -lncurses}
+ => {Readline LDFLAGS, e.g. -lreadline -lncurses}
# --with-readline-inc is a backwards-compatible alias for
# --with-readline-cflags.
with-readline-inc:
with-readline-cflags:=auto
- => {Readline CFLAGS, e.g. -I/path/to/includes}
+ => {Readline CFLAGS, e.g. -I/path/to/includes}
with-readline-header:PATH
- => {Full path to readline.h, from which --with-readline-cflags will be derived}
- with-linenoise:DIR => {Source directory for linenoise.c and linenoise.h}
- editline=0 => {Enable BSD editline support}
+ => {Full path to readline.h, from which --with-readline-cflags will be derived}
+ with-linenoise:DIR
+ => {Source directory for linenoise.c and linenoise.h}
+ editline=0
+ => {Enable BSD editline support}
}
}
+ # Options for ICU: International Components for Unicode
icu {
{*} {
with-icu-ldflags:LDFLAGS
- => {Enable SQLITE_ENABLE_ICU and add the given linker flags for the ICU libraries}
+ => {Enable SQLITE_ENABLE_ICU and add the given linker flags for the
+ ICU libraries}
with-icu-cflags:CFLAGS
- => {Apply extra CFLAGS/CPPFLAGS necessary for building with ICU. e.g. -I/usr/local/include}
- with-icu-config:=auto => {Enable SQLITE_ENABLE_ICU. Value must be one of: auto, pkg-config, /path/to/icu-config}
- icu-collations=0 => {Enable SQLITE_ENABLE_ICU_COLLATIONS. Requires --with-icu-ldflags=... or --with-icu-config}
+ => {Apply extra CFLAGS/CPPFLAGS necessary for building with ICU.
+ e.g. -I/usr/local/include}
+ with-icu-config:=auto
+ => {Enable SQLITE_ENABLE_ICU. Value must be one of: auto, pkg-config,
+ /path/to/icu-config}
+ icu-collations=0
+ => {Enable SQLITE_ENABLE_ICU_COLLATIONS. Requires --with-icu-ldflags=...
+ or --with-icu-config}
}
}
+ # Options for exotic/alternative build modes
alternative-builds {
{canonical} {
with-wasi-sdk:=/opt/wasi-sdk
- => {Top-most dir of the wasi-sdk for a WASI build}
- with-emsdk:=auto => {Top-most dir of the Emscripten SDK installation. Default = EMSDK env var.}
+ => {Top-most dir of the wasi-sdk for a WASI build}
+ with-emsdk:=auto
+ => {Top-most dir of the Emscripten SDK installation.
+ Default = EMSDK env var.}
}
}
- # Note that using the --debug/--enable-debug flag here requires patching
- # autosetup/autosetup to rename the --debug to --autosetup-debug.
+ # Options mostly for sqlite's own development
developer {
{*} {
+ # Note that using the --debug/--enable-debug flag here
+ # requires patching autosetup/autosetup to rename the --debug
+ # to --autosetup-debug.
with-debug=0
- debug=0 =>
- {Enable debug build flags. This option will impact performance by
- as much as 4x, as it includes large numbers of assert()s in
- performance-critical loops. Never use --debug for production
- builds.}
- scanstatus => {Enable the SQLITE_ENABLE_STMT_SCANSTATUS feature flag}
+ debug=0
+ => {Enable debug build flags. This option will impact performance by
+ as much as 4x, as it includes large numbers of assert()s in
+ performance-critical loops. Never use --debug for production
+ builds.}
+ scanstatus
+ => {Enable the SQLITE_ENABLE_STMT_SCANSTATUS feature flag}
}
{canonical} {
dev => {Enable dev-mode build: automatically enables certain other flags}
test-status => {Enable status of tests}
gcov=0 => {Enable coverage testing using gcov}
linemacros => {Enable #line macros in the amalgamation}
- dynlink-tools => {Dynamically link libsqlite3 to certain tools which normally statically embed it.}
+ dynlink-tools => {Dynamically link libsqlite3 to certain tools which normally statically embed it}
}
{*} {
dump-defines=0 => {Dump autosetup defines to $::sqliteConfig(dump-defines-txt) (for build debugging)}
}
}
+ # Options specifically for downstream package maintainers
packaging {
{*} {
# soname: https://sqlite.org/src/forumpost/5a3b44f510df8ded
- soname:=legacy =>
- {SONAME for libsqlite3.so. "none", or not using this flag, sets no
- soname. "legacy" sets it to its historical value of
- libsqlite3.so.0. A value matching the glob "libsqlite3.*" sets
- it to that literal value. Any other value is assumed to be a
- suffix which gets applied to "libsqlite3.so.",
- e.g. --soname=9.10 equates to "libsqlite3.so.9.10".
- }
- out-implib=0 =>
- {Enable use of --out-implib linker flag to generate an "import library" for the DLL}
+ soname:=legacy
+ => {SONAME for libsqlite3.so. "none", or not using this flag, sets no
+ soname. "legacy" sets it to its historical value of
+ libsqlite3.so.0. A value matching the glob "libsqlite3.*" sets
+ it to that literal value. Any other value is assumed to be a
+ suffix which gets applied to "libsqlite3.so.",
+ e.g. --soname=9.10 equates to "libsqlite3.so.9.10".}
+ # out-implib: https://sqlite.org/forum/forumpost/0c7fc097b2
+ out-implib=0
+ => {Enable use of --out-implib linker flag to generate an
+ "import library" for the DLL}
}
}
}; # $allOpts
+ # Filter allOpts to create the set of [options] legal for this build
set opts {}
- foreach {group XY} [subst -nobackslashes -nocommands [proj-strip-hash-comments $allFlags]] {
+ foreach {group XY} [subst -nobackslashes -nocommands \
+ [proj-strip-hash-comments $allFlags]] {
foreach {X Y} $XY {
if { $buildMode in $X || "*" in $X } {
foreach y $Y {
}
}
}
- #puts "options = $opts"
- #exit 0
+ #puts "options = $opts"; exit 0
options $opts
sqlite-post-options-init
}; # sqlite-config-bootstrap
# configure script with the same arguments it was initially invoked
# with. This can be used to automatically reconfigure
#
- proc squote {arg} {
+ set squote {{arg} {
# Wrap $arg in single-quotes if it looks like it might need that
# to avoid mis-handling as a shell argument. We assume that $arg
# will never contain any single-quote characters.
if {[string match {*[ &;$*"]*} $arg]} { return '$arg' }
return $arg
- }
- define-append SQLITE_AUTORECONFIG cd [squote $::autosetup(builddir)] && [squote $::autosetup(srcdir)/configure]
+ }}
+ define-append SQLITE_AUTORECONFIG cd [apply $squote $::autosetup(builddir)] \
+ && [apply $squote $::autosetup(srcdir)/configure]
#{*}$::autosetup(argv) breaks with --flag='val with spaces', so...
foreach arg $::autosetup(argv) {
- define-append SQLITE_AUTORECONFIG [squote $arg]
+ define-append SQLITE_AUTORECONFIG [apply $squote $arg]
}
- rename squote ""
}
define OPT_FEATURE_FLAGS {} ; # -DSQLITE_OMIT/ENABLE flags.
-C Rename\sa\sconfigure-internal\sfunction\sand\sfix\shandling\sof\s--dump-defines\sfor\sthe\sautoconf\sbundle.
-D 2025-02-11T17:22:07.963
+C Bring\sthe\s3.49\sbranch's\sconfigure-related\sfiles\sup\sto\spar\swith\sthe\scurrent\strunk.
+D 2025-02-13T14:45:47.956
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
F art/sqlite370.svg 40b7e2fe8aac3add5d56dd86ab8d427a4eca5bcb3fe4f8946cb3794e1821d531
-F auto.def 74ec59fbf7de5038aa9c3d0b1e0fea67e128e432ff9d84472c4016b08ec3d60b
+F auto.def 542572667678019e75e16c3e970bfb9358abed9a6ec70f3715997dd9a04b7fd9
F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
F autoconf/Makefile.in 7bd73a4c8cd89025cbc92b4f887c6fd1b8cd8ecbe62c4ac1f36ac84d04043479
F autoconf/Makefile.msc 0a071367537dc395285a5d624ac4f99f3a387b27cc5e89752423c0499e15aec4
F autoconf/README.first f1d3876e9a7852c22f275a6f06814e64934cecbc0b5b9617d64849094c1fd136
F autoconf/README.txt 7f01dc3915e2d68f329011073662369e62a0938a2c69398807823c57591cb288
-F autoconf/auto.def 1900a63cfa18e662b16d912c849ea81609a90b5fe00cea54955a41572e2c2cd0
+F autoconf/auto.def 9af634c6d51fa4b82c9bb61b51249ca087f2cbe09c7c3c31f920759082a1ffdb
F autoconf/tea/Makefile.in ba0556fee8da09c066bad85a4457904e46ee2c2eabaa309c0e83a78f2f151a8e
F autoconf/tea/README.txt 61e62e519579e4a112791354d6d440f8b51ea6db3b0bab58d59f29df42d2dfe3
F autoconf/tea/aclocal.m4 52c47aac44ce0ddb1f918b6993e8beb8eee88f43
F autosetup/jimsh0.c 6573f6bc6ff204de0139692648d7037ca0b6c067bac83a7b4e087f20a86866a4
F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
F autosetup/proj.tcl 42119a2e899e319b92f3159952b7ef7219c82cb45eeb636aaf8d909def8150f8
-F autosetup/sqlite-config.tcl 40107b6a75a2ee367359b2adeb2221e118f5dfa6f10b0a0c0f237fc59fbedef3
+F autosetup/sqlite-config.tcl ece913b7bb1efbabdd44fd787c0e4d2fd462d3019cc079a5e6bbe43c83d302b3
F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9
F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x
F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 5a964bf3d8311f79d812a93e76a00f8a2a62e73b737b27a1552f7169c93fc1e5
-Q +6aa54cc180e034a10d8fc8f8b0c13d7bc0c94509b4240ac855121d501853768f
-R 4fd3ec570b9e04e409e4fa94c4c3b8d1
+P 3f539d81576068f37fbd548cca384bc1ac3dfd9049354d128aea8050c694b2f7
+Q +6df859cd18ded3ca64a184e45709503dd9b6a3f65e7611d3352f0bad288400f4
+Q +da94e551c0ed354ae782c89fd9495d607b77ad7572d90c41ceac12bd6ec4c31b
+R f6bddac48350d8f85b169c44e8e32880
U stephan
-Z 622f2c24c2bfe1de3145158164c2a8f0
+Z 361a40d2f4e53d288ce23f54980ead79
# Remove this line to create a well-formed Fossil manifest.