Removes code duplication in darwin and clang-darwin toolsets.
Removes undocumented `<flags>` from several toolsets, there is documented `<compileflags>` that should be used instead.
`ar s` seems to be widely supported for a very long time:
- at least binutils 2.10 (June 2000)
- at least Darwin 8.0 (April 2005)
- since FreeBSD 3.0 (October 1998)
Note: Most of other (non-widely used) toolsets do not call `ranlib` and do not call `ar` with `s` flag either. I have no idea if they are correct or not, so I am not touching them here.
* Clang: Use --version instead of -dumpversion
Fixes issue when Clang 8 and below determined as 4.2.1 version.
* Bootstrap and test with versioned toolset
Eliminates need to manual configure toolsets via `user-config.jam` for testing, and allows to pass to `bootstrap.sh` the same toolset string as you would to B2 invocation what eliminates need to specify a custom exec via `--cxx=`.
Previously it was needed to include pch header in every source file, but Clang does it automatically making the usage non-uniform. It is also a very noisy process to add pch header to an existing project. Automatic on-demand header inclusion solves both issues.
* pch: msvc source automatic header folder inclusion
* pch test refactoring
* pch test msvc automatic pch source generation
* Include pch header automatically and on-demand
* no more need in gcc pch naming hack
Adding the variant information to the configure messages caused a lot of
long output. Avoid most of the long output by removing the data output
duplication and summarizing the variants as notes below the configure
items.
This change removes the "hard wired" set of features that are relevant
for a configure check. And instead uses the dynamic base properties
of the target property set. Hence always giving the minimal set of
unique properties for the configure check. This also adds output to
the configure items showing what that feature set is.
fixes#582
This implements the ability for response file "@()" substitution to
dynamically adjust to either expand the content or create the response
file depending on the possible command line length. This should
reduce the create of such response temp files improving build
performance.
Some tests failed because the bootstrap would continue to run even
detecting a problem. This puts in the missing early return statements
in the boost-build builtin rule to get the short circuit on error
like the original Jambase.
This ports the minimal Jambase to native C++. This removes the need for
mkjambase and the Jambase files. To accomplish that it adds C++
utility wrapers around Jam language primitives. Which makes future
similar work much easier.
This adds exclusions for toolsets that use response files for some
commands. Mostly it ignores the generated rsp files.
But also adds a special arg_file value to the MockProgram for future
use for possible content checking.
* Follow-up to removed restriction of pch naming on GCC
* Fix pch path conflict on GCC
gcc-pch-generator rewrites target name to a value derived from a header name
and this cases path conflict if multiple pch are created from the same header.
hello.cpp is duplicated in the test for the same reason but for `exe` target --
`exe hello-afx : hello.cpp ;` uses `hello.o` for object file name.
Do not require pch target to have the same name as the header base name.
The restriction was added in 76d041d7c1 without
a rationale and only for GCC while reworking PCH support for GCC and MSVC.
* Add a warning to running the Boost Build tests about outputting to the console in a configuration jam file.
* Fix the tests if the toolset passed has a version.
Now that the tests work in py2 or p3 we don't set py version in AP. This
allows for dealing with the AP images that don't have a way to set the
py version.