aboutsummaryrefslogtreecommitdiff
path: root/build/algorithm.cxx
AgeCommit message (Collapse)AuthorFilesLines
2015-11-29Allow for target group members to remain unresolvedBoris Kolpackov1-2/+1
This, for example, can happen when we have a fallback rule for dist(update) or configure(update).
2015-09-08Rework diagnostics verbosity, add quiet mode/optionBoris Kolpackov1-3/+3
2015-08-31Rework scoping logicBoris Kolpackov1-1/+1
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 Kolpackov1-94/+103
2015-08-13Rework postponed logicBoris Kolpackov1-1/+1
Specifically, now postponed is only used by the execution mode logic and rules should not return it directly.
2015-08-03match_only rework, part 2Boris Kolpackov1-4/+5
2015-07-29Initial support for target type/pattern-specific variablesBoris Kolpackov1-3/+1
2015-07-24Add support for generated test input/outputBoris Kolpackov1-18/+22
2015-07-24Further test module developmentBoris Kolpackov1-0/+14
2015-07-22Fix postponed re-examination logicBoris Kolpackov1-16/+14
Now postponed takes precedence over changed.
2015-07-21Improve nested operations supportBoris Kolpackov1-76/+89
The idea is this: we need to be able to override "conditional, inner for outer" recipes with the "unconditional inner" ones. Here is the concrete scenario: we have {update, test} action and the lib{} target that is both mentioned as a prerequisite of ./ and exe{}, which is a test. At first, we want to ignore lib{} when reached as a prerequisite of ./. But then we get to it via exe{} (which is a test and thus should be updated). At this point we should override the recipe for lib{} with the one that would update it rather than ignore.
2015-07-20Implement pre/post operation supportBoris Kolpackov1-8/+12
Also, extend execution mode/postponed logic to propagate the postponed target state. At the top, we now re-try postponed targets. This results in the expected behavior when, for example, cleaning two targets with one depending on the other.
2015-07-15Implement project-qualified names/prerequisites, two-stage importBoris Kolpackov1-0/+7
2015-07-07Rework module architectureBoris Kolpackov1-93/+110
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-01Group state supportBoris Kolpackov1-5/+23
2015-07-01Cleanup group "see through" designBoris Kolpackov1-19/+25
2015-06-30Group "see through" iteration, take 1Boris Kolpackov1-6/+6
2015-06-26Part two of dependency injection with auto-generation supportBoris Kolpackov1-2/+2
2015-06-25Part one of dependency injection with auto-generation supportBoris Kolpackov1-2/+2
2015-06-24First take on the cli module plus necessary infrastructureBoris Kolpackov1-14/+68
2015-06-22Remove prerequisite rewriting from inject_parent_fsdir()Boris Kolpackov1-19/+4
2015-06-18Move path and filesystem from build2 to libbutlBoris Kolpackov1-1/+0
2015-06-18Move some utilities from build2 to libbutlBoris Kolpackov1-0/+3
2015-05-22Get rid of gcc, clang warnings (-Wall)Boris Kolpackov1-1/+3
2015-05-11Correct copyrightBoris Kolpackov1-1/+1
2015-04-28Second iteration over import/export supportBoris Kolpackov1-1/+1
2015-04-26Rework resolved prerequisite targets storageBoris Kolpackov1-39/+158
2015-04-24Implement lib/liba/libso{} target group, shared/static library buildBoris Kolpackov1-112/+3
2015-04-17Add support for target groups, use to handle obj/obja/objso object targetsBoris Kolpackov1-28/+48
2015-04-13Add separate type to represent directory pathsBoris Kolpackov1-3/+3
2015-04-07Provide more convenient access to root scopeBoris Kolpackov1-3/+3
2015-04-02Handle "nothing to be done" case for disfigureBoris Kolpackov1-1/+1
2015-04-02Implement translation of meta/operations to natural languageBoris Kolpackov1-14/+16
2015-03-25Configure/disfigure src_root saving/removing support; fsdir{} injectionBoris Kolpackov1-32/+37
We can now build out-of-tree.
2015-03-13Add support for "first" and "last" execution modesBoris Kolpackov1-1/+20
2015-03-13Add postponed recipe execution supportBoris Kolpackov1-2/+4
2015-03-12Implement clean operationBoris Kolpackov1-13/+86
2015-03-10Further operation implementationBoris Kolpackov1-33/+48
2015-03-02Cleanup to support clang compilationBoris Kolpackov1-1/+1
2015-03-02Clean up clang warningsBoris Kolpackov1-1/+1
2015-02-26Support for scope parents, initial variable supportBoris Kolpackov1-1/+1
2015-02-24Make empty key to always be prefix in prefix_mapBoris Kolpackov1-5/+2
2015-02-23Rename "select" to "apply"Boris Kolpackov1-2/+2
2015-02-23Redo rule match/build logicBoris Kolpackov1-26/+115
Now the rule is fully responsible for searching, matching, and building of prerequisites.
2015-02-20Rename 'directory' to 'dir' in target, prerequisiteBoris Kolpackov1-3/+3
2015-01-20Diagnostic infrastructure revampBoris Kolpackov1-21/+20
2015-01-16Implement rule chaining for cxx::linkBoris Kolpackov1-73/+15
2015-01-15Implement rule ambiguity detectionBoris Kolpackov1-9/+96
Also establish the infrastructure for rule hinting
2015-01-14Track file extension in target, prerequisiteBoris Kolpackov1-3/+24
2015-01-08Implement tracing supportBoris Kolpackov1-3/+6
Also use to-relative path translation in diagnostics.