aboutsummaryrefslogtreecommitdiff
path: root/build2/context.cxx
AgeCommit message (Collapse)AuthorFilesLines
2019-07-01Split build system into library and driverBoris Kolpackov1-1016/+0
2019-06-24Constrain access to options to build system driver main() onlyBoris Kolpackov1-6/+5
2019-06-03Adapt to renaming traits alias to traits_type for basic_path, basic_url, and ↵Karen Arutyunov1-3/+3
string_table class templates
2019-04-08Support for --dry-run|-n mode, perform update partBoris Kolpackov1-0/+1
2019-03-14Add support for multiple variable overridesBoris Kolpackov1-37/+23
Now we can do: $ b config.cxx.coptions=-O3 config.cxx.coptions=-O0 Or even: $ b config.cxx.coptions=-O3 config.cxx.coptions+=-g
2019-03-14Change variable::override list order, make doubly-linkedBoris Kolpackov1-9/+27
2019-03-13Cutoff append/prepend overrides that come before assignment overrideBoris Kolpackov1-1/+1
For example: $ b x+=1 x=2 x+=3 Should result in '2 3', not '1 2 3'.
2019-01-16Update copyright yearKaren Arutyunov1-1/+1
2019-01-12Adapt to standard version API changeKaren Arutyunov1-4/+7
2018-11-28Add config.hxx.in config header, move stage status thereBoris Kolpackov1-7/+1
2018-11-09Add support for relative to base scope command line variable overridesBoris Kolpackov1-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
2018-11-08Make command line variable override scope syntax consistent with buildfileBoris Kolpackov1-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
2018-10-26Add config.{c,cxx}.{id,version,target} configuration variablesBoris Kolpackov1-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).
2018-09-12Bump version to 0.9.0-a.0.z, master is open for businessBoris Kolpackov1-1/+1
2018-09-11Change build.version.stage to falsev0.8.0Boris Kolpackov1-1/+1
2018-07-30Make project variable to be of project_name typeKaren Arutyunov1-4/+4
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-16Implement in moduleBoris Kolpackov1-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
2018-06-28Add prerequisite variable visibility specification/enforcementBoris Kolpackov1-2/+3
2018-06-28Implement support for excluded and ad hoc prerequisitesBoris Kolpackov1-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
2018-06-20Fix race in phase switch during failureBoris Kolpackov1-0/+3
2018-05-19Update copyright yearKaren Arutyunov1-1/+1
2018-05-19Set <module>.booted variable for booted but not yet loaded modulesBoris Kolpackov1-4/+7
2018-05-19Add manifest{} target type ('manifest' file name automatically mapped as such)Boris Kolpackov1-0/+5
2018-05-19Support for deriving target type from file name, handle testscript, buildfileBoris Kolpackov1-0/+5
In particular, instead of: exe{test}: test{testscript} We should now write: exe{test}: testscript
2018-05-02Add support for different backlinking modes, use for Windows DLL assemblyBoris Kolpackov1-3/+3
2018-04-28Expose meta-operation in build.meta_operation variableBoris Kolpackov1-0/+4
2018-04-26Implement forwarded configurations and backlinkingBoris Kolpackov1-20/+28
2018-02-22Make dist diagnostics tidier yetBoris Kolpackov1-0/+1
2018-02-07Add support for update-for-{test,install} operation aliasesBoris Kolpackov1-7/+9
2018-02-07Initial work for default update outer operationBoris Kolpackov1-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.
2018-01-05Add support for variable aliasesBoris Kolpackov1-1/+1
2017-12-16Improve process execution diagnostics by reusing run_*() APIBoris Kolpackov1-1/+1
2017-12-15Remove unnecessary according to Clang lambda captures to suppress warningsBoris Kolpackov1-4/+4
Apparently, use of a reference to a global variable need not be captured: https://bugs.llvm.org/show_bug.cgi?id=35669
2017-12-13Implement info meta operationBoris Kolpackov1-0/+1
This meta operation can be used to print basic information (name, version, source/output roots, etc) for one or more projects.
2017-12-07Distinguish between "fixed" and "default" target extensionsBoris Kolpackov1-1/+3
This fixes wrong merging of, say, file{README} and file{README.MySQL} (in libmysqlclient).
2017-12-03Allow typification of variables and values across load generationsBoris Kolpackov1-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.
2017-12-01Terminate waiting threads if coming off failed load phaseBoris Kolpackov1-2/+148
In this case the build state may no longer be valid.
2017-11-21Improve skipped update diagnosticsBoris Kolpackov1-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.
2017-11-09Add support for for-loopBoris Kolpackov1-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.
2017-10-03Adapt to modularization of libbutlKaren Arutyunov1-1/+1
2017-08-20Add support for not cleaning generated version fileBoris Kolpackov1-0/+4
2017-08-04Make file_rule match mtime_targets that have valid timestampBoris Kolpackov1-2/+2
This can be used to handle installed target groups like lib{}.
2017-08-01Add version, project.summary, project.url built-in variablesBoris Kolpackov1-4/+16
Extract them from manifest in the version module. Use them when generating the pkg-config's .pc files.
2017-07-27Implement displaying build progress (--progress|-p)Boris Kolpackov1-20/+63
2017-05-01Add hxx extension for headersKaren Arutyunov1-11/+11
2017-04-28Align build.version.* variables with standard version/version moduleBoris Kolpackov1-11/+25
2017-04-28Add in{} target type for .in ("input") file (requires preprocessing)Boris Kolpackov1-0/+1
2017-04-25Rename version header to version-impl to give way to version moduleBoris Kolpackov1-1/+0
2017-03-17Implement create meta-operationBoris Kolpackov1-1/+5