aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-04-08Get rid of need to store scope in variable valueBoris Kolpackov4-39/+20
2015-04-07Initial support for amalgamation/subprojectsBoris Kolpackov8-60/+277
For now both need to be manually specified in src bootstrap. At this stage main() loads any outer root scopes while include loads any inner.
2015-04-07Provide more convenient access to root scopeBoris Kolpackov13-106/+148
2015-04-02Handle "nothing to be done" case for disfigureBoris Kolpackov6-22/+59
2015-04-02Implement translation of meta/operations to natural languageBoris Kolpackov7-24/+186
2015-04-02Keep previous version of b executable as b-prev until linker succeedsBoris Kolpackov2-5/+10
This is useful in case of a linker error in which case the b binary is deleted and we have nothing to use. Also, it is a good idea to manually keep b-save in case of runtime bugs introduced during development.
2015-04-02Add command line option to set verbosity levelBoris Kolpackov7-5/+1014
-v sets it to 1 (shows actual command lines) --verbose sets it to any value in the 0-5 range
2015-04-01Warn about configured/command line value mismatchBoris Kolpackov5-50/+117
Also store configured but unspecified values
2015-04-01Implement initial C++ configuration supportBoris Kolpackov9-41/+319
2015-03-31Rename root_scope to global_scopeBoris Kolpackov6-28/+28
To avoid confusion with project's root scopes.
2015-03-31Save config.buildBoris Kolpackov3-2/+68
2015-03-30Initial support for command line variablesBoris Kolpackov7-89/+167
2015-03-30Add support for configurable pair separator, use @ instead of = in buildspecBoris Kolpackov4-57/+42
2015-03-27Rework dependency state dump supportBoris Kolpackov13-64/+142
We now have a combined (scopes, variables, and targets) dump.
2015-03-25Recognize common cases (., .., and dir{}) when deriving out_baseBoris Kolpackov1-6/+17
2015-03-25Configure/disfigure src_root saving/removing support; fsdir{} injectionBoris Kolpackov24-217/+720
We can now build out-of-tree.
2015-03-24Make meta-operations control build loop; add disfigure skeletonBoris Kolpackov18-271/+522
2015-03-20New consolidated load/match/build loopBoris Kolpackov17-298/+418
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 Kolpackov16-44/+252
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 Kolpackov4-20/+57
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 Kolpackov5-45/+39
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 Kolpackov9-40/+134
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 Kolpackov3-14/+15
2015-02-24Add fsdir{} for creating directoriesBoris Kolpackov5-1/+103
2015-02-23Clean up file namesBoris Kolpackov6-7/+7
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