aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-08-02 18:48:43 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-08-03 07:57:44 +0000
commit36ff24cca3e3e1bd09422bef646d98621b1270e4 (patch)
treedc1f9e5cb2354041b6027a1f5d602940957018e8 /src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
parentc55fe15fc36ad01b93f4efe85ff85911d041d5d7 (diff)
Introduce apple_watch2_extension rule for bundling watchOS2 extensions.
This can be used in conjunction with apple_binary to add watchOS2 extensions to an ios application bundle. This is the majority of the native work for this bundling logic. Before announcing general availability of this feature, we will want to: 1. Iterate with teams who have existing watchOS2 apps to catch any corner-case bugs 2. Introduce a skylark macro to wrap apple_watch2_extension and apple_binary into a single rule; this will both serve as a convenience and ensure users set the appropriate linkopts and platformtype on their apple_binary target. -- MOS_MIGRATED_REVID=129122855
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java10
1 files changed, 9 insertions, 1 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 77b659ff01..4c878e648d 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
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.objc;
+import static com.google.devtools.build.lib.rules.objc.ObjcProvider.MULTI_ARCH_LINKED_BINARIES;
import static com.google.devtools.build.lib.syntax.Type.STRING;
import com.google.common.annotations.VisibleForTesting;
@@ -44,7 +45,6 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs;
import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
import com.google.devtools.build.lib.rules.objc.ProtoSupport.TargetType;
-
import java.util.List;
import java.util.Set;
@@ -92,6 +92,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
NestedSetBuilder.<Artifact>stableOrder()
.add(ruleIntermediateArtifacts.combinedArchitectureBinary());
+ ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
+
for (BuildConfiguration childConfig : childConfigurations) {
IntermediateArtifacts intermediateArtifacts =
ObjcRuleClasses.intermediateArtifacts(ruleContext, childConfig);
@@ -141,6 +143,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
DsymOutputType.APP)
.validateAttributes();
ruleContext.assertNoErrors();
+
+ objcProviderBuilder.addTransitiveAndPropagate(common.getObjcProvider());
}
AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
@@ -154,6 +158,10 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
RuleConfiguredTargetBuilder targetBuilder =
ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build());
+ objcProviderBuilder.add(
+ MULTI_ARCH_LINKED_BINARIES, ruleIntermediateArtifacts.combinedArchitectureBinary());
+
+ targetBuilder.addProvider(ObjcProvider.class, objcProviderBuilder.build());
return targetBuilder.build();
}