summaryrefslogtreecommitdiffstats
path: root/build2/context.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright yearKaren Arutyunov2019-01-161-1/+1
|
* Adapt to standard version API changeKaren Arutyunov2019-01-121-4/+7
|
* Add config.hxx.in config header, move stage status thereBoris Kolpackov2018-11-281-7/+1
|
* Add support for relative to base scope command line variable overridesBoris Kolpackov2018-11-091-12/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if we say: $ b dir/ ./foo=bar The scope the foo=bar is set on is relative to CWD, not dir/. While this may seem wrong at first, this is the least surprising behavior when we take into account that there can be multiple dir/'s. Sometimes, however, we do want the override directory to be treated relative to (every) target's base scope that we are building. To support this we are extending the '.' and '..' special directory names (which are still resolved relative to CWD) with '...', which means "relative to the base scope of every target in the buildspec". For example: $ b dir/ .../foo=bar Is equivalent to: $ b dir/ dir/foo=bar And: $ b liba/ libb/ .../tests/foo=bar Is equivalent to: $ b liba/ libb/ liba/tests/foo=bar libb/tests/foo=bar
* Make command line variable override scope syntax consistent with buildfileBoris Kolpackov2018-11-081-18/+74
| | | | | | | | | | | | | | | | | | | Before: $ b dir/:foo=bar ... After: $ b dir/foo=bar Alternatively (the buildfile syntax): $ b 'dir/ foo=bar' Note that the (rarely used) scope visibility modifier now leads to a double slash: $ b dir//foo=bar
* Add config.{c,cxx}.{id,version,target} configuration variablesBoris Kolpackov2018-10-261-1/+3
| | | | | | | These variables allow overriding guessed compiler id/version/target, for example, in case of mis-guesses or when working with compilers that don't report their base (e.g., GCC, Clang) with -v/--version (common in the embedded space).
* Bump version to 0.9.0-a.0.z, master is open for businessBoris Kolpackov2018-09-121-1/+1
|
* Change build.version.stage to falseBoris Kolpackov2018-09-111-1/+1
|
* Make project variable to be of project_name typeKaren Arutyunov2018-07-301-4/+4
|
* Add build.version.stage boolean variableBoris Kolpackov2018-07-281-0/+14
| | | | | It can be used to detection (for example, in tests) whether this is a staged toolchain.
* Implement in moduleBoris Kolpackov2018-07-161-1/+0
| | | | | | | | | | | | | | | | | | | | 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
* Add prerequisite variable visibility specification/enforcementBoris Kolpackov2018-06-281-2/+3
|
* Implement support for excluded and ad hoc prerequisitesBoris Kolpackov2018-06-281-0/+3
| | | | | | | | | | | | | | 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
* Fix race in phase switch during failureBoris Kolpackov2018-06-201-0/+3
|
* Update copyright yearKaren Arutyunov2018-05-191-1/+1
|
* Set <module>.booted variable for booted but not yet loaded modulesBoris Kolpackov2018-05-191-4/+7
|
* Add manifest{} target type ('manifest' file name automatically mapped as such)Boris Kolpackov2018-05-191-0/+5
|
* Support for deriving target type from file name, handle testscript, buildfileBoris Kolpackov2018-05-191-0/+5
| | | | | | | | | | In particular, instead of: exe{test}: test{testscript} We should now write: exe{test}: testscript
* Add support for different backlinking modes, use for Windows DLL assemblyBoris Kolpackov2018-05-021-3/+3
|
* Expose meta-operation in build.meta_operation variableBoris Kolpackov2018-04-281-0/+4
|
* Implement forwarded configurations and backlinkingBoris Kolpackov2018-04-261-20/+28
|
* Make dist diagnostics tidier yetBoris Kolpackov2018-02-221-0/+1
|
* Add support for update-for-{test,install} operation aliasesBoris Kolpackov2018-02-071-7/+9
|
* Initial work for default update outer operationBoris Kolpackov2018-02-071-1/+2
| | | | | | While update still uses the old "all update rules update all their prerequisites" assumption, test and install have been fixed not to rely on this.
* Add support for variable aliasesBoris Kolpackov2018-01-051-1/+1
|
* Improve process execution diagnostics by reusing run_*() APIBoris Kolpackov2017-12-161-1/+1
|
* Remove unnecessary according to Clang lambda captures to suppress warningsBoris Kolpackov2017-12-151-4/+4
| | | | | | Apparently, use of a reference to a global variable need not be captured: https://bugs.llvm.org/show_bug.cgi?id=35669
* Implement info meta operationBoris Kolpackov2017-12-131-0/+1
| | | | | This meta operation can be used to print basic information (name, version, source/output roots, etc) for one or more projects.
* Distinguish between "fixed" and "default" target extensionsBoris Kolpackov2017-12-071-1/+3
| | | | | This fixes wrong merging of, say, file{README} and file{README.MySQL} (in libmysqlclient).
* Allow typification of variables and values across load generationsBoris Kolpackov2017-12-031-1/+1
| | | | | | | | | | The original semantics turned out to be too restrictive. For example, the user may have specified the config.c variable on the command line that is only used by an imported project that is loaded in a subsequent generation. We are also relaxing it for values since conceptually the two feel the same. For a value the (hypothetical) example is a "common" variable set in a project root that is only queried in a subdirectory in a subsequent generation.
* Terminate waiting threads if coming off failed load phaseBoris Kolpackov2017-12-011-2/+148
| | | | In this case the build state may no longer be valid.
* Improve skipped update diagnosticsBoris Kolpackov2017-11-211-0/+1
| | | | | Instead of printing a line for each target skipped we now print a summary with count at the end. We also now show the skip count in progress.
* Add support for for-loopBoris Kolpackov2017-11-091-1/+1
| | | | | | | | | | | | | | | | The semantics is similar to the C++11 range-based for: list = 1 2 3 for i: $list print $i Note that there is no scoping of any kind for the loop variable ('i' in the above example). See tests/loop/for.test for some examples/ideas. In the future the plan is to also support more general while-loop as well as break and continue.
* Adapt to modularization of libbutlKaren Arutyunov2017-10-031-1/+1
|
* Add support for not cleaning generated version fileBoris Kolpackov2017-08-201-0/+4
|
* Make file_rule match mtime_targets that have valid timestampBoris Kolpackov2017-08-041-2/+2
| | | | This can be used to handle installed target groups like lib{}.
* Add version, project.summary, project.url built-in variablesBoris Kolpackov2017-08-011-4/+16
| | | | | Extract them from manifest in the version module. Use them when generating the pkg-config's .pc files.
* Implement displaying build progress (--progress|-p)Boris Kolpackov2017-07-271-20/+63
|
* Add hxx extension for headersKaren Arutyunov2017-05-011-11/+11
|
* Align build.version.* variables with standard version/version moduleBoris Kolpackov2017-04-281-11/+25
|
* Add in{} target type for .in ("input") file (requires preprocessing)Boris Kolpackov2017-04-281-0/+1
|
* Rename version header to version-impl to give way to version moduleBoris Kolpackov2017-04-251-1/+0
|
* Implement create meta-operationBoris Kolpackov2017-03-171-1/+5
|
* Add build.verbosity variable with -v/-V/--verbose valueBoris Kolpackov2017-03-151-0/+4
|
* Implement support for wildcard patternsBoris Kolpackov2017-03-101-92/+97
|
* Implement parallel matchBoris Kolpackov2017-03-021-7/+146
|
* Add MT-safe variable_cache, use for variable overridesBoris Kolpackov2017-02-131-4/+0
|
* Allow back overriding variables specified in buildfilesBoris Kolpackov2017-02-131-1/+1
| | | | | | | | It is still not clear whether this is the right thing to allow, conceptually, but with this disallowed it's hard to test this functionality. Perhaps we should have an attribute [overridable]. The problem is one will also have to set this variable to some value (e.g., [null]) which is not exactly the same as undefined (especially when testing).
* Implement parallel error propagation, keep_going modeBoris Kolpackov2017-02-131-3/+34
| | | | | | | Keep going is the default but there is now the -s|--serial-stop that makes the driver run serially and stop at first error. Also fix some lockups, other minor improvements/features.
* Introduce target::task_countBoris Kolpackov2017-02-131-1/+1
|