file(GENERATE): Create output file structures even earlier
Since commitb80557c7bd
(file(GENERATE): Evaluate early to allow generating source files, 2014-11-04, v3.2.0-rc1~398^2) we create the `cmSourceFile` instances marked with a `GENERATED` source file property before tracing source dependencies. Move it to even earlier so that steps in `cmGlobalGenerator::AddAutomaticSources` can operate on all sources. This also avoids the accidental `O(n^2)` calls for `n` local generators that we had previously. This is also needed since commit83c1657ff7
(Unity build: Generate sources during Compute step, 2019-10-03) to support `file(GENERATE)` outputs as sources in a target with `UNITY_BUILD` enabled.
This commit is contained in:
parent
ead89868ba
commit
f1fb63b306
@ -1556,6 +1556,7 @@ bool cmGlobalGenerator::QtAutoGen()
|
||||
bool cmGlobalGenerator::AddAutomaticSources()
|
||||
{
|
||||
for (cmLocalGenerator* lg : this->LocalGenerators) {
|
||||
lg->CreateEvaluationFileOutputs();
|
||||
for (cmGeneratorTarget* gt : lg->GetGeneratorTargets()) {
|
||||
if (gt->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
|
||||
continue;
|
||||
@ -3095,14 +3096,6 @@ cmGlobalGenerator::GetFilenameTargetDepends(cmSourceFile* sf) const
|
||||
return this->FilenameTargetDepends[sf];
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::CreateEvaluationSourceFiles(
|
||||
std::string const& config) const
|
||||
{
|
||||
for (cmLocalGenerator* localGen : this->LocalGenerators) {
|
||||
localGen->CreateEvaluationFileOutputs(config);
|
||||
}
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::ProcessEvaluationFiles()
|
||||
{
|
||||
std::vector<std::string> generatedFiles;
|
||||
|
@ -457,8 +457,6 @@ public:
|
||||
|
||||
bool GenerateCPackPropertiesFile();
|
||||
|
||||
void CreateEvaluationSourceFiles(std::string const& config) const;
|
||||
|
||||
void SetFilenameTargetDepends(
|
||||
cmSourceFile* sf, std::set<cmGeneratorTarget const*> const& tgts);
|
||||
const std::set<const cmGeneratorTarget*>& GetFilenameTargetDepends(
|
||||
|
@ -263,11 +263,6 @@ static void MoveSystemIncludesToEnd(std::vector<BT<std::string>>& includeDirs,
|
||||
|
||||
void cmLocalGenerator::TraceDependencies()
|
||||
{
|
||||
std::vector<std::string> const& configs =
|
||||
this->Makefile->GetGeneratorConfigs();
|
||||
for (std::string const& c : configs) {
|
||||
this->GlobalGenerator->CreateEvaluationSourceFiles(c);
|
||||
}
|
||||
// Generate the rule files for each target.
|
||||
const std::vector<cmGeneratorTarget*>& targets = this->GetGeneratorTargets();
|
||||
for (cmGeneratorTarget* target : targets) {
|
||||
@ -360,6 +355,15 @@ void cmLocalGenerator::GenerateTestFiles()
|
||||
}
|
||||
}
|
||||
|
||||
void cmLocalGenerator::CreateEvaluationFileOutputs()
|
||||
{
|
||||
std::vector<std::string> const& configs =
|
||||
this->Makefile->GetGeneratorConfigs();
|
||||
for (std::string const& c : configs) {
|
||||
this->CreateEvaluationFileOutputs(c);
|
||||
}
|
||||
}
|
||||
|
||||
void cmLocalGenerator::CreateEvaluationFileOutputs(std::string const& config)
|
||||
{
|
||||
std::vector<cmGeneratorExpressionEvaluationFile*> ef =
|
||||
|
@ -418,6 +418,7 @@ public:
|
||||
|
||||
void IssueMessage(MessageType t, std::string const& text) const;
|
||||
|
||||
void CreateEvaluationFileOutputs();
|
||||
void CreateEvaluationFileOutputs(const std::string& config);
|
||||
void ProcessEvaluationFiles(std::vector<std::string>& generatedFiles);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user