Browse Source

cmNinjaTargetGenerator: PCH files do not need dyndep

Fixes: #24209
Ben Boeckel 2 years ago
parent
commit
40dc13b242
1 changed files with 7 additions and 8 deletions
  1. 7 8
      Source/cmNinjaTargetGenerator.cxx

+ 7 - 8
Source/cmNinjaTargetGenerator.cxx

@@ -1367,7 +1367,10 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
     !(language == "RC" || (language == "CUDA" && !flag));
   int const commandLineLengthLimit =
     ((lang_supports_response && this->ForceResponseFile())) ? -1 : 0;
-  bool const needDyndep =
+  cmValue pchExtension =
+    this->GetMakefile()->GetDefinition("CMAKE_PCH_EXTENSION");
+  bool const isPch = cmHasSuffix(objectFileName, pchExtension);
+  bool const needDyndep = !isPch &&
     this->GeneratorTarget->NeedDyndepForSource(language, config, source);
 
   cmNinjaBuild objBuild(this->LanguageCompilerRule(
@@ -1435,13 +1438,9 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
   }
 
   objBuild.Outputs.push_back(objectFileName);
-  if (firstForConfig) {
-    cmValue pchExtension =
-      this->GetMakefile()->GetDefinition("CMAKE_PCH_EXTENSION");
-    if (!cmHasSuffix(objectFileName, pchExtension)) {
-      // Add this object to the list of object files.
-      this->Configs[config].Objects.push_back(objectFileName);
-    }
+  if (firstForConfig && !isPch) {
+    // Add this object to the list of object files.
+    this->Configs[config].Objects.push_back(objectFileName);
   }
 
   objBuild.ExplicitDeps.push_back(sourceFilePath);