aboutsummaryrefslogtreecommitdiff
path: root/build2/parser.cxx
AgeCommit message (Collapse)AuthorFilesLines
2016-09-15Add io_error alias for std::ios_base::failureKaren Arutyunov1-3/+3
2016-08-30Add support for target visibility, use for dist, test, installBoris Kolpackov1-7/+15
This means we can no longer write: install = false Now it should be: *: install = false
2016-08-30Add support for using '*' as target type in variable assignmentBoris Kolpackov1-3/+8
So these three are equivalent: *: foo = 1 {*}: foo = 2 *{*}: foo = 3
2016-08-17Allow expansion of undefined/NULL namespace variablesBoris Kolpackov1-2/+4
This restriction is not proving to get in the way.
2016-08-10Add ignore case support for find_option()Karen Arutyunov1-2/+1
2016-08-05Implement out-qualified target syntax for setting target-specific varsBoris Kolpackov1-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-05Merge 'value' and 'pairs' lexer_mode, call it 'value'Boris Kolpackov1-24/+24
We only really used pairs.
2016-08-02Optimize out path::normalize() callsBoris Kolpackov1-7/+24
2016-07-28Adjust to new path implementation, use to support reversibilityBoris Kolpackov1-34/+21
2016-07-25Only do "effective escaping" (['"\$(]) on the command lineBoris Kolpackov1-1/+4
This will make things more convenient on Windows provided we use "sane" paths (no spaces, no (), etc).
2016-07-23Adapt to fdstream extensionKaren Arutyunov1-17/+6
2016-07-21Add support for single line if-blocksBoris Kolpackov1-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-20Switch to dynamic empty() implementation in variable valueBoris Kolpackov1-16/+20
The current model fell apart when we modified values directly.
2016-07-20Implement support for <, >, <=, >= in eval contextBoris Kolpackov1-16/+60
Now can write: if ($build.version > 30000)
2016-07-16Add support for prepend/append in target type/pattern-specific varsBoris Kolpackov1-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-27Add config.bin.target var/hint, use to decide libso{} install modeBoris Kolpackov1-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-26Minor module interface cleanupsBoris Kolpackov1-1/+1
2016-06-26Add notion of ad hoc group, use to handle DLL/import libraryBoris Kolpackov1-46/+1
2016-06-18Port to MinGWKaren Arutyunov1-7/+20
2016-06-03Treat trailing backslash as directory indicatorBoris Kolpackov1-13/+36
Note that with this change we broke reversibility for such names, i.e., 'foo\' name will be reversed to 'foo/'.
2016-04-23Revert back to using root scope in src_out()/out_src()Boris Kolpackov1-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-19Redesign src/out scopingBoris Kolpackov1-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-18Add support for using value attributes in eval contextBoris Kolpackov1-174/+271
For example: if ($x == [null]) Or: if ([uint64] 01 == [uint64] 1)
2016-04-11New configuration logic, iteration 1Boris Kolpackov1-3/+2
2016-04-09Add abs_dir_path type, auto-complete if initialized from namesBoris Kolpackov1-10/+11
2016-04-05Add support for scope/target-qualified variable expansionBoris Kolpackov1-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.
2016-04-05Make name::pair char againBoris Kolpackov1-2/+12
The plan is to represent scope/target-qualified variables as ':'-style pairs.
2016-04-04Implement value typing, null support via value attributesBoris Kolpackov1-128/+306
For example: v = [null] v = [string] abc v += ABC # abcABC
2016-04-02Implement variable typing (via attributes)Boris Kolpackov1-19/+77
Now we can do: [string] str = foo
2016-04-02Add attribute syntax infrastructureBoris Kolpackov1-25/+141
2016-04-01Allow specifying scope in target type/pattern-specific variable assignmentBoris Kolpackov1-38/+43
For example: tests/exe{*}: test = true
2016-03-31Set part of variable override implementationBoris Kolpackov1-0/+14
2016-03-30Minor parser interface reworkBoris Kolpackov1-12/+11
2016-03-28New variable architectureBoris Kolpackov1-15/+21
2016-03-28Add support for pair representation reversibilityBoris Kolpackov1-1/+1
2016-03-28Change pairs semantics from separated to unseparatedBoris Kolpackov1-14/+29
Before we use to recognize 'x @ y' as a pair. Now it has to be written unseparated, as 'x@y'. See tests/pairs for details on the new semantics.
2016-03-28Enable @-delimited pairs mode everywhereBoris Kolpackov1-41/+102
2016-02-29Rename level[1-6]() to l[1-6]()Boris Kolpackov1-9/+9
2016-02-12<types>/<utility> scheme cleanupBoris Kolpackov1-6/+0
2016-01-24Differentiate extension printing according to stream verbosityBoris Kolpackov1-3/+2
2016-01-24If base target type doesn't use extensions, don't use them in derivedBoris Kolpackov1-2/+6
2016-01-24Fix bug in dynamically derived target typesBoris Kolpackov1-1/+8
2016-01-23Cleanup absolute/relative path diagnostics by introducing stream verbosityBoris Kolpackov1-13/+13
2016-01-21Add support for ==, != in eval contextBoris Kolpackov1-3/+42
2016-01-21Rename equal token to assign, etcBoris Kolpackov1-16/+10
2016-01-09Update copyright yearBoris Kolpackov1-1/+1
2016-01-05Rename build directory/namespace to build2Boris Kolpackov1-0/+2206