diff options
author | Brad King <brad.king@kitware.com> | 2009-09-28 17:34:23 -0400 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-09-28 17:34:23 -0400 |
commit | 0089f9cf8f0ff484b83b03d1fc11fbd2536d59b9 (patch) | |
tree | cb804e30c4ab3b3ccd0afde7fdd147a6db3e4d99 /Source/cmGlobalUnixMakefileGenerator3.cxx | |
parent | a091e99cb9a126e6a2d0093a916450cf894be2f3 (diff) | |
download | cmake-0089f9cf8f0ff484b83b03d1fc11fbd2536d59b9.tar.gz |
Fix support for OLD behavior of policy CMP0002
The commit "Cleanup make progress rule generation code" introduced a map
from target name to the progress.make file location. Policy CMP0002's
OLD behavior allows duplicate target names in different directories, so
only one ends up with a progress.make file. This commit fixes the map
to order by target name first and build directory second, restoring
support for duplicate target names.
Diffstat (limited to 'Source/cmGlobalUnixMakefileGenerator3.cxx')
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.cxx | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index dd1e38e8c7..9b3c5d546e 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -750,7 +750,7 @@ cmGlobalUnixMakefileGenerator3 cmLocalGenerator::FULL, cmLocalGenerator::SHELL); progCmd << " "; - std::vector<int> &progFiles = this->ProgressMap[t->first].Marks; + std::vector<int> &progFiles = this->ProgressMap[&t->second].Marks; for (std::vector<int>::iterator i = progFiles.begin(); i != progFiles.end(); ++i) { @@ -873,7 +873,7 @@ cmGlobalUnixMakefileGenerator3 size_t count = 0; if(emitted.insert(target).second) { - count = this->ProgressMap[target->GetName()].Marks.size(); + count = this->ProgressMap[target].Marks.size(); TargetDependSet const& depends = this->GetTargetDirectDepends(*target); for(TargetDependSet::const_iterator di = depends.begin(); di != depends.end(); ++di) @@ -905,12 +905,27 @@ void cmGlobalUnixMakefileGenerator3::RecordTargetProgress( cmMakefileTargetGenerator* tg) { - TargetProgress& tp = this->ProgressMap[tg->GetTarget()->GetName()]; + TargetProgress& tp = this->ProgressMap[tg->GetTarget()]; tp.NumberOfActions = tg->GetNumberOfProgressActions(); tp.VariableFile = tg->GetProgressFileNameFull(); } //---------------------------------------------------------------------------- +bool +cmGlobalUnixMakefileGenerator3::ProgressMapCompare +::operator()(cmTarget* l, cmTarget* r) +{ + // Order by target name. + if(int c = strcmp(l->GetName(), r->GetName())) + { + return c < 0; + } + // Order duplicate targets by binary directory. + return strcmp(l->GetMakefile()->GetCurrentOutputDirectory(), + r->GetMakefile()->GetCurrentOutputDirectory()) < 0; +} + +//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3::TargetProgress ::WriteProgressVariables(unsigned long total, unsigned long ¤t) |