diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 099448666..fc59a4f89 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -2875,19 +2875,22 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile() // rules may depend on this file itself. std::string ruleFileNameFull = this->ConvertToFullPath(ruleFileName); cmGeneratedFileStream ruleFileStream(ruleFileNameFull.c_str()); - ruleFileStream.SetCopyIfDifferent(true); if(!ruleFileStream) { return; } + // always write the top makefile + if (m_Parent) + { + ruleFileStream.SetCopyIfDifferent(true); + } // write the all rules this->WriteLocalAllRules(ruleFileStream); - // Keep track of targets already listed. + // only write local targets unless at the top Keep track of targets already + // listed. std::set emittedTargets; - - // only write local targets unless at the top if (m_Parent) { // write our targets, and while doing it collect up the object