Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-02-07 | Add support for nested subscript, use for json access | Boris Kolpackov | 1 | -89/+95 | |
2024-02-07 | Add experimental support for JSON value types | Boris Kolpackov | 1 | -24/+100 | |
New types: json json_array json_object New functions: $json.value_type(<json>) $json.value_size(<json>) $json.member_{name,value}(<json-member>) $json.object_names(<json-object>) $json.array_size(<json-array>) $json.array_find(<json-array>, <json>) $json.array_find_index(<json-array>, <json>) $json.load(<path>) $json.parse(<text>) $json.serialize(<json>[, <indentation>]) For example, to load a JSON value from a file: j = $json.load($src_base/board.json) Or to construct it in a buildfile: j = [json] one@1 two@([json] 2 3 4) three@([json] x@1 y@-1) This can also be done incrementally with append/prepend: j = [json_object] j += one@1 j += two@([json] 2 3 4) j += three@([json] x@1 y@-1) Instead of using this JSON-like syntax, one can also specify valid JSON input text: j = [json] '{"one":1, "two":[2, 3, 4], "three":{"x":1, "y":-1}' Besides the above set of functions, other handy ways to access components in a JSON value are iteration and subscript. For example: for m: $j print $member_name($m) $member_value($m) print ($j[three]) A subscript can be nested: print ($j[two][1]) print ($j[three][x]) While a JSON value can be printed directly like any other value, the representation will not be pretty-printed. As a result, for complex JSON values, printing a serialized representation might be a more readable option: info $serialize($j) | |||||
2024-02-06 | Add support for value type-specific subscript and iteration | Boris Kolpackov | 1 | -89/+128 | |
2024-02-06 | Fix bunch of maybe used uninitialized warnings | Boris Kolpackov | 1 | -1/+1 | |
2024-01-16 | Don't enter exported buildfile as real targets (GH issue #357) | Boris Kolpackov | 1 | -2/+4 | |
In particular, this used to prevent file_rule from match such targets for clean. | |||||
2024-01-15 | Add no_default_target attribute for source, buildfile import directives | Boris Kolpackov | 1 | -12/+56 | |
This attribute can be used to disable the default target semantics for the sources/imported buildfile. | |||||
2024-01-15 | Disable default target semantics when loading {bootstrap,root}.build | Boris Kolpackov | 1 | -2/+6 | |
2024-01-15 | Automatically alias unknown target types of imported targets | Boris Kolpackov | 1 | -7/+26 | |
2024-01-15 | Fail with unable to import rather than unknown target type | Boris Kolpackov | 1 | -3/+18 | |
2024-01-11 | Add ability to alias target type from another project | Boris Kolpackov | 1 | -34/+104 | |
The syntax is: define <type> = <scope>/<type> | |||||
2024-01-09 | Allow imported buildfiles to using config.* variables from own project | Boris Kolpackov | 1 | -28/+161 | |
2023-12-04 | Improve parser diagnostics | Boris Kolpackov | 1 | -1/+5 | |
2023-11-02 | Minor diagnostics improvement | Boris Kolpackov | 1 | -1/+1 | |
2023-11-01 | Add notion of match options | Boris Kolpackov | 1 | -1/+2 | |
Now, when matching a rule, the caller may request a subset of the full functionality of performing an operation on a target. This is achieved with match options. | |||||
2023-10-26 | Minor diagnostics improvement | Boris Kolpackov | 1 | -4/+12 | |
2023-08-02 | Diagnose declarations of targets/prerequisites with abstract target types | Boris Kolpackov | 1 | -0/+25 | |
2023-06-26 | Omit dangling symlink warning for backlinked executables | Boris Kolpackov | 1 | -13/+44 | |
2023-06-09 | Diagnose multiple values in typed concatenation (GH issue #263) | Boris Kolpackov | 1 | -26/+41 | |
2023-06-08 | Add support for buildfile importation | Boris Kolpackov | 1 | -105/+377 | |
2023-05-31 | Provide implied configure_* and dist_* action registration for ad hoc recipes | Boris Kolpackov | 1 | -2/+11 | |
This makes it consistent with the existing ad hoc rules semantics. | |||||
2023-05-29 | Explicit group: pattern members | Boris Kolpackov | 1 | -12/+18 | |
2023-05-29 | Explicit group: dynamic members | Boris Kolpackov | 1 | -2/+2 | |
2023-05-29 | Explicit group: static members | Boris Kolpackov | 1 | -0/+3 | |
2023-05-29 | Explicit group: syntax parsing | Boris Kolpackov | 1 | -121/+403 | |
2023-05-16 | Enter export stub targets with correct out | Boris Kolpackov | 1 | -12/+36 | |
2023-05-09 | Add support for dumping build system state in JSON format (GH issue #182) | Boris Kolpackov | 1 | -2/+6 | |
Specifically: 1. New --dump-format option. Valid values are `buildfile` and `json-v0.1`. 2. The --dump option now recognizes two additional values: `match-pre` and `match-post` to dump the state of pre/post-operations. The `match` value now only triggers dumping of the main operation. | |||||
2023-05-03 | Add --dump-scope and --dump-target options to limit --dump output | Boris Kolpackov | 1 | -2/+2 | |
2023-01-31 | Minor improvement to diagnostics | Boris Kolpackov | 1 | -2/+6 | |
2022-12-19 | Disable `)` escaping in buildspec, command line variable overrides | Boris Kolpackov | 1 | -6/+5 | |
Similar to line continuations, that would make directory paths on Windows unusable, for example: b info(C:\myproj\) Note that while this is less of a problem in command line variable overrides, we disable it there for consistency. | |||||
2022-12-19 | Disable line continuation in buildspec, command line variable overrides | Boris Kolpackov | 1 | -4/+6 | |
Line continuations would make directory paths on Windows unusable, for example: b C:\myproj\ | |||||
2022-12-19 | Restore newline escaping (line continuations) in double-quoted strings | Boris Kolpackov | 1 | -3/+4 | |
Also make effective escaping in buildspec and command line variable overrides consistent with double-quoted strings. | |||||
2022-12-15 | Add noexcept to move constructors and move assignment operators | Karen Arutyunov | 1 | -6/+6 | |
2022-12-15 | Improve escape sequence support | Boris Kolpackov | 1 | -125/+167 | |
Specifically: 1. In the double-quoted strings we now only do effective escaping of the special `$("\` characters plus `)` for symmetry. 2. There is now support for "escape sequence expansion" in the form $\X where \X can be any of the C/C++ simple escape sequences (\n, \t, etc) plus \0 (which in C/C++ is an octal escape sequence). For example: info "foo$\n$\tbar$\n$\tbaz" Will print: buildfile:1:1: info: foo bar baz | |||||
2022-12-14 | Improve empty simple value to empty list of names reduction heuristics | Boris Kolpackov | 1 | -17/+45 | |
Specifically, do not reduce typed RHS empty simple values for prepend/append and additionally for assignment provided LHS is typed and is a container. | |||||
2022-12-14 | Handle NULL values in $string() and $concat() functions | Boris Kolpackov | 1 | -1/+2 | |
This is relied upon by the parser to provide conversion/concatenation semantics consistent with untyped values. Note that we handle NULL values only for types that have empty representation. | |||||
2022-12-12 | Adapt to dir_iterator API change | Karen Arutyunov | 1 | -1/+14 | |
2022-12-02 | Fail if scope or target qualification in variable expansion is unknown | Boris Kolpackov | 1 | -29/+69 | |
There are three options here: we can "fall through" to an outer scope (there is always the global scope backstop; this is the old semantics, sort of), we can return NULL straight away, or we can fail. It feels like in most cases unknown scope or target is a mistake and doing anything other than failing is just making things harder to debug. | |||||
2022-11-29 | Move buildfiles to root_extra, use vector instead of unordered_set | Boris Kolpackov | 1 | -1/+3 | |
2022-11-29 | Improve diagnostics for value subscript out of evaluation context | Boris Kolpackov | 1 | -2/+21 | |
2022-11-23 | Rework diag_buffer interface to facilitate correct destruction order | Boris Kolpackov | 1 | -1/+1 | |
2022-11-08 | Make process exit diagnostics consistent | Boris Kolpackov | 1 | -1/+1 | |
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored. | |||||
2022-11-08 | More work on child process diagnostics buffering | Boris Kolpackov | 1 | -2/+5 | |
2022-10-27 | Suppress (potential) bogus GCC 12 -Wrestrict warnings | Boris Kolpackov | 1 | -1/+1 | |
2022-10-25 | Allow concatenation of path/dir_path type to be a path pattern | Karen Arutyunov | 1 | -6/+49 | |
2022-10-24 | Allow non-parallel absolute src/out to support imported target tagging | Boris Kolpackov | 1 | -11/+11 | |
Also fix bug in out clearing. | |||||
2022-10-21 | Change attribute syntax in script to come after variable in set and for (set ↵ | Karen Arutyunov | 1 | -21/+25 | |
x [...], for x [...]) | |||||
2022-10-20 | Tweak documentation in parser::parse_for() | Karen Arutyunov | 1 | -2/+2 | |
2022-10-20 | Add support for for-loop element type | Karen Arutyunov | 1 | -8/+24 | |
2022-10-20 | Diagnose incorrect output directory specification | Boris Kolpackov | 1 | -1/+24 | |
2022-10-14 | Fix 'for [<attrs>] x: ...' to treat <attrs> as value attributes | Karen Arutyunov | 1 | -12/+0 | |