aboutsummaryrefslogtreecommitdiff
path: root/build
AgeCommit message (Collapse)AuthorFilesLines
2015-11-28Add support for name crosses, for example {hxx ixx cxx}{foo bar}Boris Kolpackov2-31/+123
See tests/names for more examples.
2015-11-28Include export.build from loaded, src-amalgamated subprojectsBoris Kolpackov1-3/+25
2015-11-28Bump version to 0.1.0Boris Kolpackov1-1/+1
2015-11-28Fix separated { handling in names parserBoris Kolpackov1-2/+2
'foo/ {a b}' should be equivalent to 'foo/ a b', not 'foo/a foo/b'.
2015-11-24Add missing #includeBoris Kolpackov1-0/+1
2015-11-24Account for dangling/inaccessible linksBoris Kolpackov1-1/+12
2015-09-25Quote arguments with spaces in print_process()Boris Kolpackov1-4/+17
2015-09-11Use install::alisa_rule to ignore non-installable prerequisitesBoris Kolpackov5-9/+66
2015-09-11Check amalgamation itself when searching for imported projectBoris Kolpackov1-1/+10
2015-09-11Handle file io failures in parserBoris Kolpackov4-84/+99
2015-09-11Add support for unnamed projectsBoris Kolpackov2-5/+19
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-11Preserve pairs in expansionBoris Kolpackov1-0/+6
2015-09-10Reimplement buildspec parsing to deal with eval contextBoris Kolpackov1-71/+108
In short, in buildspec, parens are treated as operation application rather than eval context unless double-quoted. So in 'clean(foo)' we have the clean operation on target foo while in '"clean(foo)"' we have target cleanfoo. Also, as a bonus, we can now do {clean update}(/long/target/name/).
2015-09-10Fix bug in names() chunking modeBoris Kolpackov1-4/+4
2015-09-10Add support for token pre-processing in lexerBoris Kolpackov2-2/+21
2015-09-10Add support for chunking name parsingBoris Kolpackov2-11/+30
2015-09-09For newline escaping, ignore whole thing instead of making it newlineBoris Kolpackov1-5/+4
To capture literal newline, use quoting.
2015-09-09Add support for quoting directive namesBoris Kolpackov6-48/+45
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 Kolpackov1-27/+59
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 Kolpackov4-130/+204
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 Kolpackov2-104/+96
2015-09-08Initial take on double quote supportBoris Kolpackov2-19/+93
Currently, $(foo)-style variable expansion is not supported.
2015-09-08Use mode stack in lexerBoris Kolpackov3-24/+44
2015-09-08Implement single quote supportBoris Kolpackov4-5/+47
2015-09-08Move context-dependent functions from diagnostics to contextBoris Kolpackov6-184/+183
2015-09-08Clean up lexer mode logicBoris Kolpackov3-3/+4
2015-09-08Rework diagnostics verbosity, add quiet mode/optionBoris Kolpackov32-156/+234
2015-09-04Fix clang warningsBoris Kolpackov2-3/+4
2015-09-04Fix static initialization order issueBoris Kolpackov2-4/+14
2015-09-02Override duplicate generated C++ dependency prefixBoris Kolpackov1-3/+12
2015-09-02Remove stray spaceBoris Kolpackov1-1/+1
2015-09-01Minor changesBoris Kolpackov2-4/+1
2015-08-31Clean parser implementationBoris Kolpackov2-59/+13
2015-08-31Rework scoping logicBoris Kolpackov28-246/+475
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-29New configure meta-operation implementationBoris Kolpackov11-27/+88
Now we search and match (but do not execute) a rule for every operation supported by the project.
2015-08-27Dist module/meta-operation initial implementationBoris Kolpackov34-229/+1093
2015-08-24Ignore unknown prerequisite types in C++ link ruleBoris Kolpackov2-13/+0
2015-08-24Cosmetic changeBoris Kolpackov1-1/+1
2015-08-24Only treat name as directory if it is reversibleBoris Kolpackov2-29/+35
2015-08-24Add support for reversing project qualification to string valueBoris Kolpackov1-1/+26
2015-08-24New variable architectureBoris Kolpackov37-955/+1988
2015-08-17Tighten variable_map interfaceBoris Kolpackov4-35/+54
2015-08-14Don't short-cut to group_state if recipe is group_recipeBoris Kolpackov2-15/+8
This way we mess up the dependents count.
2015-08-14Rework meta/operation registrationBoris Kolpackov16-115/+186
We now have global tables for meta/operation. Plus each can then be enabled on the per-project basis.
2015-08-14Fix several issues in outer operation recipe override logicBoris Kolpackov3-24/+50
2015-08-13Rework postponed logicBoris Kolpackov12-75/+88
Specifically, now postponed is only used by the execution mode logic and rules should not return it directly.
2015-08-03Fix few bugsBoris Kolpackov3-4/+10
2015-08-03match_only rework, part 2Boris Kolpackov8-96/+123
2015-08-03match_only and dependents count rework, part 1Boris Kolpackov6-29/+73
2015-07-31Cosmetic changeBoris Kolpackov1-1/+1