- **`file-isexec filename`**\
Should be used in place of `[file executable]`, as it will also
check for `${filename}.exe` on Windows platforms. However, on such
- platforms is also assumes that _any_ existing file is executable.
+ platforms it also assumes that _any_ existing file is executable.
- **`get-env VAR ?default?`**\
- Will fetch an "environment variable"
- from the first of either: (1) a KEY=VALUE passed to the configure
- script or (2) the system's environment variables. Not to be confused
- with `getenv`, which only does the latter and is rarely, if ever,
- useful in this tree.
+ Will fetch an "environment variable" from the first of either: (1) a
+ KEY=VALUE passed to the configure script or (2) the system's
+ environment variables. Not to be confused with `getenv`, which only
+ does the latter and is rarely, if ever, useful in this tree.
- **`proj-get-env VAR ?default?`**\
Works like `get-env` but will, if that function finds no match,
look for a file named `./.env-$VAR` and, if found, return its
- **`define-for-opt flag defineName ?checkingMsg? ?yesVal=1? ?noVal=0?`**\
`[define $defineName]` to either `$yesVal` or `$noVal`, depending on
whether `--$flag` is truthy or not. `$checkingMsg` is a
- human-readable description of the check being made, e.g. "enable foo
- bar baz?" If no `checkingMsg` is provided, the operation is silent.\
+ human-readable description of the check being made, e.g. "enable foo?"
+ If no `checkingMsg` is provided, the operation is silent.\
Potential TODO: change the final two args to `-yes` and `-no`
flags. They're rarely needed, though: search [auto.def][] for
`TSTRNNR_OPTS` for an example of where they are used.
(described below).
- **`sqlite-add-feature-flag ?-shell? FLAG...`**\
- Adds the given feature flag to the CFLAGS which are specific to building
- the library. It's intended to be passed one or more `-DSQLITE_ENABLE_...`,
- or similar, flags. If the `-shell` flag is used then it also passes
- its arguments to `sqlite-add-shell-opt`. This is a no-op if `FLAG`
- is not provided or is empty.
+ Adds the given feature flag to the CFLAGS which are specific to
+ building libsqlite3. It's intended to be passed one or more
+ `-DSQLITE_ENABLE_...`, or similar, flags. If the `-shell` flag is
+ used then it also passes its arguments to
+ `sqlite-add-shell-opt`. This is a no-op if `FLAG` is not provided or
+ is empty.
- **`sqlite-add-shell-opt FLAG...`**\
- The shell-specific counterpart of `sqlite-add-feature-flag`.
+ The shell-specific counterpart of `sqlite-add-feature-flag` which
+ only adds the given flag(s) to the CLI-shell-specific CFLAGS.
- **`user-notice msg`**\
Queues `$msg` to be sent to stderr, but does not emit it until
its resulting "yes/no/whatever" message in such a way as to not
spoil the layout of such messages.
+
<a name="tclcompat"></a>
Ensuring TCL Compatibility
========================================================================
before looking for a system-level `tclsh`. Be aware, though, that
`make distclean` will remove that file.
-**Note that `jimsh0` is distinctly different** from the `jimsh` which
-gets built for code-generation purposes. The latter requires
+**Note that `jimsh0` is distinctly different from the `jimsh`** which
+gets built for code-generation purposes. The latter requires
non-default build flags to enable features which are
platform-dependent, most notably to make its `[file normalize]` work.
This means, for example, that the configure script and its utility
-APIs must not use `[file normalize]`, but autosetup provides a TCL
-implementation of `[file-normalize]` (note the dash) for portable use
-in the configure script.
+APIs must not use `[file normalize]`, but autosetup provides a
+TCL-only implementation of `[file-normalize]` (note the dash) for
+portable use in the configure script.
<a name="conventions"></a>
Historically, the project's makefile has exclusively used
`UPPER_UNDERSCORE` form for makefile variables. This build, however,
primarily uses `X.y` format, where `X` is often a category label,
-e.g. `CFLAGS` and `y` is the specific instance of that category,
+e.g. `CFLAGS`, and `y` is the specific instance of that category,
e.g. `CFLAGS.readline`.
When the configure script exports flags for consumption by filtered
_after_ the test for zlib because the results of the `-rpath` test
implicitly modified global state which broke the zlib feature
test. Because the feature tests no longer (intentionally) modify
- global state, that is not an issue.)
+ shared global state, that is not an issue.)
In this build, cases where feature tests modify global state in such a
way that it may impact later feature tests are either (A) very
```
Unless the upgrade made any incompatible changes (which is exceedingly
-rare), that's all there is to it. Then **apply a patch for the change
-described in the following section**, test the configure process, and
-check it in.
+rare), that's all there is to it. After that's done, **apply a patch
+for the change described in the following section**, test the
+configure process, and check it in.
<a name="patching"></a>
Patching Autosetup for Project-local Changes
[](/file/autosetup/autosetup), as demonstrated in [check-in
3296c8d3](/info/3296c8d3).
+If autosetup is upgraded and this patch is _not_ applied the invoking
+`./configure` will fail loudly because of the declaration of the
+`debug` flag in `auto.def` - duplicated flags are not permitted.
[Autosetup]: https://msteveb.github.io/autosetup/
-C Configure\sscript\sdoc\supdates\sand\scleanups.\sSkip\scheck\sfor\sEMSDK\swhen\sdoing\san\sout-of-tree\sbuild,\sas\sext/wasm\sdoes\snot\ssupport\sthat\sbuild\smode.
-D 2024-11-28T16:14:19.067
+C Typo\sfixes\sand\scleanups\sin\sautosetup/README.md.
+D 2024-11-28T20:46:51.863
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
F autoconf/tea/win/targets.vc 96a25a1fa6e9e9cfb348fd3760a5395b4ce8acafc8ed10f0412937ec200d5dbd
F autosetup/LICENSE 41a26aebdd2cd185d1e2b210f71b7ce234496979f6b35aef2cbf6b80cbed4ce4
F autosetup/README.autosetup a78ff8c4a3d2636a4268736672a74bf14a82f42687fcf0631a70c516075c031e
-F autosetup/README.md 083b4417637f134875709dfa8ca149ce9b3634725b65e0f7d9b96f2bf56caa3a
+F autosetup/README.md 1a02f5a94fd460eb7ffc8dea5d6f1657e38ddf8ffa2d6c5dce9a630b97021a69
F autosetup/autosetup df8b53928b1fe3c67db5bc77c8e1eb8160c1b6a26c370e9a06c68748f803b7e4 x
F autosetup/autosetup-config.guess dfa101c5e8220e864d5e9c72a85e87110df60260d36cb951ad0a85d6d9eaa463 x
F autosetup/autosetup-config.sub a38fb074d0dece01cf919e9fb534a26011608aa8fa606490864295328526cd73 x
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 4976ac717bec2f2c89d94ac1d9b96afd1da573ba34e3c78637c3937287635e72
-R dfe7e573ed6abcbcf47ed2c31d6d6772
+P 9d2f4148db1641e9bf2989c2b1adf5b9dcb2b123526ecacd063bca208b3c36cf
+R 51f81e989696c60babea027477d55ce3
U stephan
-Z 69e72e81037eeb2ecac489de03503f03
+Z b5c978735ffc965433e9d3c2347bdbb9
# Remove this line to create a well-formed Fossil manifest.