diff options
author | 2017-05-24 19:06:47 +0200 | |
---|---|---|
committer | 2017-05-26 09:35:04 +0200 | |
commit | 13263f7b799c31ef335078870a905210c14de80d (patch) | |
tree | 76fdc628130cd950e61d9c17e58fb1e8becc1c20 /src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java | |
parent | cf94053c3403297c18d75eca4a68560a1e131af5 (diff) |
Add toolchains attribute to aspect.
Part of #2219.
Change-Id: I39ced1f3e2605154771df9424d6ed2f971820baf
PiperOrigin-RevId: 157002268
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 | 26 |
1 files changed, 20 insertions, 6 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 1dbb131e06..860e3dff3d 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 @@ -28,9 +28,11 @@ import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.syntax.Type.LabelClass; import com.google.devtools.build.lib.syntax.Type.LabelVisitor; import com.google.devtools.build.lib.util.Preconditions; +import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import javax.annotation.Nullable; @@ -58,6 +60,7 @@ public final class AspectDefinition { private final RequiredProviders requiredProviders; private final RequiredProviders requiredProvidersForAspects; private final ImmutableMap<String, Attribute> attributes; + private final ImmutableList<ClassObjectConstructor.Key> requiredToolchains; /** * Which attributes aspect should propagate along: @@ -74,13 +77,13 @@ public final class AspectDefinition { return advertisedProviders; } - private AspectDefinition( AspectClass aspectClass, AdvertisedProviderSet advertisedProviders, RequiredProviders requiredProviders, RequiredProviders requiredAspectProviders, ImmutableMap<String, Attribute> attributes, + ImmutableList<ClassObjectConstructor.Key> requiredToolchains, @Nullable ImmutableSet<String> restrictToAttributes, @Nullable ConfigurationFragmentPolicy configurationFragmentPolicy, boolean applyToFiles) { @@ -90,6 +93,7 @@ public final class AspectDefinition { this.requiredProvidersForAspects = requiredAspectProviders; this.attributes = attributes; + this.requiredToolchains = requiredToolchains; this.restrictToAttributes = restrictToAttributes; this.configurationFragmentPolicy = configurationFragmentPolicy; this.applyToFiles = applyToFiles; @@ -112,6 +116,11 @@ public final class AspectDefinition { return attributes; } + /** Returns the required toolchains declared by this aspect. */ + public ImmutableList<ClassObjectConstructor.Key> getRequiredToolchains() { + return requiredToolchains; + } + /** * Returns {@link RequiredProviders} that a configured target must have so that * this aspect can be applied to it. @@ -256,6 +265,7 @@ public final class AspectDefinition { private final ConfigurationFragmentPolicy.Builder configurationFragmentPolicy = new ConfigurationFragmentPolicy.Builder(); private boolean applyToFiles = false; + private final List<ClassObjectConstructor.Key> requiredToolchains = new ArrayList<>(); public Builder(AspectClass aspectClass) { this.aspectClass = aspectClass; @@ -456,21 +466,25 @@ public final class AspectDefinition { return this; } - + /** Adds the given toolchains as requirements for this aspect. */ + public Builder addRequiredToolchains(List<ClassObjectConstructor.Key> requiredToolchains) { + this.requiredToolchains.addAll(requiredToolchains); + return this; + } /** * Builds the aspect definition. * * <p>The builder object is reusable afterwards. */ public AspectDefinition build() { - return new AspectDefinition(aspectClass, + return new AspectDefinition( + aspectClass, advertisedProviders.build(), requiredProviders.build(), requiredAspectProviders.build(), ImmutableMap.copyOf(attributes), - propagateAlongAttributes == null - ? null - : ImmutableSet.copyOf(propagateAlongAttributes), + ImmutableList.copyOf(requiredToolchains), + propagateAlongAttributes == null ? null : ImmutableSet.copyOf(propagateAlongAttributes), configurationFragmentPolicy.build(), applyToFiles); } |