aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
diff options
context:
space:
mode:
authorGravatar Kevin Bierhoff <kmb@google.com>2017-03-24 21:17:13 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2017-03-27 11:36:26 +0000
commit6f1d60839c6dc16d7e8b9d5c0d85acadc3fab1f6 (patch)
treeb6e357f11d4dbe43d63852d47f1e630edaa5c317 /src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
parentebd04a4bd80706251190ad5fca4c7a54dabcd8a1 (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.java21
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.
*/