Remove genrule code that uses CC flags, and also the flag --incompatible_disable_genrule_cc_toolchain_dependency.

RELNOTES: Removes the --incompatible_disable_genrule_cc_toolchain_dependency flag.
PiperOrigin-RevId: 243840861
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java
index ebe7e94..8d81d55 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/genrule/BazelGenRuleRule.java
@@ -15,15 +15,12 @@
 
 import static com.google.devtools.build.lib.packages.Attribute.attr;
 import static com.google.devtools.build.lib.packages.BuildType.LABEL;
-import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL;
 import static com.google.devtools.build.lib.syntax.Type.BOOLEAN;
 
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
 import com.google.devtools.build.lib.analysis.config.HostTransition;
 import com.google.devtools.build.lib.packages.RuleClass;
-import com.google.devtools.build.lib.rules.cpp.CcToolchain;
-import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.genrule.GenRuleBaseRule;
 
 /**
@@ -49,13 +46,6 @@
 
         // TODO(bazel-team): stamping doesn't seem to work. Fix it or remove attribute.
         .add(attr("stamp", BOOLEAN).value(false))
-        .add(
-            attr(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, LABEL)
-                .mandatoryProviders(CcToolchainProvider.PROVIDER.id())
-                .value(GenRuleBaseRule.ccToolchainAttribute(env)))
-        .add(
-            attr(CcToolchain.CC_TOOLCHAIN_TYPE_ATTRIBUTE_NAME, NODEP_LABEL)
-                .value(GenRuleBaseRule.ccToolchainTypeAttribute(env)))
         .build();
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index a19f37e..f184592 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -984,9 +984,8 @@
     FeatureConfiguration featureConfiguration = null;
     CppConfiguration cppConfiguration;
     if (toolchainProvider.requireCtxInConfigureFeatures()) {
-      // When this is flipped, this whole method will go away. But I'm keeping it there
-      // so we can experiment with flags before they are flipped.
-      Preconditions.checkArgument(toolchainProvider.disableGenruleCcToolchainDependency());
+      // When --incompatible_require_ctx_in_configure_features is flipped, this whole method will go
+      // away. But I'm keeping it there so we can experiment with flags before they are flipped.
       cppConfiguration = ruleContext.getFragment(CppConfiguration.class);
     } else {
       cppConfiguration =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index e20b382..33f0c4a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -882,11 +882,6 @@
         .requireCtxInConfigureFeatures();
   }
 
-  public boolean disableGenruleCcToolchainDependency() {
-    return getCppConfigurationEvenThoughItCanBeDifferentThatWhatTargetHas()
-        .disableGenruleCcToolchainDependency();
-  }
-
   @VisibleForTesting
   NestedSet<Artifact> getStaticRuntimeLibForTesting() {
     return staticRuntimeLinkInputs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
index cb5f7fb..9749e65 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
@@ -110,7 +110,6 @@
     CppToolchainInfo toolchainInfo =
         getCppToolchainInfo(
             ruleContext,
-            cppConfiguration.disableGenruleCcToolchainDependency(),
             cppConfiguration.getTransformedCpuFromOptions(),
             cppConfiguration.getCompilerFromOptions(),
             attributes,
@@ -375,7 +374,6 @@
   /** Finds an appropriate {@link CppToolchainInfo} for this target. */
   private static CppToolchainInfo getCppToolchainInfo(
       RuleContext ruleContext,
-      boolean disableGenruleCcToolchainDependency,
       String cpuFromOptions,
       String compilerFromOptions,
       CcToolchainAttributesProvider attributes,
@@ -388,10 +386,7 @@
 
     if (configInfo != null) {
       try {
-        return CppToolchainInfo.create(
-            ruleContext.getLabel(),
-            configInfo,
-            disableGenruleCcToolchainDependency);
+        return CppToolchainInfo.create(ruleContext.getLabel(), configInfo);
       } catch (EvalException e) {
         throw ruleContext.throwWithRuleError(e.getMessage());
       }
@@ -421,10 +416,7 @@
                   .incompatibleDoNotSplitLinkingCmdline(),
               CppToolchainInfo.getToolsDirectory(attributes.getCcToolchainLabel()));
       CcToolchainConfigInfo ccToolchainConfigInfo = CcToolchainConfigInfo.fromToolchain(toolchain);
-      return CppToolchainInfo.create(
-          attributes.getCcToolchainLabel(),
-          ccToolchainConfigInfo,
-          disableGenruleCcToolchainDependency);
+      return CppToolchainInfo.create(attributes.getCcToolchainLabel(), ccToolchainConfigInfo);
     } catch (EvalException e) {
       throw ruleContext.throwWithRuleError(e.getMessage());
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index ecbbb3b..8a91339 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -631,10 +631,6 @@
     return cppOptions.targetLibcTopLabel;
   }
 
-  public boolean disableGenruleCcToolchainDependency() {
-    return cppOptions.disableGenruleCcToolchainDependency;
-  }
-
   public boolean enableLegacyCcProvider() {
     return !cppOptions.disableLegacyCcProvider;
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 982457a..7600c15 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -833,21 +833,6 @@
   public boolean doNotUseCpuTransformer;
 
   @Option(
-      name = "incompatible_disable_genrule_cc_toolchain_dependency",
-      defaultValue = "true",
-      documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
-      effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
-      metadataTags = {
-        OptionMetadataTag.INCOMPATIBLE_CHANGE,
-        OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
-      },
-      help =
-          "If true, genrule will no longer automatically depend on the cc toolchain. Specifically, "
-              + "this means that the CC_FLAGS Make variable will not be available without using "
-              + "the new cc_flags_supplier rule.")
-  public boolean disableGenruleCcToolchainDependency;
-
-  @Option(
       name = "incompatible_disable_legacy_cc_provider",
       defaultValue = "true",
       documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
@@ -927,7 +912,6 @@
 
     host.enableFdoProfileAbsolutePath = enableFdoProfileAbsolutePath;
     host.doNotUseCpuTransformer = doNotUseCpuTransformer;
-    host.disableGenruleCcToolchainDependency = disableGenruleCcToolchainDependency;
     host.disableExpandIfAllAvailableInFlagSet = disableExpandIfAllAvailableInFlagSet;
     host.disableLegacyCcProvider = disableLegacyCcProvider;
     host.removeCpuCompilerCcToolchainAttributes = removeCpuCompilerCcToolchainAttributes;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
index 3f3d409..6759819 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java
@@ -81,10 +81,7 @@
    * Creates a CppToolchainInfo from CROSSTOOL info encapsulated in {@link CcToolchainConfigInfo}.
    */
   public static CppToolchainInfo create(
-      Label toolchainLabel,
-      CcToolchainConfigInfo ccToolchainConfigInfo,
-      boolean disableGenruleCcToolchainDependency)
-      throws EvalException {
+      Label toolchainLabel, CcToolchainConfigInfo ccToolchainConfigInfo) throws EvalException {
     ImmutableMap<String, PathFragment> toolPaths =
         computeToolPaths(ccToolchainConfigInfo, getToolsDirectory(toolchainLabel));
     PathFragment defaultSysroot =
@@ -111,7 +108,7 @@
         "_solib_" + ccToolchainConfigInfo.getTargetCpu(),
         ccToolchainConfigInfo.getAbiVersion(),
         ccToolchainConfigInfo.getTargetSystemName(),
-        computeAdditionalMakeVariables(ccToolchainConfigInfo, disableGenruleCcToolchainDependency),
+        computeAdditionalMakeVariables(ccToolchainConfigInfo),
         computeLegacyCcFlagsMakeVariable(ccToolchainConfigInfo));
   }
 
@@ -447,7 +444,7 @@
   }
 
   private static ImmutableMap<String, String> computeAdditionalMakeVariables(
-      CcToolchainConfigInfo ccToolchainConfigInfo, boolean disableGenruleCcToolchainDependency) {
+      CcToolchainConfigInfo ccToolchainConfigInfo) {
     Map<String, String> makeVariablesBuilder = new HashMap<>();
     // The following are to be used to allow some build rules to avoid the limits on stack frame
     // sizes and variable-length arrays.
@@ -457,10 +454,7 @@
     for (Pair<String, String> variable : ccToolchainConfigInfo.getMakeVariables()) {
       makeVariablesBuilder.put(variable.getFirst(), variable.getSecond());
     }
-
-    if (disableGenruleCcToolchainDependency) {
-      makeVariablesBuilder.remove(CppConfiguration.CC_FLAGS_MAKE_VARIABLE_NAME);
-    }
+    makeVariablesBuilder.remove(CppConfiguration.CC_FLAGS_MAKE_VARIABLE_NAME);
 
     return ImmutableMap.copyOf(makeVariablesBuilder);
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
index d91b217..6ae1ca8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
@@ -14,7 +14,6 @@
 
 package com.google.devtools.build.lib.rules.genrule;
 
-import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
@@ -44,14 +43,11 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.packages.TargetUtils;
-import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
-import com.google.devtools.build.lib.rules.cpp.CppHelper;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.LazyString;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.List;
 import java.util.Map;
-import java.util.regex.Pattern;
 
 /**
  * A base implementation of genrule, to be used by specific implementing rules which can change some
@@ -59,20 +55,6 @@
  */
 public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
 
-  private static final ImmutableList<String> CROSSTOOL_MAKE_VARIABLES = ImmutableList.of("CC",
-      "CC_FLAGS", "AR", "NM", "OBJCOPY", "STRIP", "GCOVTOOL");
-
-  private static Pattern matchesMakeVariables(Iterable<String> variables) {
-    return Pattern.compile("\\$\\((" + Joiner.on("|").join(variables) + ")\\)");
-  }
-
-  private static final Pattern CROSSTOOL_MAKE_VARIABLE_PATTERN =
-      matchesMakeVariables(CROSSTOOL_MAKE_VARIABLES);
-
-  protected static boolean requiresCrosstool(String command) {
-    return CROSSTOOL_MAKE_VARIABLE_PATTERN.matcher(command).find();
-  }
-
   /**
    * Returns {@code true} if the rule should be stamped.
    *
@@ -140,9 +122,6 @@
     // Expand template variables and functions.
     ImmutableList.Builder<MakeVariableSupplier> makeVariableSuppliers =
         new ImmutableList.Builder<>();
-    if (GenRuleBaseRule.enableCcToolchain(ruleContext.getConfiguration())) {
-      makeVariableSuppliers.add(new CcFlagsSupplier(ruleContext));
-    }
     CommandResolverContext commandResolverContext =
         new CommandResolverContext(
             ruleContext, resolvedSrcs, filesToBuild, makeVariableSuppliers.build());
@@ -200,15 +179,6 @@
             ".genrule_script.sh",
             ImmutableMap.copyOf(executionInfo));
 
-    // TODO(bazel-team): Make the make variable expander pass back a list of these.
-    if (GenRuleBaseRule.enableCcToolchain(ruleContext.getConfiguration())
-        && requiresCrosstool(baseCommand)) {
-      // If cc is used, silently throw in the crosstool filegroup as a dependency.
-      inputs.addTransitive(
-          CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext)
-              .getAllFilesMiddleman());
-    }
-
     if (isStampingEnabled(ruleContext)) {
       inputs.add(ruleContext.getAnalysisEnvironment().getStableWorkspaceStatusArtifact());
       inputs.add(ruleContext.getAnalysisEnvironment().getVolatileWorkspaceStatusArtifact());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
index 6a40f84..9fa5ce2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java
@@ -23,19 +23,13 @@
 import com.google.devtools.build.lib.analysis.BaseRuleClasses;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.HostTransition;
 import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.Attribute.ComputedDefault;
-import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
 import com.google.devtools.build.lib.packages.AttributeMap;
 import com.google.devtools.build.lib.packages.BuildType;
 import com.google.devtools.build.lib.packages.RuleClass;
 import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
 import com.google.devtools.build.lib.packages.RuleClass.ExecutionPlatformConstraintsAllowed;
-import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
-import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
-import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.FileTypeSet;
 
 /**
@@ -44,50 +38,6 @@
  * as a setup script target.
  */
 public class GenRuleBaseRule implements RuleDefinition {
-  public static boolean enableCcToolchain(BuildConfiguration configuration) {
-    CppConfiguration cppConfiguration = configuration.getFragment(CppConfiguration.class);
-    if (cppConfiguration != null) {
-      return enableCcToolchain(cppConfiguration);
-    }
-    return true;
-  }
-
-  public static boolean enableCcToolchain(CppConfiguration cppConfiguration) {
-    return !cppConfiguration.disableGenruleCcToolchainDependency();
-  }
-
-  /**
-   * Late-bound dependency on the C++ toolchain <i>iff</i> the genrule has make variables that need
-   * that toolchain.
-   */
-  public static LabelLateBoundDefault<?> ccToolchainAttribute(RuleDefinitionEnvironment env) {
-    return LabelLateBoundDefault.fromTargetConfiguration(
-        CppConfiguration.class,
-        env.getToolsLabel(CppRuleClasses.CROSSTOOL_LABEL),
-        // null guards are needed for LateBoundAttributeTest
-        (rule, attributes, cppConfig) -> {
-          if (!enableCcToolchain(cppConfig)) {
-            return null;
-          }
-          return attributes != null
-                  && attributes.get("cmd", Type.STRING) != null
-                  && GenRuleBase.requiresCrosstool(attributes.get("cmd", Type.STRING))
-              ? CppRuleClasses.ccToolchainAttribute(env).resolve(rule, attributes, cppConfig)
-              : null;
-        });
-  }
-
-  /** Computed dependency on the C++ toolchain type. */
-  public static ComputedDefault ccToolchainTypeAttribute(RuleDefinitionEnvironment env) {
-    return new ComputedDefault("cmd") {
-      @Override
-      public Object getDefault(AttributeMap rule) {
-        return GenRuleBase.requiresCrosstool(rule.get("cmd", Type.STRING))
-            ? CppRuleClasses.ccToolchainTypeAttribute(env)
-            : null;
-      }
-    };
-  }
 
   @Override
   public RuleClass build(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index b74b044..c018e39 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -4499,7 +4499,6 @@
             mockToolsConfig,
             CcToolchainConfig.builder()
                 .withMakeVariables(Pair.of("CC_FLAGS", "-test-cflag1 -testcflag2")));
-    useConfiguration("--incompatible_disable_genrule_cc_toolchain_dependency");
 
     loadCcToolchainConfigLib();
     scratch.file(