aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-05-11 10:01:14 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-05-11 10:25:28 +0000
commit5d80fddc70d43cb0051d2774cf7d5b1bcfa92439 (patch)
tree77eb273a5800918ef8d53e1168ea5028a9da0c2e /src/main/java/com/google/devtools/build/lib
parent4caa04f007f77f367c857e365ca8c3d6621c4940 (diff)
Refactor ios_split_cpu to be apple_split_cpu, in preparation for using it to specify platform mutli_cpu splits other than on ios_multi_cpu (such as a split on watchos)
No users should be manually specifying this flag, so this shouldn't break anyone... -- MOS_MIGRATED_REVID=122037152
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java47
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java41
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java30
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java3
9 files changed, 113 insertions, 76 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
index 9b3090e457..02dc3727af 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
@@ -21,6 +21,8 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration.DefaultL
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
+import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter;
import com.google.devtools.common.options.EnumConverter;
import com.google.devtools.common.options.Option;
@@ -92,6 +94,35 @@ public class AppleCommandLineOptions extends FragmentOptions {
help = "Specifies to target CPU of iOS compilation.")
public String iosCpu;
+ @Option(name = "apple_platform_type",
+ defaultValue = "IOS",
+ category = "undocumented",
+ converter = PlatformTypeConverter.class,
+ help =
+ "Don't set this value from the command line - it is derived from other flags and "
+ + "configuration transitions derived from rule attributes")
+ public PlatformType applePlatformType;
+
+ @Option(name = "apple_split_cpu",
+ defaultValue = "",
+ category = "undocumented",
+ help =
+ "Don't set this value from the command line - it is derived from other flags and "
+ + "configuration transitions derived from rule attributes")
+ public String appleSplitCpu;
+
+ // This option exists because two configurations are not allowed to have the same cache key
+ // (partially derived from options). Since we have multiple transitions that may result in the
+ // same configuration values at runtime we need an artificial way to distinguish between them.
+ // This option must only be set by those transitions for this purpose.
+ // TODO(bazel-team): Remove this once we have dynamic configurations but make sure that different
+ // configurations (e.g. by min os version) always use different output paths.
+ @Option(name = "apple configuration distinguisher",
+ defaultValue = "UNKNOWN",
+ converter = ConfigurationDistinguisherConverter.class,
+ category = "undocumented")
+ public ConfigurationDistinguisher configurationDistinguisher;
+
@Option(name = "ios_multi_cpus",
converter = CommaSeparatedOptionListConverter.class,
defaultValue = "",
@@ -225,4 +256,20 @@ public class AppleCommandLineOptions extends FragmentOptions {
return host;
}
+
+ /** Converter for the Apple configuration distinguisher. */
+ public static final class ConfigurationDistinguisherConverter
+ extends EnumConverter<ConfigurationDistinguisher> {
+ public ConfigurationDistinguisherConverter() {
+ super(ConfigurationDistinguisher.class, "Apple rule configuration distinguisher");
+ }
+ }
+
+ /** Flag converter for {@link PlatformType}. */
+ public static final class PlatformTypeConverter
+ extends EnumConverter<PlatformType> {
+ public PlatformTypeConverter() {
+ super(PlatformType.class, "Apple platform type");
+ }
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
index 8e21bd4bb2..01252de602 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.apple;
+import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -27,10 +28,14 @@ import com.google.devtools.build.lib.analysis.config.InvalidConfigurationExcepti
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions.AppleBitcodeMode;
+import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.util.Preconditions;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
import java.util.Map;
import javax.annotation.Nullable;
@@ -65,6 +70,9 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
private final DottedVersion tvOsSdkVersion;
private final DottedVersion macOsXSdkVersion;
private final String iosCpu;
+ private final String appleSplitCpu;
+ private final PlatformType applePlatformType;
+ private final ConfigurationDistinguisher configurationDistinguisher;
private final Optional<DottedVersion> xcodeVersion;
private final ImmutableList<String> iosMultiCpus;
private final AppleBitcodeMode bitcodeMode;
@@ -87,6 +95,10 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
this.xcodeVersion = Preconditions.checkNotNull(xcodeVersionOverride);
this.iosCpu = Preconditions.checkNotNull(appleOptions.iosCpu, "iosCpu");
+ this.appleSplitCpu = Preconditions.checkNotNull(appleOptions.appleSplitCpu, "appleSplitCpu");
+ this.applePlatformType =
+ Preconditions.checkNotNull(appleOptions.applePlatformType, "applePlatformType");
+ this.configurationDistinguisher = appleOptions.configurationDistinguisher;
this.iosMultiCpus = ImmutableList.copyOf(
Preconditions.checkNotNull(appleOptions.iosMultiCpus, "iosMultiCpus"));
this.bitcodeMode = appleOptions.appleBitcodeMode;
@@ -291,6 +303,35 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
}
/**
+ * 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;
+ }
+
+
+ @Nullable
+ @Override
+ public String getOutputDirectoryName() {
+ List<String> components = new ArrayList<>();
+ if (!appleSplitCpu.isEmpty()) {
+ components.add(applePlatformType.toString().toLowerCase());
+ components.add(appleSplitCpu);
+ }
+ if (configurationDistinguisher != ConfigurationDistinguisher.UNKNOWN) {
+ components.add(configurationDistinguisher.toString().toLowerCase(Locale.US));
+ }
+
+ if (components.isEmpty()) {
+ return null;
+ }
+ return Joiner.on('-').join(components);
+ }
+
+ /**
* Loads {@link AppleConfiguration} from build options.
*/
public static class Loader implements ConfigurationFragmentFactory {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java b/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java
index c4757ceea6..089061a7c7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java
@@ -122,4 +122,16 @@ public enum Platform {
public static boolean isApplePlatform(String targetCpu) {
return forTargetCpuNullable(targetCpu) != null;
}
+
+ /**
+ * Value used to describe Apple platform "type". A {@link Platform} is implied from a platform
+ * type (for example, watchOS) together with a cpu value (for example, armv7).
+ */
+ // TODO(cparsons): Use these values in static retrieval methods in this class.
+ public enum PlatformType {
+ IOS,
+ WATCHOS,
+ TVOS,
+ MACOSX
+ }
}
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 97aedc50f9..bab857f469 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
@@ -37,6 +37,7 @@ import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
+import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
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.CompilationAttributes;
@@ -182,7 +183,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
return configToProvider.keySet();
}
-
+
/**
* {@link SplitTransitionProvider} implementation for the apple binary rule.
*/
@@ -196,7 +197,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
// TODO(cparsons): Support different split transitions based on rule attribute.
return IOS_MULTI_CPUS_SPLIT_TRANSITION;
}
-
+
public List<SplitTransition<BuildOptions>> getPotentialSplitTransitions() {
return ImmutableList.<SplitTransition<BuildOptions>>of(IOS_MULTI_CPUS_SPLIT_TRANSITION);
}
@@ -217,7 +218,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
BuildOptions splitOptions = buildOptions.clone();
splitOptions.get(AppleCommandLineOptions.class).iosMultiCpus = ImmutableList.of();
- splitOptions.get(ObjcCommandLineOptions.class).iosSplitCpu = iosCpu;
+ splitOptions.get(AppleCommandLineOptions.class).applePlatformType = PlatformType.IOS;
+ splitOptions.get(AppleCommandLineOptions.class).appleSplitCpu = iosCpu;
splitOptions.get(AppleCommandLineOptions.class).iosCpu = iosCpu;
if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
// Only set the (CC-compilation) CPU for dependencies if explicitly required by the user.
@@ -226,7 +228,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
// set if this feature is explicitly requested.
splitOptions.get(BuildConfiguration.Options.class).cpu = "ios_" + iosCpu;
}
- splitOptions.get(ObjcCommandLineOptions.class).configurationDistinguisher =
+ splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
ConfigurationDistinguisher.APPLEBIN_IOS;
splitBuildOptions.add(splitOptions);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java
index 4471e6bdab..f4435d4a0f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosExtension.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
+import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition;
@@ -119,7 +120,7 @@ public class IosExtension extends ReleaseBundlingTargetFactory {
BuildOptions splitOptions = originalOptions.clone();
setMinimumOsVersion(splitOptions, newMinimumVersion);
- splitOptions.get(ObjcCommandLineOptions.class).configurationDistinguisher =
+ splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
getConfigurationDistinguisher();
return ImmutableList.of(splitOptions);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
index 76d754d48d..49617eb2de 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
@@ -21,11 +21,9 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.apple.DottedVersionConverter;
import com.google.devtools.common.options.Converters.CommaSeparatedOptionListConverter;
-import com.google.devtools.common.options.EnumConverter;
import com.google.devtools.common.options.Option;
import java.util.List;
@@ -91,13 +89,6 @@ public class ObjcCommandLineOptions extends FragmentOptions {
help = "Enable checking for memory leaks in ios_test targets.")
public boolean runMemleaks;
- @Option(name = "ios_split_cpu",
- defaultValue = "",
- category = "undocumented",
- help =
- "Don't set this value from the command line - it is derived from ios_multi_cpus only.")
- public String iosSplitCpu;
-
@Option(name = "experimental_enable_objc_cc_deps",
defaultValue = "false",
category = "undocumented",
@@ -139,19 +130,6 @@ public class ObjcCommandLineOptions extends FragmentOptions {
)
public boolean appleGenerateDsym;
- // This option exists because two configurations are not allowed to have the same cache key
- // (partially derived from options). Since we have multiple transitions (see
- // getPotentialSplitTransitions below) that may result in the same configuration values at runtime
- // we need an artificial way to distinguish between them. This option must only be set by those
- // transitions for this purpose.
- // TODO(bazel-team): Remove this once we have dynamic configurations but make sure that different
- // configurations (e.g. by min os version) always use different output paths.
- @Option(name = "iOS configuration distinguisher",
- defaultValue = "UNKNOWN",
- converter = ConfigurationDistinguisherConverter.class,
- category = "undocumented")
- public ConfigurationDistinguisher configurationDistinguisher;
-
@Option(
name = "ios_signing_cert_name",
defaultValue = "null",
@@ -243,12 +221,4 @@ public class ObjcCommandLineOptions extends FragmentOptions {
.addAll(AppleBinary.SPLIT_TRANSITION_PROVIDER.getPotentialSplitTransitions())
.build();
}
-
- /** Converter for the iOS configuration distinguisher. */
- public static final class ConfigurationDistinguisherConverter
- extends EnumConverter<ConfigurationDistinguisher> {
- public ConfigurationDistinguisherConverter() {
- super(ConfigurationDistinguisher.class, "Objective C configuration distinguisher");
- }
- }
}
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 9933dd1dea..5b403cbcad 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,24 +15,18 @@
package com.google.devtools.build.lib.rules.objc;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.Path;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
import javax.annotation.Nullable;
/**
@@ -64,11 +58,9 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
private final boolean runMemleaks;
private final ImmutableList<String> copts;
private final CompilationMode compilationMode;
- private final String iosSplitCpu;
private final ImmutableList<String> fastbuildOptions;
private final boolean enableBinaryStripping;
private final boolean moduleMapsEnabled;
- private final ConfigurationDistinguisher configurationDistinguisher;
@Nullable private final String signingCertName;
@Nullable private final Path clientWorkspaceRoot;
private final String xcodeOverrideWorkspaceRoot;
@@ -92,11 +84,9 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
this.runMemleaks = objcOptions.runMemleaks;
this.copts = ImmutableList.copyOf(objcOptions.copts);
this.compilationMode = Preconditions.checkNotNull(options.compilationMode, "compilationMode");
- this.iosSplitCpu = Preconditions.checkNotNull(objcOptions.iosSplitCpu, "iosSplitCpu");
this.fastbuildOptions = ImmutableList.copyOf(objcOptions.fastbuildOptions);
this.enableBinaryStripping = objcOptions.enableBinaryStripping;
this.moduleMapsEnabled = objcOptions.enableModuleMaps;
- this.configurationDistinguisher = objcOptions.configurationDistinguisher;
this.clientWorkspaceRoot = directories != null ? directories.getWorkspace() : null;
this.signingCertName = objcOptions.iosSigningCertName;
this.xcodeOverrideWorkspaceRoot = objcOptions.xcodeOverrideWorkspaceRoot;
@@ -222,33 +212,6 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
}
/**
- * 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;
- }
-
- @Nullable
- @Override
- public String getOutputDirectoryName() {
- 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);
- }
-
- /**
* Returns whether to perform symbol and dead-code strippings on linked binaries. The strippings
* are performed iff --compilation_mode=opt and --objc_enable_binary_stripping are specified.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
index 27f7762ade..5115d33229 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
@@ -58,6 +58,7 @@ import com.google.devtools.build.lib.rules.apple.AppleConfiguration.Configuratio
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.apple.Platform;
+import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
import com.google.devtools.build.lib.rules.objc.BundleSupport.ExtraActoolArgs;
import com.google.devtools.build.lib.rules.objc.Bundling.Builder;
import com.google.devtools.build.lib.shell.ShellUtils;
@@ -1333,7 +1334,7 @@ public final class ReleaseBundlingSupport {
BuildOptions splitOptions = buildOptions.clone();
setArchitectureOptions(splitOptions, iosCpu);
setAdditionalOptions(splitOptions, buildOptions);
- splitOptions.get(ObjcCommandLineOptions.class).configurationDistinguisher =
+ splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
getConfigurationDistinguisher();
splitBuildOptions.add(splitOptions);
}
@@ -1360,7 +1361,8 @@ public final class ReleaseBundlingSupport {
protected void setAdditionalOptions(BuildOptions splitOptions, BuildOptions originalOptions) {}
private void setArchitectureOptions(BuildOptions splitOptions, String iosCpu) {
- splitOptions.get(ObjcCommandLineOptions.class).iosSplitCpu = iosCpu;
+ splitOptions.get(AppleCommandLineOptions.class).applePlatformType = PlatformType.IOS;
+ splitOptions.get(AppleCommandLineOptions.class).appleSplitCpu = iosCpu;
splitOptions.get(AppleCommandLineOptions.class).iosCpu = iosCpu;
if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
// Only set the (CC-compilation) CPU for dependencies if explicitly required by the user.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
index 84d1e9f01a..b24971e4ad 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
@@ -143,10 +143,9 @@ public final class XcodeSupport {
*/
XcodeSupport addXcodeSettings(XcodeProvider.Builder xcodeProviderBuilder,
ObjcProvider objcProvider, XcodeProductType productType) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
return addXcodeSettings(xcodeProviderBuilder, objcProvider, productType,
- appleConfiguration.getIosCpu(), objcConfiguration.getConfigurationDistinguisher());
+ appleConfiguration.getIosCpu(), appleConfiguration.getConfigurationDistinguisher());
}
/**