aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
diff options
context:
space:
mode:
authorGravatar Peter Schmitt <schmitt@google.com>2015-04-28 18:12:32 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-04-28 21:14:06 +0000
commit1f0f444d012f5326fffdce6c87df7a4c4ad540ed (patch)
treeb1ab63d97bf855ae619eb09188f472e2b77bd021 /src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
parentd6e5480dda564a01650ba06bd93d79b552dbb018 (diff)
Ensure extension's bundle minimum OS version is at least 8.0.
This is required because Apple does not accept extensions whose plist has a minimum OS value lower than 8.0, or whose code is compiled at less than 8.0, even if it is included in an application that is compiled for, and marked compatible with, a lower OS version. Note that I didn't make this an attribute for now as there are no use cases for setting the value to anything but 8.0. If we ever need to make this user-configurable, a value can easily be set. Second submission attempt with small additional logic to distinguish xcode projects across configurations. -- MOS_MIGRATED_REVID=92267493
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index 6d4310d5cd..b9b2d00b4d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.rules.objc;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -22,9 +23,12 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
+import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition.ConfigurationDistinguisher;
import com.google.devtools.build.lib.syntax.Label;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import javax.annotation.Nullable;
@@ -58,6 +62,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
private final List<String> iosMultiCpus;
private final String iosSplitCpu;
private final boolean perProtoIncludes;
+ private final ConfigurationDistinguisher configurationDistinguisher;
// We only load these labels if the mode which uses them is enabled. That is know as part of the
// BuildConfiguration. This label needs to be part of a configuration because only configurations
@@ -88,6 +93,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
this.iosMultiCpus = Preconditions.checkNotNull(objcOptions.iosMultiCpus, "iosMultiCpus");
this.iosSplitCpu = Preconditions.checkNotNull(objcOptions.iosSplitCpu, "iosSplitCpu");
this.perProtoIncludes = objcOptions.perProtoIncludes;
+ this.configurationDistinguisher = objcOptions.configurationDistinguisher;
}
public String getIosSdkVersion() {
@@ -230,6 +236,16 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
return getIosCpu();
}
+ /**
+ * Returns the unique identifier distinguishing configurations that are otherwise the same.
+ *
+ * <p>Use this value for situations in which two configurations create two outputs that are the
+ * same but are not collapsed due to their different configuration owners.
+ */
+ public ConfigurationDistinguisher getConfigurationDistinguisher() {
+ return configurationDistinguisher;
+ }
+
@Override
public String getName() {
return "Objective-C";
@@ -243,7 +259,18 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
@Nullable
@Override
public String getOutputDirectoryName() {
- return !iosSplitCpu.isEmpty() ? "ios-" + iosSplitCpu : null;
+ List<String> components = new ArrayList<>();
+ if (!iosSplitCpu.isEmpty()) {
+ components.add("ios-" + iosSplitCpu);
+ }
+ if (configurationDistinguisher != ConfigurationDistinguisher.UNKNOWN) {
+ components.add(configurationDistinguisher.toString().toLowerCase(Locale.US));
+ }
+
+ if (components.isEmpty()) {
+ return null;
+ }
+ return Joiner.on('-').join(components);
}
@Override