aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-06-15 19:32:34 +0000
committerGravatar Yue Gan <yueg@google.com>2016-06-16 09:01:54 +0000
commitf6a45fda097fcdae4704915c530403a90e9d6745 (patch)
tree54e74a970f2245fdc4517e5a2cc0cb2f9ee43c0e /src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java
parent19f2238b608d7ebba182a2bdd405e4696975f733 (diff)
Support for platform_type="watchos" on apple_binary.
This builds all dependencies linked against watch SDKs instead of iOS SDKs, and builds for the architectures specified in --watchos_multi_cpus RELNOTES: apple_binary supports a new platform_type attribute, which, if set to "watchos", will build dependencies for Apple's watchOS2. -- MOS_MIGRATED_REVID=124980029
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinaryRule.java26
1 files changed, 26 insertions, 0 deletions
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 33920dec84..e69834d2f3 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
@@ -18,6 +18,7 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fromTemplates;
import static com.google.devtools.build.lib.syntax.Type.BOOLEAN;
+import static com.google.devtools.build.lib.syntax.Type.STRING;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
@@ -27,6 +28,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.apple.Platform.PlatformType;
/**
* Rule definition for apple_binary.
@@ -34,6 +36,12 @@ import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
public class AppleBinaryRule implements RuleDefinition {
/**
+ * Attribute name for {@code apple_binary}'s apple platform type (for which all dependencies and
+ * sources of an {@code apple_binary} target will be built).
+ */
+ static final String PLATFORM_TYPE_ATTR_NAME = "platform_type";
+
+ /**
* Template for the fat binary output (using Apple's "lipo" tool to combine binaries of
* multiple architectures).
*/
@@ -60,6 +68,24 @@ public class AppleBinaryRule implements RuleDefinition {
.add(attr(":cc_toolchain", LABEL)
.cfg(AppleBinary.SPLIT_TRANSITION_PROVIDER)
.value(ObjcRuleClasses.APPLE_TOOLCHAIN))
+ /* <!-- #BLAZE_RULE(apple_binary).ATTRIBUTE(platform_type) -->
+ The type of platform for which to create multi-architecture "fat" binaries in this rule.
+ For example, if <code>ios</code> is selected, then fat binaries will be created
+ combining all architectures specified in <code>--ios_multi_cpus</code>.
+
+ Options are:
+ <ul>
+ <li>
+ <code>ios</code> (default): architectures gathered from <code>--ios_multi_cpus</code>.
+ </li>
+ <li>
+ <code>watchos</code>: architectures gathered from <code>--watchos_multi_cpus</code>
+ </li>
+ </ul>
+ <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
+ .add(attr(PLATFORM_TYPE_ATTR_NAME, STRING)
+ .value(PlatformType.IOS.toString())
+ .nonconfigurable("Determines the configuration transition on deps"))
/*<!-- #BLAZE_RULE(apple_binary).IMPLICIT_OUTPUTS -->
<ul>
<li><code><var>name</var>_lipobin</code>: the 'lipo'ed potentially multi-architecture