aboutsummaryrefslogtreecommitdiff
path: root/build
AgeCommit message (Collapse)AuthorFilesLines
2015-03-18Implement complete root/base detection, basic module supportBoris Kolpackov15-53/+482
This is the initial groundwork for the configuration support.
2015-03-13Factor string_table into separate fileBoris Kolpackov4-96/+124
2015-03-13Rename set_key to map_key; feels more correctBoris Kolpackov3-13/+13
2015-03-13Add support for "first" and "last" execution modesBoris Kolpackov15-44/+248
2015-03-13Add postponed recipe execution supportBoris Kolpackov5-18/+61
2015-03-12Implement clean operationBoris Kolpackov17-190/+584
2015-03-10Further operation implementationBoris Kolpackov17-164/+358
2015-03-09Add meta/operation lists, lift operations in buildspecBoris Kolpackov6-30/+149
2015-03-09Add support for skipping already loaded/included buildfiles at top levelBoris Kolpackov5-15/+32
The idea is that a buildfile shall be included/loaded only once for any given out_root.
2015-03-09Build according to buildspecBoris Kolpackov9-248/+406
At this stage operations are still ignored.
2015-03-07Add support for buildspecBoris Kolpackov7-18/+402
2015-03-06Add support for lexing and parsing name pairsBoris Kolpackov6-46/+218
We will need it for the buildspec and also if/when we support map variable types.
2015-03-04Treat names that end with directory separators as directoriesBoris Kolpackov2-28/+57
2015-03-04Move roots and bases to appropriate scopesBoris Kolpackov18-111/+424
2015-03-03Use names() to handle include/source, support include of directoriesBoris Kolpackov1-20/+51
This gives us variable expansion and directory prefixes. Also, in include, if the path is a directory (either ends with / or has dir{} type), then we append 'buildfile'.
2015-03-03Implement new default target logic, canonical directory name (empty value)Boris Kolpackov6-145/+158
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 Kolpackov4-39/+34
2015-03-02Implement variable expansionBoris Kolpackov5-20/+230
2015-03-02Indicate whether token is separated from previous one by whitespacesBoris Kolpackov5-92/+117
2015-03-02Implement value lexing modeBoris Kolpackov2-20/+67
So that we can do foo=g++ without having to resort to quoting
2015-03-02Clean up clang warningsBoris Kolpackov7-18/+19
2015-02-27Variable assignment, appending supportBoris Kolpackov20-54/+493
2015-02-26Support for scope parents, initial variable supportBoris Kolpackov8-19/+113
2015-02-24Sort out diagnostics for mkdirBoris Kolpackov4-12/+54
2015-02-24Use prefix_map for scopes, establish root scopeBoris Kolpackov11-14/+120
2015-02-24Make empty key to always be prefix in prefix_mapBoris Kolpackov2-7/+10
2015-02-24Add fsdir{} for creating directoriesBoris Kolpackov5-1/+103
2015-02-23Clean up file namesBoris Kolpackov4-5/+5
2015-02-23Rename "select" to "apply"Boris Kolpackov5-12/+12
2015-02-23Don't create new target for alias/action/dir prerequisiteBoris Kolpackov2-3/+18
2015-02-23Redo rule match/build logicBoris Kolpackov22-416/+891
Now the rule is fully responsible for searching, matching, and building of prerequisites.
2015-02-20Get rid of parse_ prefix in parser function namesBoris Kolpackov2-32/+32
2015-02-20Rename 'directory' to 'dir' in target, prerequisiteBoris Kolpackov7-25/+23
2015-02-20Rework extension handling logicBoris Kolpackov7-64/+55
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 Kolpackov11-121/+504
2015-01-20Diagnostic infrastructure revampBoris Kolpackov20-426/+650
2015-01-16Add support for directory prefixesBoris Kolpackov3-19/+65
For example: cxx{driver ../{foo bar}} cxx{driver} ../cxx{foo bar}
2015-01-16Implement rule chaining for cxx::linkBoris Kolpackov16-219/+384
2015-01-15Implement rule ambiguity detectionBoris Kolpackov6-21/+111
Also establish the infrastructure for rule hinting
2015-01-15Allow specifying prefix_map delimiter as template argumentBoris Kolpackov2-10/+31
2015-01-14Implement prefix_mapBoris Kolpackov2-0/+161
2015-01-14Track file extension in target, prerequisiteBoris Kolpackov14-34/+244
2015-01-08Implement tracing supportBoris Kolpackov16-28/+343
Also use to-relative path translation in diagnostics.
2015-01-05Rename 'bd' to 'b'Boris Kolpackov3-4/+7
What the heck, let's be bold, right?
2015-01-05Determine work, home, and {src,out}_{root,base} directoriesBoris Kolpackov6-4/+160
2014-12-18Initial support for loading dependency info from buildfilesBoris Kolpackov21-183/+773
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-15Parse directory scopesBoris Kolpackov4-61/+151
2014-12-12Initial buildfile parser implementationBoris Kolpackov6-37/+254
g++-4.9 -std=c++14 -g -I../../.. -o driver driver.cxx ../../../build/lexer.cxx ../../../build/parser.cxx && ./driver
2014-12-12Add test for lexerBoris Kolpackov2-2/+7
g++-4.9 -std=c++14 -g -I../../.. -o driver driver.cxx ../../../build/lexer.cxx && ./driver
2014-12-11Initial lexer implementation for buildfilesBoris Kolpackov6-1/+438