[Extensions] Add support for extension products, allowing use of extensions across packages #3298
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.
Adds initial support for the
extension
product to go along with theextension
target, as described in the Extensible Build Tools Pitch (with the one modification that an extension product can vend multiple extension targets, which makes it like all the other products and may be useful — the pitch will be adjusted for this).Motivation:
This is further progress of an initial implementation of the PackageDescription interface changes proposed in the extensible build tools pitch. The goal is to have a complete implementation of the proposed PackageDescription API along with the core functionality at the start of the evolution proposal period.
Note that actual use of this is still guarded by a feature flag, since the proposal has yet to be reviewed and it is likely that there will be changes needed based on feedback.
Modifications:
Added
extension
product to PackageDescriptionExtended ExtensionEvaluator to apply extensions referenced in the product definition
Add unit test and test fixture for cross-platform package extension use
Add validation of targets in package product
Result:
When feature flag is enabled (currently via
SWIFTPM_ENABLE_EXTENSION_TARGETS=1
in environment), extension products can be used to vend extension targets.