aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2017-02-01 18:21:54 +0000
committerGravatar Yun Peng <pcloudy@google.com>2017-02-02 10:13:33 +0000
commit73d835f38f5921ed829a1b907b5d0205f2bd498d (patch)
tree8fe6038264fb7a5a9931b060683a3ee3ca71fa07
parentee9a3001d9a453fcd4cf6938fa61a8bbaa267aef (diff)
MultiArchPlatformRule can use --experimental_objc_crosstool
-- PiperOrigin-RevId: 146258894 MOS_MIGRATED_REVID=146258894
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java8
5 files changed, 15 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index 6fd9b70e7a..4093e57096 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -254,8 +254,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
// values of this rule -- this rule does not currently use the actual info provided by
// this attribute. b/28403953 tracks cc toolchain usage.
ImmutableListMultimap<BuildConfiguration, CcToolchainProvider> configToProvider =
- ruleContext.getPrerequisitesByConfiguration(
- ":cc_toolchain", Mode.SPLIT, CcToolchainProvider.class);
+ ruleContext.getPrerequisitesByConfiguration(ObjcRuleClasses.CHILD_CONFIG_ATTR, Mode.SPLIT,
+ CcToolchainProvider.class);
return configToProvider.keySet();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
index 41f9617dd8..faf8f34c28 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
@@ -31,6 +31,7 @@ import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplic
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
+import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
/**
* Rule definition for apple_binary.
@@ -87,7 +88,8 @@ public class AppleBinaryRule implements RuleDefinition {
new MultiArchSplitTransitionProvider();
return builder
.requiresConfigurationFragments(
- ObjcConfiguration.class, J2ObjcConfiguration.class, AppleConfiguration.class)
+ ObjcConfiguration.class, J2ObjcConfiguration.class, AppleConfiguration.class,
+ CppConfiguration.class)
.add(
attr("$is_executable", BOOLEAN)
.value(true)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index 589738e504..ba264ba9c8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -182,7 +182,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
// values of this rule -- this rule does not currently use the actual info provided by
// this attribute. b/28403953 tracks cc toolchain usage.
ImmutableListMultimap<BuildConfiguration, CcToolchainProvider> configToProvider =
- ruleContext.getPrerequisitesByConfiguration(":cc_toolchain", Mode.SPLIT,
+ ruleContext.getPrerequisitesByConfiguration(ObjcRuleClasses.CHILD_CONFIG_ATTR, Mode.SPLIT,
CcToolchainProvider.class);
return configToProvider.keySet();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
index 819da77e38..eb98b609f0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java
@@ -143,8 +143,6 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
protected CompilationSupport registerFullyLinkAction(
ObjcProvider objcProvider, Iterable<Artifact> inputArtifacts, Artifact outputArchive)
throws InterruptedException {
- Artifact fullyLinkedArchive =
- ruleContext.getImplicitOutputArtifact(CompilationSupport.FULLY_LINKED_LIB);
PathFragment labelName = new PathFragment(ruleContext.getLabel().getName());
String libraryIdentifier =
ruleContext
@@ -156,13 +154,12 @@ public class CrosstoolCompilationSupport extends CompilationSupport {
.setObjcProvider(objcProvider)
.setConfiguration(ruleContext.getConfiguration())
.setIntermediateArtifacts(intermediateArtifacts)
- .setFullyLinkArchive(
- ruleContext.getImplicitOutputArtifact(CompilationSupport.FULLY_LINKED_LIB))
+ .setFullyLinkArchive(outputArchive)
.addVariableCategory(VariableCategory.FULLY_LINK_VARIABLES)
.build();
CppLinkAction fullyLinkAction =
- new CppLinkActionBuilder(ruleContext, fullyLinkedArchive)
+ new CppLinkActionBuilder(ruleContext, outputArchive)
.addActionInputs(objcProvider.getObjcLibraries())
.addActionInputs(objcProvider.getCcLibraries())
.addActionInputs(objcProvider.get(IMPORTED_LIBRARY).toSet())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index f71bc6942d..d775156ae7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -102,6 +102,11 @@ public class ObjcRuleClasses {
}
/**
+ * Attribute name for a dummy target in a child configuration.
+ */
+ static final String CHILD_CONFIG_ATTR = ":child_configuration_dummy";
+
+ /**
* Returns a {@link IntermediateArtifacts} to be used to compile and link the ObjC source files
* generated by J2ObjC.
*/
@@ -884,7 +889,7 @@ public class ObjcRuleClasses {
// This is currently a hack to obtain all child configurations regardless of the attribute
// values of this rule -- this rule does not currently use the actual info provided by
// this attribute.
- .add(attr(":cc_toolchain", LABEL)
+ .add(attr(CHILD_CONFIG_ATTR, LABEL)
.cfg(splitTransitionProvider)
.value(ObjcRuleClasses.APPLE_TOOLCHAIN))
/* <!-- #BLAZE_RULE($apple_multiarch_rule).ATTRIBUTE(platform_type) -->
@@ -913,6 +918,7 @@ public class ObjcRuleClasses {
return RuleDefinition.Metadata.builder()
.name("$apple_multiarch_rule")
.type(RuleClassType.ABSTRACT)
+ .ancestors(CrosstoolRule.class)
.build();
}
}