diff options
author | 2017-12-27 10:11:54 -0800 | |
---|---|---|
committer | 2017-12-27 10:14:01 -0800 | |
commit | 4af309d4b24f65994481203211c6ea7bec388bed (patch) | |
tree | f1a4691b13b8d856a9367f128e767d612a1f98da /src/main/java/com/google/devtools/build/lib/rules/apple | |
parent | 4b6f10cfff8ab99a17fe5de79966248c3ccf1806 (diff) |
ObjectCodecs for all non-test FragmentOption subclasses.
PiperOrigin-RevId: 180202221
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple')
5 files changed, 16 insertions, 59 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 fbc5363f7b..3bf0afc5a4 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,10 +14,6 @@ package com.google.devtools.build.lib.rules.apple; -import static com.google.devtools.build.lib.skyframe.serialization.SerializationCommonUtils.STRING_LIST_CODEC; -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.Strings; import com.google.common.collect.ImmutableList; @@ -25,13 +21,13 @@ 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.cmdline.LabelCodec; 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.ObjectCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; -import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; @@ -48,7 +44,10 @@ import java.io.IOException; import java.util.List; /** Command-line options for building for Apple platforms. */ +@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS) public class AppleCommandLineOptions extends FragmentOptions { + public static final ObjectCodec<AppleCommandLineOptions> CODEC = + new AppleCommandLineOptions_AutoCodec(); @Option( name = "experimental_apple_mandatory_minimum_version", @@ -510,62 +509,12 @@ public class AppleCommandLineOptions extends FragmentOptions { } void serialize(CodedOutputStream out) throws IOException, SerializationException { - out.writeBoolNoTag(mandatoryMinimumVersion); - out.writeBoolNoTag(objcProviderFromLinked); - serializeNullable(xcodeVersion, out, StringCodecs.asciiOptimized()); - serializeNullable(iosSdkVersion, out, DottedVersion.CODEC); - serializeNullable(watchOsSdkVersion, out, DottedVersion.CODEC); - serializeNullable(tvOsSdkVersion, out, DottedVersion.CODEC); - serializeNullable(macOsSdkVersion, out, DottedVersion.CODEC); - serializeNullable(iosMinimumOs, out, DottedVersion.CODEC); - serializeNullable(watchosMinimumOs, out, DottedVersion.CODEC); - serializeNullable(tvosMinimumOs, out, DottedVersion.CODEC); - serializeNullable(macosMinimumOs, out, DottedVersion.CODEC); - StringCodecs.asciiOptimized().serialize(iosCpu, out); - LabelCodec.INSTANCE.serialize(appleCrosstoolTop, out); - PlatformType.CODEC.serialize(applePlatformType, out); - StringCodecs.asciiOptimized().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); - AppleBitcodeMode.CODEC.serialize(appleBitcodeMode, out); - out.writeBoolNoTag(enableAppleCrosstoolTransition); - out.writeBoolNoTag(targetUsesAppleCrosstool); + CODEC.serialize(this, out); } static AppleCommandLineOptions deserialize(CodedInputStream in) throws IOException, SerializationException { - AppleCommandLineOptions result = new AppleCommandLineOptions(); - result.mandatoryMinimumVersion = in.readBool(); - result.objcProviderFromLinked = in.readBool(); - result.xcodeVersion = deserializeNullable(in, StringCodecs.asciiOptimized()); - result.iosSdkVersion = deserializeNullable(in, DottedVersion.CODEC); - result.watchOsSdkVersion = deserializeNullable(in, DottedVersion.CODEC); - result.tvOsSdkVersion = deserializeNullable(in, DottedVersion.CODEC); - result.macOsSdkVersion = deserializeNullable(in, DottedVersion.CODEC); - result.iosMinimumOs = deserializeNullable(in, DottedVersion.CODEC); - result.watchosMinimumOs = deserializeNullable(in, DottedVersion.CODEC); - result.tvosMinimumOs = deserializeNullable(in, DottedVersion.CODEC); - result.macosMinimumOs = deserializeNullable(in, DottedVersion.CODEC); - result.iosCpu = StringCodecs.asciiOptimized().deserialize(in); - result.appleCrosstoolTop = LabelCodec.INSTANCE.deserialize(in); - result.applePlatformType = PlatformType.CODEC.deserialize(in); - result.appleSplitCpu = StringCodecs.asciiOptimized().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.appleBitcodeMode = AppleBitcodeMode.CODEC.deserialize(in); - result.enableAppleCrosstoolTransition = in.readBool(); - result.targetUsesAppleCrosstool = in.readBool(); - return result; + return CODEC.deserialize(in); } /** Converter for the Apple configuration distinguisher. */ diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD index ebe3e34fdc..a40e8f8ad9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/BUILD @@ -21,6 +21,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:jsr305", diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java b/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java index dbe80f1568..569c8e1c4a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java @@ -257,7 +257,7 @@ public final class DottedVersion implements Comparable<DottedVersion>, SkylarkVa printer.append(stringRepresentation); } - static final ObjectCodec<DottedVersion> CODEC = + public static final ObjectCodec<DottedVersion> CODEC = new ObjectCodec<DottedVersion>() { @Override public void serialize(DottedVersion obj, CodedOutputStream codedOut) throws IOException { diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/BUILD b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/BUILD index 924c9731dc..746789603a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/BUILD @@ -15,6 +15,8 @@ java_library( "//src/main/java/com/google/devtools/build/lib:build-base", "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib/concurrent", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", ], diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java index 9803e22a5e..505838754d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java @@ -15,13 +15,18 @@ package com.google.devtools.build.lib.rules.apple.swift; import com.google.devtools.build.lib.analysis.config.FragmentOptions; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionDocumentationCategory; import com.google.devtools.common.options.OptionEffectTag; import java.util.List; /** Command-line options for building with Swift tools. */ +@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS) public class SwiftCommandLineOptions extends FragmentOptions { + public static final ObjectCodec<SwiftCommandLineOptions> CODEC = + new SwiftCommandLineOptions_AutoCodec(); @Option( name = "swiftcopt", |