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 8101f6cde423e2..ddbb01f22d1ceb 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 @@ -1349,8 +1349,7 @@ private CcCompilationOutputs createCcCompileActions(Consumer errorReport if (!sourceArtifact.isTreeArtifact()) { switch (source.getType()) { case HEADER: - createHeaderAction( - sourceLabel, outputName, result, builder, isGenerateDotdFile(sourceArtifact)); + createHeaderAction(sourceLabel, outputName, result, builder); break; default: createSourceAction( @@ -1372,8 +1371,7 @@ private CcCompilationOutputs createCcCompileActions(Consumer errorReport // output (since it isn't generating a native object with debug // info). In that case the LtoBackendAction will generate the dwo. ccToolchain.shouldCreatePerObjectDebugInfo(featureConfiguration, cppConfiguration), - bitcodeOutput, - isGenerateDotdFile(sourceArtifact)); + bitcodeOutput); break; } } else { @@ -1649,8 +1647,7 @@ private void createModuleCodegenAction( ruleErrorConsumer, label, ArtifactCategory.OBJECT_FILE, - outputName, - isGenerateDotdFile(module)); + outputName); PathFragment ccRelativeName = module.getRootRelativePath(); String gcnoFileName = @@ -1700,18 +1697,11 @@ private void createModuleCodegenAction( } } - /** Returns true if Dotd file should be generated. */ - private boolean isGenerateDotdFile(Artifact sourceArtifact) { - return CppFileTypes.headerDiscoveryRequired(sourceArtifact) - && !featureConfiguration.isEnabled(CppRuleClasses.PARSE_SHOWINCLUDES); - } - private void createHeaderAction( Label sourceLabel, String outputName, CcCompilationOutputs.Builder result, - CppCompileActionBuilder builder, - boolean generateDotd) + CppCompileActionBuilder builder) throws RuleErrorException { String outputNameBase = CppHelper.getArtifactNameForCategory( @@ -1723,8 +1713,7 @@ private void createHeaderAction( ruleErrorConsumer, label, ArtifactCategory.PROCESSED_HEADER, - outputNameBase, - generateDotd) + outputNameBase) // If we generate pic actions, we prefer the header actions to use the pic artifacts. .setPicMode(generatePicAction); builder.setVariables( @@ -1768,8 +1757,7 @@ private Collection createModuleAction( /* addObject= */ false, /* enableCoverage= */ false, /* generateDwo= */ false, - /* bitcodeOutput= */ false, - isGenerateDotdFile(moduleMapArtifact)); + /* bitcodeOutput= */ false); } private Collection createSourceAction( @@ -1783,8 +1771,7 @@ private Collection createSourceAction( boolean addObject, boolean enableCoverage, boolean generateDwo, - boolean bitcodeOutput, - boolean generateDotd) + boolean bitcodeOutput) throws RuleErrorException { ImmutableList.Builder directOutputs = new ImmutableList.Builder<>(); PathFragment ccRelativeName = sourceArtifact.getRootRelativePath(); @@ -1795,8 +1782,7 @@ private Collection createSourceAction( String picOutputBase = CppHelper.getArtifactNameForCategory( ruleErrorConsumer, ccToolchain, ArtifactCategory.PIC_FILE, outputName); - CppCompileActionBuilder picBuilder = - copyAsPicBuilder(builder, picOutputBase, outputCategory, generateDotd); + CppCompileActionBuilder picBuilder = copyAsPicBuilder(builder, picOutputBase, outputCategory); String gcnoFileName = CppHelper.getArtifactNameForCategory( ruleErrorConsumer, ccToolchain, ArtifactCategory.COVERAGE_DATA_FILE, picOutputBase); @@ -1830,7 +1816,6 @@ private Collection createSourceAction( outputName, picBuilder, /* usePic= */ true, - /* generateDotd= */ generateDotd, ccRelativeName)); picBuilder.setGcnoFile(gcnoFile); @@ -1865,12 +1850,7 @@ private Collection createSourceAction( ruleErrorConsumer, ccToolchain, outputCategory, outputName), configuration); builder.setOutputs( - actionConstructionContext, - ruleErrorConsumer, - label, - outputCategory, - outputName, - generateDotd); + actionConstructionContext, ruleErrorConsumer, label, outputCategory, outputName); String gcnoFileName = CppHelper.getArtifactNameForCategory( ruleErrorConsumer, ccToolchain, ArtifactCategory.COVERAGE_DATA_FILE, outputName); @@ -1905,7 +1885,6 @@ private Collection createSourceAction( outputName, builder, /* usePic= */ false, - generateDotd, ccRelativeName)); builder.setGcnoFile(gcnoFile); @@ -1938,21 +1917,13 @@ private Collection createSourceAction( * changing output and dotd file names. */ private CppCompileActionBuilder copyAsPicBuilder( - CppCompileActionBuilder builder, - String outputName, - ArtifactCategory outputCategory, - boolean generateDotd) + CppCompileActionBuilder builder, String outputName, ArtifactCategory outputCategory) throws RuleErrorException { CppCompileActionBuilder picBuilder = new CppCompileActionBuilder(builder); picBuilder .setPicMode(true) .setOutputs( - actionConstructionContext, - ruleErrorConsumer, - label, - outputCategory, - outputName, - generateDotd); + actionConstructionContext, ruleErrorConsumer, label, outputCategory, outputName); return picBuilder; } @@ -2029,7 +2000,6 @@ private ImmutableList createTempsActions( String outputName, CppCompileActionBuilder builder, boolean usePic, - boolean generateDotd, PathFragment ccRelativeName) throws RuleErrorException { if (!cppConfiguration.getSaveTemps()) { @@ -2051,12 +2021,7 @@ private ImmutableList createTempsActions( CppCompileActionBuilder dBuilder = new CppCompileActionBuilder(builder); dBuilder.setOutputs( - actionConstructionContext, - ruleErrorConsumer, - label, - category, - outputArtifactNameBase, - generateDotd); + actionConstructionContext, ruleErrorConsumer, label, category, outputArtifactNameBase); dBuilder.setVariables( setupCompileBuildVariables( dBuilder, @@ -2082,8 +2047,7 @@ private ImmutableList createTempsActions( ruleErrorConsumer, label, ArtifactCategory.GENERATED_ASSEMBLY, - outputArtifactNameBase, - generateDotd); + outputArtifactNameBase); sdBuilder.setVariables( setupCompileBuildVariables( sdBuilder, 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 7cf68a8bb2d2ab..59c739e93695b7 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 @@ -431,8 +431,7 @@ public CppCompileActionBuilder setOutputs( RuleErrorConsumer ruleErrorConsumer, Label label, ArtifactCategory outputCategory, - String outputName, - boolean generateDotd) + String outputName) throws RuleErrorException { this.outputFile = CppHelper.getCompileOutputArtifact( @@ -441,7 +440,9 @@ public CppCompileActionBuilder setOutputs( CppHelper.getArtifactNameForCategory( ruleErrorConsumer, ccToolchain, outputCategory, outputName), configuration); - if (generateDotd && !useHeaderModules()) { + if (CppFileTypes.headerDiscoveryRequired(sourceFile) + && !useHeaderModules() + && !featureConfiguration.isEnabled(CppRuleClasses.PARSE_SHOWINCLUDES)) { String dotdFileName = CppHelper.getDotdFileName(ruleErrorConsumer, ccToolchain, outputCategory, outputName); dotdFile =