A type can be registered as inheriting from a base type, however,
due to lazy loading, it's possible for that base type to not have
been registered yet. Originally, calling type.register() with an
unregistered base type would have registered the base type. Later,
when the base type itself was registered, an error would have been
raised saying that the base type was already registered.
This change allows for lazy loading to occur such that a base type
can be registered after a subtype is has already inherited from it.
The generator methods referred to `bypassed` and `consumed`. `bypassed`
is no longer present in Jam and so any reference to that variable has been
removed.
In Jam, the language itself would raise an error when the sources list
was empty. In the Python port, it was assumed that sources was never
empty and would run into an IndexError when the empty sources list
tried to access the first element. This change checks sources first
and provides an error message in the event that sources is empty.
An empty source list can be passed in when the best alternative
evalutates to an empty list of sources. This target is then added
to a typed target, e.g. lib, which requires sources.
Run pep8.
BaseException is a builtin class. This renames BaseException to
BaseBoostBuildException. All other custom exceptions that deal
with the Boost.Build framework should inherit from this class.
This makes "catching" all Boost.Build specific exceptions much
easier.
We ensure that we don't have tests with subdirectories in the name to
avoid a log processing defficiency (and not easily resolved) of not
supporting subdirs for individual tests.
The old testing.time feature was horribly broken in the face of the
current b2 virtual target design. This redoes the feature in a friendly
manner to the virtual targets. This also adds the clock (aka wall clock)
timing value to __TIMING_RULE__ invocations.
This change adds a toolset requirement that sets the python version
feature of the first configured python for a given target OS (usually
the host OS). This allows to correctly configure different python
interpreters for different target OSes.
Microsoft has a new MPI implementation available -
https://msdn.microsoft.com/en-us/library/windows/desktop/bb524831%28v=vs.85%29.aspx
There are now two installers, one for the MPI executor and another for the MPI
SDK (which contains the headers and static libraries), and these install to
different locations by default.
The jam file has been changed so that MS-MPI is first checked, if found use
that as the MPI executor/SDK. If not found, the MS Compute Cluster Pack is
checked next.
This allows building with Visual Studio "15", expected to be released
in 2017. Tested with Visual Studio "15" Preview 3. The compiler itself is the
same as with Visual Studio 2015 Update 3, but if only Visual Studio "15" is
installed, the compiler could not be found.