aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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.
2022-09-21Add winrt Platform SDK header search path for MSVCBoris Kolpackov1-3/+4
This is required, for example, to build QtGui.
2022-09-21Fix regression in dynamic dependency extraction, byproduct modeBoris Kolpackov4-15/+43
2022-09-19Fix race between load and match phase logic in cc:search_library()Boris Kolpackov1-12/+25
2022-09-19Add target_lock::first to distinguish first lock of targetBoris Kolpackov3-11/+15
2022-09-19Allow computed variables in depdb preamble similar to impure functionsBoris Kolpackov5-15/+77
2022-09-16Register fallback dist meta-operation rule for out of project targetsBoris Kolpackov3-4/+18
The problematic scenario this fixes is an ad hoc pattern rule (which we register for dist in order to inject any additional sources; see parser.cxx for details) that pulls a tool imported from the system (say /usr/bin/xxd).
2022-09-13Add $builtin.concat(dir_path, dir_path) and $builtin.concat(dir_path, path) ↵Karen Arutyunov1-0/+10
overloads
2022-09-13Fix bug in handling of disabled recipes in ad hoc pattern rulesBoris Kolpackov1-3/+16
2022-09-12Add note on backlink=overwrite modeBoris Kolpackov1-1/+23
2022-09-12Do not treat primary ad hoc group member as group for variable lookupBoris Kolpackov3-4/+38
Note that we started with this semantics but it was changed in a commit on 2021-09-16 for reasons not entirely unclear but most likely due to target- specific variables specified for the group not being set on all the members. Which we have now addressed (see the previous commit). Note also that this new (old) semantics is not without its own drawbacks. Specifically, there is a bit of waste when the target-specific variable is really only meant for the recipe and thus setting it on all the members is unnecessary. For example: <{hxx ixx cxx}{options}>: cli{options} { options = ... } {{ # Use options. }} But this feels like a quality of implementation rather than conceptual issue. For example, we could likely one day address it by synthesizing a separate group target for ad hoc groups.
2022-09-09Evaluate target specific variable assignment/block on ad hoc membersBoris Kolpackov2-37/+113
This is in preparation for (again) not treating primary member of an ad hoc group as a group for variable lookup.
2022-09-07Fix assert after cycle detection in ad hoc groupsBoris Kolpackov1-31/+31