Add autosetup/README.md - maintenance-related docs for SQLite developers (e.g. how to update autosetup). Start marking up the proj.tcl APIs with autosetup's doc markup so that they appear in the ./configure --reference output.
FossilOrigin-Name: aa6213767f0d7e63c753e33aadb95cbeb8e522c22f2fe1bbfa4df66bea6e3380
This commit is contained in:
parent
e957bd1ce7
commit
4c2f7e57a2
3
auto.def
3
auto.def
@ -939,6 +939,9 @@ proc sqlite-check-line-editing {} {
|
|||||||
# If we found a library, configure the build to use it...
|
# If we found a library, configure the build to use it...
|
||||||
if {"" ne $rlLib} {
|
if {"" ne $rlLib} {
|
||||||
if {"editline" eq $editLibName && "HAVE_READLINE" eq $editLibDef} {
|
if {"editline" eq $editLibName && "HAVE_READLINE" eq $editLibDef} {
|
||||||
|
# Alert the user that, despite outward appearances, we won't be
|
||||||
|
# linking to the GPL'd libreadline. Presumably that distinction is
|
||||||
|
# significant for those using --editline.
|
||||||
proj-indented-notice {
|
proj-indented-notice {
|
||||||
NOTE: the local libedit but uses <readline/readline.h> so we
|
NOTE: the local libedit but uses <readline/readline.h> so we
|
||||||
will compile with -DHAVE_READLINE=1 but will link with
|
will compile with -DHAVE_READLINE=1 but will link with
|
||||||
|
164
autosetup/README.md
Normal file
164
autosetup/README.md
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
Maintaining Autosetup in the SQLite Tree
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
This document provides some tips and reminders for the SQLite
|
||||||
|
developers regarding using and maintaining the [Autosetup][]-based
|
||||||
|
build infrastructure. It is not an [Autosetup][] reference.
|
||||||
|
|
||||||
|
**Table of Contents**:
|
||||||
|
|
||||||
|
- [Autosetup API Reference](#apiref)
|
||||||
|
- [API Tips](#apitips)
|
||||||
|
- [Ensuring TCL Compatibility](#tclcompat)
|
||||||
|
- [Updating Autosetup](#updating)
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
<a name="apiref"></a>
|
||||||
|
Autosetup API Reference
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
The Autosetup API is quite extensive and can be read either in
|
||||||
|
the [files in the `autosetup` dir](/dir/autosetup) or using:
|
||||||
|
|
||||||
|
>
|
||||||
|
```
|
||||||
|
$ ./configure --reference | less
|
||||||
|
```
|
||||||
|
|
||||||
|
That will include any docs from any TCL files in the `./autosetup` dir
|
||||||
|
which contain certain (simple) markup defined by autosetup.
|
||||||
|
|
||||||
|
This project's own autosetup-related APIs are in [proj.tcl][] or
|
||||||
|
[auto.def][]. The former contains helper APIs which are, more or
|
||||||
|
less, portable across projects (that file is re-used as-is in other
|
||||||
|
projects) and all have a `proj-` name prefix. The latter is the main
|
||||||
|
configure script driver and contains related functions which are
|
||||||
|
specific to this tree.
|
||||||
|
|
||||||
|
<a name="apitips"></a>
|
||||||
|
Autosetup API Tips
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
This section briefly covers only APIs which are frequently useful in
|
||||||
|
day-to-day maintenance and might not be immediately recognized as such
|
||||||
|
obvious from a casual perusal of `auto.def`. Their complete docs can be
|
||||||
|
found in [proj.tcl][].
|
||||||
|
|
||||||
|
In (mostly) alphabetical order:
|
||||||
|
|
||||||
|
- **`get-env VAR ?default?`**\
|
||||||
|
Will fetch an "environment variable"
|
||||||
|
from the first of either: (A) a KEY=VALUE passed to the configure
|
||||||
|
script or (B) 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
|
||||||
|
trimmed contents. This can be used, e.g., to set a developer's
|
||||||
|
local preferences for the default `CFLAGS`.
|
||||||
|
|
||||||
|
- **`proj-define-if-opt-truthy flag defineName checkingMsg ?yesVal=1? ?noVal=0?`**\
|
||||||
|
Defines `defineName` to either `yesVal` or `noVal`, depending on
|
||||||
|
whether `--flag` is truthy or not.
|
||||||
|
|
||||||
|
- **`proj-if-opt-truthy flag thenScript ?elseScript?`**\
|
||||||
|
Evals `thenScript` if the given `--flag` is truthy, else it
|
||||||
|
evals the optional `elseScript`.
|
||||||
|
|
||||||
|
- **`proj-indented-notice ?-error? msg`**\
|
||||||
|
Breaks its `msg` argument into lines, trims them, and emits them
|
||||||
|
with consistent indentation. If the `-error` flag is used, it them
|
||||||
|
exits with non-0. This will stick out starkly from normal output
|
||||||
|
and is intended to be used only for important notices.
|
||||||
|
|
||||||
|
- **`proj-opt-truthy flag`**\
|
||||||
|
Returns 1 if `--flag`'s value is "truthy," i.e. one of (1, on,
|
||||||
|
enabled, yes).
|
||||||
|
|
||||||
|
- **`proj-opt-was-provided FLAG`**\
|
||||||
|
Returns 1 if `--FLAG` was explicitly provided to configure,
|
||||||
|
else 0. This distinction can be used to determine, e.g., whether
|
||||||
|
`--with-readline` was provided or whether we're searching for
|
||||||
|
readline by default. In the former case, failure to find it should
|
||||||
|
be treated as fatal.
|
||||||
|
|
||||||
|
- **`proj-val-truthy value`**\
|
||||||
|
Returns 1 if `$value` is "truthy," i.e. one of (1, on, enabled,
|
||||||
|
yes).
|
||||||
|
|
||||||
|
|
||||||
|
<a name="tclcompat"></a>
|
||||||
|
Ensuring TCL Compatibility
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
It is important that any TCL files used by the configure process
|
||||||
|
remain compatible with both [JimTCL][] and the canonical TCL. Though
|
||||||
|
JimTCL has outstanding compatibility with canonical TCL, it does have
|
||||||
|
a few corners with incompatibilities, e.g. regular expressions. If a
|
||||||
|
script runs in JimTCL without using any JimTCL-specific features, then
|
||||||
|
it's a certainty that it will run in canonical TCL as well. The
|
||||||
|
opposite, however, is not _always_ the case.
|
||||||
|
|
||||||
|
By default, the configure script will search for an available `tclsh`
|
||||||
|
(under several common names, e.g. `tclsh8.6`) before falling back to
|
||||||
|
compiling the copy of `jimsh0.c` included in the source tree.
|
||||||
|
|
||||||
|
There are two simple ways to ensure that the configure process uses
|
||||||
|
JimTCL instead of the canonical `tclsh`, and either approach ensures
|
||||||
|
configure script compatibility:
|
||||||
|
|
||||||
|
1. Build on a system with no `tclsh` installed. In that case, the
|
||||||
|
configure process will fall back to building the in-tree copy of
|
||||||
|
JimTCL.
|
||||||
|
|
||||||
|
2. Manually build `./jimsh0` in the top of the checkout with:\
|
||||||
|
`cc -o jimsh0 autosetup/jimsh0.c`\
|
||||||
|
With that in place, the configure script will prefer to use that
|
||||||
|
before looking for a system-level `tclsh`. Note 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
|
||||||
|
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.
|
||||||
|
|
||||||
|
<a name="updating"></a>
|
||||||
|
Updating Autosetup
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
Updating autosetup is, more often than not, painless. It requires having
|
||||||
|
a checked-out copy of [the autosetup git repository][autosetup-git]:
|
||||||
|
|
||||||
|
>
|
||||||
|
```
|
||||||
|
$ git clone https://github.com/msteveb/autosetup
|
||||||
|
$ cd autosetup
|
||||||
|
# Or, if it's already checked out:
|
||||||
|
$ git pull
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, from the top-most directory of an SQLite checkout:
|
||||||
|
|
||||||
|
>
|
||||||
|
```
|
||||||
|
$ /path/to/autosetup-checkout/autosetup --install .
|
||||||
|
$ fossil status # show the modified files
|
||||||
|
```
|
||||||
|
|
||||||
|
Unless the upgrade made any incompatible changes (which is exceedingly
|
||||||
|
rare), that's all there is to it. Check over the diff, test the
|
||||||
|
configure process, and check it in.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Autosetup]: https://msteveb.github.io/autosetup/
|
||||||
|
[auto.def]: ../auto.def?mimetype=text/plain
|
||||||
|
[autosetup-git]: https://github.com/msteveb/autosetup
|
||||||
|
[proj.tcl]: ./proj.tcl?mimetype=text/plain
|
||||||
|
[JimTCL]: https://jim.tcl.tk
|
@ -47,15 +47,26 @@
|
|||||||
# updating global state via feature tests.
|
# updating global state via feature tests.
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
# ----- @module proj.tcl -----
|
||||||
|
# @section Project Helper APIs
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# $proj_ is an internal-use-only array for storing whatever generic
|
# $proj_ is an internal-use-only array for storing whatever generic
|
||||||
# internal stuff we need stored.
|
# internal stuff we need stored.
|
||||||
array set proj_ {}
|
array set proj_ {}
|
||||||
set proj_(isatty) [isatty? stdout]
|
set proj_(isatty) [isatty? stdout]
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# @proj-warn msg
|
||||||
|
#
|
||||||
|
# Emits a warning message to stderr.
|
||||||
proc proj-warn {msg} {
|
proc proj-warn {msg} {
|
||||||
puts stderr [proj-bold "WARNING: $msg"]
|
puts stderr [proj-bold "WARNING: $msg"]
|
||||||
}
|
}
|
||||||
|
########################################################################
|
||||||
|
# @proj-error msg
|
||||||
|
#
|
||||||
|
# Emits an error message to stderr and exits with non-0.
|
||||||
proc proj-fatal {msg} {
|
proc proj-fatal {msg} {
|
||||||
show-notices
|
show-notices
|
||||||
puts stderr [proj-bold "ERROR: $msg"]
|
puts stderr [proj-bold "ERROR: $msg"]
|
||||||
@ -63,6 +74,8 @@ proc proj-fatal {msg} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-assert script
|
||||||
|
#
|
||||||
# Kind of like a C assert if uplevel (eval) of $script is false,
|
# Kind of like a C assert if uplevel (eval) of $script is false,
|
||||||
# triggers a fatal error.
|
# triggers a fatal error.
|
||||||
proc proj-assert {script} {
|
proc proj-assert {script} {
|
||||||
@ -75,6 +88,8 @@ proc proj-assert {script} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-bold str
|
||||||
|
#
|
||||||
# If this function believes that the current console might support
|
# If this function believes that the current console might support
|
||||||
# ANSI escape sequences then this returns $str wrapped in a sequence
|
# ANSI escape sequences then this returns $str wrapped in a sequence
|
||||||
# to bold that text, else it returns $str as-is.
|
# to bold that text, else it returns $str as-is.
|
||||||
@ -86,6 +101,8 @@ proc proj-bold {str} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-indented-notice ?-error? msg
|
||||||
|
#
|
||||||
# Takes a multi-line message and emits it with consistent indentation
|
# Takes a multi-line message and emits it with consistent indentation
|
||||||
# using [user-notice] (which means its rendering will (A) go to stderr
|
# using [user-notice] (which means its rendering will (A) go to stderr
|
||||||
# and (B) be delayed until the next time autosetup goes to output a
|
# and (B) be delayed until the next time autosetup goes to output a
|
||||||
@ -162,6 +179,8 @@ proc proj-check-function-in-lib {function libs {otherlibs {}}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-search-for-header-dir ?-dirs LIST? ?-subdirs LIST? header
|
||||||
|
#
|
||||||
# Searches for $header in a combination of dirs and subdirs, specified
|
# Searches for $header in a combination of dirs and subdirs, specified
|
||||||
# by the -dirs {LIST} and -subdirs {LIST} flags (each of which have
|
# by the -dirs {LIST} and -subdirs {LIST} flags (each of which have
|
||||||
# sane defaults). Returns either the first matching dir or an empty
|
# sane defaults). Returns either the first matching dir or an empty
|
||||||
@ -193,7 +212,7 @@ proc proj-search-for-header-dir {header args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Usage: proj-find-executable-path ?-v? binaryName
|
# @proj-find-executable-path ?-v? binaryName
|
||||||
#
|
#
|
||||||
# Works similarly to autosetup's [find-executable-path $binName] but:
|
# Works similarly to autosetup's [find-executable-path $binName] but:
|
||||||
#
|
#
|
||||||
@ -220,6 +239,8 @@ proc proj-find-executable-path {args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-bin-define binName ?defName?
|
||||||
|
#
|
||||||
# Uses [proj-find-executable-path $binName] to (verbosely) search for
|
# Uses [proj-find-executable-path $binName] to (verbosely) search for
|
||||||
# a binary, sets a define (see below) to the result, and returns the
|
# a binary, sets a define (see below) to the result, and returns the
|
||||||
# result (an empty string if not found).
|
# result (an empty string if not found).
|
||||||
@ -237,7 +258,7 @@ proc proj-bin-define {binName {defName {}}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Usage: proj-first-bin-of bin...
|
# @proj-first-bin-of bin...
|
||||||
#
|
#
|
||||||
# Looks for the first binary found of the names passed to this
|
# Looks for the first binary found of the names passed to this
|
||||||
# function. If a match is found, the full path to that binary is
|
# function. If a match is found, the full path to that binary is
|
||||||
@ -262,6 +283,8 @@ proc proj-first-bin-of {args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-opt-was-provided key
|
||||||
|
#
|
||||||
# Returns 1 if the user specifically provided the given configure
|
# Returns 1 if the user specifically provided the given configure
|
||||||
# flag, else 0. This can be used to distinguish between options which
|
# flag, else 0. This can be used to distinguish between options which
|
||||||
# have a default value and those which were explicitly provided by the
|
# have a default value and those which were explicitly provided by the
|
||||||
@ -281,6 +304,8 @@ proc proj-opt-was-provided {key} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-opt-set flag ?val?
|
||||||
|
#
|
||||||
# Force-set autosetup option $flag to $val. The value can be fetched
|
# Force-set autosetup option $flag to $val. The value can be fetched
|
||||||
# later with [opt-val], [opt-bool], and friends.
|
# later with [opt-val], [opt-bool], and friends.
|
||||||
#
|
#
|
||||||
@ -297,6 +322,8 @@ proc proj-opt-set {flag {val 1}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-val-truthy val
|
||||||
|
#
|
||||||
# Returns 1 if $val appears to be a truthy value, else returns
|
# Returns 1 if $val appears to be a truthy value, else returns
|
||||||
# 0. Truthy values are any of {1 on enabled yes}
|
# 0. Truthy values are any of {1 on enabled yes}
|
||||||
proc proj-val-truthy {val} {
|
proc proj-val-truthy {val} {
|
||||||
@ -304,6 +331,8 @@ proc proj-val-truthy {val} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-opt-truthy flag
|
||||||
|
#
|
||||||
# Returns 1 if [opt-val $flag] appears to be a truthy value or
|
# Returns 1 if [opt-val $flag] appears to be a truthy value or
|
||||||
# [opt-bool $flag] is true. See proj-val-truthy.
|
# [opt-bool $flag] is true. See proj-val-truthy.
|
||||||
proc proj-opt-truthy {flag} {
|
proc proj-opt-truthy {flag} {
|
||||||
@ -317,6 +346,8 @@ proc proj-opt-truthy {flag} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-if-opt-truthy boolFlag thenScript ?elseScript?
|
||||||
|
#
|
||||||
# If [proj-opt-truthy $flag] is true, eval $then, else eval $else.
|
# If [proj-opt-truthy $flag] is true, eval $then, else eval $else.
|
||||||
proc proj-if-opt-truthy {boolFlag thenScript {elseScript {}}} {
|
proc proj-if-opt-truthy {boolFlag thenScript {elseScript {}}} {
|
||||||
if {[proj-opt-truthy $boolFlag]} {
|
if {[proj-opt-truthy $boolFlag]} {
|
||||||
@ -327,6 +358,8 @@ proc proj-if-opt-truthy {boolFlag thenScript {elseScript {}}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-define-if-opt-truthy flag def ?msg? ?iftrue? ?iffalse?
|
||||||
|
#
|
||||||
# If [proj-opt-truthy $flag] then [define $def $iftrue] else [define
|
# If [proj-opt-truthy $flag] then [define $def $iftrue] else [define
|
||||||
# $def $iffalse]. If $msg is not empty, output [msg-checking $msg] and
|
# $def $iffalse]. If $msg is not empty, output [msg-checking $msg] and
|
||||||
# a [msg-results ...] which corresponds to the result. Returns 1 if
|
# a [msg-results ...] which corresponds to the result. Returns 1 if
|
||||||
@ -354,7 +387,7 @@ proc proj-define-if-opt-truthy {flag def {msg ""} {iftrue 1} {iffalse 0}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Args: [-v] optName defName {descr {}}
|
# @proj-opt-define-bool ?-v? optName defName ?descr?
|
||||||
#
|
#
|
||||||
# Checks [proj-opt-truthy $optName] and calls [define $defName X]
|
# Checks [proj-opt-truthy $optName] and calls [define $defName X]
|
||||||
# where X is 0 for false and 1 for true. descr is an optional
|
# where X is 0 for false and 1 for true. descr is an optional
|
||||||
@ -392,6 +425,8 @@ proc proj-opt-define-bool {args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-check-module-loader
|
||||||
|
#
|
||||||
# Check for module-loading APIs (libdl/libltdl)...
|
# Check for module-loading APIs (libdl/libltdl)...
|
||||||
#
|
#
|
||||||
# Looks for libltdl or dlopen(), the latter either in -ldl or built in
|
# Looks for libltdl or dlopen(), the latter either in -ldl or built in
|
||||||
@ -455,6 +490,8 @@ proc proj-check-module-loader {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-no-check-module-loader
|
||||||
|
#
|
||||||
# Sets all flags which would be set by proj-check-module-loader to
|
# Sets all flags which would be set by proj-check-module-loader to
|
||||||
# empty/falsy values, as if those checks had failed to find a module
|
# empty/falsy values, as if those checks had failed to find a module
|
||||||
# loader. Intended to be called in place of that function when
|
# loader. Intended to be called in place of that function when
|
||||||
@ -466,6 +503,8 @@ proc proj-no-check-module-loader {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-file-conent ?-trim? filename
|
||||||
|
#
|
||||||
# Opens the given file, reads all of its content, and returns it. If
|
# Opens the given file, reads all of its content, and returns it. If
|
||||||
# the first arg is -trim, the contents of the file named by the second
|
# the first arg is -trim, the contents of the file named by the second
|
||||||
# argument are trimmed before returning them.
|
# argument are trimmed before returning them.
|
||||||
@ -484,6 +523,8 @@ proc proj-file-content {args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-file-conent filename
|
||||||
|
#
|
||||||
# Returns the contents of the given file as an array of lines, with
|
# Returns the contents of the given file as an array of lines, with
|
||||||
# the EOL stripped from each input line.
|
# the EOL stripped from each input line.
|
||||||
proc proj-file-content-list {fname} {
|
proc proj-file-content-list {fname} {
|
||||||
@ -497,6 +538,8 @@ proc proj-file-content-list {fname} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-check-compile-commands ?configFlag?
|
||||||
|
#
|
||||||
# Checks the compiler for compile_commands.json support. If passed an
|
# Checks the compiler for compile_commands.json support. If passed an
|
||||||
# argument it is assumed to be the name of an autosetup boolean config
|
# argument it is assumed to be the name of an autosetup boolean config
|
||||||
# which controls whether to run/skip this check.
|
# which controls whether to run/skip this check.
|
||||||
@ -506,9 +549,9 @@ proc proj-file-content-list {fname} {
|
|||||||
#
|
#
|
||||||
# This test has a long history of false positive results because of
|
# This test has a long history of false positive results because of
|
||||||
# compilers reacting differently to the -MJ flag.
|
# compilers reacting differently to the -MJ flag.
|
||||||
proc proj-check-compile-commands {{configOpt {}}} {
|
proc proj-check-compile-commands {{configFlag {}}} {
|
||||||
msg-checking "compile_commands.json support... "
|
msg-checking "compile_commands.json support... "
|
||||||
if {"" ne $configOpt && ![proj-opt-truthy $configOpt]} {
|
if {"" ne $configFlag && ![proj-opt-truthy $configFlag]} {
|
||||||
msg-result "explicitly disabled"
|
msg-result "explicitly disabled"
|
||||||
define MAKE_COMPILATION_DB no
|
define MAKE_COMPILATION_DB no
|
||||||
return 0
|
return 0
|
||||||
@ -529,15 +572,15 @@ proc proj-check-compile-commands {{configOpt {}}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-touch filename
|
||||||
|
#
|
||||||
# Runs the 'touch' command on one or more files, ignoring any errors.
|
# Runs the 'touch' command on one or more files, ignoring any errors.
|
||||||
proc proj-touch {filename} {
|
proc proj-touch {filename} {
|
||||||
catch { exec touch {*}$filename }
|
catch { exec touch {*}$filename }
|
||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Usage:
|
# @proj-make-from-dot-in ?-touch? filename...
|
||||||
#
|
|
||||||
# proj-make-from-dot-in ?-touch? filename(s)...
|
|
||||||
#
|
#
|
||||||
# Uses [make-template] to create makefile(-like) file(s) $filename
|
# Uses [make-template] to create makefile(-like) file(s) $filename
|
||||||
# from $filename.in but explicitly makes the output read-only, to
|
# from $filename.in but explicitly makes the output read-only, to
|
||||||
@ -569,6 +612,8 @@ proc proj-make-from-dot-in {args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-check-profile-flag ?flagname?
|
||||||
|
#
|
||||||
# Checks for the boolean configure option named by $flagname. If set,
|
# Checks for the boolean configure option named by $flagname. If set,
|
||||||
# it checks if $CC seems to refer to gcc. If it does (or appears to)
|
# it checks if $CC seems to refer to gcc. If it does (or appears to)
|
||||||
# then it defines CC_PROFILE_FLAG to "-pg" and returns 1, else it
|
# then it defines CC_PROFILE_FLAG to "-pg" and returns 1, else it
|
||||||
@ -599,6 +644,8 @@ proc proj-check-profile-flag {{flagname profile}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-looks-like-windows ?key?
|
||||||
|
#
|
||||||
# Returns 1 if this appears to be a Windows environment (MinGw,
|
# Returns 1 if this appears to be a Windows environment (MinGw,
|
||||||
# Cygwin, MSys), else returns 0. The optional argument is the name of
|
# Cygwin, MSys), else returns 0. The optional argument is the name of
|
||||||
# an autosetup define which contains platform name info, defaulting to
|
# an autosetup define which contains platform name info, defaulting to
|
||||||
@ -610,7 +657,7 @@ proc proj-check-profile-flag {{flagname profile}} {
|
|||||||
proc proj-looks-like-windows {{key host}} {
|
proc proj-looks-like-windows {{key host}} {
|
||||||
global autosetup
|
global autosetup
|
||||||
switch -glob -- [get-define $key] {
|
switch -glob -- [get-define $key] {
|
||||||
*-*-ming* - *-*-cygwin - *-*-msys {
|
*-*-ming* - *-*-cygwin - *-*-msys - *windows* {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -626,6 +673,8 @@ proc proj-looks-like-windows {{key host}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-looks-like-mac ?key?
|
||||||
|
#
|
||||||
# Looks at either the 'host' (==compilation target platform) or
|
# Looks at either the 'host' (==compilation target platform) or
|
||||||
# 'build' (==the being-built-on platform) define value and returns if
|
# 'build' (==the being-built-on platform) define value and returns if
|
||||||
# if that value seems to indicate that it represents a Mac platform,
|
# if that value seems to indicate that it represents a Mac platform,
|
||||||
@ -642,6 +691,8 @@ proc proj-looks-like-mac {{key host}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-exe-extension
|
||||||
|
#
|
||||||
# Checks autosetup's "host" and "build" defines to see if the build
|
# Checks autosetup's "host" and "build" defines to see if the build
|
||||||
# host and target are Windows-esque (Cygwin, MinGW, MSys). If the
|
# host and target are Windows-esque (Cygwin, MinGW, MSys). If the
|
||||||
# build environment is then BUILD_EXEEXT is [define]'d to ".exe", else
|
# build environment is then BUILD_EXEEXT is [define]'d to ".exe", else
|
||||||
@ -661,6 +712,8 @@ proc proj-exe-extension {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-dll-extension
|
||||||
|
#
|
||||||
# Works like proj-exe-extension except that it defines BUILD_DLLEXT
|
# Works like proj-exe-extension except that it defines BUILD_DLLEXT
|
||||||
# and TARGET_DLLEXT to one of (.so, ,dll, .dylib).
|
# and TARGET_DLLEXT to one of (.so, ,dll, .dylib).
|
||||||
#
|
#
|
||||||
@ -685,6 +738,8 @@ proc proj-dll-extension {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-lib-extension
|
||||||
|
#
|
||||||
# Static-library counterpart of proj-dll-extension. Defines
|
# Static-library counterpart of proj-dll-extension. Defines
|
||||||
# BUILD_LIBEXT and TARGET_LIBEXT to the conventional static library
|
# BUILD_LIBEXT and TARGET_LIBEXT to the conventional static library
|
||||||
# extension for the being-built-on resp. the target platform.
|
# extension for the being-built-on resp. the target platform.
|
||||||
@ -704,6 +759,8 @@ proc proj-lib-extension {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-file-extensions
|
||||||
|
#
|
||||||
# Calls all of the proj-*-extension functions.
|
# Calls all of the proj-*-extension functions.
|
||||||
proc proj-file-extensions {} {
|
proc proj-file-extensions {} {
|
||||||
proj-exe-extension
|
proj-exe-extension
|
||||||
@ -712,6 +769,8 @@ proc proj-file-extensions {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-affirm-files-exist ?-v? filename...
|
||||||
|
#
|
||||||
# Expects a list of file names. If any one of them does not exist in
|
# Expects a list of file names. If any one of them does not exist in
|
||||||
# the filesystem, it fails fatally with an informative message.
|
# the filesystem, it fails fatally with an informative message.
|
||||||
# Returns the last file name it checks. If the first argument is -v
|
# Returns the last file name it checks. If the first argument is -v
|
||||||
@ -735,6 +794,8 @@ proc proj-affirm-files-exist {args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-check-emsdk
|
||||||
|
#
|
||||||
# Emscripten is used for doing in-tree builds of web-based WASM stuff,
|
# Emscripten is used for doing in-tree builds of web-based WASM stuff,
|
||||||
# as opposed to WASI-based WASM or WASM binaries we import from other
|
# as opposed to WASI-based WASM or WASM binaries we import from other
|
||||||
# places. This is only set up for Unix-style OSes and is untested
|
# places. This is only set up for Unix-style OSes and is untested
|
||||||
@ -802,6 +863,8 @@ proc proj-check-emsdk {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-check-rpath
|
||||||
|
#
|
||||||
# Tries various approaches to handling the -rpath link-time
|
# Tries various approaches to handling the -rpath link-time
|
||||||
# flag. Defines LDFLAGS_RPATH to that/those flag(s) or an empty
|
# flag. Defines LDFLAGS_RPATH to that/those flag(s) or an empty
|
||||||
# string. Returns 1 if it finds an option, else 0.
|
# string. Returns 1 if it finds an option, else 0.
|
||||||
@ -844,6 +907,8 @@ proc proj-check-rpath {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-check-soname ?libname?
|
||||||
|
#
|
||||||
# Checks whether CC supports the -Wl,soname,lib... flag. If so, it
|
# Checks whether CC supports the -Wl,soname,lib... flag. If so, it
|
||||||
# returns 1 and defines LDFLAGS_SONAME_PREFIX to the flag's prefix, to
|
# returns 1 and defines LDFLAGS_SONAME_PREFIX to the flag's prefix, to
|
||||||
# which the client would need to append "libwhatever.N". If not, it
|
# which the client would need to append "libwhatever.N". If not, it
|
||||||
@ -984,6 +1049,8 @@ proc proj-dump-defs-json {file args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-xfer-option-aliases map
|
||||||
|
#
|
||||||
# Expects a list of pairs of configure flags which have been
|
# Expects a list of pairs of configure flags which have been
|
||||||
# registered with autosetup, in this form:
|
# registered with autosetup, in this form:
|
||||||
#
|
#
|
||||||
@ -1049,6 +1116,8 @@ proc proj-redefine-cc-for-build {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-which-linenoise headerFile
|
||||||
|
#
|
||||||
# Attempts to determine whether the given linenoise header file is of
|
# Attempts to determine whether the given linenoise header file is of
|
||||||
# the "antirez" or "msteveb" flavor. It returns 2 for msteveb, else 1
|
# the "antirez" or "msteveb" flavor. It returns 2 for msteveb, else 1
|
||||||
# (it does not validate that the header otherwise contains the
|
# (it does not validate that the header otherwise contains the
|
||||||
@ -1063,8 +1132,9 @@ proc proj-which-linenoise {dotH} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-remap-autoconf-dir-vars
|
||||||
#
|
#
|
||||||
# "Re-export" the autoconf-conventional --XYZdir flags into something
|
# "Re-map" the autoconf-conventional --XYZdir flags into something
|
||||||
# which is more easily overridable from a make invocation.
|
# which is more easily overridable from a make invocation.
|
||||||
#
|
#
|
||||||
# Based off of notes in <https://sqlite.org/forum/forumpost/00d12a41f7>.
|
# Based off of notes in <https://sqlite.org/forum/forumpost/00d12a41f7>.
|
||||||
@ -1134,6 +1204,8 @@ proc proj-remap-autoconf-dir-vars {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-env-file flag ?default?
|
||||||
|
#
|
||||||
# If a file named .env-$flag exists, this function returns a
|
# If a file named .env-$flag exists, this function returns a
|
||||||
# trimmed copy of its contents, else it returns $dflt. The intended
|
# trimmed copy of its contents, else it returns $dflt. The intended
|
||||||
# usage is that things like developer-specific CFLAGS preferences can
|
# usage is that things like developer-specific CFLAGS preferences can
|
||||||
@ -1147,6 +1219,8 @@ proc proj-env-file {flag {dflt ""}} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
# @proj-get-env var ?default?
|
||||||
|
#
|
||||||
# Extracts the value of "environment" variable $var from the first of
|
# Extracts the value of "environment" variable $var from the first of
|
||||||
# the following places where it's defined:
|
# the following places where it's defined:
|
||||||
#
|
#
|
||||||
|
15
manifest
15
manifest
@ -1,5 +1,5 @@
|
|||||||
C Enhance\sthe\s--with-emsdk\sflag\sto\suse\sa\sdefault\svalue\sof\s'auto',\smeaning\sto\ssearch\sthe\senvironment\sfor\sit,\sand\sto\sfail\sfatally\sif\s--with-emsdk\sis\sexplicitly\sprovided\sbut\sthe\sSDK\sis\snot\sfound.
|
C Add\sautosetup/README.md\s-\smaintenance-related\sdocs\sfor\sSQLite\sdevelopers\s(e.g.\show\sto\supdate\sautosetup).\sStart\smarking\sup\sthe\sproj.tcl\sAPIs\swith\sautosetup's\sdoc\smarkup\sso\sthat\sthey\sappear\sin\sthe\s./configure\s--reference\soutput.
|
||||||
D 2024-11-06T02:59:59.807
|
D 2024-11-06T04:38:05.379
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md c5b4009dca54d127d2d6033c22fd9cc34f53bedb6ef12c7cbaa468381c74ab28
|
F LICENSE.md c5b4009dca54d127d2d6033c22fd9cc34f53bedb6ef12c7cbaa468381c74ab28
|
||||||
@ -13,7 +13,7 @@ F art/icon-80x90.gif 65509ce3e5f86a9cd64fe7fca2d23954199f31fe44c1e09e208c80fb83d
|
|||||||
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
|
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
|
||||||
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
|
F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
|
||||||
F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
|
F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
|
||||||
F auto.def 4a5115da298b51f0332fda72933976bded86700c94e30d75066e665795d638d7
|
F auto.def 062b05538bc09779962a5265125aa289152f6abbb1ebaded9b22e8969b151d75
|
||||||
F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
|
F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
|
||||||
F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
|
F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347
|
||||||
F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
|
F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
|
||||||
@ -37,6 +37,7 @@ F autoconf/tea/win/rules.vc 94a18c3e453535459b4a643983acca52fb8756e79055bd2ad4b0
|
|||||||
F autoconf/tea/win/targets.vc 96a25a1fa6e9e9cfb348fd3760a5395b4ce8acafc8ed10f0412937ec200d5dbd
|
F autoconf/tea/win/targets.vc 96a25a1fa6e9e9cfb348fd3760a5395b4ce8acafc8ed10f0412937ec200d5dbd
|
||||||
F autosetup/LICENSE 41a26aebdd2cd185d1e2b210f71b7ce234496979f6b35aef2cbf6b80cbed4ce4
|
F autosetup/LICENSE 41a26aebdd2cd185d1e2b210f71b7ce234496979f6b35aef2cbf6b80cbed4ce4
|
||||||
F autosetup/README.autosetup a78ff8c4a3d2636a4268736672a74bf14a82f42687fcf0631a70c516075c031e
|
F autosetup/README.autosetup a78ff8c4a3d2636a4268736672a74bf14a82f42687fcf0631a70c516075c031e
|
||||||
|
F autosetup/README.md 94a117db60b2a8efbfed58e548809631f1941a8df9c3c6a356080771b772e31c
|
||||||
F autosetup/autosetup 9416ffdcdd6e2dbf7f6d1e5c890078518930f8af7722a950eacc28c7f151d2d6 x
|
F autosetup/autosetup 9416ffdcdd6e2dbf7f6d1e5c890078518930f8af7722a950eacc28c7f151d2d6 x
|
||||||
F autosetup/autosetup-config.guess dfa101c5e8220e864d5e9c72a85e87110df60260d36cb951ad0a85d6d9eaa463 x
|
F autosetup/autosetup-config.guess dfa101c5e8220e864d5e9c72a85e87110df60260d36cb951ad0a85d6d9eaa463 x
|
||||||
F autosetup/autosetup-config.sub a38fb074d0dece01cf919e9fb534a26011608aa8fa606490864295328526cd73 x
|
F autosetup/autosetup-config.sub a38fb074d0dece01cf919e9fb534a26011608aa8fa606490864295328526cd73 x
|
||||||
@ -49,7 +50,7 @@ F autosetup/cc.tcl c0fcc50ca91deff8741e449ddad05bcd08268bc31177e613a6343bbd1fd3e
|
|||||||
F autosetup/default.auto 5cdf016de2140e50f1db190a02039dc42fb390af1dda4cc4853e3042a9ef0e82
|
F autosetup/default.auto 5cdf016de2140e50f1db190a02039dc42fb390af1dda4cc4853e3042a9ef0e82
|
||||||
F autosetup/jimsh0.c d40e381ea4526a067590e7b91bd4b2efa6d4980d286f908054c647b3df4aee14
|
F autosetup/jimsh0.c d40e381ea4526a067590e7b91bd4b2efa6d4980d286f908054c647b3df4aee14
|
||||||
F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
|
F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
|
||||||
F autosetup/proj.tcl 57b9c794d01124c91af840b3ba0ef1e991e815c9a872fa451baff0dc03e9f84a
|
F autosetup/proj.tcl b3a0621b6e98b9e87813ba7a15a64f92708527dd8efc99a764846c16336aadf0
|
||||||
F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9
|
F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9
|
||||||
F autosetup/tmake.auto eaebc74ad538dfdd3c817c27eefc31930c20510c4f3a3704071f6cb0629ed71f
|
F autosetup/tmake.auto eaebc74ad538dfdd3c817c27eefc31930c20510c4f3a3704071f6cb0629ed71f
|
||||||
F autosetup/tmake.tcl a275793ec1b6f8708179af0acef1f6f10d46c2920739743f7a8720c6d700c7a9
|
F autosetup/tmake.tcl a275793ec1b6f8708179af0acef1f6f10d46c2920739743f7a8720c6d700c7a9
|
||||||
@ -2199,8 +2200,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
|||||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||||
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 8b58cf9bbd3090c60f1ee7468cdeeb0b0fa4560d1e51a5fd0bef43692d10fe04
|
P 9724b747caa926bca09653ea6ac3c0f7869824c9a476eb81f03e1a6763552da1
|
||||||
R caf12b590890f202527bfa9f99549a98
|
R 22b44d94fb3a53e904cadda0982c176f
|
||||||
U stephan
|
U stephan
|
||||||
Z 9566a0d488cad676e06a60ec48a87114
|
Z e3f63aefb44fb343dd26a948d9892eb7
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
9724b747caa926bca09653ea6ac3c0f7869824c9a476eb81f03e1a6763552da1
|
aa6213767f0d7e63c753e33aadb95cbeb8e522c22f2fe1bbfa4df66bea6e3380
|
||||||
|
Loading…
Reference in New Issue
Block a user