BUG: Added /fast targets in subdirectory makefiles. Removed bogus INSTALL_*/fast targets. Also fixed preinstall/fast target.

This commit is contained in:
Brad King 2006-06-01 14:09:21 -04:00
parent 09f2be12b8
commit 791706a52f
2 changed files with 31 additions and 19 deletions

View File

@ -680,17 +680,17 @@ cmGlobalUnixMakefileGenerator3
cmTargets& targets = lg->GetMakefile()->GetTargets();
for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
{
if((t->second.GetType() == cmTarget::EXECUTABLE) ||
(t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
(t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
(t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
(t->second.GetType() == cmTarget::UTILITY))
// Don't emit the same rule twice (e.g. two targets with the same
// simple name)
if(t->second.GetName() &&
strlen(t->second.GetName()) &&
emitted.insert(t->second.GetName()).second)
{
// Don't emit the same rule twice (e.g. two targets with the same
// simple name)
if(t->second.GetName() &&
strlen(t->second.GetName()) &&
emitted.insert(t->second.GetName()).second)
if((t->second.GetType() == cmTarget::EXECUTABLE) ||
(t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
(t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
(t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
(t->second.GetType() == cmTarget::UTILITY))
{
// Add a rule to build the target by name.
lg->WriteDivider(ruleFileStream);
@ -762,14 +762,10 @@ cmGlobalUnixMakefileGenerator3
lg->WriteMakeRule(ruleFileStream, "fast build rule for target.",
localName.c_str(), depends, commands, true);
}
}
else
{
if(t->second.GetName() &&
strlen(t->second.GetName()) &&
emitted.insert(t->second.GetName()).second)
else if(t->second.GetType() == cmTarget::GLOBAL_TARGET)
{
// Add a fast rule to build the target
// Provide a fast target for the global targets that just
// forwards to the real target so at least it will work.
depends.clear();
commands.clear();
std::string localName = t->second.GetName();

View File

@ -296,6 +296,23 @@ void cmLocalUnixMakefileGenerator3
this->WriteMakeRule(ruleFileStream, "Convenience name for target.",
t->second.GetName(), depends, commands, true);
}
// Add a fast rule to build the target
std::string makefileName = this->GetRelativeTargetDirectory(t->second);
makefileName += "/build.make";
std::string makeTargetName = this->GetRelativeTargetDirectory(t->second);
makeTargetName += "/build";
localName = t->second.GetName();
localName += "/fast";
depends.clear();
commands.clear();
commands.push_back(this->GetRecursiveMakeCall
(makefileName.c_str(), makeTargetName.c_str()));
this->CreateCDCommand(commands,
this->Makefile->GetHomeOutputDirectory(),
this->Makefile->GetStartOutputDirectory());
this->WriteMakeRule(ruleFileStream, "fast build rule for target.",
localName.c_str(), depends, commands, true);
}
}
}
@ -1481,8 +1498,7 @@ void cmLocalUnixMakefileGenerator3
this->Makefile->GetStartOutputDirectory());
this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.",
"preinstall", depends, commands, true);
commands.clear();
depends.push_back("preinstall");
depends.clear();
this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.",
"preinstall/fast", depends, commands, true);