aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2017-08-17 17:49:50 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-08-18 09:01:03 +0200
commitb86f8b06f5f4832b51e3be0de9d32170a79371ee (patch)
tree154fe134c52fafccd35b7e086c7076666491901d /src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
parent7321812d556f659b65952d5205250230e19d76cb (diff)
Open-source Skyframe serialization, and make AppleConfiguration serializable as a pilot. Currently not hooked up to anything, but will be shortly.
PiperOrigin-RevId: 165583517
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java70
1 files changed, 70 insertions, 0 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 36c9449462..268c47d4e7 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
@@ -14,6 +14,8 @@
package com.google.devtools.build.lib.rules.apple;
+import static com.google.devtools.build.lib.skyframe.serialization.SerializationCommonUtils.STRING_LIST_CODEC;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
@@ -24,6 +26,10 @@ 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.ApplePlatform.PlatformType;
+import com.google.devtools.build.lib.skyframe.serialization.EnumCodec;
+import com.google.devtools.build.lib.skyframe.serialization.FastStringCodec;
+import com.google.devtools.build.lib.skyframe.serialization.LabelCodec;
+import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
@@ -34,6 +40,9 @@ import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionEffectTag;
import com.google.devtools.common.options.OptionMetadataTag;
+import com.google.protobuf.CodedInputStream;
+import com.google.protobuf.CodedOutputStream;
+import java.io.IOException;
import java.util.List;
/**
@@ -470,6 +479,8 @@ public class AppleCommandLineOptions extends FragmentOptions {
super(AppleBitcodeMode.class, "apple bitcode mode");
}
}
+
+ static final EnumCodec<AppleBitcodeMode> CODEC = new EnumCodec<>(AppleBitcodeMode.class);
}
@Override
@@ -492,6 +503,65 @@ public class AppleCommandLineOptions extends FragmentOptions {
return host;
}
+ void serialize(CodedOutputStream out) throws IOException, SerializationException {
+ out.writeBoolNoTag(mandatoryMinimumVersion);
+ xcodeVersion.serialize(out);
+ iosSdkVersion.serialize(out);
+ watchOsSdkVersion.serialize(out);
+ tvOsSdkVersion.serialize(out);
+ macOsSdkVersion.serialize(out);
+ iosMinimumOs.serialize(out);
+ watchosMinimumOs.serialize(out);
+ tvosMinimumOs.serialize(out);
+ macosMinimumOs.serialize(out);
+ FastStringCodec.INSTANCE.serialize(iosCpu, out);
+ LabelCodec.INSTANCE.serialize(appleCrosstoolTop, out);
+ PlatformType.CODEC.serialize(applePlatformType, out);
+ FastStringCodec.INSTANCE.serialize(appleSplitCpu, out);
+ ConfigurationDistinguisher.CODEC.serialize(configurationDistinguisher, out);
+ STRING_LIST_CODEC.serialize((ImmutableList<String>) iosMultiCpus, out);
+ STRING_LIST_CODEC.serialize((ImmutableList<String>) watchosCpus, out);
+ STRING_LIST_CODEC.serialize((ImmutableList<String>) tvosCpus, out);
+ STRING_LIST_CODEC.serialize((ImmutableList<String>) macosCpus, out);
+ LabelCodec.INSTANCE.serialize(defaultProvisioningProfile, out);
+ LabelCodec.INSTANCE.serialize(xcodeVersionConfig, out);
+ FastStringCodec.INSTANCE.serialize(xcodeToolchain, out);
+ AppleBitcodeMode.CODEC.serialize(appleBitcodeMode, out);
+ out.writeBoolNoTag(enableAppleCrosstoolTransition);
+ out.writeBoolNoTag(targetUsesAppleCrosstool);
+ }
+
+ static AppleCommandLineOptions deserialize(CodedInputStream in)
+ throws IOException, SerializationException {
+ AppleCommandLineOptions result = new AppleCommandLineOptions();
+ result.mandatoryMinimumVersion = in.readBool();
+ result.xcodeVersion = DottedVersion.deserialize(in);
+ result.iosSdkVersion = DottedVersion.deserialize(in);
+ result.watchOsSdkVersion = DottedVersion.deserialize(in);
+ result.tvOsSdkVersion = DottedVersion.deserialize(in);
+ result.macOsSdkVersion = DottedVersion.deserialize(in);
+ result.iosMinimumOs = DottedVersion.deserialize(in);
+ result.watchosMinimumOs = DottedVersion.deserialize(in);
+ result.tvosMinimumOs = DottedVersion.deserialize(in);
+ result.macosMinimumOs = DottedVersion.deserialize(in);
+ result.iosCpu = FastStringCodec.INSTANCE.deserialize(in);
+ result.appleCrosstoolTop = LabelCodec.INSTANCE.deserialize(in);
+ result.applePlatformType = PlatformType.CODEC.deserialize(in);
+ result.appleSplitCpu = FastStringCodec.INSTANCE.deserialize(in);
+ result.configurationDistinguisher = ConfigurationDistinguisher.CODEC.deserialize(in);
+ result.iosMultiCpus = STRING_LIST_CODEC.deserialize(in);
+ result.watchosCpus = STRING_LIST_CODEC.deserialize(in);
+ result.tvosCpus = STRING_LIST_CODEC.deserialize(in);
+ result.macosCpus = STRING_LIST_CODEC.deserialize(in);
+ result.defaultProvisioningProfile = LabelCodec.INSTANCE.deserialize(in);
+ result.xcodeVersionConfig = LabelCodec.INSTANCE.deserialize(in);
+ result.xcodeToolchain = FastStringCodec.INSTANCE.deserialize(in);
+ result.appleBitcodeMode = AppleBitcodeMode.CODEC.deserialize(in);
+ result.enableAppleCrosstoolTransition = in.readBool();
+ result.targetUsesAppleCrosstool = in.readBool();
+ return result;
+ }
+
/** Converter for the Apple configuration distinguisher. */
public static final class ConfigurationDistinguisherConverter
extends EnumConverter<ConfigurationDistinguisher> {