diff options
author | 2016-08-02 18:48:43 +0000 | |
---|---|---|
committer | 2016-08-03 07:57:44 +0000 | |
commit | 36ff24cca3e3e1bd09422bef646d98621b1270e4 (patch) | |
tree | dc1f9e5cb2354041b6027a1f5d602940957018e8 /src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java | |
parent | c55fe15fc36ad01b93f4efe85ff85911d041d5d7 (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.java | 10 |
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(); } |