aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2016-04-22Fix testBoris Kolpackov2-2/+2
2016-04-21Fix legacy stuff in testsBoris Kolpackov13-39/+12
2016-04-21Implement short-circuiting to group stateBoris Kolpackov1-3/+3
This is necessary to get rid of bogus restarts in inject_prerequisites() where it think a group member was updated since its state changed from unknown to (group's) changed.
2016-04-18Add support for using value attributes in eval contextBoris Kolpackov4-3/+28
For example: if ($x == [null]) Or: if ([uint64] 01 == [uint64] 1)
2016-04-12Add support for scope-qualification of overrides, scope visibilityBoris Kolpackov1-2/+42
2016-04-06Test and fix override logicBoris Kolpackov7-0/+366
2016-04-05Add support for scope/target-qualified variable expansionBoris Kolpackov3-0/+42
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-04Implement value typing, null support via value attributesBoris Kolpackov5-4/+104
For example: v = [null] v = [string] abc v += ABC # abcABC
2016-04-02Implement variable typing (via attributes)Boris Kolpackov3-0/+26
Now we can do: [string] str = foo
2016-04-02Add attribute syntax infrastructureBoris Kolpackov10-10/+31
2016-03-31Set part of variable override implementationBoris Kolpackov2-2/+2
2016-03-28Add support for pair representation reversibilityBoris Kolpackov2-0/+16
2016-03-28Adjust tests/quote now that we support escaping in double-quoted stringsBoris Kolpackov2-0/+5
2016-03-28Change pairs semantics from separated to unseparatedBoris Kolpackov3-0/+70
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-02-29Implement auxiliary dependency database (.d files), use in cxx.compileBoris Kolpackov2-0/+174
This is part of the "High Fidelity Build" work.
2016-01-24Fix bug in dynamically derived target typesBoris Kolpackov1-1/+1
2016-01-21Add support for ==, != in eval contextBoris Kolpackov4-0/+66
2016-01-09Update copyright yearBoris Kolpackov5-5/+5
2015-12-14Add support for variable prepend operator: =+Boris Kolpackov3-0/+21
2015-12-07Add support for specifying minimum required build2 versionBoris Kolpackov1-0/+31
The syntax is: using build@0.1.0-a1 The idea is that we will later also use it for modules and 'build' is a special, the "build system itself" module. Also fix a problem with peeking and lexer mode switching.
2015-12-03Implement new potential directive keyword testBoris Kolpackov5-9/+25
Now we can use directive names as variables and targets type, for example: print = foo # variable print{foo}: # target
2015-12-03Implement if-else conditionsBoris Kolpackov3-0/+126
if if! elif elif! else The expression should evaluate to true of false. The if! and elif! versions are provided as shortcuts to writing if (!...). See tests/if-else for examples.
2015-12-02Implement optional module loadingBoris Kolpackov1-0/+5
The syntax is: using? cli Now each module use results in two bool variables: <module>.loaded and <module>.configured. Also implement variable visibility (the above two variables are limited to project).
2015-12-01Reimplement define as dynamic derivation rather than aliasBoris Kolpackov2-12/+26
New syntax: define cli: file The rationale is we need to be able to assign the file extension (using type/pattern-specific variables). And if it is an alias, we will assign it to the original target type. Note that we could still support aliases if we need to. Will need to bring back the id member in target_type that would normally point to itself but for an alias would point to the origin.
2015-12-01Implement support for definition target type aliasesBoris Kolpackov1-0/+16
For example: define cli=file Currently, the semantics is that of a real alias with only name differences that are used for display. See tests/define/buildfile for more use cases.
2015-11-30Implement target type/pattern-specific variablesBoris Kolpackov1-0/+33
For example: cxx{*-options}: dist = true 1. Only single '*' wildcard is supported, matches 0 or more characters. 2. If target type is not specified, it defaults to any target. 3. Appending (+=) is not allowed. 4. The value is expanded immediately in the context of the scope. 5. The more specific pattern (i.e., with the shortest "stem") is preferred. If the stem has the same length, then the last defined (but not redefined) pattern is used. This will probably have to change to become an error. See tests/variable/type-pattern for more examples.
2015-11-28Add support for name crosses, for example {hxx ixx cxx}{foo bar}Boris Kolpackov3-0/+94
See tests/names for more examples.
2015-09-11Add support for unnamed projectsBoris Kolpackov6-0/+15
Sometimes (e.g., in bpkg configuration) we don't have a project name. In fact, it is not really a project; it can never be referenced in an import directive. So we now have a notion of an unnamed project. Such a project should still have the 'project' variable set first thing in bootstrap.build but its value should be empty. Note that we can still amalgamate such projects just liked named ones.
2015-09-10Lexer test fixesBoris Kolpackov1-4/+4
2015-09-10Add support for chunking name parsingBoris Kolpackov4-16/+116
2015-09-09For newline escaping, ignore whole thing instead of making it newlineBoris Kolpackov5-0/+40
To capture literal newline, use quoting.
2015-09-09Add support for quoting directive namesBoris Kolpackov3-0/+12
Now only unquoted, literal names are recognized as directives, for example: 'print' = abc print $print
2015-09-09Add initial support for function calls: $func(a b c)Boris Kolpackov4-0/+26
Now it is just a stub that prints the function name and its argument. Currently only single argument can be passed (no value pack support yet).
2015-09-09Add support for evaluation contextBoris Kolpackov9-1/+72
For now it acts as just the value mode that can be enabled anywhere variable expansion is supported, for example: (foo=bar): And the primary use currently is to enable/test quoted and indirect variable expansion: "foo bar" = FOO BAR print $"foo bar" # Invalid. print $("foo bar") # Yeah, baby. foo = FOO FOO = foo print $($foo) Not that you should do something like this...
2015-09-09Reimplement double quote lexing to avoid "implied quote" trickBoris Kolpackov4-1/+9
2015-09-08Initial take on double quote supportBoris Kolpackov4-1/+55
Currently, $(foo)-style variable expansion is not supported.
2015-09-08Implement single quote supportBoris Kolpackov2-10/+48
2015-08-31Rework scoping logicBoris Kolpackov13-2/+125
Now the src directory is entered into the scope map and points to the same scope as out. This means that targets that are in src, not out (e.g., source files) will "see" rules, variables, etc. This becomes important when we try, for example, to install a source file (say, a header) from src: we need the rule as well as the install.* variables.
2015-08-27Dist module/meta-operation initial implementationBoris Kolpackov9-1/+29
2015-08-24Test installing doc{} as prerequisite of exe{}Boris Kolpackov2-1/+2
2015-08-24Only treat name as directory if it is reversibleBoris Kolpackov2-0/+12
2015-08-24Add support for reversing project qualification to string valueBoris Kolpackov4-0/+38
2015-08-24New variable architectureBoris Kolpackov2-2/+2
2015-08-13Rework postponed logicBoris Kolpackov1-3/+3
Specifically, now postponed is only used by the execution mode logic and rules should not return it directly.
2015-08-03match_only and dependents count rework, part 1Boris Kolpackov1-1/+2
2015-07-31Essential install module functionalityBoris Kolpackov18-2/+69
2015-07-28Install module genesisBoris Kolpackov3-0/+12
2015-07-24Add support for generated test input/outputBoris Kolpackov7-1/+44
2015-07-24Further test module developmentBoris Kolpackov3-5/+7
2015-07-23Basic test supportBoris Kolpackov3-1/+15