aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java201
1 files changed, 8 insertions, 193 deletions
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 c445d1710f..cdd22ee85f 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,22 +14,17 @@
package com.google.devtools.build.lib.rules.apple;
-import static com.google.devtools.build.lib.skyframe.serialization.SerializationCommonUtils.deserializeNullable;
-import static com.google.devtools.build.lib.skyframe.serialization.SerializationCommonUtils.serializeNullable;
-
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigurationEnvironment;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
-import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
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;
@@ -46,8 +41,6 @@ import com.google.protobuf.CodedOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
-import java.util.Objects;
import javax.annotation.Nullable;
/** A configuration containing flags required for Apple platforms and tools. */
@@ -75,23 +68,12 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
*/
public static final String APPLE_SDK_PLATFORM_ENV_NAME = "APPLE_SDK_PLATFORM";
- private static final DottedVersion MINIMUM_BITCODE_XCODE_VERSION = DottedVersion.fromString("7");
-
/** Prefix for iOS cpu values. */
public static final String IOS_CPU_PREFIX = "ios_";
/** Default cpu for iOS builds. */
@VisibleForTesting static final String DEFAULT_IOS_CPU = "x86_64";
- @Nullable private final DottedVersion xcodeVersion;
- private final DottedVersion iosSdkVersion;
- private final DottedVersion iosMinimumOs;
- private final DottedVersion watchosSdkVersion;
- private final DottedVersion watchosMinimumOs;
- private final DottedVersion tvosSdkVersion;
- private final DottedVersion tvosMinimumOs;
- private final DottedVersion macosSdkVersion;
- private final DottedVersion macosMinimumOs;
private final String iosCpu;
private final String appleSplitCpu;
private final PlatformType applePlatformType;
@@ -110,34 +92,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
private final boolean objcProviderFromLinked;
@VisibleForTesting
- AppleConfiguration(
- AppleCommandLineOptions options,
- String iosCpu,
- @Nullable DottedVersion xcodeVersion,
- DottedVersion iosSdkVersion,
- DottedVersion iosMinimumOs,
- DottedVersion watchosSdkVersion,
- DottedVersion watchosMinimumOs,
- DottedVersion tvosSdkVersion,
- DottedVersion tvosMinimumOs,
- DottedVersion macosSdkVersion,
- DottedVersion macosMinimumOs) {
+ AppleConfiguration(AppleCommandLineOptions options, String iosCpu) {
this.options = options;
- this.iosSdkVersion = Preconditions.checkNotNull(iosSdkVersion, "iosSdkVersion");
- this.iosMinimumOs = Preconditions.checkNotNull(iosMinimumOs, "iosMinimumOs");
- this.watchosSdkVersion =
- Preconditions.checkNotNull(watchosSdkVersion, "watchOsSdkVersion");
- this.watchosMinimumOs =
- Preconditions.checkNotNull(watchosMinimumOs, "watchOsMinimumOs");
- this.tvosSdkVersion =
- Preconditions.checkNotNull(tvosSdkVersion, "tvOsSdkVersion");
- this.tvosMinimumOs =
- Preconditions.checkNotNull(tvosMinimumOs, "tvOsMinimumOs");
- this.macosSdkVersion =
- Preconditions.checkNotNull(macosSdkVersion, "macOsSdkVersion");
- this.macosMinimumOs = Preconditions.checkNotNull(macosMinimumOs, "macOsMinimumOs");
-
- this.xcodeVersion = xcodeVersion;
this.iosCpu = iosCpu;
this.appleSplitCpu = Preconditions.checkNotNull(options.appleSplitCpu, "appleSplitCpu");
this.applePlatformType =
@@ -177,32 +133,6 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
return options;
}
- /***
- * @deprecated use {@link XcodeConfig#getMinimumOsForPlatformType(RuleContext, PlatformType)}.
- *
- * <p>This is only here because the minimum OS version is currently part of the name of the output
- * directory.
- */
- @Deprecated
- // Bug tracking the removal of this method: https://github.com/bazelbuild/bazel/issues/3424
- public DottedVersion getMinimumOsForPlatformType(PlatformType platformType) {
- // TODO(b/37240784): Look into using only a single minimum OS flag tied to the current
- // apple_platform_type.
- switch (platformType) {
- case IOS:
- return iosMinimumOs;
- case TVOS:
- return tvosMinimumOs;
- case WATCHOS:
- return watchosMinimumOs;
- case MACOS:
- return macosMinimumOs;
- default:
- throw new IllegalArgumentException("Unhandled platform: " + platformType);
- }
- }
-
-
/**
* Returns a map of environment variables (derived from configuration) that should be propagated
* for actions pertaining to building applications for apple platforms. These environment
@@ -564,23 +494,6 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
}
@Override
- public Map<String, Object> lateBoundOptionDefaults() {
- // xcode_version and *_sdk_version defaults come from processing the
- // target with label given in --xcode_version_override.
- ImmutableMap.Builder<String, Object> mapBuilder = ImmutableMap.builder();
-
- if (xcodeVersion != null) {
- mapBuilder.put("xcode_version", xcodeVersion.toString());
- }
- return mapBuilder
- .put("ios_sdk_version", iosSdkVersion)
- .put("tvos_sdk_version", tvosSdkVersion)
- .put("watchos_sdk_version", watchosSdkVersion)
- .put("macos_sdk_version", macosSdkVersion)
- .build();
- }
-
- @Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
@@ -589,124 +502,29 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
return false;
}
AppleConfiguration that = (AppleConfiguration) obj;
- return this.options.equals(that.options)
- && Objects.equals(this.xcodeVersion, that.xcodeVersion)
- && this.iosSdkVersion.equals(that.iosSdkVersion)
- && this.iosMinimumOs.equals(that.iosMinimumOs)
- && this.watchosSdkVersion.equals(that.watchosSdkVersion)
- && this.watchosMinimumOs.equals(that.watchosMinimumOs)
- && this.tvosSdkVersion.equals(that.tvosSdkVersion)
- && this.tvosMinimumOs.equals(that.tvosMinimumOs)
- && this.macosSdkVersion.equals(that.macosSdkVersion)
- && this.macosMinimumOs.equals(that.macosMinimumOs);
+ return this.options.equals(that.options);
}
@Override
public int hashCode() {
- return Objects.hash(
- options,
- xcodeVersion,
- iosSdkVersion,
- iosMinimumOs,
- watchosSdkVersion,
- watchosMinimumOs,
- tvosSdkVersion,
- tvosMinimumOs,
- macosSdkVersion,
- macosMinimumOs);
+ return options.hashCode();
}
void serialize(CodedOutputStream out) throws IOException, SerializationException {
options.serialize(out);
out.writeStringNoTag(iosCpu);
- serializeNullable(xcodeVersion, out, DottedVersion.CODEC);
- DottedVersion.CODEC.serialize(iosSdkVersion, out);
- DottedVersion.CODEC.serialize(iosMinimumOs, out);
- DottedVersion.CODEC.serialize(watchosSdkVersion, out);
- DottedVersion.CODEC.serialize(watchosMinimumOs, out);
- DottedVersion.CODEC.serialize(tvosSdkVersion, out);
- DottedVersion.CODEC.serialize(tvosMinimumOs, out);
- DottedVersion.CODEC.serialize(macosSdkVersion, out);
- DottedVersion.CODEC.serialize(macosMinimumOs, out);
}
static AppleConfiguration deserialize(CodedInputStream in)
throws IOException, SerializationException {
AppleCommandLineOptions options = AppleCommandLineOptions.deserialize(in);
String iosCpu = StringCodecs.asciiOptimized().deserialize(in);
- DottedVersion xcodeVersion = deserializeNullable(in, DottedVersion.CODEC);
- return new AppleConfiguration(
- options,
- iosCpu,
- xcodeVersion,
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in),
- DottedVersion.CODEC.deserialize(in));
+ return new AppleConfiguration(options, iosCpu);
}
@VisibleForTesting
- static AppleConfiguration create(
- AppleCommandLineOptions appleOptions,
- String cpu,
- XcodeVersionProperties xcodeVersionProperties)
- throws InvalidConfigurationException {
- DottedVersion iosSdkVersion =
- (appleOptions.iosSdkVersion != null)
- ? appleOptions.iosSdkVersion
- : xcodeVersionProperties.getDefaultIosSdkVersion();
- DottedVersion iosMinimumOsVersion =
- (appleOptions.iosMinimumOs != null) ? appleOptions.iosMinimumOs : iosSdkVersion;
- DottedVersion watchosSdkVersion =
- (appleOptions.watchOsSdkVersion != null)
- ? appleOptions.watchOsSdkVersion
- : xcodeVersionProperties.getDefaultWatchosSdkVersion();
- DottedVersion watchosMinimumOsVersion =
- (appleOptions.watchosMinimumOs != null) ? appleOptions.watchosMinimumOs : watchosSdkVersion;
- DottedVersion tvosSdkVersion =
- (appleOptions.tvOsSdkVersion != null)
- ? appleOptions.tvOsSdkVersion
- : xcodeVersionProperties.getDefaultTvosSdkVersion();
- DottedVersion tvosMinimumOsVersion =
- (appleOptions.tvosMinimumOs != null) ? appleOptions.tvosMinimumOs : tvosSdkVersion;
- DottedVersion macosSdkVersion =
- (appleOptions.macOsSdkVersion != null)
- ? appleOptions.macOsSdkVersion
- : xcodeVersionProperties.getDefaultMacosSdkVersion();
- DottedVersion macosMinimumOsVersion =
- (appleOptions.macosMinimumOs != null) ? appleOptions.macosMinimumOs : macosSdkVersion;
- AppleConfiguration configuration =
- new AppleConfiguration(
- appleOptions,
- iosCpuFromCpu(cpu),
- xcodeVersionProperties.getXcodeVersion().orNull(),
- iosSdkVersion,
- iosMinimumOsVersion,
- watchosSdkVersion,
- watchosMinimumOsVersion,
- tvosSdkVersion,
- tvosMinimumOsVersion,
- macosSdkVersion,
- macosMinimumOsVersion);
-
- validate(configuration);
- return configuration;
- }
-
- private static void validate(AppleConfiguration config) throws InvalidConfigurationException {
- DottedVersion xcodeVersion = config.xcodeVersion;
- if (config.getBitcodeMode() != AppleBitcodeMode.NONE
- && xcodeVersion != null
- && xcodeVersion.compareTo(MINIMUM_BITCODE_XCODE_VERSION) < 0) {
- throw new InvalidConfigurationException(
- String.format(
- "apple_bitcode mode '%s' is unsupported for xcode version '%s'",
- config.getBitcodeMode(), xcodeVersion));
- }
+ static AppleConfiguration create(AppleCommandLineOptions appleOptions, String cpu) {
+ return new AppleConfiguration(appleOptions, iosCpuFromCpu(cpu));
}
/**
@@ -714,13 +532,10 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
*/
public static class Loader implements ConfigurationFragmentFactory {
@Override
- public AppleConfiguration create(ConfigurationEnvironment env, BuildOptions buildOptions)
- throws InvalidConfigurationException, InterruptedException {
+ public AppleConfiguration create(ConfigurationEnvironment env, BuildOptions buildOptions) {
AppleCommandLineOptions appleOptions = buildOptions.get(AppleCommandLineOptions.class);
String cpu = buildOptions.get(BuildConfiguration.Options.class).cpu;
- XcodeVersionProperties xcodeVersionProperties = XcodeConfig.
- getXcodeVersionProperties(env, appleOptions);
- return AppleConfiguration.create(appleOptions, cpu, xcodeVersionProperties);
+ return AppleConfiguration.create(appleOptions, cpu);
}
@Override