fix deduction not properly working #894
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This should finally fix bfgroup/b2#368.
Background. After my b2 PR (bfgroup/b2#375) was merged, the build system is properly creating two alternatives for checked libraries (e.g.
/openssl//ssl
): before the deduced properties are added, and after that. What this does not result in, though, is build system actually compiling and linking corresponding files twice. This is becausededuced-X
are hidden features, and they do not affect the target path. As a resultfoo.o
withaddress-model=32
, andfoo.o
withaddress-model=32 deduced-architecture=x86
result in the same file (e.g.gcc-13/debug/address-model-32/threading-multi/visibility-hidden/foo.o
, notice the lack ofarchitecture
).After some thinking, I decided that this is a flaw in how deduced platform features are implemented. They should not be hidden, because their presence affects binary compatibility.
This change removes
deduced-X
features, as their only purpose was hiding the related property from the path. Instead it fully relies on conditional property adding the deduced values forX
feature if necessary.NOTE: the unfortunate result of this change is that all targets in a Boost build will get
architecture-A
andaddress-model-M
parts in the path.