aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar shahan <shahan@google.com>2018-01-05 14:16:54 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-05 14:19:25 -0800
commit13b000c575e3fc86bfd0ccce8db89740980d5f15 (patch)
tree40cb8619155087234b8713bd04b7f535b0067da9 /src/main/java/com/google/devtools/build/lib/rules/objc
parent1ade18a652900410f632b2b9f47e6456c522a2e4 (diff)
Codecs for all non-test Fragment subclasses (except CppConfiguration, handled separately).
PiperOrigin-RevId: 180974083
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java40
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java57
2 files changed, 86 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
index 5342172730..0d07d7393b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcConfiguration.java
@@ -27,16 +27,21 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
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 java.util.Collections;
import java.util.List;
/**
- * A J2ObjC transpiler configuration fragment containing J2ObjC translation flags.
- * This configuration fragment is used by Java rules that can be transpiled
- * (specifically, J2ObjCAspects thereof).
+ * A J2ObjC transpiler configuration fragment containing J2ObjC translation flags. This
+ * configuration fragment is used by Java rules that can be transpiled (specifically, J2ObjCAspects
+ * thereof).
*/
+@AutoCodec
@Immutable
public class J2ObjcConfiguration extends Fragment {
+ public static final ObjectCodec<J2ObjcConfiguration> CODEC = new J2ObjcConfiguration_AutoCodec();
+
/**
* Always-on flags for J2ObjC translation. These flags are always used when invoking the J2ObjC
* transpiler, and cannot be overridden by user-specified flags in {@link
@@ -92,14 +97,27 @@ public class J2ObjcConfiguration extends Fragment {
private final Optional<Label> deadCodeReport;
J2ObjcConfiguration(J2ObjcCommandLineOptions j2ObjcOptions) {
- this.removeDeadCode = j2ObjcOptions.removeDeadCode;
- this.experimentalJ2ObjcHeaderMap = j2ObjcOptions.experimentalJ2ObjcHeaderMap;
- this.deadCodeReport = Optional.fromNullable(j2ObjcOptions.deadCodeReport);
- this.translationFlags = ImmutableList.<String>builder()
- .addAll(J2OBJC_DEFAULT_TRANSLATION_FLAGS)
- .addAll(j2ObjcOptions.translationFlags)
- .addAll(J2OBJC_ALWAYS_ON_TRANSLATION_FLAGS)
- .build();
+ this(
+ ImmutableList.<String>builder()
+ .addAll(J2OBJC_DEFAULT_TRANSLATION_FLAGS)
+ .addAll(j2ObjcOptions.translationFlags)
+ .addAll(J2OBJC_ALWAYS_ON_TRANSLATION_FLAGS)
+ .build(),
+ j2ObjcOptions.removeDeadCode,
+ j2ObjcOptions.experimentalJ2ObjcHeaderMap,
+ Optional.fromNullable(j2ObjcOptions.deadCodeReport));
+ }
+
+ @AutoCodec.Constructor
+ J2ObjcConfiguration(
+ List<String> translationFlags,
+ boolean removeDeadCode,
+ boolean experimentalJ2ObjcHeaderMap,
+ Optional<Label> deadCodeReport) {
+ this.translationFlags = translationFlags;
+ this.removeDeadCode = removeDeadCode;
+ this.experimentalJ2ObjcHeaderMap = experimentalJ2ObjcHeaderMap;
+ this.deadCodeReport = deadCodeReport;
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index 8f7cc2168c..85bfaa4a06 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -24,12 +24,15 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.cpp.HeaderDiscovery;
+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;
import javax.annotation.Nullable;
/** A compiler configuration containing flags required for Objective-C compilation. */
+@AutoCodec
@SkylarkModule(
name = "objc",
category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT,
@@ -37,6 +40,8 @@ import javax.annotation.Nullable;
)
@Immutable
public class ObjcConfiguration extends BuildConfiguration.Fragment {
+ public static final ObjectCodec<ObjcConfiguration> CODEC = new ObjcConfiguration_AutoCodec();
+
@VisibleForTesting
static final ImmutableList<String> DBG_COPTS =
ImmutableList.of("-O0", "-DDEBUG=1", "-fstack-protector", "-fstack-protector-all", "-g");
@@ -112,6 +117,58 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
this.appleSdk = objcOptions.appleSdk;
}
+ @AutoCodec.Constructor
+ ObjcConfiguration(
+ DottedVersion iosSimulatorVersion,
+ String iosSimulatorDevice,
+ DottedVersion watchosSimulatorVersion,
+ String watchosSimulatorDevice,
+ DottedVersion tvosSimulatorVersion,
+ String tvosSimulatorDevice,
+ boolean generateDsym,
+ boolean generateLinkmap,
+ boolean runMemleaks,
+ ImmutableList<String> copts,
+ CompilationMode compilationMode,
+ ImmutableList<String> fastbuildOptions,
+ boolean enableBinaryStripping,
+ boolean moduleMapsEnabled,
+ String signingCertName,
+ boolean debugWithGlibcxx,
+ Label extraEntitlements,
+ boolean deviceDebugEntitlements,
+ boolean enableAppleBinaryNativeProtos,
+ HeaderDiscovery.DotdPruningMode dotdPruningPlan,
+ boolean experimentalHeaderThinning,
+ int objcHeaderThinningPartitionSize,
+ Label objcHeaderScannerTool,
+ Label appleSdk) {
+ this.iosSimulatorVersion = iosSimulatorVersion;
+ this.iosSimulatorDevice = iosSimulatorDevice;
+ this.watchosSimulatorVersion = watchosSimulatorVersion;
+ this.watchosSimulatorDevice = watchosSimulatorDevice;
+ this.tvosSimulatorVersion = tvosSimulatorVersion;
+ this.tvosSimulatorDevice = tvosSimulatorDevice;
+ this.generateDsym = generateDsym;
+ this.generateLinkmap = generateLinkmap;
+ this.runMemleaks = runMemleaks;
+ this.copts = copts;
+ this.compilationMode = compilationMode;
+ this.fastbuildOptions = fastbuildOptions;
+ this.enableBinaryStripping = enableBinaryStripping;
+ this.moduleMapsEnabled = moduleMapsEnabled;
+ this.signingCertName = signingCertName;
+ this.debugWithGlibcxx = debugWithGlibcxx;
+ this.extraEntitlements = extraEntitlements;
+ this.deviceDebugEntitlements = deviceDebugEntitlements;
+ this.enableAppleBinaryNativeProtos = enableAppleBinaryNativeProtos;
+ this.dotdPruningPlan = dotdPruningPlan;
+ this.experimentalHeaderThinning = experimentalHeaderThinning;
+ this.objcHeaderThinningPartitionSize = objcHeaderThinningPartitionSize;
+ this.objcHeaderScannerTool = objcHeaderScannerTool;
+ this.appleSdk = appleSdk;
+ }
+
/**
* Returns the type of device (e.g. 'iPhone 6') to simulate when running on the simulator.
*/