Merge topic 'make-entry-no-parallel'

bd11de0 Makefile: Allow "gmake target1 target2 -j" (#14312)
This commit is contained in:
Brad King 2013-12-20 09:41:32 -05:00 committed by CMake Topic Stage
commit 7974dced73
4 changed files with 18 additions and 0 deletions

View File

@ -44,6 +44,8 @@ public:
*/
virtual void EnableLanguage(std::vector<std::string>const& languages,
cmMakefile *, bool optional);
virtual bool AllowNotParallel() const { return false; }
};
#endif

View File

@ -125,6 +125,9 @@ public:
const std::string &workingDirectory,
const std::string &compileCommand);
/** Does the make tool tolerate .NOTPARALLEL? */
virtual bool AllowNotParallel() const { return true; }
protected:
void WriteMainMakefile2();
void WriteMainCMakefile();

View File

@ -43,6 +43,8 @@ public:
*/
virtual void EnableLanguage(std::vector<std::string>const& languages,
cmMakefile *, bool optional);
virtual bool AllowNotParallel() const { return false; }
};
#endif

View File

@ -1685,6 +1685,17 @@ void cmLocalUnixMakefileGenerator3
"default_target",
depends,
no_commands, true);
// Help out users that try "gmake target1 target2 -j".
cmGlobalUnixMakefileGenerator3* gg =
static_cast<cmGlobalUnixMakefileGenerator3*>(this->GlobalGenerator);
if(gg->AllowNotParallel())
{
std::vector<std::string> no_depends;
this->WriteMakeRule(ruleFileStream,
"Allow only one \"make -f Makefile2\" at a time, but pass parallelism.",
".NOTPARALLEL", no_depends, no_commands, true);
}
}
this->WriteSpecialTargetsTop(ruleFileStream);