mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-30 18:29:37 -06:00
cmGlobalNinjaGenerator: Reuse local generator caching of config list
This commit is contained in:
@@ -12,8 +12,8 @@
|
||||
|
||||
#include "cmGeneratorExpression.h"
|
||||
#include "cmGeneratorTarget.h"
|
||||
#include "cmLocalCommonGenerator.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmStateDirectory.h"
|
||||
#include "cmStateSnapshot.h"
|
||||
#include "cmStateTypes.h"
|
||||
@@ -38,8 +38,8 @@ cmGlobalCommonGenerator::ComputeDirectoryTargets() const
|
||||
lg->GetStateSnapshot().GetDirectory().GetCurrentBinary();
|
||||
DirectoryTarget& dirTarget = dirTargets[currentBinaryDir];
|
||||
dirTarget.LG = lg.get();
|
||||
const std::vector<std::string>& configs =
|
||||
lg->GetMakefile()->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
|
||||
std::vector<std::string> const& configs =
|
||||
static_cast<cmLocalCommonGenerator const*>(lg.get())->GetConfigNames();
|
||||
|
||||
// The directory-level rule should depend on the target-level rules
|
||||
// for all targets in the directory.
|
||||
|
||||
@@ -603,10 +603,11 @@ cmDocumentationEntry cmGlobalNinjaGenerator::GetDocumentation()
|
||||
"Generates build.ninja files." };
|
||||
}
|
||||
|
||||
std::vector<std::string> cmGlobalNinjaGenerator::GetConfigNames() const
|
||||
std::vector<std::string> const& cmGlobalNinjaGenerator::GetConfigNames() const
|
||||
{
|
||||
return this->Makefiles.front()->GetGeneratorConfigs(
|
||||
cmMakefile::IncludeEmptyConfig);
|
||||
return static_cast<cmLocalNinjaGenerator const*>(
|
||||
this->LocalGenerators.front().get())
|
||||
->GetConfigNames();
|
||||
}
|
||||
|
||||
// Implemented in all cmGlobaleGenerator sub-classes.
|
||||
@@ -1632,8 +1633,7 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
|
||||
std::string const& currentBinaryDir = it.first;
|
||||
DirectoryTarget const& dt = it.second;
|
||||
std::vector<std::string> configs =
|
||||
dt.LG->GetMakefile()->GetGeneratorConfigs(
|
||||
cmMakefile::IncludeEmptyConfig);
|
||||
static_cast<cmLocalNinjaGenerator const*>(dt.LG)->GetConfigNames();
|
||||
|
||||
// Setup target
|
||||
cmNinjaDeps configDeps;
|
||||
|
||||
@@ -485,7 +485,7 @@ public:
|
||||
bool CheckCxxModuleSupport(CxxModuleSupportQuery query) override;
|
||||
|
||||
protected:
|
||||
std::vector<std::string> GetConfigNames() const;
|
||||
std::vector<std::string> const& GetConfigNames() const;
|
||||
|
||||
void Generate() override;
|
||||
|
||||
|
||||
@@ -743,8 +743,6 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatement(
|
||||
bool cmLocalNinjaGenerator::HasUniqueByproducts(
|
||||
std::vector<std::string> const& byproducts, cmListFileBacktrace const& bt)
|
||||
{
|
||||
std::vector<std::string> configs =
|
||||
this->GetMakefile()->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
|
||||
cmGeneratorExpression ge(*this->GetCMakeInstance(), bt);
|
||||
for (std::string const& p : byproducts) {
|
||||
if (cmGeneratorExpression::Find(p) == std::string::npos) {
|
||||
@@ -752,7 +750,7 @@ bool cmLocalNinjaGenerator::HasUniqueByproducts(
|
||||
}
|
||||
std::set<std::string> seen;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(p);
|
||||
for (std::string const& config : configs) {
|
||||
for (std::string const& config : this->GetConfigNames()) {
|
||||
for (std::string const& b :
|
||||
this->ExpandCustomCommandOutputPaths(*cge, config)) {
|
||||
if (!seen.insert(b).second) {
|
||||
@@ -800,8 +798,7 @@ std::string cmLocalNinjaGenerator::CreateUtilityOutput(
|
||||
std::string const base = cmStrCat(this->GetCurrentBinaryDirectory(),
|
||||
"/CMakeFiles/", targetName, '-');
|
||||
// The output is not actually created so mark it symbolic.
|
||||
for (std::string const& config :
|
||||
this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig)) {
|
||||
for (std::string const& config : this->GetConfigNames()) {
|
||||
std::string const force = cmStrCat(base, config);
|
||||
if (cmSourceFile* sf = this->Makefile->GetOrCreateGeneratedSource(force)) {
|
||||
sf->SetProperty("SYMBOLIC", "1");
|
||||
|
||||
@@ -87,8 +87,7 @@ cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target)
|
||||
, LocalGenerator(
|
||||
static_cast<cmLocalNinjaGenerator*>(target->GetLocalGenerator()))
|
||||
{
|
||||
for (auto const& fileConfig :
|
||||
target->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig)) {
|
||||
for (auto const& fileConfig : this->LocalGenerator->GetConfigNames()) {
|
||||
this->Configs[fileConfig].MacOSXContentGenerator =
|
||||
cm::make_unique<MacOSXContentGeneratorType>(this, fileConfig);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user