aboutsummaryrefslogtreecommitdiff
path: root/build/target.cxx
AgeCommit message (Collapse)AuthorFilesLines
2015-08-14Don't short-cut to group_state if recipe is group_recipeBoris Kolpackov1-4/+1
This way we mess up the dependents count.
2015-08-14Fix several issues in outer operation recipe override logicBoris Kolpackov1-0/+40
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-0/+6
2015-07-31Essential install module functionalityBoris Kolpackov1-34/+88
2015-07-29Initial support for target type/pattern-specific variablesBoris Kolpackov1-1/+44
2015-07-24Add support for generated test input/outputBoris Kolpackov1-2/+2
2015-07-24Further test module developmentBoris Kolpackov1-1/+2
2015-07-21Improve nested operations supportBoris Kolpackov1-1/+1
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-21Add alias{} target type, use as base for dir{}Boris Kolpackov1-4/+14
2015-07-07Rework module architectureBoris Kolpackov1-77/+0
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-1/+2
2015-07-01Cleanup group "see through" designBoris Kolpackov1-15/+19
2015-06-30Group "see through" iteration, take 1Boris Kolpackov1-0/+12
2015-06-26Part two of dependency injection with auto-generation supportBoris Kolpackov1-0/+11
2015-06-25Part one of dependency injection with auto-generation supportBoris Kolpackov1-1/+9
2015-06-24First take on the cli module plus necessary infrastructureBoris Kolpackov1-14/+60
2015-06-18Move path_mtime to filesystem, rename file_mtime, follow symlinksBoris Kolpackov1-3/+8
2015-05-22Avoid relying on static initialization orderBoris Kolpackov1-16/+14
2015-05-11Correct copyrightBoris Kolpackov1-1/+1
2015-04-24Implement lib/liba/libso{} target group, shared/static library buildBoris Kolpackov1-19/+3
2015-04-17Search in target group during variable lookupBoris Kolpackov1-3/+7
2015-04-17Add support for target groups, use to handle obj/obja/objso object targetsBoris Kolpackov1-14/+16
2015-04-15New variables architectureBoris Kolpackov1-4/+21
Now operator[] is only used for lookup.
2015-04-15Initial library supportBoris Kolpackov1-0/+37
2015-04-13Add separate type to represent directory pathsBoris Kolpackov1-19/+19
2015-04-07Provide more convenient access to root scopeBoris Kolpackov1-8/+23
2015-03-27Rework dependency state dump supportBoris Kolpackov1-1/+1
We now have a combined (scopes, variables, and targets) dump.
2015-03-24Make meta-operations control build loop; add disfigure skeletonBoris Kolpackov1-5/+5
2015-03-13Add support for "first" and "last" execution modesBoris Kolpackov1-5/+12
2015-03-12Implement clean operationBoris Kolpackov1-2/+15
2015-03-10Further operation implementationBoris Kolpackov1-0/+2
2015-03-09Build according to buildspecBoris Kolpackov1-31/+109
At this stage operations are still ignored.
2015-03-04Move roots and bases to appropriate scopesBoris Kolpackov1-1/+1
2015-03-03Implement new default target logic, canonical directory name (empty value)Boris Kolpackov1-1/+0
The logic is as follows: if we have an explicit current directory target, then that's the default target. Otherwise, we take the first target and use it as a prerequisite to create an implicit current directory target, effectively making it the default target via an alias. If there are no targets in this buildfile, then we don't do anything.
2015-03-02Cleanup to support clang compilationBoris Kolpackov1-3/+5
2015-02-27Variable assignment, appending supportBoris Kolpackov1-1/+1
2015-02-24Use prefix_map for scopes, establish root scopeBoris Kolpackov1-1/+1
2015-02-24Add fsdir{} for creating directoriesBoris Kolpackov1-0/+9
2015-02-23Don't create new target for alias/action/dir prerequisiteBoris Kolpackov1-1/+16
2015-02-23Redo rule match/build logicBoris Kolpackov1-40/+122
Now the rule is fully responsible for searching, matching, and building of prerequisites.
2015-02-20Rename 'directory' to 'dir' in target, prerequisiteBoris Kolpackov1-2/+2
2015-02-20Rework extension handling logicBoris Kolpackov1-1/+1
We no longer support hxx{vector.}. Rather, the target type can decide, e.g., based on a config variable, whether to append an extension. Also, in the future we may support a syntax to specify that this is a complete name, e.g., hxx{'vector'}.
2015-02-19Add support for sourcing/including buildfiles, print, dir{} aliasBoris Kolpackov1-2/+14
2015-01-20Diagnostic infrastructure revampBoris Kolpackov1-3/+3
2015-01-16Implement rule chaining for cxx::linkBoris Kolpackov1-2/+44
2015-01-14Track file extension in target, prerequisiteBoris Kolpackov1-1/+6
2015-01-08Implement tracing supportBoris Kolpackov1-2/+14
Also use to-relative path translation in diagnostics.
2014-12-18Initial support for loading dependency info from buildfilesBoris Kolpackov1-8/+17
Also a new iteration on the overall architecture. Now, for the first time, build can read the buildfile and build itself. g++-4.9 -std=c++14 -g -I.. -o bd bd.cxx algorithm.cxx scope.cxx parser.cxx lexer.cxx target.cxx prerequisite.cxx rule.cxx native.cxx cxx/target.cxx cxx/rule.cxx process.cxx timestamp.cxx path.cxx g++-4.9 -std=c++14 -g -I../../.. -o driver driver.cxx ../../../build/lexer.cxx g++-4.9 -std=c++14 -g -I../../.. -o driver driver.cxx ../../../build/lexer.cxx ../../../build/parser.cxx ../../../build/scope.cxx ../../../build/target.cxx ../../../build/native.cxx ../../../build/prerequisite.cxx ../../../build/path.cxx ../../../build/timestamp.cxx
2014-12-10Add rulesBoris Kolpackov1-0/+38
g++-4.9 -std=c++11 -g -I.. -o bd bd.cxx target.cxx native.cxx rule.cxx cxx/rule.cxx cxx/target.cxx process.cxx timestamp.cxx path.cxx