Remove outdated references to static vs. dynamic configurations.

PiperOrigin-RevId: 168452997
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java
index 9b67fe8..f548b18 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java
@@ -26,11 +26,13 @@
 /**
  * A dependency of a configured target through a label.
  *
- * <p>For static configurations: includes the target and the configuration of the dependency
+ * <p>The dep's configuration can be specified in one of two ways:
+ *
+ * <p>Explicit configurations: includes the target and the configuration of the dependency
  * configured target and any aspects that may be required, as well as the configurations for
  * these aspects.
  *
- * <p>For dynamic configurations: includes the target and the desired configuration transitions
+ * <p>Configuration transitions: includes the target and the desired configuration transitions
  * that should be applied to produce the dependency's configuration. It's the caller's
  * responsibility to construct an actual configuration out of that. A set of aspects is also
  * included; the caller must also construct configurations for each of these.
@@ -45,30 +47,29 @@
 
   /**
    * Creates a new {@link Dependency} with a null configuration, suitable for edges with no
-   * configuration in static configuration builds.
+   * configuration.
    */
   public static Dependency withNullConfiguration(Label label) {
     return new NullConfigurationDependency(label);
   }
 
   /**
-   * Creates a new {@link Dependency} with the given configuration, suitable for static
-   * configuration builds.
+   * Creates a new {@link Dependency} with the given explicit configuration.
    *
    * <p>The configuration must not be {@code null}.
    *
    * <p>A {@link Dependency} created this way will have no associated aspects.
    */
   public static Dependency withConfiguration(Label label, BuildConfiguration configuration) {
-    return new StaticConfigurationDependency(
+    return new ExplicitConfigurationDependency(
         label, configuration,
         AspectCollection.EMPTY,
         ImmutableMap.<AspectDescriptor, BuildConfiguration>of());
   }
 
   /**
-   * Creates a new {@link Dependency} with the given configuration and aspects, suitable for
-   * static configuration builds. The configuration is also applied to all aspects.
+   * Creates a new {@link Dependency} with the given configuration and aspects. The configuration
+   * is also applied to all aspects.
    *
    * <p>The configuration and aspects must not be {@code null}.
    */
@@ -79,12 +80,13 @@
     for (AspectDescriptor aspect : aspects.getAllAspects()) {
       aspectBuilder.put(aspect, configuration);
     }
-    return new StaticConfigurationDependency(label, configuration, aspects, aspectBuilder.build());
+    return new ExplicitConfigurationDependency(label, configuration, aspects,
+        aspectBuilder.build());
   }
 
   /**
    * Creates a new {@link Dependency} with the given configuration and aspects, suitable for
-   * storing the output of a dynamic configuration trimming step. The aspects each have their own
+   * storing the output of a configuration trimming step. The aspects each have their own
    * configuration.
    *
    * <p>The aspects and configurations must not be {@code null}.
@@ -93,17 +95,16 @@
       Label label, BuildConfiguration configuration,
       AspectCollection aspects,
       Map<AspectDescriptor, BuildConfiguration> aspectConfigurations) {
-    return new StaticConfigurationDependency(
+    return new ExplicitConfigurationDependency(
         label, configuration, aspects, ImmutableMap.copyOf(aspectConfigurations));
   }
 
   /**
-   * Creates a new {@link Dependency} with the given transition and aspects, suitable for dynamic
-   * configuration builds.
+   * Creates a new {@link Dependency} with the given transition and aspects.
    */
   public static Dependency withTransitionAndAspects(
       Label label, Attribute.Transition transition, AspectCollection aspects) {
-    return new DynamicConfigurationDependency(label, transition, aspects);
+    return new ConfigurationTransitionDependency(label, transition, aspects);
   }
 
   protected final Label label;
@@ -122,23 +123,23 @@
   }
 
   /**
-   * Returns true if this dependency specifies a static configuration, false if it specifies
-   * a dynamic transition.
+   * Returns true if this dependency specifies an explicit configuration, false if it specifies
+   * a configuration transition.
    */
-  public abstract boolean hasStaticConfiguration();
+  public abstract boolean hasExplicitConfiguration();
 
   /**
-   * Returns the static configuration for the target this dependency points to.
+   * Returns the explicit configuration intended for this dependency.
    *
-   * @throws IllegalStateException if {@link #hasStaticConfiguration} returns false.
+   * @throws IllegalStateException if {@link #hasExplicitConfiguration} returns false.
    */
   @Nullable
   public abstract BuildConfiguration getConfiguration();
 
   /**
-   * Returns the dynamic transition to be applied to reach the target this dependency points to.
+   * Returns the configuration transition to apply to reach the target this dependency points to.
    *
-   * @throws IllegalStateException if {@link #hasStaticConfiguration} returns true.
+   * @throws IllegalStateException if {@link #hasExplicitConfiguration} returns true.
    */
   public abstract Attribute.Transition getTransition();
 
@@ -151,15 +152,15 @@
   public abstract AspectCollection getAspects();
 
   /**
-   * Returns the the static configuration an aspect should be evaluated with
+   * Returns the configuration an aspect should be evaluated with
    **
-   * @throws IllegalStateException if {@link #hasStaticConfiguration()} returns false.
+   * @throws IllegalStateException if {@link #hasExplicitConfiguration()} returns false.
    */
   public abstract BuildConfiguration getAspectConfiguration(AspectDescriptor aspect);
 
   /**
-   * Implementation of a dependency with no configuration, suitable for static configuration
-   * builds of edges to source files or e.g. for visibility.
+   * Implementation of a dependency with no configuration, suitable for, e.g., source files or
+   * visibility.
    */
   private static final class NullConfigurationDependency extends Dependency {
     public NullConfigurationDependency(Label label) {
@@ -167,7 +168,7 @@
     }
 
     @Override
-    public boolean hasStaticConfiguration() {
+    public boolean hasExplicitConfiguration() {
       return true;
     }
 
@@ -180,7 +181,7 @@
     @Override
     public Attribute.Transition getTransition() {
       throw new IllegalStateException(
-          "A dependency with a static configuration does not have a transition.");
+          "This dependency has an explicit configuration, not a transition.");
     }
 
     @Override
@@ -214,15 +215,14 @@
   }
 
   /**
-   * Implementation of a dependency with static configurations, suitable for static configuration
-   * builds.
+   * Implementation of a dependency with an explicitly set configuration.
    */
-  private static final class StaticConfigurationDependency extends Dependency {
+  private static final class ExplicitConfigurationDependency extends Dependency {
     private final BuildConfiguration configuration;
     private final AspectCollection aspects;
     private final ImmutableMap<AspectDescriptor, BuildConfiguration> aspectConfigurations;
 
-    public StaticConfigurationDependency(
+    public ExplicitConfigurationDependency(
         Label label, BuildConfiguration configuration,
         AspectCollection aspects,
         ImmutableMap<AspectDescriptor, BuildConfiguration> aspectConfigurations) {
@@ -233,7 +233,7 @@
     }
 
     @Override
-    public boolean hasStaticConfiguration() {
+    public boolean hasExplicitConfiguration() {
       return true;
     }
 
@@ -245,7 +245,7 @@
     @Override
     public Attribute.Transition getTransition() {
       throw new IllegalStateException(
-          "A dependency with a static configuration does not have a transition.");
+          "This dependency has an explicit configuration, not a transition.");
     }
 
     @Override
@@ -265,10 +265,10 @@
 
     @Override
     public boolean equals(Object other) {
-      if (!(other instanceof StaticConfigurationDependency)) {
+      if (!(other instanceof ExplicitConfigurationDependency)) {
         return false;
       }
-      StaticConfigurationDependency otherDep = (StaticConfigurationDependency) other;
+      ExplicitConfigurationDependency otherDep = (ExplicitConfigurationDependency) other;
       return label.equals(otherDep.label)
           && configuration.equals(otherDep.configuration)
           && aspects.equals(otherDep.aspects)
@@ -278,20 +278,19 @@
     @Override
     public String toString() {
       return String.format(
-          "StaticConfigurationDependency{label=%s, configuration=%s, aspectConfigurations=%s}",
-          label, configuration, aspectConfigurations);
+          "%s{label=%s, configuration=%s, aspectConfigurations=%s}",
+          getClass().getSimpleName(), label, configuration, aspectConfigurations);
     }
   }
 
   /**
-   * Implementation of a dependency with a given configuration transition, suitable for dynamic
-   * configuration builds.
+   * Implementation of a dependency with a given configuration transition.
    */
-  private static final class DynamicConfigurationDependency extends Dependency {
+  private static final class ConfigurationTransitionDependency extends Dependency {
     private final Attribute.Transition transition;
     private final AspectCollection aspects;
 
-    public DynamicConfigurationDependency(
+    public ConfigurationTransitionDependency(
         Label label, Attribute.Transition transition, AspectCollection aspects) {
       super(label);
       this.transition = Preconditions.checkNotNull(transition);
@@ -299,14 +298,14 @@
     }
 
     @Override
-    public boolean hasStaticConfiguration() {
+    public boolean hasExplicitConfiguration() {
       return false;
     }
 
     @Override
     public BuildConfiguration getConfiguration() {
       throw new IllegalStateException(
-          "A dependency with a dynamic configuration transition does not have a configuration.");
+          "This dependency has a transition, not an explicit configuration.");
     }
 
     @Override
@@ -322,8 +321,7 @@
     @Override
     public BuildConfiguration getAspectConfiguration(AspectDescriptor aspect) {
       throw new IllegalStateException(
-          "A dependency with a dynamic configuration transition does not have aspect "
-              + "configurations.");
+          "This dependency has a transition, not an explicit aspect configuration.");
     }
 
     @Override
@@ -333,10 +331,10 @@
 
     @Override
     public boolean equals(Object other) {
-      if (!(other instanceof DynamicConfigurationDependency)) {
+      if (!(other instanceof ConfigurationTransitionDependency)) {
         return false;
       }
-      DynamicConfigurationDependency otherDep = (DynamicConfigurationDependency) other;
+      ConfigurationTransitionDependency otherDep = (ConfigurationTransitionDependency) other;
       return label.equals(otherDep.label)
           && transition.equals(otherDep.transition)
           && aspects.equals(otherDep.aspects);
@@ -345,8 +343,8 @@
     @Override
     public String toString() {
       return String.format(
-          "DynamicConfigurationDependency{label=%s, transition=%s, aspects=%s}",
-          label, transition, aspects);
+          "%s{label=%s, transition=%s, aspects=%s}",
+          getClass().getSimpleName(), label, transition, aspects);
     }
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index ce8405b..7b3f725 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -255,8 +255,8 @@
 
     // When getting the dependencies of this hybrid aspect+base target, use the aspect's
     // configuration. The configuration of the aspect will always be a superset of the target's
-    // (dynamic configuration mode: target is part of the aspect's config fragment requirements;
-    // static configuration mode: target is the same configuration as the aspect), so the fragments
+    // (trimmed configuration mode: target is part of the aspect's config fragment requirements;
+    // untrimmed mode: target is the same configuration as the aspect), so the fragments
     // required by all dependencies (both those of the aspect and those of the base target)
     // will be present this way.
     TargetAndConfiguration originalTargetAndAspectConfiguration =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
index 0656d45..ee23308 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValue.java
@@ -112,7 +112,7 @@
     /**
      * Returns the configuration to be used for the evaluation of the aspect itself.
      *
-     * <p>In dynamic configuration mode, the aspect may require more fragments than the target on
+     * <p>In trimmed configuration mode, the aspect may require more fragments than the target on
      * which it is being evaluated; in addition to configuration fragments required by the target
      * and its dependencies, an aspect has configuration fragment requirements of its own, as well
      * as dependencies of its own with their own configuration fragment requirements.
@@ -122,7 +122,7 @@
      * configurations trimmed from this one as normal.
      *
      * <p>Because of these properties, this configuration is always a superset of that returned by
-     * {@link #getBaseConfiguration()}. In static configuration mode, this configuration will be
+     * {@link #getBaseConfiguration()}. In untrimmed configuration mode, this configuration will be
      * equivalent to that returned by {@link #getBaseConfiguration()}.
      *
      * @see #getBaseConfiguration()
@@ -134,7 +134,7 @@
     /**
      * Returns the configuration to be used for the base target.
      *
-     * <p>In dynamic configuration mode, the configured target this aspect is attached to may have
+     * <p>In trimmed configuration mode, the configured target this aspect is attached to may have
      * a different configuration than the aspect itself (see the documentation for
      * {@link #getAspectConfiguration()} for an explanation why). The base configuration is the one
      * used to construct a key to look up the base configured target.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 2b18dc8..ce60f42 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -531,7 +531,7 @@
    * Creates a dynamic configuration for each dep that's custom-fitted specifically for that dep.
    *
    * <p>More specifically: given a set of {@link Dependency} instances holding dynamic config
-   * transition requests (e.g. {@link Dependency#hasStaticConfiguration()} == false}), returns
+   * transition requests (e.g. {@link Dependency#hasExplicitConfiguration()} == false}), returns
    * equivalent dependencies containing dynamically created configurations applying those
    * transitions. If {@link BuildConfiguration.Options#trimConfigurations()} is true, these
    * configurations only contain the fragments needed by the dep and its transitive closure. Else
@@ -618,7 +618,7 @@
       //
       // A *lot* of targets have null deps, so this produces real savings. Profiling tests over a
       // simple cc_binary show this saves ~1% of total analysis phase time.
-      if (dep.hasStaticConfiguration()) {
+      if (dep.hasExplicitConfiguration()) {
         continue;
       }
 
@@ -869,7 +869,7 @@
     OrderedSetMultimap<Attribute, Dependency> result = OrderedSetMultimap.create();
     for (Map.Entry<Attribute, Dependency> depsEntry : originalDeps.entries()) {
       AttributeAndLabel attrAndLabel = iterator.next();
-      if (depsEntry.getValue().hasStaticConfiguration()) {
+      if (depsEntry.getValue().hasExplicitConfiguration()) {
         result.put(attrAndLabel.attribute, depsEntry.getValue());
       } else {
         Collection<Dependency> dynamicAttrDeps = dynamicDeps.get(attrAndLabel);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index 6a472b7..fb18457 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -505,8 +505,6 @@
    * Returns the host configuration trimmed to the same fragments as the input configuration. If
    * the input is null, returns the top-level host configuration.
    *
-   * <p>For static configurations, this unconditionally returns the (sole) top-level configuration.
-   *
    * <p>This may only be called after {@link #setTopLevelHostConfiguration} has set the
    * correct host configuration at the top-level.
    */
@@ -531,7 +529,7 @@
     Set<Class<? extends BuildConfiguration.Fragment>> fragmentClasses =
         config.trimConfigurations()
             ? config.fragmentClasses()
-            : ((ConfiguredRuleClassProvider) ruleClassProvider).getAllFragments();
+            : ruleClassProvider.getAllFragments();
     BuildConfiguration hostConfig = hostConfigurationCache.get(fragmentClasses);
     if (hostConfig != null) {
       return hostConfig;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 8ddecaf..fafe911 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -1435,7 +1435,7 @@
     Map<Label, Set<Class<? extends BuildConfiguration.Fragment>>> fragmentsMap = new HashMap<>();
     Set<Label> labelsWithErrors = new HashSet<>();
     for (Dependency key : keys) {
-      if (key.hasStaticConfiguration()) {
+      if (key.hasExplicitConfiguration()) {
         builder.put(key, key.getConfiguration());
       } else if (useUntrimmedDynamicConfigs(fromOptions)) {
         fragmentsMap.put(key.getLabel(), allFragments);
@@ -1464,7 +1464,7 @@
     // Now get the configurations.
     final List<SkyKey> configSkyKeys = new ArrayList<>();
     for (Dependency key : keys) {
-      if (labelsWithErrors.contains(key.getLabel()) || key.hasStaticConfiguration()) {
+      if (labelsWithErrors.contains(key.getLabel()) || key.hasExplicitConfiguration()) {
         continue;
       }
       Set<Class<? extends BuildConfiguration.Fragment>> depFragments =
@@ -1479,7 +1479,7 @@
     EvaluationResult<SkyValue> configsResult =
         evaluateSkyKeys(eventHandler, configSkyKeys, /*keepGoing=*/true);
     for (Dependency key : keys) {
-      if (labelsWithErrors.contains(key.getLabel()) || key.hasStaticConfiguration()) {
+      if (labelsWithErrors.contains(key.getLabel()) || key.hasExplicitConfiguration()) {
         continue;
       }
       Set<Class<? extends BuildConfiguration.Fragment>> depFragments =
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
index 1444837..af37c8b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
@@ -192,17 +192,16 @@
   }
 
   /**
-   * Null configurations should be static whether we're building with static or dynamic
-   * configurations. This is because the dynamic config logic that translates transitions into
-   * final configurations can be trivially skipped in those cases.
+   * Null configurations should always be explicit (vs. holding transitions). This lets Bazel skip
+   * its complicated dependency configuration logic for these cases.
    */
   @Test
-  public void nullConfigurationsAlwaysStatic() throws Exception {
+  public void nullConfigurationsAlwaysExplicit() throws Exception {
     pkg("a",
         "genrule(name = 'gen', srcs = ['gen.in'], cmd = '', outs = ['gen.out'])");
     update();
     Dependency dep = assertDep(dependentNodeMap("//a:gen", null), "srcs", "//a:gen.in");
-    assertThat(dep.hasStaticConfiguration()).isTrue();
+    assertThat(dep.hasExplicitConfiguration()).isTrue();
     assertThat(dep.getConfiguration()).isNull();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java
index 4de388c..df6541a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java
@@ -42,7 +42,7 @@
     Dependency nullDep = Dependency.withNullConfiguration(Label.parseAbsolute("//a"));
 
     assertThat(nullDep.getLabel()).isEqualTo(Label.parseAbsolute("//a"));
-    assertThat(nullDep.hasStaticConfiguration()).isTrue();
+    assertThat(nullDep.hasExplicitConfiguration()).isTrue();
     assertThat(nullDep.getConfiguration()).isNull();
     assertThat(nullDep.getAspects().getAllAspects()).isEmpty();
 
@@ -61,7 +61,7 @@
         Dependency.withConfiguration(Label.parseAbsolute("//a"), getTargetConfiguration());
 
     assertThat(targetDep.getLabel()).isEqualTo(Label.parseAbsolute("//a"));
-    assertThat(targetDep.hasStaticConfiguration()).isTrue();
+    assertThat(targetDep.hasExplicitConfiguration()).isTrue();
     assertThat(targetDep.getConfiguration()).isEqualTo(getTargetConfiguration());
     assertThat(targetDep.getAspects().getAllAspects()).isEmpty();
 
@@ -85,7 +85,7 @@
             Label.parseAbsolute("//a"), getTargetConfiguration(), twoAspects);
 
     assertThat(targetDep.getLabel()).isEqualTo(Label.parseAbsolute("//a"));
-    assertThat(targetDep.hasStaticConfiguration()).isTrue();
+    assertThat(targetDep.hasExplicitConfiguration()).isTrue();
     assertThat(targetDep.getConfiguration()).isEqualTo(getTargetConfiguration());
     assertThat(targetDep.getAspects()).isEqualTo(twoAspects);
     assertThat(targetDep.getAspectConfiguration(simpleAspect)).isEqualTo(getTargetConfiguration());
@@ -142,7 +142,7 @@
             Label.parseAbsolute("//a"), getTargetConfiguration(), aspects, twoAspectMap);
 
     assertThat(targetDep.getLabel()).isEqualTo(Label.parseAbsolute("//a"));
-    assertThat(targetDep.hasStaticConfiguration()).isTrue();
+    assertThat(targetDep.hasExplicitConfiguration()).isTrue();
     assertThat(targetDep.getConfiguration()).isEqualTo(getTargetConfiguration());
     assertThat(targetDep.getAspects().getAllAspects())
         .containsExactly(simpleAspect, attributeAspect);
@@ -182,7 +182,7 @@
             Label.parseAbsolute("//a"), ConfigurationTransition.HOST, twoAspects);
 
     assertThat(hostDep.getLabel()).isEqualTo(Label.parseAbsolute("//a"));
-    assertThat(hostDep.hasStaticConfiguration()).isFalse();
+    assertThat(hostDep.hasExplicitConfiguration()).isFalse();
     assertThat(hostDep.getAspects().getAllAspects())
         .containsExactlyElementsIn(twoAspects.getAllAspects());
     assertThat(hostDep.getTransition()).isEqualTo(ConfigurationTransition.HOST);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
index f98f897..dafa053 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
@@ -349,49 +349,6 @@
   supports_interface_shared_objects: true
 }
 
-# Stub crosstool to allow construction of apple crosstool configuration in a
-# static configuration set.
-# TODO(b/33804121): Remove this once dynamic configurations are in place.
-toolchain {
-  toolchain_identifier: "local_ios"
-
-  host_system_name: "local"
-  target_system_name: "local"
-  target_cpu: "ios_x86_64"
-  target_libc: "ios"
-  compiler: "compiler"
-  linking_mode_flags { mode: DYNAMIC }
-
-  abi_version: "local"
-  abi_libc_version: "local"
-
-  tool_path { name: "ar" path: "/usr/bin/libtool" }
-  tool_path { name: "compat-ld" path: "/usr/bin/ld" }
-  tool_path { name: "cpp" path: "/usr/bin/cpp" }
-  tool_path { name: "dwp" path: "/usr/bin/dwp" }
-  tool_path { name: "gcc" path: "/usr/bin/gcc" }
-  tool_path { name: "gcov" path: "/usr/bin/gcov" }
-  tool_path { name: "ld" path: "/usr/bin/ld" }
-  tool_path { name: "nm" path: "/usr/bin/nm" }
-  tool_path { name: "objcopy" path: "/usr/bin/objcopy" }
-  tool_path { name: "objdump" path: "/usr/bin/objdump" }
-  tool_path { name: "strip" path: "/usr/bin/strip" }
-
-  needsPic: false
-
-  builtin_sysroot: ""
-  cxx_flag: "-std=c++0x"
-  linker_flag: "-lstdc++"
-  cxx_builtin_include_directory: "/usr/include"
-  cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain"
-  cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs"
-  cxx_builtin_include_directory: "/opt/local/include"
-  cxx_builtin_include_directory: "/Library/Developer/CommandLineTools"
-  objcopy_embed_flag: "-I"
-  objcopy_embed_flag: "binary"
-  supports_interface_shared_objects: true
-}
-
 toolchain {
   toolchain_identifier: "local_windows_mingw"