From a4b66fdbe61845fd4d4ebaebec1e25cdcd99809d Mon Sep 17 00:00:00 2001 From: Lukacs Berki Date: Fri, 24 Apr 2015 05:58:45 +0000 Subject: Add a mechanism for configuration fragments to add arbitrary rules to the defaults package. -- MOS_MIGRATED_REVID=91956723 --- .../devtools/build/lib/analysis/config/BuildOptions.java | 9 +++++++++ .../devtools/build/lib/analysis/config/DefaultsPackage.java | 8 ++++++++ .../devtools/build/lib/analysis/config/FragmentOptions.java | 13 +++++++++++++ 3 files changed, 30 insertions(+) (limited to 'src/main/java/com/google/devtools/build/lib/analysis') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java index 8b44f65470..cee3ceb0e1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java @@ -156,6 +156,15 @@ public final class BuildOptions implements Cloneable, Serializable { return result.build(); } + ImmutableList getDefaultsRules() { + ImmutableList.Builder result = ImmutableList.builder(); + for (FragmentOptions fragment : fragmentOptionsMap.values()) { + result.addAll(fragment.getDefaultsRules()); + } + + return result.build(); + } + /** * The cache key for the options collection. Recomputes cache key every time it's called. */ diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java b/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java index 7d92bcedd7..e04633011f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.analysis.config; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.syntax.Label; @@ -93,9 +94,11 @@ public final class DefaultsPackage { * The map from entries to their values. */ private ImmutableMap> values; + private ImmutableList rules; private DefaultsPackage(BuildOptions buildOptions) { values = buildOptions.getDefaultsLabels(); + rules = buildOptions.getDefaultsRules(); } private String labelsToString(Set