Latest hwaci-common.tcl after refactoring to facilitate including a copy in the libfossil tree.

FossilOrigin-Name: feea65bcd54f9266445bc4d65ea5e3cfadee8e3abff5b682e31cdc0034354fbf
This commit is contained in:
stephan 2024-09-26 21:08:00 +00:00
parent c2da952f5d
commit 9a1b212f50
3 changed files with 58 additions and 37 deletions

View File

@ -10,14 +10,15 @@
#
########################################################################
# 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
@ -46,6 +47,7 @@ proc hwaci-lshift {listVar {count 1}} {
# 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
@ -62,11 +64,11 @@ proc hwaci-check-function-in-lib {function libs {otherlibs {}}} {
# 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} {
@ -81,10 +83,10 @@ proc hwaci-bin-define {binName {defName {}}} {
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]]"
@ -140,6 +142,15 @@ proc hwaci-opt-truthy {flag} {
########################################################################
# 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}
}
@ -303,30 +314,33 @@ proc hwaci-file-content-list {fname} {
########################################################################
# 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
}
}
}
}
########################################################################
@ -389,18 +403,25 @@ proc hwaci-check-profile-flag {{flagname profile}} {
# 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
}
########################################################################

View File

@ -1,5 +1,5 @@
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
@ -46,7 +46,7 @@ F autosetup/cc-lib.tcl 493c5935b5dd3bf9bd4eca89b07c8b1b1a9356d61783035144e21795f
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
@ -2233,8 +2233,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
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.

View File

@ -1 +1 @@
53dc33d5e20062e8c4c9856349bbc143c858327ef41f356ffcc574b36d0cc73c
feea65bcd54f9266445bc4d65ea5e3cfadee8e3abff5b682e31cdc0034354fbf