Split CreateGeneratorTargets into two methods.
As the generate-time-related API is moving to cmGeneratorTarget, almost all of generation code needs to be able to access instances of it.
This commit is contained in:
parent
b63c71aa35
commit
25f1df3e81
|
@ -25,8 +25,6 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t): Target(t)
|
||||||
this->Makefile = this->Target->GetMakefile();
|
this->Makefile = this->Target->GetMakefile();
|
||||||
this->LocalGenerator = this->Makefile->GetLocalGenerator();
|
this->LocalGenerator = this->Makefile->GetLocalGenerator();
|
||||||
this->GlobalGenerator = this->LocalGenerator->GetGlobalGenerator();
|
this->GlobalGenerator = this->LocalGenerator->GetGlobalGenerator();
|
||||||
this->ClassifySources();
|
|
||||||
this->LookupObjectLibraries();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -74,10 +74,10 @@ public:
|
||||||
|
|
||||||
bool IsSystemIncludeDirectory(const char *dir, const char *config);
|
bool IsSystemIncludeDirectory(const char *dir, const char *config);
|
||||||
|
|
||||||
private:
|
|
||||||
void ClassifySources();
|
void ClassifySources();
|
||||||
void LookupObjectLibraries();
|
void LookupObjectLibraries();
|
||||||
|
|
||||||
|
private:
|
||||||
std::map<std::string, std::vector<std::string> > SystemIncludesCache;
|
std::map<std::string, std::vector<std::string> > SystemIncludesCache;
|
||||||
|
|
||||||
cmGeneratorTarget(cmGeneratorTarget const&);
|
cmGeneratorTarget(cmGeneratorTarget const&);
|
||||||
|
|
|
@ -1058,6 +1058,9 @@ void cmGlobalGenerator::Generate()
|
||||||
this->LocalGenerators[i]->AddHelperCommands();
|
this->LocalGenerators[i]->AddHelperCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create per-target generator information.
|
||||||
|
this->CreateGeneratorTargets();
|
||||||
|
|
||||||
// Trace the dependencies, after that no custom commands should be added
|
// Trace the dependencies, after that no custom commands should be added
|
||||||
// because their dependencies might not be handled correctly
|
// because their dependencies might not be handled correctly
|
||||||
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
||||||
|
@ -1071,8 +1074,7 @@ void cmGlobalGenerator::Generate()
|
||||||
this->LocalGenerators[i]->GenerateTargetManifest();
|
this->LocalGenerators[i]->GenerateTargetManifest();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create per-target generator information.
|
this->ComputeGeneratorTargetObjects();
|
||||||
this->CreateGeneratorTargets();
|
|
||||||
|
|
||||||
this->ProcessEvaluationFiles();
|
this->ProcessEvaluationFiles();
|
||||||
|
|
||||||
|
@ -1263,7 +1265,6 @@ void cmGlobalGenerator::CreateGeneratorTargets()
|
||||||
|
|
||||||
cmGeneratorTarget* gt = new cmGeneratorTarget(t);
|
cmGeneratorTarget* gt = new cmGeneratorTarget(t);
|
||||||
this->GeneratorTargets[t] = gt;
|
this->GeneratorTargets[t] = gt;
|
||||||
this->ComputeTargetObjects(gt);
|
|
||||||
generatorTargets[t] = gt;
|
generatorTargets[t] = gt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1280,6 +1281,25 @@ void cmGlobalGenerator::CreateGeneratorTargets()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmGlobalGenerator::ComputeGeneratorTargetObjects()
|
||||||
|
{
|
||||||
|
// Construct per-target generator information.
|
||||||
|
for(unsigned int i=0; i < this->LocalGenerators.size(); ++i)
|
||||||
|
{
|
||||||
|
cmMakefile *mf = this->LocalGenerators[i]->GetMakefile();
|
||||||
|
cmGeneratorTargetsType targets = mf->GetGeneratorTargets();
|
||||||
|
for(cmGeneratorTargetsType::iterator ti = targets.begin();
|
||||||
|
ti != targets.end(); ++ti)
|
||||||
|
{
|
||||||
|
cmGeneratorTarget* gt = ti->second;
|
||||||
|
gt->ClassifySources();
|
||||||
|
gt->LookupObjectLibraries();
|
||||||
|
this->ComputeTargetObjects(gt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmGlobalGenerator::ClearGeneratorTargets()
|
void cmGlobalGenerator::ClearGeneratorTargets()
|
||||||
{
|
{
|
||||||
|
|
|
@ -406,6 +406,7 @@ private:
|
||||||
// Per-target generator information.
|
// Per-target generator information.
|
||||||
cmGeneratorTargetsType GeneratorTargets;
|
cmGeneratorTargetsType GeneratorTargets;
|
||||||
void CreateGeneratorTargets();
|
void CreateGeneratorTargets();
|
||||||
|
void ComputeGeneratorTargetObjects();
|
||||||
void ClearGeneratorTargets();
|
void ClearGeneratorTargets();
|
||||||
virtual void ComputeTargetObjects(cmGeneratorTarget* gt) const;
|
virtual void ComputeTargetObjects(cmGeneratorTarget* gt) const;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue