aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/config')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java8
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;
+ }
}