The '$' character is now escaped as the "$$" sequence when a non-zero-length "$$" character sequence ends with the "$(" sequence or the '(' character.
This allows the use of SHELL $(...) or $((...)) expressions within bjam expressions such as "actions { ... }" or "[ SHELL ... ]".
---------
Co-authored-by: René Ferdinand Rivera Morell <grafikrobot@gmail.com>
This completes rewriting the command line argument parsing to replace it with the Lyra library. The main() changes now allow for parsing project jamfiles before printing help text. And hence allow for all jam side args to be displayed with -h.
Add property-db class to record & write structured data.
This adds a utility to record structured data in the form of a property database where the keys are a property path with string or number values. The data can be converted to a string, or written to a file, as JSON.
This expands out the failed and skipped summary tail lines to also include a sorted list of action and targets of the corresponding failed and skipped targets. This makes it easier to see them and to further search for individual ones in teh rest of the output. It also makes it possible to quickly retry specific targets.
fixes#196
It is much harder to spot stuff in a long string. When every file is printed on a separate line it is visually much simple to search through it, recognize missing files and wrong prefixes/suffixes.
* test suite fixes for link=static default
* emscripten renovation
* inherit from clang toolset
* update for 'new' fastcomp backend
* exceptions support
* dynamic linking support
* pthread support
* run-tests launcher via nodejs
I've setup CI on GHA because it is much more convenient using their action script.
This covers different Mingw setups and it does not fail on PCH tests like Mingw-w64 one installed by default on GHA/Azure (either because GCC exe there was built without ASLR or is a new recent version which supports PCH relocation).
-mthreads is obsolete and is not presented in clang, and was never a thing in cygwin (fixes#38).
I have no idea why clang was configured to add -pthread on threadapi=win32, changing this is a breaking change but is the right thing to do. I run Boost.Thread tests and it passed cleanly on both threadapi=win32 and threadapi=pthread.
* update tag test to check pdbs too
* pdb order issues tentative fix
I believe this is the root cause of mysterious bugs involving pdbs:
1. `replace-targets` may rearrange targets order, which might be the cause of
exe/dll/lib swapping places.
2. The hack in `msvc-linking-generator` were messing things up somehow when
`virtual-target.register` returns a cached target.
Even if the change does not fix these issues it is still a good code refactor.
* use usual name generation machinery for pdbs
Removes additional point of failure, the need for actual toolset to be available, and speeds up mock tests considerably.
A bit disgusting solution, could be improved by removing limitation where toolsets take into account only first `<archive>` value.