diff options
author | 2017-08-17 17:49:50 +0200 | |
---|---|---|
committer | 2017-08-18 09:01:03 +0200 | |
commit | b86f8b06f5f4832b51e3be0de9d32170a79371ee (patch) | |
tree | 154fe134c52fafccd35b7e086c7076666491901d /src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java | |
parent | 7321812d556f659b65952d5205250230e19d76cb (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.java | 70 |
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> { |