aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar jcater <jcater@google.com>2018-04-27 12:53:19 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-27 12:54:25 -0700
commit758287532e338401146a8bb447161711b4b939c0 (patch)
treef96a237d35c61133b3f7636f231c66012a43bb93 /src/main/java/com/google/devtools/build/lib/rules/objc
parent681f36959d9e12a9599f1e3150f232a114333770 (diff)
Ensure that all aspects which (even very indirectly) call
CppHelper.getToolchainFromPlatformConstraints declare that they require a cc toolchain. PiperOrigin-RevId: 194580065
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java17
1 files changed, 11 insertions, 6 deletions
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)