aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-09Update Testscript manual with notes on redirect aliasesBoris Kolpackov1-12/+40
2020-06-09Factor ad hoc C++ and Buildscript rules into separate filesBoris Kolpackov7-1331/+1399
2020-06-09Make metadata variable prefix mandatoryBoris Kolpackov5-39/+20
While we could automatically set it if the target is imported, there is nothing we can do if the target is used in the same project. So to avoid confusion we make it mandatory.
2020-06-08Add buildscript recipe testsKaren Arutyunov2-0/+100
2020-06-08Cleanup script command failure diagnosticsKaren Arutyunov7-21/+35
2020-06-08Fix crashing when special builtin appears inside if condition or branchKaren Arutyunov2-1/+33
2020-06-08Fix crashing for buildscript diag line using non-local variableKaren Arutyunov1-11/+35
2020-06-08Various minor fixesKaren Arutyunov2-3/+3
2020-06-08Improve depdb::check_mtime() diagnosticsBoris Kolpackov1-0/+8
2020-06-08Hash ad hoc prerequsites for ad hoc recipe change detectionBoris Kolpackov5-69/+152
2020-06-08Adjust rule_match name for ad hoc recipesBoris Kolpackov3-5/+14
2020-06-08Add note on why not using rule-specific variables for ad hoc recipesBoris Kolpackov1-2/+10
2020-06-08Fix handling of inner/outer operations in ad hoc recipes machineryBoris Kolpackov3-14/+29
2020-06-05Add depdb buildscript builtinKaren Arutyunov10-284/+521
2020-06-05Add ability to split ad hoc C++ recipe into global and local fragmentsBoris Kolpackov3-22/+139
Specifically, now we can write: {{ c++ 1 -- #include <map> -- recipe apply (action, target&) const override { ... } }}
2020-06-05Add ability to specify ad hoc recipe actionsBoris Kolpackov16-108/+284
We are reusing the buildspec syntax for that.
2020-06-04Properly handle diag directive in build script parserKaren Arutyunov11-125/+367
2020-06-03Fix $process.run() to properly handle proces_path_exKaren Arutyunov4-21/+54
2020-06-03Add clarifying commentBoris Kolpackov1-0/+5
2020-06-03Allow process path values and targets as buildscript program namesKaren Arutyunov20-123/+953
Also deduce the recipe name.
2020-06-03Fix function family for $target.path()Karen Arutyunov1-1/+1
2020-06-03Add name::file() predicateBoris Kolpackov1-0/+8
2020-06-03Get rid of remaining typedef'sBoris Kolpackov4-5/+5
2020-06-03Add versioning for ad hoc C++ recipesBoris Kolpackov4-21/+60
This will allow us to deal with backward-incompatible changes to cxx_rule interface and semantics.
2020-06-03Factor implementation-specific ad hoc recipe parsing to adhoc_*_ruleBoris Kolpackov5-93/+128
2020-06-02Hash checksum metadata of exe prerequisites in ad hoc script ruleBoris Kolpackov1-16/+56
2020-06-02Add $target.process_path() analogous to $target.path()Boris Kolpackov3-3/+33
2020-06-02Add process_path_ex with program stable name and checksumBoris Kolpackov10-58/+305
2020-06-01Fix buildscript unit test to compileBoris Kolpackov1-1/+1
2020-06-01Extend target metadata to include variable prefix, stable nameBoris Kolpackov4-31/+106
2020-05-29Move low-verbosity command name from adhoc_script_rule to scriptBoris Kolpackov6-17/+27
2020-05-29Add support for is-else, switch in ad hoc recipesBoris Kolpackov2-131/+278
2020-05-28Allow calling certain search_existing() versions during load phaseBoris Kolpackov4-10/+9
This is necessary for $target.path() implementation.
2020-05-28Regenerate options parsing codeBoris Kolpackov2-48/+50
2020-05-27Add support for value subscript after expansionsBoris Kolpackov10-85/+308
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-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov129-8192/+16218
2020-05-27Improve ternary diagnostics with info for wildcard pattern escapeBoris Kolpackov1-2/+13
2020-05-27Suppress skip count diagnostics if no progress was requestedBoris Kolpackov1-2/+5
2020-05-27Fix unregistered .regex file cleanup error in testscriptKaren Arutyunov1-1/+5
2020-05-27Amalgamation cutoff supportBoris Kolpackov8-66/+200
Now a project that disables amalgamation will not logically "see" an outer project even if it's physically inside its scope.
2020-05-27Use location_value in module_stateBoris Kolpackov2-4/+4
2020-05-22Get rid of now deprecated std::is_pod usageBoris Kolpackov2-9/+18
2020-05-22Fix bug in previous commitBoris Kolpackov1-1/+1
2020-05-22Make template definition available in all translation units where usedBoris Kolpackov5-30/+40
We were trying to be clever but GCC 10's IPA-SRA optimization didn't like it.
2020-05-01Fix outstanding issue with directive vs assignment differentiationBoris Kolpackov4-16/+65
Specifically, now the following does the right thing: print +foo
2020-04-30Verify path set by {src,out}-root.build files is absoluteBoris Kolpackov4-38/+56
2020-04-30Rename target::member to target::adhoc_memberBoris Kolpackov8-26/+34
2020-04-30Factor recipe to separate header/source filesBoris Kolpackov8-58/+86
2020-04-27Get rid of warningsBoris Kolpackov3-21/+32
2020-04-27Rework tool importation along with cli moduleBoris Kolpackov38-595/+1624
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)"