diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/config')
3 files changed, 29 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java index 97f113f8e1..725062541d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java @@ -846,13 +846,20 @@ public final class BuildConfiguration { /** * Values for --experimental_dynamic_configs. */ - public static enum DynamicConfigsMode { + public enum DynamicConfigsMode { /** Don't use dynamic configurations. */ OFF, /** Use dynamic configurations, including only the fragments each rule needs. */ ON, /** Use dynamic configurations, always including all fragments known to Blaze. */ NOTRIM, + /** + * Use untrimmed dynamic configurations unless an {@link Options} fragment needs static + * configurations. This is used to exempt features that don't yet work with dynamic configs. + */ + // TODO(gregce): make this mode unnecesary by making everything compatible with dynamic + // configs. b/23280991 tracks the effort (LIPO is the main culprit). + NOTRIM_PARTIAL } /** 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 46842ae6bd..4fdae568b1 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 @@ -210,6 +210,19 @@ public final class BuildOptions implements Cloneable, Serializable { } /** + * Returns {@code true} if static configurations should be used with + * {@link BuildConfiguration.Options.DynamicConfigsMode.NOTRIM_PARTIAL}. + */ + public boolean useStaticConfigurationsOverride() { + for (FragmentOptions fragment : fragmentOptionsMap.values()) { + if (fragment.useStaticConfigurationsOverride()) { + return true; + } + } + return false; + } + + /** * The cache key for the options collection. Recomputes cache key every time it's called. */ public String computeCacheKey() { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java index 02df85e2f9..11998bb5f1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java @@ -125,4 +125,12 @@ public abstract class FragmentOptions extends OptionsBase implements Cloneable, return null; } } + + /** + * Returns {@code true} if static configurations should be used with + * {@link BuildConfiguration.Options.DynamicConfigsMode.NOTRIM_PARTIAL}. + */ + public boolean useStaticConfigurationsOverride() { + return false; + } } |