aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-12-27 10:11:54 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-27 10:14:01 -0800
commit4af309d4b24f65994481203211c6ea7bec388bed (patch)
treef1a4691b13b8d856a9367f128e767d612a1f98da
parent4b6f10cfff8ab99a17fe5de79966248c3ccf1806 (diff)
ObjectCodecs for all non-test FragmentOption subclasses.
PiperOrigin-RevId: 180202221
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java44
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java65
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/DottedVersion.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/swift/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/swift/SwiftCommandLineOptions.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java9
26 files changed, 211 insertions, 105 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 56f749eefa..58b1c92e4c 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -576,6 +576,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/rules/genrule",
"//src/main/java/com/google/devtools/build/lib/rules/objc",
"//src/main/java/com/google/devtools/build/lib/rules/platform",
+ "//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/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
@@ -750,6 +752,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//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/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
"//third_party:auto_value",
@@ -909,6 +913,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
"//src/main/java/com/google/devtools/build/lib/shell",
+ "//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/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:extra_actions_base_java_proto",
@@ -980,6 +986,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/config",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
+ "//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/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:android_deploy_info_java_proto",
@@ -1007,6 +1015,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
+ "//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/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:crosstool_config_java_proto",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
index 445f8e7684..9ae6e2d765 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PlatformOptions.java
@@ -22,16 +22,24 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelListConverter;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.cmdline.Label;
+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.autocodec.AutoCodec;
import com.google.devtools.common.options.Converter;
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.devtools.common.options.OptionsParsingException;
+import com.google.protobuf.CodedInputStream;
+import com.google.protobuf.CodedOutputStream;
+import java.io.IOException;
import java.util.List;
/** Command-line options for platform-related configuration. */
+@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public class PlatformOptions extends FragmentOptions {
+ public static final ObjectCodec<PlatformOptions> CODEC = new PlatformOptions_AutoCodec();
@Option(
name = "host_platform",
@@ -121,6 +129,9 @@ public class PlatformOptions extends FragmentOptions {
/** Data about which toolchain instance should be used for a given toolchain type. */
@AutoValue
public abstract static class ToolchainResolutionOverride {
+ public static final ObjectCodec<ToolchainResolutionOverride> CODEC =
+ new ToolchainResolutionOverrideCodec();
+
public abstract Label toolchainType();
public abstract Label toolchainLabel();
@@ -129,6 +140,28 @@ public class PlatformOptions extends FragmentOptions {
return new AutoValue_PlatformOptions_ToolchainResolutionOverride(
toolchainType, toolchainLabel);
}
+
+ private static class ToolchainResolutionOverrideCodec
+ implements ObjectCodec<ToolchainResolutionOverride> {
+ @Override
+ public Class<ToolchainResolutionOverride> getEncodedClass() {
+ return ToolchainResolutionOverride.class;
+ }
+
+ @Override
+ public void serialize(ToolchainResolutionOverride obj, CodedOutputStream codedOut)
+ throws SerializationException, IOException {
+ Label.CODEC.serialize(obj.toolchainType(), codedOut);
+ Label.CODEC.serialize(obj.toolchainLabel(), codedOut);
+ }
+
+ @Override
+ public ToolchainResolutionOverride deserialize(CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ return ToolchainResolutionOverride.create(
+ Label.CODEC.deserialize(codedIn), Label.CODEC.deserialize(codedIn));
+ }
+ }
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 785a54e88c..f41ff41836 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -50,6 +50,8 @@ import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
@@ -430,18 +432,21 @@ public class BuildConfiguration implements BuildEvent {
/**
* Options that affect the value of a BuildConfiguration instance.
*
- * <p>(Note: any client that creates a view will also need to declare
- * BuildView.Options, which affect the <i>mechanism</i> of view construction,
- * even if they don't affect the value of the BuildConfiguration instances.)
+ * <p>(Note: any client that creates a view will also need to declare BuildView.Options, which
+ * affect the <i>mechanism</i> of view construction, even if they don't affect the value of the
+ * BuildConfiguration instances.)
*
- * <p>IMPORTANT: when adding new options, be sure to consider whether those
- * values should be propagated to the host configuration or not.
+ * <p>IMPORTANT: when adding new options, be sure to consider whether those values should be
+ * propagated to the host configuration or not.
*
- * <p>ALSO IMPORTANT: all option types MUST define a toString method that
- * gives identical results for semantically identical option values. The
- * simplest way to ensure that is to return the input string.
+ * <p>ALSO IMPORTANT: all option types MUST define a toString method that gives identical results
+ * for semantically identical option values. The simplest way to ensure that is to return the
+ * input string.
*/
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class Options extends FragmentOptions implements Cloneable {
+ public static final ObjectCodec<Options> CODEC = new BuildConfiguration_Options_AutoCodec();
+
@Option(
name = "experimental_separate_genfiles_directory",
defaultValue = "true",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java
index a2f2daaef7..f23c0c37ec 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/PerLabelOptions.java
@@ -17,21 +17,24 @@ package com.google.devtools.build.lib.analysis.config;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.build.lib.util.RegexFilter.RegexFilterConverter;
import com.google.devtools.common.options.Converter;
import com.google.devtools.common.options.OptionsParsingException;
-
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
- * Models options that can be added to a command line when a label matches a
- * given {@link RegexFilter}.
+ * Models options that can be added to a command line when a label matches a given {@link
+ * RegexFilter}.
*/
+@AutoCodec
public class PerLabelOptions implements Serializable {
+ public static final ObjectCodec<PerLabelOptions> CODEC = new PerLabelOptions_AutoCodec();
/** The filter used to match labels */
private final RegexFilter regexFilter;
@@ -76,9 +79,9 @@ public class PerLabelOptions implements Serializable {
}
}
- public PerLabelOptions(RegexFilter regexFilter, List<String> optionsList) {
+ public PerLabelOptions(RegexFilter regexFilter, List<String> options) {
this.regexFilter = regexFilter;
- this.optionsList = optionsList;
+ this.optionsList = options;
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java
index 4b9230cdd6..349c62b910 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnder.java
@@ -14,14 +14,16 @@
package com.google.devtools.build.lib.analysis.config;
import com.google.devtools.build.lib.cmdline.Label;
-
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import java.io.Serializable;
import java.util.List;
-/**
- * Components of --run_under option.
- */
+/** Components of --run_under option. */
+@AutoCodec(strategy = AutoCodec.Strategy.POLYMORPHIC)
public interface RunUnder extends Serializable {
+ public static final ObjectCodec<RunUnder> CODEC = new RunUnder_AutoCodec();
+
/**
* @return the whole value passed to --run_under option.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
index 5dc6a9164d..b55ac0ce59 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RunUnderConverter.java
@@ -17,9 +17,10 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.shell.ShellUtils;
import com.google.devtools.build.lib.shell.ShellUtils.TokenizationException;
+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.Converter;
import com.google.devtools.common.options.OptionsParsingException;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -52,7 +53,11 @@ public class RunUnderConverter implements Converter<RunUnder> {
}
}
- private static final class RunUnderLabel implements RunUnder {
+ @AutoCodec
+ static final class RunUnderLabel implements RunUnder {
+ public static final ObjectCodec<RunUnderLabel> CODEC =
+ new RunUnderConverter_RunUnderLabel_AutoCodec();
+
private final String input;
private final Label runUnderLabel;
private final List<String> runUnderList;
@@ -69,6 +74,18 @@ public class RunUnderConverter implements Converter<RunUnder> {
@Override public List<String> getOptions() { return runUnderList; }
@Override public String toString() { return input; }
+ String getInput() {
+ return input;
+ }
+
+ Label getRunUnderLabel() {
+ return runUnderLabel;
+ }
+
+ List<String> getRunUnderList() {
+ return runUnderList;
+ }
+
@Override
public boolean equals(Object other) {
if (this == other) {
@@ -85,11 +102,15 @@ public class RunUnderConverter implements Converter<RunUnder> {
@Override
public int hashCode() {
- return Objects.hash(input, runUnderLabel, runUnderList);
+ return Objects.hash(input, runUnderLabel, runUnderList);
}
}
- private static final class RunUnderCommand implements RunUnder {
+ @AutoCodec
+ static final class RunUnderCommand implements RunUnder {
+ public static final ObjectCodec<RunUnderCommand> CODEC =
+ new RunUnderConverter_RunUnderCommand_AutoCodec();
+
private final String input;
private final String runUnderCommand;
private final List<String> runUnderList;
@@ -105,7 +126,18 @@ public class RunUnderConverter implements Converter<RunUnder> {
@Override public String getCommand() { return runUnderCommand; }
@Override public List<String> getOptions() { return runUnderList; }
@Override public String toString() { return input; }
-
+
+ String getInput() {
+ return input;
+ }
+
+ String getRunUnderCommand() {
+ return runUnderCommand;
+ }
+
+ List<String> getRunUnderList() {
+ return runUnderList;
+ }
@Override
public boolean equals(Object other) {
@@ -123,7 +155,7 @@ public class RunUnderConverter implements Converter<RunUnder> {
@Override
public int hashCode() {
- return Objects.hash(input, runUnderCommand, runUnderList);
+ return Objects.hash(input, runUnderCommand, runUnderList);
}
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
index 12b3d51b32..241008e57d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestConfiguration.java
@@ -28,6 +28,8 @@ import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
+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;
@@ -38,7 +40,11 @@ import java.util.List;
public class TestConfiguration extends Fragment {
/** Command-line options. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class TestOptions extends FragmentOptions {
+ public static final ObjectCodec<TestOptions> CODEC =
+ new TestConfiguration_TestOptions_AutoCodec();
+
@Option(
name = "test_filter",
allowMultiple = false,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
index f1a7a1f992..a2191eda26 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfiguration.java
@@ -24,6 +24,8 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactor
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.OptionsUtils.PathFragmentConverter;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -39,7 +41,10 @@ import javax.annotation.Nullable;
@Immutable
public class BazelConfiguration extends Fragment {
/** Command-line options. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class Options extends FragmentOptions {
+ public static final ObjectCodec<Options> CODEC = new BazelConfiguration_Options_AutoCodec();
+
@Option(
name = "experimental_strict_action_env",
defaultValue = "false",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java
index 5c504b8477..0cb066377b 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonConfiguration.java
@@ -25,6 +25,8 @@ 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.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.common.options.Converter;
@@ -57,10 +59,12 @@ public class BazelPythonConfiguration extends BuildConfiguration.Fragment {
}
}
- /**
- * Bazel-specific Python configuration options.
- */
+ /** Bazel-specific Python configuration options. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static final class Options extends FragmentOptions {
+ public static final ObjectCodec<Options> CODEC =
+ new BazelPythonConfiguration_Options_AutoCodec();
+
@Option(
name = "python2_path",
defaultValue = "python",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
index 368ccc22e0..b7db181779 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -38,6 +38,8 @@ import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
import com.google.devtools.build.lib.rules.cpp.CppOptions.DynamicModeConverter;
import com.google.devtools.build.lib.rules.cpp.CppOptions.LibcTopLabelConverter;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+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.common.options.Converters;
@@ -227,7 +229,10 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
}
/** Android configuration options. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class Options extends FragmentOptions {
+ public static final ObjectCodec<Options> CODEC = new AndroidConfiguration_Options_AutoCodec();
+
@Option(
name = "Android configuration distinguisher",
defaultValue = "MAIN",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java
index b4af907ed4..9c25a94e13 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceFilterFactory.java
@@ -35,6 +35,8 @@ import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.common.options.EnumConverter;
import com.google.devtools.common.options.OptionsParsingException;
@@ -55,10 +57,14 @@ import javax.annotation.Nullable;
* and {@link #hashCode()} methods. Failure to do so isn't just bad practice; it could seriously
* interfere with Bazel's caching performance.
*/
+@AutoCodec
public class ResourceFilterFactory {
public static final String RESOURCE_CONFIGURATION_FILTERS_NAME = "resource_configuration_filters";
public static final String DENSITIES_NAME = "densities";
+ public static final ObjectCodec<ResourceFilterFactory> CODEC =
+ new ResourceFilterFactory_AutoCodec();
+
/**
* Locales used for pseudolocation.
*
@@ -125,7 +131,6 @@ public class ResourceFilterFactory {
* @param densities the density filters, as a list of strings.
* @param filterBehavior the behavior of this filter.
*/
- @VisibleForTesting
ResourceFilterFactory(
ImmutableList<String> configFilters,
ImmutableList<String> densities,
@@ -657,6 +662,10 @@ public class ResourceFilterFactory {
return Joiner.on(',').join(configFilters);
}
+ ImmutableList<String> getConfigFilters() {
+ return configFilters;
+ }
+
/**
* Returns if this object contains a non-empty density filter.
*
@@ -671,7 +680,7 @@ public class ResourceFilterFactory {
return Joiner.on(',').join(densities);
}
- List<String> getDensities() {
+ ImmutableList<String> getDensities() {
return densities;
}
@@ -683,6 +692,10 @@ public class ResourceFilterFactory {
return hasConfigurationFilters() || hasDensities();
}
+ FilterBehavior getFilterBehavior() {
+ return filterBehavior;
+ }
+
public String getOutputDirectorySuffix() {
if (!hasFilters()) {
return null;
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",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/BUILD b/src/main/java/com/google/devtools/build/lib/rules/config/BUILD
index ca6c17a8d5..b67256c354 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/BUILD
@@ -28,6 +28,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/collect",
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//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/config/ConfigFeatureFlagConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java
index be93cb9353..7ce92f0d1c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagConfiguration.java
@@ -25,6 +25,8 @@ 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.cmdline.Label;
+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.Converter;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -56,7 +58,11 @@ public final class ConfigFeatureFlagConfiguration extends BuildConfiguration.Fra
}
/** The options fragment which defines {@link ConfigFeatureFlagConfiguration}. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static final class Options extends FragmentOptions {
+ public static final ObjectCodec<Options> CODEC =
+ new ConfigFeatureFlagConfiguration_Options_AutoCodec();
+
/** The mapping from config_feature_flag rules to their values. */
@Option(
name = "config_feature_flag values (private)",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
index 03e0ecf016..ac0ced43a0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD
@@ -30,6 +30,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/rules/apple",
"//src/main/java/com/google/devtools/build/lib/shell",
+ "//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/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 2649e2091d..3d2a242318 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -25,6 +25,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.StripMode;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.OptionsUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -42,10 +44,10 @@ import java.util.Map;
import java.util.Set;
import javax.annotation.Nullable;
-/**
- * Command-line options for C++.
- */
+/** Command-line options for C++. */
+@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public class CppOptions extends FragmentOptions {
+ public static final ObjectCodec<CppOptions> CODEC = new CppOptions_AutoCodec();
/**
* Converts a comma-separated list of compilation mode settings to a properly typed List.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
index fe72380895..1389262719 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
@@ -25,6 +25,8 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaClasspathMode;
import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaOptimizationMode;
import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnforcementLevel;
+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.EnumConverter;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -36,10 +38,10 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-/**
- * Command-line options for building Java targets
- */
+/** Command-line options for building Java targets */
+@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public class JavaOptions extends FragmentOptions {
+ public static final ObjectCodec<JavaOptions> CODEC = new JavaOptions_AutoCodec();
/** Converter for the --java_classpath option. */
public static class JavaClasspathModeConverter extends EnumConverter<JavaClasspathMode> {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
index 54e49204ef..c9022b5d3f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BUILD
@@ -31,6 +31,8 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/rules/config",
"//src/main/java/com/google/devtools/build/lib/rules/cpp",
"//src/main/java/com/google/devtools/build/lib/shell",
+ "//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/build/lib/vfs",
"//src/main/java/com/google/devtools/common/options",
"//src/main/protobuf:bundlemerge_java_proto",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java
index f6af056f0d..ba28c3657e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcCommandLineOptions.java
@@ -17,6 +17,8 @@ package com.google.devtools.build.lib.rules.objc;
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.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.common.options.Converters;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -24,11 +26,14 @@ import com.google.devtools.common.options.OptionEffectTag;
import java.util.List;
/**
- * Command-line options for J2ObjC translation of Java source code to ObjC.
- * These command line options are used by Java rules that can be transpiled
- * (specifically, J2ObjCAspects thereof).
+ * Command-line options for J2ObjC translation of Java source code to ObjC. These command line
+ * options are used by Java rules that can be transpiled (specifically, J2ObjCAspects thereof).
*/
+@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public class J2ObjcCommandLineOptions extends FragmentOptions {
+ public static final ObjectCodec<J2ObjcCommandLineOptions> CODEC =
+ new J2ObjcCommandLineOptions_AutoCodec();
+
@Option(
name = "j2objc_translation_flags",
converter = Converters.CommaSeparatedOptionListConverter.class,
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 dafd67586f..64637c39d8 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
@@ -19,6 +19,8 @@ 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.DottedVersion;
import com.google.devtools.build.lib.rules.apple.DottedVersionConverter;
+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.Converters.CommaSeparatedOptionListConverter;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
@@ -26,10 +28,12 @@ import com.google.devtools.common.options.OptionEffectTag;
import com.google.devtools.common.options.OptionMetadataTag;
import java.util.List;
-/**
- * Command-line options for building Objective-C targets.
- */
+/** Command-line options for building Objective-C targets. */
+@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public class ObjcCommandLineOptions extends FragmentOptions {
+ public static final ObjectCodec<ObjcCommandLineOptions> CODEC =
+ new ObjcCommandLineOptions_AutoCodec();
+
@Option(
name = "ios_simulator_version",
defaultValue = "9.3",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
index 9df88d3f05..feb0706fe6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
@@ -26,6 +26,8 @@ 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.skyframe.serialization.ObjectCodec;
+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.common.options.Converters;
@@ -48,10 +50,11 @@ import java.util.List;
)
public class ProtoConfiguration extends Fragment {
- /**
- * Command line options.
- */
+ /** Command line options. */
+ @AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public static class Options extends FragmentOptions {
+ public static final ObjectCodec<Options> CODEC = new ProtoConfiguration_Options_AutoCodec();
+
@Option(
name = "protocopt",
allowMultiple = true,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
index 776704b246..b730513300 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonOptions.java
@@ -14,16 +14,19 @@
package com.google.devtools.build.lib.rules.python;
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.EnumConverter;
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.TriState;
-/**
- * Python-related command-line options.
- */
+/** Python-related command-line options. */
+@AutoCodec(strategy = AutoCodec.Strategy.PUBLIC_FIELDS)
public class PythonOptions extends FragmentOptions {
+ public static final ObjectCodec<PythonOptions> CODEC = new PythonOptions_AutoCodec();
+
/**
* Converter for the --force_python option.
*/