Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2016-11-23 | Implement value type propagation on expansion | Boris Kolpackov | 1 | -56/+76 | |
Currently, we only propagate types of sole, unquoted expansions (variable, function call, or eval context), similar to NULL. To untypify the value, simply quote it. | |||||
2016-11-23 | Implement assert directive | Boris Kolpackov | 1 | -23/+70 | |
The grammar is as follows: assert <expression> [<description>] assert! <expression> [<description>] The expression must evaluate to 'true' or 'false', just like in if-else. | |||||
2016-11-22 | Minor fix | Boris Kolpackov | 1 | -7/+7 | |
2016-11-22 | Use diagnostics facility from libbutl | Boris Kolpackov | 1 | -2/+1 | |
2016-11-18 | Add function machinery, implement path.normalize() | Boris Kolpackov | 1 | -26/+20 | |
Note that multi-argument functions are not yet "callable" since there is no support for value packs. | |||||
2016-11-18 | Make names and vector<name> different types, add typed value constructor | Boris Kolpackov | 1 | -1/+1 | |
2016-11-11 | Get rid of lexer modes overriding pair separators | Boris Kolpackov | 1 | -8/+8 | |
2016-11-04 | Handle explicit test scopes | Boris Kolpackov | 1 | -1/+1 | |
2016-11-04 | Handle pre-parsing of simple pairs in parse_names() | Boris Kolpackov | 1 | -38/+51 | |
2016-11-04 | Use special mode for attribute lexing | Boris Kolpackov | 1 | -9/+3 | |
2016-11-04 | Add support for ignoring separators inside names | Boris Kolpackov | 1 | -11/+19 | |
2016-11-04 | When assigning always ignore existing value type | Boris Kolpackov | 1 | -20/+22 | |
For example: x = [uint64] 1 x = a # Ok. | |||||
2016-11-04 | Minor cleanup | Boris Kolpackov | 1 | -7/+7 | |
2016-11-04 | Implement pre-parsing mode for subset of buildfile parsing functions | Boris Kolpackov | 1 | -190/+243 | |
2016-11-04 | Various minor buildfile lexer/parser changes | Boris Kolpackov | 1 | -18/+27 | |
2016-11-04 | Keep track of lexer mode in parser replay mechanism | Boris Kolpackov | 1 | -8/+11 | |
2016-11-04 | Change token type 'name' to more general 'word' | Boris Kolpackov | 1 | -21/+21 | |
2016-11-04 | Add support for lexer name scanning customization | Boris Kolpackov | 1 | -2/+1 | |
2016-11-04 | Use parse_* naming for parsing functions | Boris Kolpackov | 1 | -133/+133 | |
2016-11-04 | Add variable lookup hook to parser | Boris Kolpackov | 1 | -39/+48 | |
2016-11-04 | Allow customizing names parsing diagnostics | Boris Kolpackov | 1 | -7/+11 | |
2016-11-04 | Minor fixes | Boris Kolpackov | 1 | -2/+2 | |
2016-11-04 | Handle printing of extended tokens | Boris Kolpackov | 1 | -7/+8 | |
2016-11-04 | Various design/implementation cleanups | Boris Kolpackov | 1 | -38/+26 | |
2016-09-15 | Add io_error alias for std::ios_base::failure | Karen Arutyunov | 1 | -3/+3 | |
2016-08-30 | Add support for target visibility, use for dist, test, install | Boris Kolpackov | 1 | -7/+15 | |
This means we can no longer write: install = false Now it should be: *: install = false | |||||
2016-08-30 | Add support for using '*' as target type in variable assignment | Boris Kolpackov | 1 | -3/+8 | |
So these three are equivalent: *: foo = 1 {*}: foo = 2 *{*}: foo = 3 | |||||
2016-08-17 | Allow expansion of undefined/NULL namespace variables | Boris Kolpackov | 1 | -2/+4 | |
This restriction is not proving to get in the way. | |||||
2016-08-10 | Add ignore case support for find_option() | Karen Arutyunov | 1 | -2/+1 | |
2016-08-05 | Implement out-qualified target syntax for setting target-specific vars | Boris Kolpackov | 1 | -17/+54 | |
So now we can do: doc{INSTALL}@./: install = false Note that so far that's the only place where we support out-qualification. Grep for @@ OUT to see other places. | |||||
2016-08-05 | Merge 'value' and 'pairs' lexer_mode, call it 'value' | Boris Kolpackov | 1 | -24/+24 | |
We only really used pairs. | |||||
2016-08-02 | Optimize out path::normalize() calls | Boris Kolpackov | 1 | -7/+24 | |
2016-07-28 | Adjust to new path implementation, use to support reversibility | Boris Kolpackov | 1 | -34/+21 | |
2016-07-25 | Only do "effective escaping" (['"\$(]) on the command line | Boris Kolpackov | 1 | -1/+4 | |
This will make things more convenient on Windows provided we use "sane" paths (no spaces, no (), etc). | |||||
2016-07-23 | Adapt to fdstream extension | Karen Arutyunov | 1 | -17/+6 | |
2016-07-21 | Add support for single line if-blocks | Boris Kolpackov | 1 | -23/+50 | |
So now we can do: if true print true else print false Instead having to do: if true { print true } else { print false } | |||||
2016-07-20 | Switch to dynamic empty() implementation in variable value | Boris Kolpackov | 1 | -16/+20 | |
The current model fell apart when we modified values directly. | |||||
2016-07-20 | Implement support for <, >, <=, >= in eval context | Boris Kolpackov | 1 | -16/+60 | |
Now can write: if ($build.version > 30000) | |||||
2016-07-16 | Add support for prepend/append in target type/pattern-specific vars | Boris Kolpackov | 1 | -12/+84 | |
Semantically, these are similar to variable overrides and are essentially treated as "templates" that are applied on lookup to the "stem" value that is specific to the target type/name. For example: x = [string] a file{f*}: x =+ b sub/: { file{*}: x += c print $(file{foo}:x) # abc print $(file{bar}:x) # ac } | |||||
2016-06-27 | Add config.bin.target var/hint, use to decide libso{} install mode | Boris Kolpackov | 1 | -2/+2 | |
Normally the user doesn't need to specify config.bin.target explicitly since the cxx module will hint it. We now also have the whole set of target's components: bin.target.{cpu,vendor,system,version,class} | |||||
2016-06-26 | Minor module interface cleanups | Boris Kolpackov | 1 | -1/+1 | |
2016-06-26 | Add notion of ad hoc group, use to handle DLL/import library | Boris Kolpackov | 1 | -46/+1 | |
2016-06-18 | Port to MinGW | Karen Arutyunov | 1 | -7/+20 | |
2016-06-03 | Treat trailing backslash as directory indicator | Boris Kolpackov | 1 | -13/+36 | |
Note that with this change we broke reversibility for such names, i.e., 'foo\' name will be reversed to 'foo/'. | |||||
2016-04-23 | Revert back to using root scope in src_out()/out_src() | Boris Kolpackov | 1 | -1/+1 | |
Relaxing it to base was not wise since we can have "sideways" prerequisites (those from parallel directories such as brep's ../web/*). | |||||
2016-04-19 | Redesign src/out scoping | Boris Kolpackov | 1 | -19/+54 | |
We no longer enter paths from the src tree into scope map. Instead, targets from the src tree now include their out tree directory (in essence their "configuration"). This is then used to find a target's scope. See the comment in class target for details. The result of this change is that we can now again build multiple configurations (out trees) for same project at once. | |||||
2016-04-18 | Add support for using value attributes in eval context | Boris Kolpackov | 1 | -174/+271 | |
For example: if ($x == [null]) Or: if ([uint64] 01 == [uint64] 1) | |||||
2016-04-11 | New configuration logic, iteration 1 | Boris Kolpackov | 1 | -3/+2 | |
2016-04-09 | Add abs_dir_path type, auto-complete if initialized from names | Boris Kolpackov | 1 | -10/+11 | |
2016-04-05 | Add support for scope/target-qualified variable expansion | Boris Kolpackov | 1 | -91/+160 | |
For example: print $(dir/:var) print $(file{target}:var) print $(dir/file{target}:var) Note that if the scope/target does not (yet) exists, it will be created. |