diff options
author | Kevin Bierhoff <kmb@google.com> | 2017-03-24 21:17:13 +0000 |
---|---|---|
committer | Philipp Wollermann <philwo@google.com> | 2017-03-27 11:36:26 +0000 |
commit | 6f1d60839c6dc16d7e8b9d5c0d85acadc3fab1f6 (patch) | |
tree | b6e357f11d4dbe43d63852d47f1e630edaa5c317 /src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java | |
parent | ebd04a4bd80706251190ad5fca4c7a54dabcd8a1 (diff) |
introduce hidden flag to configure bytecode optimizers
--
PiperOrigin-RevId: 151170448
MOS_MIGRATED_REVID=151170448
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java index c572dc0590..748258cd56 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java @@ -15,7 +15,9 @@ package com.google.devtools.build.lib.rules.java; import static com.google.common.base.Preconditions.checkArgument; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode; @@ -31,6 +33,7 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.common.options.TriState; import java.util.List; +import java.util.Map; import javax.annotation.Nullable; /** A java compiler configuration containing the flags required for compilation. */ @@ -141,6 +144,7 @@ public final class JavaConfiguration extends Fragment { private final TriState bundleTranslations; private final ImmutableList<Label> translationTargets; private final JavaOptimizationMode javaOptimizationMode; + private final ImmutableMap<String, Optional<Label>> bytecodeOptimizers; private final Label javaToolchain; // TODO(dmarting): remove once we have a proper solution for #2539 @@ -185,6 +189,16 @@ public final class JavaConfiguration extends Fragment { } } this.translationTargets = translationsBuilder.build(); + + ImmutableMap.Builder<String, Optional<Label>> optimizersBuilder = ImmutableMap.builder(); + for (Map.Entry<String, Label> optimizer : javaOptions.bytecodeOptimizers.entrySet()) { + String mnemonic = optimizer.getKey(); + if (optimizer.getValue() == null && !"Proguard".equals(mnemonic)) { + throw new InvalidConfigurationException("Must supply label for optimizer " + mnemonic); + } + optimizersBuilder.put(mnemonic, Optional.fromNullable(optimizer.getValue())); + } + this.bytecodeOptimizers = optimizersBuilder.build(); } @SkylarkCallable(name = "default_javac_flags", structField = true, @@ -327,6 +341,13 @@ public final class JavaConfiguration extends Fragment { } /** + * Returns ordered list of optimizers to run. + */ + public ImmutableMap<String, Optional<Label>> getBytecodeOptimizers() { + return bytecodeOptimizers; + } + + /** * Returns true if java_test in Bazel should behave in legacy mode that existed before we * open-sourced our test runner. */ |