aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-08-07Add support for default extension specification, trailing dot escapingBoris Kolpackov14-179/+372
For example: cxx{*}: extension = cxx cxx{foo} # foo.cxx cxx{foo.test} # foo.test (probably what we want...) cxx{foo.test...} # foo.test.cxx (... is this) cxx{foo..} # foo. cxx{foo....} # foo.. cxx{foo.....} # error (must come in escape pair)
2018-07-30Fortify cli detection against "other" cli's (like Mono JIT compiler)Boris Kolpackov1-12/+25
2018-07-30Make project variable to be of project_name typeKaren Arutyunov32-116/+271
2018-07-28Add build.version.stage boolean variableBoris Kolpackov1-0/+14
It can be used to detection (for example, in tests) whether this is a staged toolchain.
2018-07-26Pass extension supplied by rule to target type default extension functionBoris Kolpackov6-25/+38
Also revert the precedence back to target type over rule. But now the target type is able to customize this logic (see exe{} for a use case).
2018-07-25Remove unnecessary initialization (which also helps GCC 4.9 and VC 14u3)Boris Kolpackov1-1/+1
2018-07-25Add note to bash module documentationBoris Kolpackov1-1/+3
2018-07-25Exclude cli and bash modules from bootstrap buildBoris Kolpackov4-10/+7
2018-07-25Prefer default extension supplied by rule over one supplied by target typeBoris Kolpackov3-20/+25
2018-07-25Add noteBoris Kolpackov1-3/+4
2018-07-25Fix C++ module testKaren Arutyunov1-1/+1
2018-07-25Fix broken dist checksum calculationKaren Arutyunov1-1/+1
2018-07-24Make exe{} target default to no extension rather than failBoris Kolpackov2-13/+10
This just keep breaking (this time for exe{}: in{} match during distribution). So we assume rules will assign the target platform extension if necessary and if not, then we default to no extension (e.g., a shell script).
2018-07-24Switch to new GCC module interface (-fmodule-mapper)Boris Kolpackov3-153/+112
2018-07-24Handle leading 'module;' marker (p0713)Boris Kolpackov4-4/+45
2018-07-24Document in and bash modulesBoris Kolpackov2-11/+309
2018-07-23Sanitize project name when forming config.import.<proj> variableBoris Kolpackov1-5/+23
Specifically, '-', '+', and '.' are replaced with '_' to form a "canonical" variable name.
2018-07-21Install bash module prerequisites for amalgamation rather than projectBoris Kolpackov4-5/+31
This is similar to what we do for shared libraries in cc::install_rule.
2018-07-21Fix installed import semantics for bash modulesBoris Kolpackov1-6/+31
2018-07-21Tweak bash rule matching semanticsBoris Kolpackov1-2/+5
2018-07-20Implement bash moduleBoris Kolpackov24-128/+1138
2018-07-20Add builtin.concat(dir_path,name) overloadBoris Kolpackov2-0/+30
In particular, this allows: export $out_root/libfoo/$import.target
2018-07-20Match inner update rule before prerequisites in install::file_ruleBoris Kolpackov1-8/+13
2018-07-17Add --after <ref-file> option for testscript touch builtinKaren Arutyunov4-20/+82
2018-07-17Reimplement version::in_rule in terms of in::ruleBoris Kolpackov7-441/+182
Significantly, the version::in_rule rule now track changes to the substitution values.
2018-07-17Add temporary sleep to in test to verify debugging hypothesisBoris Kolpackov1-0/+3
2018-07-17Handle executables (permissions, extensions) in in::ruleBoris Kolpackov2-2/+37
2018-07-17Add ability to customize in::rule's default symbol and modeBoris Kolpackov2-3/+8
2018-07-16Update bootstrap scripts with new module directory (in)Boris Kolpackov4-1/+5
2018-07-16Implement in moduleBoris Kolpackov19-112/+861
Given test.in containing something along these lines: foo = $foo$ Now we can do: using in file{test}: in{test.in} file{test}: foo = FOO The alternative variable substitution symbol can be specified with the in.symbol variable and lax (instead of the default strict) mode with in.substitution. For example: file{test}: in.symbol = '@' file{test}: in.substitution = lax
2018-07-16Resolve function overload via the argument reversal to untypedBoris Kolpackov8-227/+99
2018-07-14Add testscript mv builtinKaren Arutyunov3-10/+530
2018-07-12Adjust modules test to maybe-cleanup .ii files (no longer there for VC)Boris Kolpackov1-1/+1
2018-07-11Remove build2 tag from manifestKaren Arutyunov1-1/+1
2018-07-11Force reprocessing for module interface units if compiling with VCBoris Kolpackov1-0/+10
2018-07-10Fix bug in dist checksum implementationBoris Kolpackov1-3/+6
2018-07-10Add support for archive checksum generation during distributionBoris Kolpackov2-23/+186
Now we can do: $ b dist: ... \ config.dist.archives='tar.gz zip' \ config.dist.checksums='sha1 sha256' And end up with .tar.gz.sha1, .tar.gz.sha256, .zip.sha1, and .zip.sha256 checksum files in addition to archives.
2018-07-09Regenerate options parsing codeBoris Kolpackov3-3/+20
2018-07-05Add repositories.manifestBoris Kolpackov1-0/+10
2018-07-05Add backlink to generated options parsing codeBoris Kolpackov1-0/+5
2018-07-03Enter config.dist.uncommitted in dist module, make omittedBoris Kolpackov2-9/+13
One side-effect of doing this in the version module (where it is still used and enforced) was that dist module configuration (e.g., in an amalgamation) did not include this variable (and which was then duplicated in each subproject).
2018-06-29Use depdb to track changes to cli compiler, options, etcBoris Kolpackov4-22/+123
2018-06-28Workaround for VC14 bugBoris Kolpackov1-0/+4
2018-06-28Bump build2 version requirement to 0.8.0Boris Kolpackov1-2/+2
2018-06-28Add prerequisite variable visibility specification/enforcementBoris Kolpackov7-21/+106
2018-06-28Implement support for excluded and ad hoc prerequisitesBoris Kolpackov31-283/+600
The inclusion/exclusion is controlled via the 'include' prerequisite-specific variable. Valid values are: false - exclude true - include adhoc - include but treat as an ad hoc input For example: lib{foo}: cxx{win32-utility}: include = ($cxx.targe.class == 'windows') exe{bar}: libs{plugin}: include = adhoc
2018-06-25Minor note on Apple Clang to vanilla Clang version mappingBoris Kolpackov1-6/+8
2018-06-20Regularize .gitignore filesKaren Arutyunov3-0/+10
2018-06-20Add $process.run() and $process.run_regex() functionsBoris Kolpackov10-12/+350
$process.run(<prog>[ <args>...]) Return trimmed stdout. $process.run_regex(<prog>[ <args>...], <pat> [, <fmt>]) Return stdout lines matched and optionally processed with regex. Each line of stdout (including the customary trailing blank) is matched (as a whole) against <pat> and, if successful, returned, optionally processed with <fmt>, as an element of a list.
2018-06-20Fix race in phase switch during failureBoris Kolpackov1-0/+3