From: stephan Date: Thu, 26 Sep 2024 21:08:00 +0000 (+0000) Subject: Latest hwaci-common.tcl after refactoring to facilitate including a copy in the libfo... X-Git-Tag: major-relase~351^2~116 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=9a1b212f50495cfbe0425e9c447c6daab62e0242;p=thirdparty%2Fsqlite.git Latest hwaci-common.tcl after refactoring to facilitate including a copy in the libfossil tree. FossilOrigin-Name: feea65bcd54f9266445bc4d65ea5e3cfadee8e3abff5b682e31cdc0034354fbf --- diff --git a/autosetup/hwaci-common.tcl b/autosetup/hwaci-common.tcl index 77a895e233..223785f262 100644 --- a/autosetup/hwaci-common.tcl +++ b/autosetup/hwaci-common.tcl @@ -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 } ######################################################################## diff --git a/manifest b/manifest index 43a326a1c9..bc95dc98e2 100644 --- a/manifest +++ b/manifest @@ -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. diff --git a/manifest.uuid b/manifest.uuid index ee21b8a0f0..7d22fb8208 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -53dc33d5e20062e8c4c9856349bbc143c858327ef41f356ffcc574b36d0cc73c +feea65bcd54f9266445bc4d65ea5e3cfadee8e3abff5b682e31cdc0034354fbf