path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
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
2015-07-22Fix postponed re-examination logicBoris Kolpackov4-0/+14
Now postponed takes precedence over changed.
2015-07-21Test module genesisBoris Kolpackov4-0/+19
2015-07-20Implement support for importing installed librariesBoris Kolpackov3-0/+15
2015-07-13Implement subproject importBoris Kolpackov13-27/+29
2015-07-13Make subprojects list of name=subdir pairsBoris Kolpackov1-1/+1
2015-07-10Implement automatic subproject discoveryBoris Kolpackov8-3/+17
Currently we only capture their directories without the project names. We will need project names when we hook import search into this.
2015-07-08Implement automatic amalgamation discoveryBoris Kolpackov3-2/+2
2015-07-07Relax requirement on amalgamation src_root to track sub-projectBoris Kolpackov10-5/+29
2015-07-07Rework module architectureBoris Kolpackov2-1/+2
Now the target type and rule maps are in scopes (builtins -- in global scope). We also now have the map of loaded modules in the root scope of each project.
2015-07-02Various improvements to cli moduleBoris Kolpackov1-4/+4
2015-07-02Make few existing file searching optimizationsBoris Kolpackov1-2/+5
2015-06-30Group "see through" iteration, take 1Boris Kolpackov2-5/+5
2015-06-26Part two of dependency injection with auto-generation supportBoris Kolpackov3-5/+18
2015-06-25Part one of dependency injection with auto-generation supportBoris Kolpackov21-12/+99
2015-06-24Implement proper target type detection in dependency injectionBoris Kolpackov2-2/+6