Stop generating .d files when they won't be looked at later.

While at it remove CppCompilationActionBuilder.setAllowUsingHeaderModules,
which isn't used anymore and would make the logic here (even) more complicated.

RELNOTES: None.
PiperOrigin-RevId: 206752281
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index 1aef25f..4b777fa3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -1464,8 +1464,7 @@
       userCompileFlags.addAll(collectPerFileCopts(sourceFile, sourceLabel));
     }
     String dotdFileExecPath = null;
-    if (isGenerateDotdFile(builder.getSourceFile())) {
-      Preconditions.checkNotNull(builder.getDotdFile());
+    if (builder.getDotdFile() != null) {
       dotdFileExecPath = builder.getDotdFile().getSafeExecPath().getPathString();
     }
     ImmutableMap.Builder<String, String> allAdditionalBuildVariables = ImmutableMap.builder();
@@ -1516,22 +1515,12 @@
    * initialized.
    */
   private CppCompileActionBuilder initializeCompileAction(Artifact sourceArtifact) {
-    CppCompileActionBuilder builder = createCompileActionBuilder(sourceArtifact);
-    builder.setFeatureConfiguration(featureConfiguration);
-
-    return builder;
-  }
-
-  /**
-   * Creates a basic cpp compile action builder for source file. Configures options, crosstool
-   * inputs, output and dotd file names, {@code CcCompilationContext} and copts.
-   */
-  private CppCompileActionBuilder createCompileActionBuilder(Artifact source) {
     CppCompileActionBuilder builder =
         new CppCompileActionBuilder(ruleContext, ccToolchain, configuration);
-    builder.setSourceFile(source);
+    builder.setSourceFile(sourceArtifact);
     builder.setCcCompilationContext(ccCompilationContext);
     builder.setCoptsFilter(coptsFilter);
+    builder.setFeatureConfiguration(featureConfiguration);
     return builder;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 5c7d80b..f5d4c27 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -66,7 +66,6 @@
   private CoptsFilter coptsFilter = CoptsFilter.alwaysPasses();
   private ImmutableList<PathFragment> extraSystemIncludePrefixes = ImmutableList.of();
   private boolean usePic;
-  private boolean allowUsingHeaderModules;
   private UUID actionClassId = GUID;
   private CppConfiguration cppConfiguration;
   private final ArrayList<Artifact> additionalIncludeScanningRoots;
@@ -116,7 +115,6 @@
     this.cppConfiguration = configuration.getFragment(CppConfiguration.class);
     this.mandatoryInputsBuilder = NestedSetBuilder.stableOrder();
     this.additionalIncludeScanningRoots = new ArrayList<>();
-    this.allowUsingHeaderModules = true;
     this.env = configuration.getActionEnvironment();
     this.codeCoverageEnabled = configuration.isCodeCoverageEnabled();
     this.ccToolchain = ccToolchain;
@@ -149,7 +147,6 @@
     this.cppConfiguration = other.cppConfiguration;
     this.configuration = other.configuration;
     this.usePic = other.usePic;
-    this.allowUsingHeaderModules = other.allowUsingHeaderModules;
     this.shouldScanIncludes = other.shouldScanIncludes;
     this.executionInfo = new LinkedHashMap<>(other.executionInfo);
     this.env = other.env;
@@ -395,8 +392,9 @@
   }
 
   private boolean useHeaderModules() {
-    return allowUsingHeaderModules
-        && featureConfiguration.isEnabled(CppRuleClasses.USE_HEADER_MODULES)
+    Preconditions.checkNotNull(featureConfiguration);
+    Preconditions.checkNotNull(sourceFile);
+    return featureConfiguration.isEnabled(CppRuleClasses.USE_HEADER_MODULES)
         && (sourceFile.isFileType(CppFileTypes.CPP_SOURCE)
             || sourceFile.isFileType(CppFileTypes.CPP_HEADER)
             || sourceFile.isFileType(CppFileTypes.CPP_MODULE_MAP));
@@ -514,7 +512,7 @@
         ruleContext,
         CppHelper.getArtifactNameForCategory(ruleContext, ccToolchain, outputCategory, outputName),
         configuration);
-    if (generateDotd) {
+    if (generateDotd && (!cppConfiguration.getNoDotdScanningWithModules() || !useHeaderModules())) {
       String dotdFileName =
           CppHelper.getDotdFileName(ruleContext, ccToolchain, outputCategory, outputName);
       if (cppConfiguration.getInmemoryDotdFiles()) {
@@ -587,12 +585,6 @@
     return this;
   }
 
-  /** Sets whether the CompileAction should use header modules. */
-  public CppCompileActionBuilder setAllowUsingHeaderModules(boolean allowUsingHeaderModules) {
-    this.allowUsingHeaderModules = allowUsingHeaderModules;
-    return this;
-  }
-
   /** Sets the CppSemantics for this compile. */
   public CppCompileActionBuilder setSemantics(CppSemantics semantics) {
     this.cppSemantics = semantics;