#
########################################################################
# Routines for Steve Bennett's autosetup which are common to trees
-# managed under the umbrella of the SQLite project.
+# managed in and around the umbrella of the SQLite project.
#
# This file was initially derived from one used in the libfossil
# project, authored by the same person who ported it here (so there's
-# no licensing issue despite this code having a twin running around).
+# no licensing issue despite this code having at least two near-twins
+# running around).
########################################################################
-array set hwaciCache {} ; # used for caching various results.
+array set _hwaciCache {} ; # used for caching various results.
########################################################################
# hwaci-lshift shifts $count elements from the list named $listVar and
# routine makes to the LIBS define. Returns the result of
# cc-check-function-in-lib.
proc hwaci-check-function-in-lib {function libs {otherlibs {}}} {
+ # TODO: this can now be implemented using autosetup's define-push
set _LIBS [get-define LIBS]
set found [cc-check-function-in-lib $function $libs $otherlibs]
define LIBS $_LIBS
# If defName is empty then "BIN_X" is used, where X is the upper-case
# form of $binName with any '-' characters replaced with '_'.
proc hwaci-bin-define {binName {defName {}}} {
- global hwaciCache
+ global _hwaciCache
set cacheName "$binName:$defName"
set check {}
- if {[info exists hwaciCache($cacheName)]} {
- set check $hwaciCache($cacheName)
+ if {[info exists _hwaciCache($cacheName)]} {
+ set check $_hwaciCache($cacheName)
}
msg-checking "Looking for $binName ... "
if {"" ne $check} {
set check [find-executable-path $binName]
if {"" eq $check} {
msg-result "not found"
- set hwaciCache($cacheName) " _ 0 _ "
+ set _hwaciCache($cacheName) " _ 0 _ "
} else {
msg-result $check
- set hwaciCache($cacheName) $check
+ set _hwaciCache($cacheName) $check
}
if {"" eq $defName} {
set defName "BIN_[string toupper [string map {- _} $binName]]"
########################################################################
# If [hwaci-opt-truthy $flag] is true, eval $then, else eval $else.
+#
+# Note that this may or may not, depending on the content of $then and
+# $else, be functionally equivalent to:
+#
+# if {[hwaci-if-opt-truthy flag]} {...} else {...}
+#
+# When referencing $vars in $then and $else, the latter can resolve
+# (without further assistance) the vars from its current scope,
+# whereas $then and $else will not.
proc hwaci-if-opt-truthy {flag then {else {}}} {
if {[hwaci-opt-truthy $flag]} {eval $then} else {eval $else}
}
########################################################################
# Checks the compiler for compile_commands.json support. If passed an
# argument it is assumed to be the name of an autosetup boolean config
-# option to explicitly DISABLE the compile_commands.json support.
+# which controls whether to run/skip this check.
#
# Returns 1 if supported, else 0. Defines MAKE_COMPILATION_DB to "yes"
# if supported, "no" if not.
+#
+# This test has a long history of false positive results because of
+# compilers reacting differently to the -MJ flag.
proc hwaci-check-compile-commands {{configOpt {}}} {
- msg-checking "compile_commands.json support... "
- if {"" ne $configOpt && [opt-bool $configOpt]} {
- msg-result "explicitly disabled"
- define MAKE_COMPILATION_DB no
- return 0
- } else {
- if {[cctest -lang c -cflags {/dev/null -MJ} -source {}]} {
- # This test reportedly incorrectly succeeds on one of
- # Martin G.'s older systems. drh also reports a false
- # positive on an unspecified older Mac system.
- msg-result "compiler supports compile_commands.json"
- define MAKE_COMPILATION_DB yes
- return 1
+ msg-checking "compile_commands.json support... "
+ if {"" ne $configOpt && ![hwaci-opt-truthy $configOpt]} {
+ msg-result "explicitly disabled"
+ define MAKE_COMPILATION_DB no
+ return 0
} else {
- msg-result "compiler does not support compile_commands.json"
- define MAKE_COMPILATION_DB no
- return 0
+ if {[cctest -lang c -cflags {/dev/null -MJ} -source {}]} {
+ # This test reportedly incorrectly succeeds on one of
+ # Martin G.'s older systems. drh also reports a false
+ # positive on an unspecified older Mac system.
+ msg-result "compiler supports compile_commands.json"
+ define MAKE_COMPILATION_DB yes
+ return 1
+ } else {
+ msg-result "compiler does not support compile_commands.json"
+ define MAKE_COMPILATION_DB no
+ return 0
+ }
}
- }
}
########################################################################
# Returns 1 if this appears to be a Windows environment (MinGw,
# Cygwin, MSys), else returns 0. The optional argument is the name of
# an autosetup define which contains platform name info, defaulting to
-# "host". The other legal value is "target".
+# "host". The other legal value is "build" (the build machine). If
+# $key == "build" then some additional checks may be performed which
+# are not applicable when $key == "host".
proc hwaci-looks-like-windows {{key host}} {
global autosetup
- if {$::autosetup(iswin)} { return 1 }
switch -glob -- [get-define $key] {
*-*-ming* - *-*-cygwin - *-*-msys {
return 1
}
- default {
- return 0
+ }
+ if {$key eq "build"} {
+ # These apply only to the local OS, not a cross-compilation target,
+ # as the above check can potentially.
+ if {$::autosetup(iswin)} { return 1 }
+ if {[find-an-executable cygpath] ne "" || $::tcl_platform(os)=="Windows NT"} {
+ return 1
}
}
+ return 0
}
########################################################################
-C Get\slemon\sbuilding.\sRe-indent\shwaci-common.tcl\sfor\sconsistency.
-D 2024-09-26T18:40:07.537
+C Latest\shwaci-common.tcl\safter\srefactoring\sto\sfacilitate\sincluding\sa\scopy\sin\sthe\slibfossil\stree.
+D 2024-09-26T21:08:00.671
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F autosetup/cc-shared.tcl 4f024e94a47f427ba61de1739f6381ef0080210f9fae89112d5c1de1e5460d78
F autosetup/cc.tcl 1b52de228642c1db5a714d54ca974d723ec8b4092e8c3765d348b625850f7311
F autosetup/default.auto 5cdf016de2140e50f1db190a02039dc42fb390af1dda4cc4853e3042a9ef0e82
-F autosetup/hwaci-common.tcl 087bcd8ec711da2d3e1c3ede32903e45062ffd148b71f28d59e0c5fda0060ef6
+F autosetup/hwaci-common.tcl d5c192839c2a233380e880df90ee0a3427eef623b3ddf258b466f67ada8f4639
F autosetup/jimsh0.c 1b5fe91fffcddbc29f2b16acb80f1650632ea2edbe8336b8155ef7b4c66f6d8d
F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
F autosetup/system.tcl 3a39d6e0b3bfba526fd39afe07c1d0d325e5a31925013a1ba7c671e1128e31bb
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 65eb1072e297f01ba4ce21fe644f709e75ebaec5307764b549efceafb88f6ebf
-R ad341b1fb26f2538d3ce63a52f00cd0b
+P 53dc33d5e20062e8c4c9856349bbc143c858327ef41f356ffcc574b36d0cc73c
+R 6b7f18b95913add9b8d87d074deb4cfd
U stephan
-Z 949a6a7cca5b4eb8a6b3e740c1f5b1b4
+Z 0ed9ac144e699edbea90d5afd0259dab
# Remove this line to create a well-formed Fossil manifest.