BUG: bad progress for named top level targets

This commit is contained in:
Ken Martin 2006-08-29 12:55:11 -04:00
parent 21d7a242fd
commit bdb530191d
2 changed files with 22 additions and 11 deletions

View File

@ -823,8 +823,10 @@ cmGlobalUnixMakefileGenerator3
cmLocalGenerator::FULL,
cmLocalGenerator::SHELL);
//
std::set<cmStdString> emitted;
progCmd << " "
<< this->GetTargetTotalNumberOfActions(t->second);
<< this->GetTargetTotalNumberOfActions(t->second,
emitted);
commands.push_back(progCmd.str());
}
std::string tmp = cmake::GetCMakeFilesDirectoryPostSlash();
@ -895,18 +897,26 @@ cmGlobalUnixMakefileGenerator3
//----------------------------------------------------------------------------
int cmGlobalUnixMakefileGenerator3
::GetTargetTotalNumberOfActions(cmTarget& target)
::GetTargetTotalNumberOfActions(cmTarget& target,
std::set<cmStdString> &emitted)
{
cmLocalUnixMakefileGenerator3 *lg =
static_cast<cmLocalUnixMakefileGenerator3 *>
(target.GetMakefile()->GetLocalGenerator());
int result = static_cast<int>(lg->ProgressFiles[target.GetName()].size());
std::vector<cmTarget *>& depends = this->GetTargetDepends(target);
// do not double count
int result = 0;
std::vector<cmTarget *>::iterator i;
for (i = depends.begin(); i != depends.end(); ++i)
if(emitted.insert(target.GetName()).second)
{
result += this->GetTargetTotalNumberOfActions(**i);
cmLocalUnixMakefileGenerator3 *lg =
static_cast<cmLocalUnixMakefileGenerator3 *>
(target.GetMakefile()->GetLocalGenerator());
result = static_cast<int>(lg->ProgressFiles[target.GetName()].size());
std::vector<cmTarget *>& depends = this->GetTargetDepends(target);
std::vector<cmTarget *>::iterator i;
for (i = depends.begin(); i != depends.end(); ++i)
{
result += this->GetTargetTotalNumberOfActions(**i, emitted);
}
}
return result;

View File

@ -124,7 +124,8 @@ public:
const char* config, bool ignoreErrors, bool fast);
// returns some progress informaiton
int GetTargetTotalNumberOfActions(cmTarget& target);
int GetTargetTotalNumberOfActions(cmTarget& target,
std::set<cmStdString> &emitted);
unsigned long GetNumberOfProgressActionsInAll
(cmLocalUnixMakefileGenerator3 *lg);