Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2022-10-13 | Fix couple of corner cases in public/private variable model | Boris Kolpackov | 2 | -45/+49 | |
2022-10-13 | Improve diagnostics | Boris Kolpackov | 1 | -0/+12 | |
2022-10-13 | Add support for 'for' loop second (... | for x) and third (for x <...) forms ↵ | Karen Arutyunov | 33 | -403/+3104 | |
in script | |||||
2022-10-13 | Optimize by going straight to public variable pool where applicable | Boris Kolpackov | 15 | -61/+109 | |
2022-10-13 | Add visibility, overridable variable attributes | Boris Kolpackov | 3 | -11/+77 | |
2022-10-13 | Switch to public/private variables model | Boris Kolpackov | 18 | -128/+275 | |
Now unqualified variables are project-private and can be typified. | |||||
2022-10-11 | Factor variable patterns out of variable_pool into separate variable_patterns | Boris Kolpackov | 6 | -94/+168 | |
We have patterns only for the public variables pool. | |||||
2022-10-10 | Preparatory work for public/private variable distinction | Boris Kolpackov | 31 | -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-10 | Use term shared instead of global for scope, var pool, etc | Boris Kolpackov | 4 | -30/+32 | |
2022-10-05 | Check for `-`-spelled cl.exe options in addition to `/`-spelled | Boris Kolpackov | 1 | -19/+29 | |
2022-09-30 | Move integer and bool function to separate source/testscript files | Boris Kolpackov | 4 | -158/+202 | |
2022-09-29 | Tighten low-verbosity diagnostics name deduction logic | Boris Kolpackov | 3 | -4/+61 | |
Specifically, don't try to derive low-verbosity name from what looks like an eval context of a function call. | |||||
2022-09-29 | Add $find(<sequence>, <value>), $find_index(<sequence>, <value>) functions | Boris Kolpackov | 4 | -2/+155 | |
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-29 | Fix variable append logic in script | Boris Kolpackov | 8 | -91/+105 | |
2022-09-28 | Don't print true and false script builtins at verbosity level 2 | Karen Arutyunov | 1 | -1/+4 | |
2022-09-28 | Add support for 'for' loop first form (for x:...) in script | Karen Arutyunov | 11 | -103/+903 | |
2022-09-28 | Add support for 'while' loop in script | Karen Arutyunov | 23 | -298/+1040 | |
2022-09-28 | Omit -l for binless libraries, metadata from common .pc file | Boris Kolpackov | 2 | -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-28 | Add support for typed value subscript | Boris Kolpackov | 1 | -5/+37 | |
2022-09-27 | List dbghelp and mincore as system Windows libraries | Boris Kolpackov | 1 | -0/+2 | |
2022-09-27 | List winhttp and powrprof as system Windows libraries | Boris Kolpackov | 1 | -0/+2 | |
2022-09-27 | Fix bug in handling of name patterns with trailing dot | Karen Arutyunov | 1 | -1/+8 | |
2022-09-27 | Allow search to find implied alias targets | Boris Kolpackov | 1 | -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-27 | Improve diagnostics for multiple targets sharing path | Boris Kolpackov | 1 | -3/+13 | |
2022-09-23 | Add $is_a(<name>, <target-type>), $filter[_out](<names>, <target-types>) ↵ | Boris Kolpackov | 1 | -12/+118 | |
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-22 | Add $integer_sequence(<begin>, <end>[, <step>]) function | Boris Kolpackov | 1 | -0/+31 | |
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-22 | Add support for hex notation for uint64 type | Boris Kolpackov | 3 | -13/+85 | |
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-21 | Add winrt Platform SDK header search path for MSVC | Boris Kolpackov | 1 | -3/+4 | |
This is required, for example, to build QtGui. | |||||
2022-09-21 | Fix regression in dynamic dependency extraction, byproduct mode | Boris Kolpackov | 4 | -15/+43 | |
2022-09-19 | Fix race between load and match phase logic in cc:search_library() | Boris Kolpackov | 1 | -12/+25 | |
2022-09-19 | Add target_lock::first to distinguish first lock of target | Boris Kolpackov | 3 | -11/+15 | |
2022-09-19 | Allow computed variables in depdb preamble similar to impure functions | Boris Kolpackov | 4 | -10/+50 | |
2022-09-16 | Register fallback dist meta-operation rule for out of project targets | Boris Kolpackov | 3 | -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-13 | Add $builtin.concat(dir_path, dir_path) and $builtin.concat(dir_path, path) ↵ | Karen Arutyunov | 1 | -0/+10 | |
overloads | |||||
2022-09-13 | Fix bug in handling of disabled recipes in ad hoc pattern rules | Boris Kolpackov | 1 | -3/+16 | |
2022-09-12 | Add note on backlink=overwrite mode | Boris Kolpackov | 1 | -1/+23 | |
2022-09-12 | Do not treat primary ad hoc group member as group for variable lookup | Boris Kolpackov | 3 | -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-09 | Evaluate target specific variable assignment/block on ad hoc members | Boris Kolpackov | 2 | -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-07 | Fix assert after cycle detection in ad hoc groups | Boris Kolpackov | 1 | -31/+31 | |
2022-09-07 | Fix fsdir{} handling corner cases in ad hoc buildscript recipes/rulesdist-remap | Boris Kolpackov | 4 | -11/+39 | |
2022-09-06 | Add ability to remap paths in distribution | Boris Kolpackov | 2 | -29/+102 | |
Specifically, the dist target-specific variable now can specify a path besides true or false. This path is the "imaginary" source location which is used to derive the corresponding distribution local. This location can be either a directory path (to remap with the same file name) or a file path (to remap with a different name). If the path is relative, then it's treated relative to the target directory. Note that to make things less error prone, simple paths without any directory separators are not allowed (use ./<name> instead). Note that if multiple targets end up with the same source location, the behavior is undefined and no diagnostics is issued. Note also that such remapping has no effect in the bootstrap distribution mode. | |||||
2022-09-05 | Allow empty prerequisites in prerequisite-specific variable assignment/block | Boris Kolpackov | 1 | -27/+52 | |
The old semantics was not very consistent, consider: exe{foo}: cxx{$empty} # Ok. exe{foo}: cxx{$empty}: include = false # Not ok? So now both are ok, as well as the block variant: exe{foo}: cxx{$empty}: { include = false } Note that the empty prerequisite list in the dependency chain is still an error: ./: exe{$empty}: cxx{foo} # Error. Note also that the syntactically-empty prerequisite list was and still is an error: exe{foo}: : include = false # Error. | |||||
2022-09-02 | Add missing if! support in recipes | Boris Kolpackov | 1 | -2/+2 | |
2022-09-02 | Add ability to specify `in` rule substitution as key-value pairs | Boris Kolpackov | 7 | -12/+65 | |
2022-09-02 | Rename in.substitution variable to in.mode | Boris Kolpackov | 2 | -2/+6 | |
The original name is still recognized for backwards compatibility. | |||||
2022-08-22 | Manually check values for NULL when using low-level function interface | Boris Kolpackov | 2 | -1/+14 | |
2022-08-17 | Allow matching empty output with here-document regex without ':' modifier | Karen Arutyunov | 1 | -0/+25 | |
2022-08-17 | Fix bug in handling of "in *.export.libs but not in prerequisites" case | Boris Kolpackov | 1 | -5/+16 | |
2022-08-17 | If cl.exe path is specified then extract VC tools directory from this path | Karen Arutyunov | 1 | -32/+74 | |
2022-08-17 | Handle another "in *.export.libs but not in prerequisites" case | Boris Kolpackov | 3 | -49/+78 | |
Also, enable this check even if proc_lib is not specified unless in the execute phase. |