mirror of
https://github.com/Kitware/CMake.git
synced 2026-03-16 23:41:15 -05:00
Ninja: make the collator rule use restat = 1
This avoids rebuilds when the module metadata does not change.
This commit is contained in:
@@ -2763,6 +2763,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
|
||||
// `cmNinjaTargetGenerator::ExportObjectCompileCommand` to generate the
|
||||
// corresponding file path.
|
||||
cmGeneratedFileStream mmf(cmStrCat(object.PrimaryOutput, ".modmap"));
|
||||
mmf.SetCopyIfDifferent(true);
|
||||
mmf << mm;
|
||||
}
|
||||
|
||||
@@ -2852,6 +2853,7 @@ bool cmGlobalNinjaGenerator::WriteDyndepFile(
|
||||
}
|
||||
|
||||
cmGeneratedFileStream tmf(target_mods_file);
|
||||
tmf.SetCopyIfDifferent(true);
|
||||
tmf << target_module_info;
|
||||
|
||||
cmDyndepMetadataCallbacks cb;
|
||||
|
||||
@@ -814,6 +814,11 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
|
||||
// dyndep rules
|
||||
rule.RspFile = "$out.rsp";
|
||||
rule.RspContent = "$in";
|
||||
// Ninja's collator writes all outputs using `cmGeneratedFileStream`, so
|
||||
// they are only updated if contents actually change. Avoid running
|
||||
// dependent jobs if the contents don't change by telling `ninja` to check
|
||||
// the timestamp again.
|
||||
rule.Restat = "1";
|
||||
|
||||
// Run CMake dependency scanner on the source file (using the preprocessed
|
||||
// source if that was performed).
|
||||
|
||||
Reference in New Issue
Block a user