Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
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 | |
2022-10-13 | Add visibility, overridable variable attributes | Boris Kolpackov | 1 | -11/+70 | |
2022-10-13 | Switch to public/private variables model | Boris Kolpackov | 1 | -2/+10 | |
Now unqualified variables are project-private and can be typified. | |||||
2022-10-10 | Preparatory work for public/private variable distinction | Boris Kolpackov | 1 | -5/+4 | |
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool(). | |||||
2022-09-29 | Fix variable append logic in script | Boris Kolpackov | 1 | -0/+12 | |
2022-09-28 | Add support for typed value subscript | Boris Kolpackov | 1 | -5/+37 | |
2022-09-27 | Fix bug in handling of name patterns with trailing dot | Karen Arutyunov | 1 | -1/+8 | |
2022-09-16 | Register fallback dist meta-operation rule for out of project targets | Boris Kolpackov | 1 | -1/+3 | |
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 | Fix bug in handling of disabled recipes in ad hoc pattern rules | Boris Kolpackov | 1 | -3/+16 | |
2022-09-09 | Evaluate target specific variable assignment/block on ad hoc members | Boris Kolpackov | 1 | -35/+99 | |
This is in preparation for (again) not treating primary member of an ad hoc group as a group for variable lookup. | |||||
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-07-21 | Use bundle scope when deciding whether project is being distributed | Boris Kolpackov | 1 | -2/+3 | |
2022-07-21 | Add link to HOWTO entry in conditional dependency declaration warning | Boris Kolpackov | 1 | -1/+3 | |
2022-07-21 | Don't issue conditional dependency declaration warning for imported projects | Boris Kolpackov | 1 | -7/+19 | |
2022-07-20 | Tweak diagnostics | Boris Kolpackov | 1 | -1/+1 | |
2022-07-20 | Adjust conditional dependency declaration warning logic | Boris Kolpackov | 1 | -5/+13 | |
Now instead of ignoring imported stuff (which turned out to be racy), we only consider conditions up to the include boundary. The thinking here is that an included (but not sourced) buildfile is a standalone entity (e.g., imported project but also could be just a side-included buildfile). Note that unfortunately we will still be issuing warnings in imported projects since there is no straightforward way to know what is being distributed and what is not while parsing. | |||||
2022-07-19 | Warn about conditional dependency declarations during distribution | Boris Kolpackov | 1 | -0/+42 | |
2022-07-07 | Use new cmdline type for canned command lines in {Build,Test}script | Boris Kolpackov | 1 | -0/+1 | |
2022-06-28 | Add support for querying out-qualified target-specific variables | Boris Kolpackov | 1 | -27/+54 | |
2022-06-28 | Handle out-qualified prerequisites | Boris Kolpackov | 1 | -6/+20 | |
2022-06-28 | Add support for rule-specific import phase 2 | Boris Kolpackov | 1 | -15/+44 | |
For example: import! [metadata, rule_hint=cxx.link] lib = libhello%lib{hello} | |||||
2022-06-21 | Add --trace-{match,execute} options | Boris Kolpackov | 1 | -32/+72 | |
These options can be used to understand which dependency chain causes matching or execution of a particular target. | |||||
2022-06-03 | Reset value::extra on variable_map value change/version increment | Boris Kolpackov | 1 | -1/+1 | |
The reset on each modification semantics is used to implement the default value distinction as currently done in the config module but later probably will be done for ?= and $origin(). | |||||
2022-06-03 | Expose type name to value_type mapping function in parser | Boris Kolpackov | 1 | -4/+4 | |
2022-04-08 | Register ad hoc rules for configure in addition to dist | Boris Kolpackov | 1 | -8/+12 | |
2022-04-06 | Add support for specifying custom ad hoc pattern rule names | Boris Kolpackov | 1 | -7/+53 | |
Besides diagnostics, this allows us to use name in the rule hint, for example: [rule_name=hello.link] exe{~'/(.*)/'}: obje{~'/\1/'} {{ $cxx.path -o $path($>) $path($<[0]) }} [rule_hint=hello] exe{hello}: obje{hello} obje{hello}: c{hello-c} | |||||
2022-04-06 | Add support for rule hints | Boris Kolpackov | 1 | -14/+115 | |
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match. |