diff options
Diffstat (limited to 'src/main/java/com')
5 files changed, 27 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java index 7ebd59a7ae..f14dd9b879 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java @@ -13,8 +13,6 @@ // limitations under the License. package com.google.devtools.build.lib.bazel.rules; -import static com.google.common.base.Preconditions.checkNotNull; - import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet; @@ -35,8 +33,7 @@ public class J2ObjcRules implements RuleSet { @Override public void init(Builder builder) { - String toolsRepository = checkNotNull(builder.getToolsRepository()); - J2ObjcAspect j2ObjcAspect = new J2ObjcAspect(toolsRepository); + J2ObjcAspect j2ObjcAspect = new J2ObjcAspect(builder); builder.addNativeAspectClass(j2ObjcAspect); builder.addRuleDefinition(new J2ObjcLibraryBaseRule()); diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/proto/BazelCcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/proto/BazelCcProtoAspect.java index d14d5386ad..0f7ced3fa5 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/proto/BazelCcProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/proto/BazelCcProtoAspect.java @@ -14,8 +14,6 @@ package com.google.devtools.build.lib.bazel.rules.cpp.proto; -import static com.google.devtools.build.lib.rules.cpp.CppRuleClasses.ccToolchainAttribute; - import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.rules.cpp.AspectLegalCppSemantics; import com.google.devtools.build.lib.rules.cpp.proto.CcProtoAspect; @@ -27,6 +25,6 @@ import com.google.devtools.build.lib.rules.cpp.proto.CcProtoAspect; */ public class BazelCcProtoAspect extends CcProtoAspect { public BazelCcProtoAspect(AspectLegalCppSemantics cppSemantics, RuleDefinitionEnvironment env) { - super(cppSemantics, ccToolchainAttribute(env)); + super(cppSemantics, env); } } 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 1b537e433b..c299e6489b 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 @@ -19,7 +19,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.SetMultimap; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; @@ -494,6 +496,12 @@ public final class AspectDefinition { } /** Adds the given toolchains as requirements for this aspect. */ + public Builder addRequiredToolchains(Label... toolchainLabels) { + Iterables.addAll(this.requiredToolchains, Lists.newArrayList(toolchainLabels)); + return this; + } + + /** Adds the given toolchains as requirements for this aspect. */ public Builder addRequiredToolchains(List<Label> requiredToolchains) { this.requiredToolchains.addAll(requiredToolchains); return this; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java index b1b466e2ec..850cc9d19a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java @@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAspect; import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; import com.google.devtools.build.lib.analysis.OutputGroupInfo; import com.google.devtools.build.lib.analysis.RuleContext; +import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder; @@ -80,11 +81,12 @@ public abstract class CcProtoAspect extends NativeAspectClass implements Configu private final CppSemantics cppSemantics; private final LabelLateBoundDefault<?> ccToolchainAttrValue; + private final Label ccToolchainType; - protected CcProtoAspect( - AspectLegalCppSemantics cppSemantics, LabelLateBoundDefault<?> ccToolchainAttrValue) { + protected CcProtoAspect(AspectLegalCppSemantics cppSemantics, RuleDefinitionEnvironment env) { this.cppSemantics = cppSemantics; - this.ccToolchainAttrValue = ccToolchainAttrValue; + this.ccToolchainAttrValue = CppRuleClasses.ccToolchainAttribute(env); + this.ccToolchainType = CppRuleClasses.ccToolchainTypeAttribute(env); } @Override @@ -113,6 +115,7 @@ public abstract class CcProtoAspect extends NativeAspectClass implements Configu .propagateAlongAttribute("deps") .requiresConfigurationFragments(CppConfiguration.class, ProtoConfiguration.class) .requireProviders(ProtoSupportDataProvider.class) + .addRequiredToolchains(ccToolchainType) .add( attr(PROTO_TOOLCHAIN_ATTR, LABEL) .mandatoryNativeProviders(ImmutableList.of(ProtoLangToolchainProvider.class)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java index f9095a8d0e..4c4b926af5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java @@ -32,6 +32,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAspect; import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleContext; +import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg; @@ -56,6 +57,7 @@ import com.google.devtools.build.lib.rules.apple.XcodeConfigRule; import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppHelper; +import com.google.devtools.build.lib.rules.cpp.CppRuleClasses; import com.google.devtools.build.lib.rules.cpp.FdoSupportProvider; import com.google.devtools.build.lib.rules.java.JavaCommon; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; @@ -84,8 +86,6 @@ import java.util.stream.Collectors; public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectFactory { public static final String NAME = "J2ObjcAspect"; - private final String toolsRepository; - private static final ExtraCompileArgs EXTRA_COMPILE_ARGS = new ExtraCompileArgs( "-fno-strict-overflow"); @@ -96,10 +96,6 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF (rule, attributes, protoConfig) -> protoConfig.protoToolchainForJ2objc()); } - public J2ObjcAspect(String toolsRepository) { - this.toolsRepository = toolsRepository; - } - private static final ImmutableList<Attribute> JAVA_DEPENDENT_ATTRIBUTES = ImmutableList.of( new Attribute("$jre_lib", Mode.TARGET), @@ -118,6 +114,14 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF null, (rule, attributes, j2objcConfig) -> j2objcConfig.deadCodeReport()); + private final String toolsRepository; + private final Label ccToolchainType; + + public J2ObjcAspect(RuleDefinitionEnvironment env) { + this.toolsRepository = checkNotNull(env.getToolsRepository()); + this.ccToolchainType = CppRuleClasses.ccToolchainTypeAttribute(env); + } + /** Returns whether this aspect should generate J2ObjC protos from this proto rule */ protected boolean shouldAttachToProtoRule(RuleContext ruleContext) { return true; @@ -144,6 +148,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF J2ObjcConfiguration.class, ObjcConfiguration.class, ProtoConfiguration.class) + .addRequiredToolchains(ccToolchainType) .add( attr("$j2objc", LABEL) .cfg(HostTransition.INSTANCE) |