Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2020-07-06 | Adjust variable block applicability in dependency chains | Boris Kolpackov | 1 | -106/+122 | |
Before the block used to apply to the set of prerequisites before the last `:`. This turned out to be counterintuitive and not very useful since prerequisite-specific variables are a lot less common than target specific. And it doesn't fit with ad hoc recipes. The new rule is if the chain ends with `:`, then the block applies to the last set of prerequisites. Otherwise, it applies to the last set of targets. For example: ./: exe{test}: cxx{main} { test = true # Applies to the exe{test} target. } ./: exe{test}: libue{test}: { bin.whole = false # Applies to the libue{test} prerequisite. } This is actually consistent with both non-chain and non-block cases. Consider: exe{test}: cxx{main} { test = true } exe{test}: libue{test}: { bin.whole = false } exe{test}: libue{test}: bin.whole = false The only exception we now have in this overall approach of "if the dependency declaration ends with a colon, then what follows is for a prerequisite" is for the first semicolon: exe{test}: { test = true } exe{test}: test = true But that's probably intuitive enough since there cannot be a prerequisite without a target. | |||||
2020-06-18 | Delay checking for ad hoc C++ recipe support until match | Boris Kolpackov | 1 | -9/+1 | |
2020-06-15 | Diagnose building of module or ad hoc C++ recipe using static build system | Boris Kolpackov | 1 | -2/+6 | |
2020-06-11 | Diagnose use of ad hoc C++ recipes with bootstrap build system | Boris Kolpackov | 1 | -1/+5 | |
2020-06-10 | Add ad hoc recipe if-else, switch tests (and fix bug) | Boris Kolpackov | 1 | -4/+10 | |
2020-06-10 | Handle special variable names when spelled as $(<char>) rather than $<char> | Boris Kolpackov | 1 | -2/+41 | |
2020-06-10 | Fix bug in subscript of NULL values | Boris Kolpackov | 1 | -1/+3 | |
2020-06-09 | Factor ad hoc C++ and Buildscript rules into separate files | Boris Kolpackov | 1 | -1/+4 | |
2020-06-05 | Add depdb buildscript builtin | Karen Arutyunov | 1 | -1/+1 | |
2020-06-05 | Add ability to split ad hoc C++ recipe into global and local fragments | Boris Kolpackov | 1 | -6/+34 | |
Specifically, now we can write: {{ c++ 1 -- #include <map> -- recipe apply (action, target&) const override { ... } }} | |||||
2020-06-05 | Add ability to specify ad hoc recipe actions | Boris Kolpackov | 1 | -8/+122 | |
We are reusing the buildspec syntax for that. | |||||
2020-06-04 | Properly handle diag directive in build script parser | Karen Arutyunov | 1 | -1/+2 | |
2020-06-03 | Allow process path values and targets as buildscript program names | Karen Arutyunov | 1 | -2/+2 | |
Also deduce the recipe name. | |||||
2020-06-03 | Add versioning for ad hoc C++ recipes | Boris Kolpackov | 1 | -2/+21 | |
This will allow us to deal with backward-incompatible changes to cxx_rule interface and semantics. | |||||
2020-06-03 | Factor implementation-specific ad hoc recipe parsing to adhoc_*_rule | Boris Kolpackov | 1 | -68/+40 | |
2020-05-29 | Move low-verbosity command name from adhoc_script_rule to script | Boris Kolpackov | 1 | -3/+3 | |
2020-05-29 | Add support for is-else, switch in ad hoc recipes | Boris Kolpackov | 1 | -130/+262 | |
2020-05-27 | Add support for value subscript after expansions | Boris Kolpackov | 1 | -27/+118 | |
Value subscript is only recognized in evaluation contexts (due to ambiguity with wildcard patterns; consider: $x[123].txt) and should be unseparated from the previous token. For example: x = ($y[1]) x = (($f ? $y : $z)[1]) x = ($identity($y)[$z]) | |||||
2020-05-27 | Initial support for ad hoc recipes (still work in progress) | Boris Kolpackov | 1 | -140/+404 | |
2020-05-27 | Improve ternary diagnostics with info for wildcard pattern escape | Boris Kolpackov | 1 | -2/+13 | |
2020-05-01 | Fix outstanding issue with directive vs assignment differentiation | Boris Kolpackov | 1 | -6/+14 | |
Specifically, now the following does the right thing: print +foo | |||||
2020-04-30 | Rename target::member to target::adhoc_member | Boris Kolpackov | 1 | -2/+2 | |
2020-04-27 | Rework tool importation along with cli module | Boris Kolpackov | 1 | -55/+107 | |
Specifically, now config.<tool> (like config.cli) is handled by the import machinery (it is like a shorter alias for config.import.<tool>.<tool>.exe that we already had). And the cli module now uses that instead of custom logic. This also adds support for uniform tool metadata extraction that is handled by the import machinery. As a result, a tool that follows the "build2 way" can be imported with metadata by the buildfile and/or corresponding module without any tool-specific code or brittleness associated with parsing --version or similar outputs. See the cli tool/module for details. Finally, two new flavors of the import directive are now supported: import! triggers immediate importation skipping any rule-specific logic while import? is optional import (analogous to using?). Note that optional import is always immediate. There is also the import-specific metadata attribute which can be specified for these two import flavors in order to trigger metadata importation. For example: import? [metadata] cli = cli%exe{cli} if ($cli != [null]) info "cli version $($cli:cli.version)" | |||||
2020-04-27 | Don't switch projects when switching scopes during bootstrap | Boris Kolpackov | 1 | -5/+13 | |
2020-04-27 | Fix assertion failure when name extension pattern is used | Karen Arutyunov | 1 | -0/+4 | |
2020-04-08 | Allow configuration variables in unnamed projects | Boris Kolpackov | 1 | -9/+27 | |
While generally a bad idea, there are valid situations where this may happen, such as a standalone build of the tests subproject in test-installed. | |||||
2020-03-31 | Handle duplicate config directives for same variable | Boris Kolpackov | 1 | -1/+18 | |
2020-03-31 | Switch to project variable visibility by default | Boris Kolpackov | 1 | -2/+3 | |
2020-03-27 | Fix bug in previous commit | Boris Kolpackov | 1 | -2/+2 | |
2020-03-27 | Implement project configuration reporting, similar to build system modules | Boris Kolpackov | 1 | -85/+186 | |
2020-03-26 | Make buildfile parser reset'able | Boris Kolpackov | 1 | -12/+32 | |
Note that the testscript parser (which derives from the buildfile parser) is (still) not reset'able (this functionality is currently not needed so why complicate things). | |||||
2020-03-25 | Enforce config directives only appearing in project's root.build | Boris Kolpackov | 1 | -6/+7 | |
2020-03-20 | Initial implementation of config directive for project-specific configuration | Boris Kolpackov | 1 | -1/+135 | |
2020-03-20 | Lexer support for default value assignment (?=) | Boris Kolpackov | 1 | -0/+10 | |
Note: not yet supported in the parser. | |||||
2020-03-18 | Cleanup variable type/visibility/overridability logic | Boris Kolpackov | 1 | -40/+54 | |
2020-03-18 | Get rid of old and unused logic | Boris Kolpackov | 1 | -30/+5 | |
2020-03-17 | Rename all find*(variable) to lookup*(variable) | Boris Kolpackov | 1 | -2/+2 | |
Now we consistently use term "lookup" for variable value lookup. At some point we should also rename type lookup to binding and get rid of all the lookup_type aliases. | |||||
2020-02-07 | Drop copyright notice from source code | Karen Arutyunov | 1 | -1/+0 | |
2020-01-28 | Use scope::var_pool() | Boris Kolpackov | 1 | -3/+3 | |
2020-01-27 | Improve module loading API | Boris Kolpackov | 1 | -1/+1 | |
2020-01-27 | Improve process run_*() API | Boris Kolpackov | 1 | -9/+6 | |
2019-11-15 | Test and document wildcard character escaping | Boris Kolpackov | 1 | -1/+1 | |
Also document the new bracket expression ([...]) wildcard support. | |||||
2019-11-15 | Generalize attributes to be comma-separated with arbitrary values | Boris Kolpackov | 1 | -45/+77 | |
Before: x = [string null] After: x = [string, null] | |||||
2019-11-14 | Cleanup attribute parsing code | Boris Kolpackov | 1 | -48/+28 | |
2019-11-14 | Require attributes to be separated from words and similar on RHS | Boris Kolpackov | 1 | -2/+19 | |
2019-11-14 | Tighten up attribute recognition during parsing | Boris Kolpackov | 1 | -78/+111 | |
Now it should be possible to use `[]` for wildcard patterns, for example: foo = foo.[hit]xx Note that a leading bracket expression will still be recognized as attributes and escaping or quoting it will inhibit pattern matching. To resolve this case we need to specify an empty attribute list: foo = [] [abc]-foo.cxx | |||||
2019-11-11 | Use path_name for `-` to stdin/stdout translation | Karen Arutyunov | 1 | -17/+18 | |
2019-11-07 | Initial work on path_name use for `-` to stdin/stdout translation | Boris Kolpackov | 1 | -2/+2 | |
2019-11-05 | Cosmetic change | Boris Kolpackov | 1 | -2/+2 | |
2019-11-05 | Fix function call diagnostics to use diag_frame | Boris Kolpackov | 1 | -15/+11 | |