summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-06-01 18:43:28 (GMT)
committerBrad King <brad.king@kitware.com>2006-06-01 18:43:28 (GMT)
commitad9dd6d11c06e5e180efad391717b985b3818cfb (patch)
tree3a7ba7b57be27a2cf626f28275448f9d2de9a8b8
parent791706a52f68f8750026682a4a5ae4f49b62df68 (diff)
downloadCMake-ad9dd6d11c06e5e180efad391717b985b3818cfb.zip
CMake-ad9dd6d11c06e5e180efad391717b985b3818cfb.tar.gz
CMake-ad9dd6d11c06e5e180efad391717b985b3818cfb.tar.bz2
ENH: Moved generation of the /fast version of GLOBAL_TARGET targets to the proper place in the local generator instead of in the global generator. Also made the install/fast target not depend on the all target.
-rw-r--r--Source/cmGlobalUnixMakefileGenerator3.cxx14
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx23
2 files changed, 23 insertions, 14 deletions
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx
index 98caec2..ac9e5b9 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.cxx
+++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -686,6 +686,8 @@ cmGlobalUnixMakefileGenerator3
strlen(t->second.GetName()) &&
emitted.insert(t->second.GetName()).second)
{
+ // Handle user targets here. Global targets are handled in
+ // the local generator on a per-directory basis.
if((t->second.GetType() == cmTarget::EXECUTABLE) ||
(t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
(t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
@@ -762,18 +764,6 @@ cmGlobalUnixMakefileGenerator3
lg->WriteMakeRule(ruleFileStream, "fast build rule for target.",
localName.c_str(), depends, commands, true);
}
- else if(t->second.GetType() == cmTarget::GLOBAL_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();
- depends.push_back(localName);
- localName += "/fast";
- lg->WriteMakeRule(ruleFileStream, "fast build rule for target.",
- localName.c_str(), depends, commands, true);
- }
}
}
}
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index a3b7b9e..830f100 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -1387,7 +1387,7 @@ void cmLocalUnixMakefileGenerator3
this->AppendEcho(commands, text,
cmLocalUnixMakefileGenerator3::EchoGlobal);
- // Utility targets store their rules in pre- and post-build commands.
+ // Global targets store their rules in pre- and post-build commands.
this->AppendCustomDepends(depends,
glIt->second.GetPreBuildCommands());
this->AppendCustomDepends(depends,
@@ -1396,8 +1396,27 @@ void cmLocalUnixMakefileGenerator3
glIt->second.GetPreBuildCommands());
this->AppendCustomCommands(commands,
glIt->second.GetPostBuildCommands());
+ std::string targetName = glIt->second.GetName();
this->WriteMakeRule(ruleFileStream, targetString.c_str(),
- glIt->first.c_str(), depends, commands, true);
+ targetName.c_str(), depends, commands, true);
+
+ // Provide a "/fast" version of the target.
+ depends.clear();
+ if(targetName == "install")
+ {
+ // Provide a fast install target that does not depend on all
+ // but has the same command.
+ depends.push_back("preinstall/fast");
+ }
+ else
+ {
+ // Just forward to the real target so at least it will work.
+ depends.push_back(targetName);
+ commands.clear();
+ }
+ targetName += "/fast";
+ this->WriteMakeRule(ruleFileStream, targetString.c_str(),
+ targetName.c_str(), depends, commands, true);
}
}