aboutsummaryrefslogtreecommitdiff
path: root/build2/utility
AgeCommit message (Collapse)AuthorFilesLines
2017-05-01Add hxx extension for headersKaren Arutyunov1-435/+0
2017-04-28Align build.version.* variables with standard version/version moduleBoris Kolpackov1-1/+1
2017-04-28Use standard_version for module versioning checksBoris Kolpackov1-34/+7
2017-04-28Implement support for pre-processing version headers (or other files)Boris Kolpackov1-2/+6
Also implement the build system version check.
2017-04-26Implement version moduleBoris Kolpackov1-18/+21
2017-04-25Rename version header to version-impl to give way to version moduleBoris Kolpackov1-0/+1
2017-04-01Redo handling of unhandled exceptions in async executionBoris Kolpackov1-1/+0
Here is the problem: noexcept looses the call stack. That is, unlike an unhandled exception, if noexcept is tripped, then you won't see the place where it was thrown. In this new implementation we now have noexcept only on the task thunk. And the task is called via a thunk only in case of async execution. This means that if we are executing serially (-j 1), then this will be an unhandled exception, not noexcept. Hopefully will be a bit easier to debug.
2017-03-22Make use of throw_generic_error()Karen Arutyunov1-0/+2
2017-03-17Catch and dump unhandled exceptions in async task functionsBoris Kolpackov1-0/+1
The problem with relying on noexcept for this is that there is no stack.
2017-02-13Implement parallel operation executionBoris Kolpackov1-0/+1
2017-01-24Redo config as feature test macrosBoris Kolpackov1-1/+2
2017-01-19Get rid of extension_poolBoris Kolpackov1-11/+0
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-12-13Use config macros from libbutlBoris Kolpackov1-0/+1
2016-11-22Use diagnostics facility from libbutlBoris Kolpackov1-42/+4
2016-11-18Add function machinery, implement path.normalize()Boris Kolpackov1-1/+1
Note that multi-argument functions are not yet "callable" since there is no support for value packs.
2016-11-15Add cat, false and true builtinsKaren Arutyunov1-6/+10
2016-11-07Make build.driver path absoluteBoris Kolpackov1-2/+2
2016-11-04Add --no-line, --no-column optionsBoris Kolpackov1-0/+5
2016-11-04Add build.driver variable with build system driver path (argv[0])Boris Kolpackov1-1/+5
2016-11-04Add sto*() names to utilityBoris Kolpackov1-0/+2
2016-11-04Factor global initialization into init() analogous to reset()Boris Kolpackov1-0/+6
2016-11-04Add support for lexer name scanning customizationBoris Kolpackov1-0/+1
2016-11-04Minor dependency cleanupBoris Kolpackov1-0/+30
2016-11-04Various design/implementation cleanupsBoris Kolpackov1-1/+4
2016-08-28Fix Windows rpath supportBoris Kolpackov1-0/+2
2016-08-26Add pkg-config support for import installedBoris Kolpackov1-1/+1
Redesign library importing/exporting while at it.
2016-08-24Handle *.export.libs, distinguish interface and implementation dependenciesBoris Kolpackov1-0/+14
A library dependency on another libraries is either "interface" or "implementation". If it is interface, then everyone who links to this library should also link to the interface dependency, explicitly. A good example of an interface dependency is a library API that is called in inline functions. Interface dependencies of a library should be explicitly listed in the *.export.libs (where we can also list target names). So the typical usage will be along these lines: import int_libs = libfoo%lib{foo} import int_libs += ... import imp_libs = libbar%lib{bar} import imp_libs += ... lib{baz}: ... $int_libs $imp_libs lib{baz}: cxx.export.libs = $int_libs
2016-08-22Cache process_path, use fallback search directory for binutilsBoris Kolpackov1-3/+56
2016-08-21Adjust to new butl::process interfaceBoris Kolpackov1-3/+3
2016-08-12Implement c/cxx toolchain cross-hintingBoris Kolpackov1-0/+7
2016-08-12Implement support for C compilationBoris Kolpackov1-2/+37
We now have two new modules: cc (c-common) and c.
2016-08-10Add ignore case support for find_option()Karen Arutyunov1-1/+6
2016-07-29Make /EHsc and /MD default for VC compilerBoris Kolpackov1-2/+55
2016-07-16Add support for prepend/append in target type/pattern-specific varsBoris Kolpackov1-0/+2
Semantically, these are similar to variable overrides and are essentially treated as "templates" that are applied on lookup to the "stem" value that is specific to the target type/name. For example: x = [string] a file{f*}: x =+ b sub/: { file{*}: x += c print $(file{foo}:x) # abc print $(file{bar}:x) # ac }
2016-07-15Name and cleanup extra VC files (.pdb, .ilk, .idb)Boris Kolpackov1-3/+12
2016-04-21Use hash map/set for targets/prerequisites to resolve key change issueBoris Kolpackov1-1/+2
2016-03-31Clean up variable lookup interfacesBoris Kolpackov1-4/+4
2016-03-28New variable architectureBoris Kolpackov1-4/+2
2016-03-14Add support for guessing ar/ranlib signaturesBoris Kolpackov1-2/+9
2016-03-11Implement --config-{guess,sub} optionsBoris Kolpackov1-0/+56
2016-03-07Implement compiler guessing, including icc and msvcBoris Kolpackov1-0/+34
2016-02-29Implement auxiliary dependency database (.d files), use in cxx.compileBoris Kolpackov1-0/+42
This is part of the "High Fidelity Build" work.
2016-02-12<types>/<utility> scheme cleanupBoris Kolpackov1-2/+18
2016-01-15Support X.Y.Z- version notationBoris Kolpackov1-2/+26
2016-01-09Update copyright yearBoris Kolpackov1-1/+1
2016-01-05Rename build directory/namespace to build2Boris Kolpackov1-0/+85