Add a boolean 'implib' kwarg to executable(). If true, it is permitted to
use the returned build target object in link_with:
On platforms where this makes sense (e.g. Windows), an implib is generated
for the executable and used when linking. Otherwise, it has no effect.
(Rather than checking if it is a StaticLibrary or SharedLibary, BuildTarget
subclasses gain the is_linkable_target method to test if they can appear in
link_with:)
Also install any executable implib in a similar way to a shared library
implib, i.e. placing the implib in the appropriate place
Add tests of:
- a shared_module containing a reference to a symbol which is known (at link
time) to be provided by the executable
- trying to link with non-implib executables (should fail)
- installing the implib
(This last one needs a little enhancement of the installed file checking as
this is the first install test we have which needs to work with either
MSVC-style or GCC-style implib filenames)
Makes it less awkward for tools to parse the data.
Was modified to return a list, with two elements for each dependency,
instead of a dictionary in ac1c929f66 .
Closes#2018.
This was a good idea in theory, but in practice it has made Codecov
completely useless because doc-only commits would reduce the coverage
calculated by Codecov and PRs would randomly have messages saying that
the coverage has gone up or down by a random percentage simply because
the windows builds weren't run in the last commit.
Till Codecov also has an option to skip doc-only commits, we cannot
make this change. To skip all CI, you can put "[skip ci]" or
"[ci skip]" in the commit message. This will also work with Codecov.