If intel exec commands are not detected we try to use the result anyway which would
error. This adds checks that prevent the errors to let the sequence of attempts
work.
fixes#109
Adds rule skip-from-usage-requirements to basic-target, this allows
customizing whether the build of a target should be skipped because one
of its sources has <build>no in usage requirements. So far only one
class takes advantage of this: alias-target-class. As a result alias
targets aren't skipped due to dependencies, but downstream targets still
could.
So, lib <- alias <- exe skips exe if lib is skipped.
But lib <- alias -> lib does not skip alias if either of libs is
skipped.
This adds `errno_puts` and `errno_printf` output functions that read and
output `errno` value and description in common format and through
common output channels. This also replaces direct uses of `perror` to
use the output functions.
fixes#53
Adds the vc143 preview toolset to bootstrap and build. Note, vc142 is still the default msvc toolset. When vc143 is released it will become the default with a future change.
Gcc toolset was unconditionally setting the JAMSHELL on Windows to try and
avoid long command arg errors. In doing so it also prevented external
setting of the JAMSHELL. This works around it by defaulting JAMSHELL
to the global value.
WARNING: This is only a work around. Ultimately we need to remove the
JAMSHELL variable entirely as it generally doesn't work.
* The engine can now be built with MinGW-w64 configured with --threads=win32.
This is the case for i686-w64-mingw32-g++ and x86_64-w64-mingw32-g++
distributed with the last versions of Cygwin compatible with Windows XP
(www.crouchingtigerhiddenfruitbat.org/Cygwin/timemachine.html).
The MinGW-w64 toolchains are very powerful, just like their gcc counterparts.
Even the ones with win32 threading model (as opposed to posix threading model),
while not able to use std::thread, can still build-and-use Boost.Thread.
(which, arguably, is more powerful than the Standard counterpart
for example with its support for thread interruption
-- which is less intrusive than the one offered by C++20 std::jthread).
For Windows XP, MinGW-w64 toolchains might be the only ones to support C++11.
Visual C++ has only been supporting C++11 since 2013
(and those versions require-and-often-target newer versions of Windows).
The only part of <thread> we were using was std::thread::hardware_concurrency
(in order to obtain the default value for b2's -j option).
For Windows, we now use dwNumberOfProcessors (in SYSTEM_INFO) and GetSystemInfo.