diff options
author | 2018-01-05 14:16:54 -0800 | |
---|---|---|
committer | 2018-01-05 14:19:25 -0800 | |
commit | 13b000c575e3fc86bfd0ccce8db89740980d5f15 (patch) | |
tree | 40cb8619155087234b8713bd04b7f535b0067da9 /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | 1ade18a652900410f632b2b9f47e6456c522a2e4 (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.java | 40 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java | 57 |
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. */ |