aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-10-19Handle operation-specific variable values in post hoc logicBoris Kolpackov1-1/+19
2022-10-19Minor tweaks to target_lock passing semanticsBoris Kolpackov2-3/+9
This should also get rid of the bogus -Wdangling-pointer issued by GCC 12.
2022-10-19Add support for post hoc prerequisitesBoris Kolpackov14-137/+476
Unlike normal and ad hoc prerequisites, a post hoc prerequisite is built after the target, not before. It may also form a dependency cycle together with normal/ad hoc prerequisites. In other words, all this form of dependency guarantees is that a post hoc prerequisite will be built if its dependent target is built. See the NEWS file for details and an example.
2022-10-18Fix unexpected 'unterminated double-quoted sequence' script errorKaren Arutyunov13-54/+217
2022-10-18Add unexpected 'unterminated double-quoted sequence' error testscript ↵Karen Arutyunov2-0/+26
reproducers
2022-10-18Invent diag preamble for buildscriptKaren Arutyunov8-141/+377
2022-10-17Add pkg-config search tracingBoris Kolpackov1-2/+14
2022-10-17Tolerate case differences when looking for pkg-config filesBoris Kolpackov1-18/+26
2022-10-14Fix 'for [<attrs>] x: ...' to treat <attrs> as value attributesKaren Arutyunov8-57/+37
2022-10-14Make -w|--whitespace to be default for for-loopKaren Arutyunov2-7/+18
2022-10-14Fix printing test id multiple times on test failureKaren Arutyunov3-14/+70
2022-10-14Fix typo in Testscript manualBoris Kolpackov1-1/+1
2022-10-14Describe how to test multiple executables in single testscriptBoris Kolpackov1-3/+74
2022-10-14Add notes on serial execution in Testscript manualBoris Kolpackov1-0/+7
2022-10-14Proofreading changes to Testscript manual (for/while loops)Boris Kolpackov1-75/+61
2022-10-13Work around Clang 6, 7 codegen issuesBoris Kolpackov3-36/+28
2022-10-13Reorder functions to help MinGW GCC with DLL symbol exportingBoris Kolpackov1-8/+8
2022-10-13Fix bug in pkg-config metadata extraction logicBoris Kolpackov1-6/+9
2022-10-13Fix script 'for' loop testsKaren Arutyunov2-3/+3
2022-10-13Fix couple of corner cases in public/private variable modelBoris Kolpackov2-45/+49
2022-10-13Improve diagnosticsBoris Kolpackov1-0/+12
2022-10-13Add support for 'for' loop second (... | for x) and third (for x <...) forms ↵Karen Arutyunov37-444/+4634
in script
2022-10-13Fix include directive example in testscript manualKaren Arutyunov1-1/+1
2022-10-13Update old tests to public/private variable modelBoris Kolpackov4-77/+77
2022-10-13Add test for public/private variable modelBoris Kolpackov2-0/+50
2022-10-13Optimize by going straight to public variable pool where applicableBoris Kolpackov16-62/+112
2022-10-13Add visibility, overridable variable attributesBoris Kolpackov3-11/+77
2022-10-13Switch to public/private variables modelBoris Kolpackov21-189/+336
Now unqualified variables are project-private and can be typified.
2022-10-11Factor variable patterns out of variable_pool into separate variable_patternsBoris Kolpackov6-94/+168
We have patterns only for the public variables pool.
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov31-112/+357
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool().
2022-10-10Use term shared instead of global for scope, var pool, etcBoris Kolpackov4-30/+32
2022-10-05Check for `-`-spelled cl.exe options in addition to `/`-spelledBoris Kolpackov1-19/+29
2022-09-30Move integer and bool function to separate source/testscript filesBoris Kolpackov7-197/+249
2022-09-29Tighten low-verbosity diagnostics name deduction logicBoris Kolpackov3-4/+61
Specifically, don't try to derive low-verbosity name from what looks like an eval context of a function call.
2022-09-29Add $find(<sequence>, <value>), $find_index(<sequence>, <value>) functionsBoris Kolpackov8-4/+215
The $find() function returns true if the sequence contains the specified value. The $find_index() function returns the index of the first element in the sequence that is equal to the specified value or $size(<sequence>) if none is found. For string sequences, it's possible to request case- insensitive comparison with a flag.
2022-09-29Fix variable append logic in scriptBoris Kolpackov8-91/+105
2022-09-28Don't print true and false script builtins at verbosity level 2Karen Arutyunov1-1/+4
2022-09-28Add support for 'for' loop first form (for x:...) in scriptKaren Arutyunov13-103/+1067
2022-09-28Add support for 'while' loop in scriptKaren Arutyunov27-318/+1102
2022-09-28Omit -l for binless libraries, metadata from common .pc fileBoris Kolpackov2-4/+26
Having -l options for binless (header-only) libraries makes it unusable from other build systems. But omitting them could make the metadata incomplete (for example, importable headers), so we omit that as well.
2022-09-28Add support for typed value subscriptBoris Kolpackov1-5/+37
2022-09-27Fix test for handling of name patterns with trailing dotKaren Arutyunov1-1/+1
2022-09-27List dbghelp and mincore as system Windows librariesBoris Kolpackov1-0/+2
2022-09-27List winhttp and powrprof as system Windows librariesBoris Kolpackov1-0/+2
2022-09-27Fix bug in handling of name patterns with trailing dotKaren Arutyunov1-1/+8
2022-09-27Allow search to find implied alias targetsBoris Kolpackov1-2/+7
Allowing this seems harmless since all the alias does is pull its prerequisites. And they are handy to use as metadata carriers.
2022-09-27Improve diagnostics for multiple targets sharing pathBoris Kolpackov1-3/+13
2022-09-23Add $is_a(<name>, <target-type>), $filter[_out](<names>, <target-types>) ↵Boris Kolpackov2-12/+154
functions $is_a() returns true if the <name>'s target type is-a <target-type>. Note that this is a dynamic type check that takes into account target type inheritance. $filter[_out]() return names with target types which are-a (filter) or not are-a (filter_out) one of <target-types>. In particular, these functions are useful for filtering prerequisite targets ($<) in ad hoc recipes and rules.
2022-09-22Add $integer_sequence(<begin>, <end>[, <step>]) functionBoris Kolpackov2-0/+39
It returns the list of uint64 integers starting from <begin> (including) to <end> (excluding) with the specified <step> or 1 if unspecified. For example: hdr = foo.hxx bar.hxx baz.hxx src = foo.cxx bar.cxx baz.cxx assert ($size($hdr) == $size($src)) "hdr and src expected to be parallel" for i: $integer_sequence(0, $size($hdr)) { h = ($hdr[$i]) s = ($src[$i]) ... }
2022-09-22Add support for hex notation for uint64 typeBoris Kolpackov4-13/+93
Specifically, now we can do: x = [uint64] 0x0000ffff cxx.poptions += "-DOFFSET=$x" # -DOFFSET=65535 cxx.poptions += "-DOFFSET=$string($x, 16)" # -DOFFSET=0xffff cxx.poptions += "-DOFFSET=$string($x, 16, 8)" # -DOFFSET=0x0000ffff Note that there is no hex notation support for the int64 (signed) type.