diff options
author | 2017-04-25 17:46:17 +0200 | |
---|---|---|
committer | 2017-04-25 20:38:54 +0200 | |
commit | 99ea6b466b9562bb720de1ab264687295f7da0e4 (patch) | |
tree | f9baae383a6342ec234209dba859335735f27679 /src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java | |
parent | 641318ac48dd4f110184c42b4b75485ee61416a8 (diff) |
Native aspects can opt-in to apply to files.
Only works for top-level targets.
RELNOTES: None.
PiperOrigin-RevId: 154176914
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java index 118b2be6e1..1dbb131e06 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java @@ -68,6 +68,7 @@ public final class AspectDefinition { */ @Nullable private final ImmutableSet<String> restrictToAttributes; @Nullable private final ConfigurationFragmentPolicy configurationFragmentPolicy; + private final boolean applyToFiles; public AdvertisedProviderSet getAdvertisedProviders() { return advertisedProviders; @@ -81,7 +82,8 @@ public final class AspectDefinition { RequiredProviders requiredAspectProviders, ImmutableMap<String, Attribute> attributes, @Nullable ImmutableSet<String> restrictToAttributes, - @Nullable ConfigurationFragmentPolicy configurationFragmentPolicy) { + @Nullable ConfigurationFragmentPolicy configurationFragmentPolicy, + boolean applyToFiles) { this.aspectClass = aspectClass; this.advertisedProviders = advertisedProviders; this.requiredProviders = requiredProviders; @@ -90,6 +92,7 @@ public final class AspectDefinition { this.attributes = attributes; this.restrictToAttributes = restrictToAttributes; this.configurationFragmentPolicy = configurationFragmentPolicy; + this.applyToFiles = applyToFiles; } public String getName() { @@ -147,6 +150,15 @@ public final class AspectDefinition { } /** + * Returns whether this aspect applies to files. + * + * Currently only supported for top-level aspects and targets. + */ + public boolean applyToFiles() { + return applyToFiles; + } + + /** * Returns the attribute -> set of labels that are provided by aspects of attribute. */ public static ImmutableMultimap<Attribute, Label> visitAspectsIfRequired( @@ -243,6 +255,7 @@ public final class AspectDefinition { private LinkedHashSet<String> propagateAlongAttributes = new LinkedHashSet<>(); private final ConfigurationFragmentPolicy.Builder configurationFragmentPolicy = new ConfigurationFragmentPolicy.Builder(); + private boolean applyToFiles = false; public Builder(AspectClass aspectClass) { this.aspectClass = aspectClass; @@ -432,6 +445,17 @@ public final class AspectDefinition { return this; } + /** + * Sets whether this aspect should apply to files. + * + * Default is <code>false</code>. + * Currently only supported for top-level aspects and targets. + */ + public Builder applyToFiles(boolean propagateOverGeneratedFiles) { + this.applyToFiles = propagateOverGeneratedFiles; + return this; + } + /** * Builds the aspect definition. @@ -447,7 +471,8 @@ public final class AspectDefinition { propagateAlongAttributes == null ? null : ImmutableSet.copyOf(propagateAlongAttributes), - configurationFragmentPolicy.build()); + configurationFragmentPolicy.build(), + applyToFiles); } } } |