Merge topic 'cmMakefile-Configure'
7657e8b1
cmMakefile: Introduce a local cmMakefile variable.4e8f242d
cmMakefile: Store unconfigured cmMakefiles.d65e0123
cmMakefile: Implement ConfigureSubDirectory in terms of cmMakefile.f059ed16
cmMakefile: Move Configure responsibility from cmLocalGenerator.a653611d
cmake: Replace CurrentLocalGenerator concept with CurrentMakefile.69a038a9
cmMakefile: Refactor directories specified with the subdirs command.08637970
cmLocalGenerator: ComputeObjectMaxPath just before generating.27e11c6f
Merge Configure state with GeneratingBuildSystem state.363caa2f
cmLocalGenerator: De-virtualize Configure().
This commit is contained in:
commit
0886880e3b
|
@ -70,7 +70,7 @@ cmGlobalGenerator::cmGlobalGenerator(cmake* cm)
|
||||||
this->TryCompileTimeout = 0;
|
this->TryCompileTimeout = 0;
|
||||||
|
|
||||||
this->ExtraGenerator = 0;
|
this->ExtraGenerator = 0;
|
||||||
this->CurrentLocalGenerator = 0;
|
this->CurrentMakefile = 0;
|
||||||
this->TryCompileOuterMakefile = 0;
|
this->TryCompileOuterMakefile = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1101,7 +1101,7 @@ void cmGlobalGenerator::Configure()
|
||||||
this->CMakeInstance->GetHomeOutputDirectory());
|
this->CMakeInstance->GetHomeOutputDirectory());
|
||||||
|
|
||||||
// now do it
|
// now do it
|
||||||
lg->Configure();
|
lg->GetMakefile()->Configure();
|
||||||
|
|
||||||
// update the cache entry for the number of local generators, this is used
|
// update the cache entry for the number of local generators, this is used
|
||||||
// for progress
|
// for progress
|
||||||
|
@ -1218,6 +1218,7 @@ void cmGlobalGenerator::Generate()
|
||||||
this->CreateDefaultGlobalTargets(&globalTargets);
|
this->CreateDefaultGlobalTargets(&globalTargets);
|
||||||
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
||||||
{
|
{
|
||||||
|
this->LocalGenerators[i]->ComputeObjectMaxPath();
|
||||||
cmMakefile* mf = this->LocalGenerators[i]->GetMakefile();
|
cmMakefile* mf = this->LocalGenerators[i]->GetMakefile();
|
||||||
cmTargets* targets = &(mf->GetTargets());
|
cmTargets* targets = &(mf->GetTargets());
|
||||||
cmTargets::iterator tit;
|
cmTargets::iterator tit;
|
||||||
|
@ -1275,8 +1276,7 @@ void cmGlobalGenerator::Generate()
|
||||||
// Generate project files
|
// Generate project files
|
||||||
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
for (i = 0; i < this->LocalGenerators.size(); ++i)
|
||||||
{
|
{
|
||||||
this->LocalGenerators[i]->GetMakefile()->SetGeneratingBuildSystem();
|
this->SetCurrentMakefile(this->LocalGenerators[i]->GetMakefile());
|
||||||
this->SetCurrentLocalGenerator(this->LocalGenerators[i]);
|
|
||||||
this->LocalGenerators[i]->Generate();
|
this->LocalGenerators[i]->Generate();
|
||||||
if(!this->LocalGenerators[i]->GetMakefile()->IsOn(
|
if(!this->LocalGenerators[i]->GetMakefile()->IsOn(
|
||||||
"CMAKE_SKIP_INSTALL_RULES"))
|
"CMAKE_SKIP_INSTALL_RULES"))
|
||||||
|
@ -1288,7 +1288,7 @@ void cmGlobalGenerator::Generate()
|
||||||
(static_cast<float>(i)+1.0f)/
|
(static_cast<float>(i)+1.0f)/
|
||||||
static_cast<float>(this->LocalGenerators.size()));
|
static_cast<float>(this->LocalGenerators.size()));
|
||||||
}
|
}
|
||||||
this->SetCurrentLocalGenerator(0);
|
this->SetCurrentMakefile(0);
|
||||||
|
|
||||||
if(!this->GenerateCPackPropertiesFile())
|
if(!this->GenerateCPackPropertiesFile())
|
||||||
{
|
{
|
||||||
|
|
|
@ -168,11 +168,13 @@ public:
|
||||||
const std::vector<cmLocalGenerator *>& GetLocalGenerators() const {
|
const std::vector<cmLocalGenerator *>& GetLocalGenerators() const {
|
||||||
return this->LocalGenerators;}
|
return this->LocalGenerators;}
|
||||||
|
|
||||||
cmLocalGenerator* GetCurrentLocalGenerator()
|
cmMakefile* GetCurrentMakefile() const
|
||||||
{return this->CurrentLocalGenerator;}
|
{
|
||||||
|
return this->CurrentMakefile;
|
||||||
|
}
|
||||||
|
|
||||||
void SetCurrentLocalGenerator(cmLocalGenerator* lg)
|
void SetCurrentMakefile(cmMakefile* mf)
|
||||||
{this->CurrentLocalGenerator = lg;}
|
{this->CurrentMakefile = mf;}
|
||||||
|
|
||||||
void AddLocalGenerator(cmLocalGenerator *lg);
|
void AddLocalGenerator(cmLocalGenerator *lg);
|
||||||
|
|
||||||
|
@ -404,7 +406,7 @@ protected:
|
||||||
std::string ConfiguredFilesPath;
|
std::string ConfiguredFilesPath;
|
||||||
cmake *CMakeInstance;
|
cmake *CMakeInstance;
|
||||||
std::vector<cmLocalGenerator *> LocalGenerators;
|
std::vector<cmLocalGenerator *> LocalGenerators;
|
||||||
cmLocalGenerator* CurrentLocalGenerator;
|
cmMakefile* CurrentMakefile;
|
||||||
// map from project name to vector of local generators in that project
|
// map from project name to vector of local generators in that project
|
||||||
std::map<std::string, std::vector<cmLocalGenerator*> > ProjectMap;
|
std::map<std::string, std::vector<cmLocalGenerator*> > ProjectMap;
|
||||||
std::map<cmLocalGenerator*, std::set<cmTarget const*> >
|
std::map<cmLocalGenerator*, std::set<cmTarget const*> >
|
||||||
|
|
|
@ -59,7 +59,6 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg,
|
||||||
this->Makefile = new cmMakefile(this);
|
this->Makefile = new cmMakefile(this);
|
||||||
|
|
||||||
this->LinkScriptShell = false;
|
this->LinkScriptShell = false;
|
||||||
this->Configured = false;
|
|
||||||
this->EmitUniversalBinaryFlags = true;
|
this->EmitUniversalBinaryFlags = true;
|
||||||
this->BackwardsCompatibility = 0;
|
this->BackwardsCompatibility = 0;
|
||||||
this->BackwardsCompatibilityFinal = false;
|
this->BackwardsCompatibilityFinal = false;
|
||||||
|
@ -75,72 +74,6 @@ bool cmLocalGenerator::IsRootMakefile() const
|
||||||
return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid();
|
return !this->StateSnapshot.GetBuildsystemDirectoryParent().IsValid();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
class cmLocalGeneratorCurrent
|
|
||||||
{
|
|
||||||
cmGlobalGenerator* GG;
|
|
||||||
cmLocalGenerator* LG;
|
|
||||||
cmState::Snapshot Snapshot;
|
|
||||||
public:
|
|
||||||
cmLocalGeneratorCurrent(cmLocalGenerator* lg)
|
|
||||||
{
|
|
||||||
this->GG = lg->GetGlobalGenerator();
|
|
||||||
this->LG = this->GG->GetCurrentLocalGenerator();
|
|
||||||
this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot();
|
|
||||||
this->GG->GetCMakeInstance()->SetCurrentSnapshot(lg->GetStateSnapshot());
|
|
||||||
this->GG->SetCurrentLocalGenerator(lg);
|
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
|
||||||
this->GG->GetFileLockPool().PushFileScope();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
~cmLocalGeneratorCurrent()
|
|
||||||
{
|
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
|
||||||
this->GG->GetFileLockPool().PopFileScope();
|
|
||||||
#endif
|
|
||||||
this->GG->SetCurrentLocalGenerator(this->LG);
|
|
||||||
this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
void cmLocalGenerator::Configure()
|
|
||||||
{
|
|
||||||
// Manage the global generator's current local generator.
|
|
||||||
cmLocalGeneratorCurrent clg(this);
|
|
||||||
static_cast<void>(clg);
|
|
||||||
|
|
||||||
// make sure the CMakeFiles dir is there
|
|
||||||
std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory();
|
|
||||||
filesDir += cmake::GetCMakeFilesDirectory();
|
|
||||||
cmSystemTools::MakeDirectory(filesDir.c_str());
|
|
||||||
|
|
||||||
std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory();
|
|
||||||
currentStart += "/CMakeLists.txt";
|
|
||||||
assert(cmSystemTools::FileExists(currentStart.c_str(), true));
|
|
||||||
this->Makefile->ProcessBuildsystemFile(currentStart.c_str());
|
|
||||||
|
|
||||||
// at the end of the ReadListFile handle any old style subdirs
|
|
||||||
// first get all the subdirectories
|
|
||||||
std::vector<cmLocalGenerator *> subdirs = this->GetChildren();
|
|
||||||
|
|
||||||
// for each subdir recurse
|
|
||||||
std::vector<cmLocalGenerator *>::iterator sdi = subdirs.begin();
|
|
||||||
for (; sdi != subdirs.end(); ++sdi)
|
|
||||||
{
|
|
||||||
if (!(*sdi)->Configured)
|
|
||||||
{
|
|
||||||
this->Makefile->ConfigureSubDirectory(*sdi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this->Makefile->AddCMakeDependFilesFromUser();
|
|
||||||
|
|
||||||
this->ComputeObjectMaxPath();
|
|
||||||
|
|
||||||
this->Configured = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmLocalGenerator::ComputeObjectMaxPath()
|
void cmLocalGenerator::ComputeObjectMaxPath()
|
||||||
{
|
{
|
||||||
|
@ -3179,11 +3112,6 @@ bool cmLocalGenerator::IsNMake() const
|
||||||
return this->GetState()->UseNMake();
|
return this->GetState()->UseNMake();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmLocalGenerator::SetConfiguredCMP0014(bool configured)
|
|
||||||
{
|
|
||||||
this->Configured = configured;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string
|
std::string
|
||||||
cmLocalGenerator
|
cmLocalGenerator
|
||||||
|
@ -3465,7 +3393,7 @@ cmIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->BackwardsCompatibility = CMake_VERSION_ENCODE(major, minor, patch);
|
this->BackwardsCompatibility = CMake_VERSION_ENCODE(major, minor, patch);
|
||||||
this->BackwardsCompatibilityFinal = this->Configured;
|
this->BackwardsCompatibilityFinal = this->Makefile->IsConfigured();
|
||||||
}
|
}
|
||||||
|
|
||||||
return this->BackwardsCompatibility;
|
return this->BackwardsCompatibility;
|
||||||
|
|
|
@ -46,12 +46,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void Generate() {}
|
virtual void Generate() {}
|
||||||
|
|
||||||
/**
|
|
||||||
* Process the CMakeLists files for this directory to fill in the
|
|
||||||
* Makefile ivar
|
|
||||||
*/
|
|
||||||
virtual void Configure();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls TraceVSDependencies() on all targets of this generator.
|
* Calls TraceVSDependencies() on all targets of this generator.
|
||||||
*/
|
*/
|
||||||
|
@ -383,8 +377,7 @@ public:
|
||||||
bool IsMinGWMake() const;
|
bool IsMinGWMake() const;
|
||||||
bool IsNMake() const;
|
bool IsNMake() const;
|
||||||
|
|
||||||
void SetConfiguredCMP0014(bool configured);
|
void ComputeObjectMaxPath();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
///! put all the libraries for a target on into the given stream
|
///! put all the libraries for a target on into the given stream
|
||||||
void OutputLinkLibraries(std::string& linkLibraries,
|
void OutputLinkLibraries(std::string& linkLibraries,
|
||||||
|
@ -430,7 +423,6 @@ protected:
|
||||||
|
|
||||||
std::string& CreateSafeUniqueObjectFileName(const std::string& sin,
|
std::string& CreateSafeUniqueObjectFileName(const std::string& sin,
|
||||||
std::string const& dir_max);
|
std::string const& dir_max);
|
||||||
void ComputeObjectMaxPath();
|
|
||||||
|
|
||||||
virtual std::string ConvertToLinkReference(std::string const& lib,
|
virtual std::string ConvertToLinkReference(std::string const& lib,
|
||||||
OutputFormat format = SHELL);
|
OutputFormat format = SHELL);
|
||||||
|
@ -451,7 +443,6 @@ protected:
|
||||||
std::set<cmTarget const*> WarnCMP0063;
|
std::set<cmTarget const*> WarnCMP0063;
|
||||||
|
|
||||||
bool LinkScriptShell;
|
bool LinkScriptShell;
|
||||||
bool Configured;
|
|
||||||
bool EmitUniversalBinaryFlags;
|
bool EmitUniversalBinaryFlags;
|
||||||
|
|
||||||
// Hack for ExpandRuleVariable until object-oriented version is
|
// Hack for ExpandRuleVariable until object-oriented version is
|
||||||
|
|
|
@ -41,6 +41,15 @@ cmLocalNinjaGenerator::~cmLocalNinjaGenerator()
|
||||||
|
|
||||||
void cmLocalNinjaGenerator::Generate()
|
void cmLocalNinjaGenerator::Generate()
|
||||||
{
|
{
|
||||||
|
// Compute the path to use when referencing the current output
|
||||||
|
// directory from the top output directory.
|
||||||
|
this->HomeRelativeOutputPath =
|
||||||
|
this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT);
|
||||||
|
if(this->HomeRelativeOutputPath == ".")
|
||||||
|
{
|
||||||
|
this->HomeRelativeOutputPath = "";
|
||||||
|
}
|
||||||
|
|
||||||
this->SetConfigName();
|
this->SetConfigName();
|
||||||
|
|
||||||
this->WriteProcessedMakefile(this->GetBuildFileStream());
|
this->WriteProcessedMakefile(this->GetBuildFileStream());
|
||||||
|
@ -91,25 +100,6 @@ void cmLocalNinjaGenerator::Generate()
|
||||||
this->WriteCustomCommandBuildStatements();
|
this->WriteCustomCommandBuildStatements();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implemented in:
|
|
||||||
// cmLocalUnixMakefileGenerator3.
|
|
||||||
// Used in:
|
|
||||||
// Source/cmMakefile.cxx
|
|
||||||
// Source/cmGlobalGenerator.cxx
|
|
||||||
void cmLocalNinjaGenerator::Configure()
|
|
||||||
{
|
|
||||||
// Compute the path to use when referencing the current output
|
|
||||||
// directory from the top output directory.
|
|
||||||
this->HomeRelativeOutputPath =
|
|
||||||
this->Convert(this->Makefile->GetCurrentBinaryDirectory(), HOME_OUTPUT);
|
|
||||||
if(this->HomeRelativeOutputPath == ".")
|
|
||||||
{
|
|
||||||
this->HomeRelativeOutputPath = "";
|
|
||||||
}
|
|
||||||
this->cmLocalGenerator::Configure();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Picked up from cmLocalUnixMakefileGenerator3. Refactor it.
|
// TODO: Picked up from cmLocalUnixMakefileGenerator3. Refactor it.
|
||||||
std::string cmLocalNinjaGenerator
|
std::string cmLocalNinjaGenerator
|
||||||
::GetTargetDirectory(cmTarget const& target) const
|
::GetTargetDirectory(cmTarget const& target) const
|
||||||
|
|
|
@ -38,8 +38,6 @@ public:
|
||||||
|
|
||||||
virtual void Generate();
|
virtual void Generate();
|
||||||
|
|
||||||
virtual void Configure();
|
|
||||||
|
|
||||||
virtual std::string GetTargetDirectory(cmTarget const& target) const;
|
virtual std::string GetTargetDirectory(cmTarget const& target) const;
|
||||||
|
|
||||||
const cmGlobalNinjaGenerator* GetGlobalNinjaGenerator() const;
|
const cmGlobalNinjaGenerator* GetGlobalNinjaGenerator() const;
|
||||||
|
|
|
@ -98,7 +98,7 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmLocalUnixMakefileGenerator3::Configure()
|
void cmLocalUnixMakefileGenerator3::Generate()
|
||||||
{
|
{
|
||||||
// Compute the path to use when referencing the current output
|
// Compute the path to use when referencing the current output
|
||||||
// directory from the top output directory.
|
// directory from the top output directory.
|
||||||
|
@ -112,12 +112,7 @@ void cmLocalUnixMakefileGenerator3::Configure()
|
||||||
{
|
{
|
||||||
this->HomeRelativeOutputPath += "/";
|
this->HomeRelativeOutputPath += "/";
|
||||||
}
|
}
|
||||||
this->cmLocalGenerator::Configure();
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
void cmLocalUnixMakefileGenerator3::Generate()
|
|
||||||
{
|
|
||||||
// Store the configuration name that will be generated.
|
// Store the configuration name that will be generated.
|
||||||
if(const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE"))
|
if(const char* config = this->Makefile->GetDefinition("CMAKE_BUILD_TYPE"))
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,12 +39,6 @@ public:
|
||||||
cmState::Snapshot snapshot);
|
cmState::Snapshot snapshot);
|
||||||
virtual ~cmLocalUnixMakefileGenerator3();
|
virtual ~cmLocalUnixMakefileGenerator3();
|
||||||
|
|
||||||
/**
|
|
||||||
* Process the CMakeLists files for this directory to fill in the
|
|
||||||
* Makefile ivar
|
|
||||||
*/
|
|
||||||
virtual void Configure();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate the makefile for this directory.
|
* Generate the makefile for this directory.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -146,7 +146,7 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator)
|
||||||
this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused();
|
this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused();
|
||||||
this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars();
|
this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars();
|
||||||
|
|
||||||
this->GeneratingBuildSystem = false;
|
this->Configured = false;
|
||||||
this->SuppressWatches = false;
|
this->SuppressWatches = false;
|
||||||
|
|
||||||
// Setup the default include file regular expression (match everything).
|
// Setup the default include file regular expression (match everything).
|
||||||
|
@ -1562,10 +1562,68 @@ void cmMakefile::InitializeFromParent()
|
||||||
this->ImportedTargets = parent->ImportedTargets;
|
this->ImportedTargets = parent->ImportedTargets;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2)
|
//----------------------------------------------------------------------------
|
||||||
|
class cmMakefileCurrent
|
||||||
{
|
{
|
||||||
lg2->GetMakefile()->InitializeFromParent();
|
cmGlobalGenerator* GG;
|
||||||
std::string currentStart = lg2->GetMakefile()->GetCurrentSourceDirectory();
|
cmMakefile* MF;
|
||||||
|
cmState::Snapshot Snapshot;
|
||||||
|
public:
|
||||||
|
cmMakefileCurrent(cmMakefile* mf)
|
||||||
|
{
|
||||||
|
this->GG = mf->GetGlobalGenerator();
|
||||||
|
this->MF = this->GG->GetCurrentMakefile();
|
||||||
|
this->Snapshot = this->GG->GetCMakeInstance()->GetCurrentSnapshot();
|
||||||
|
this->GG->GetCMakeInstance()->SetCurrentSnapshot(
|
||||||
|
this->GG->GetCMakeInstance()->GetCurrentSnapshot());
|
||||||
|
this->GG->SetCurrentMakefile(mf);
|
||||||
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
|
this->GG->GetFileLockPool().PushFileScope();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
~cmMakefileCurrent()
|
||||||
|
{
|
||||||
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
|
this->GG->GetFileLockPool().PopFileScope();
|
||||||
|
#endif
|
||||||
|
this->GG->SetCurrentMakefile(this->MF);
|
||||||
|
this->GG->GetCMakeInstance()->SetCurrentSnapshot(this->Snapshot);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void cmMakefile::Configure()
|
||||||
|
{
|
||||||
|
cmMakefileCurrent cmf(this);
|
||||||
|
|
||||||
|
// make sure the CMakeFiles dir is there
|
||||||
|
std::string filesDir = this->StateSnapshot.GetCurrentBinaryDirectory();
|
||||||
|
filesDir += cmake::GetCMakeFilesDirectory();
|
||||||
|
cmSystemTools::MakeDirectory(filesDir.c_str());
|
||||||
|
|
||||||
|
std::string currentStart = this->StateSnapshot.GetCurrentSourceDirectory();
|
||||||
|
currentStart += "/CMakeLists.txt";
|
||||||
|
assert(cmSystemTools::FileExists(currentStart.c_str(), true));
|
||||||
|
this->ProcessBuildsystemFile(currentStart.c_str());
|
||||||
|
|
||||||
|
// at the end handle any old style subdirs
|
||||||
|
std::vector<cmMakefile*> subdirs = this->UnConfiguredDirectories;
|
||||||
|
|
||||||
|
// for each subdir recurse
|
||||||
|
std::vector<cmMakefile*>::iterator sdi = subdirs.begin();
|
||||||
|
for (; sdi != subdirs.end(); ++sdi)
|
||||||
|
{
|
||||||
|
this->ConfigureSubDirectory(*sdi);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->AddCMakeDependFilesFromUser();
|
||||||
|
this->SetConfigured();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmMakefile::ConfigureSubDirectory(cmMakefile *mf)
|
||||||
|
{
|
||||||
|
mf->InitializeFromParent();
|
||||||
|
std::string currentStart = mf->GetCurrentSourceDirectory();
|
||||||
if (this->GetCMakeInstance()->GetDebugOutput())
|
if (this->GetCMakeInstance()->GetDebugOutput())
|
||||||
{
|
{
|
||||||
std::string msg=" Entering ";
|
std::string msg=" Entering ";
|
||||||
|
@ -1603,11 +1661,12 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2)
|
||||||
// NEW behavior prints the error.
|
// NEW behavior prints the error.
|
||||||
this->IssueMessage(cmake::FATAL_ERROR, e.str());
|
this->IssueMessage(cmake::FATAL_ERROR, e.str());
|
||||||
}
|
}
|
||||||
lg2->SetConfiguredCMP0014(true);
|
mf->SetConfigured();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// finally configure the subdir
|
// finally configure the subdir
|
||||||
lg2->Configure();
|
mf->Configure();
|
||||||
|
|
||||||
if (this->GetCMakeInstance()->GetDebugOutput())
|
if (this->GetCMakeInstance()->GetDebugOutput())
|
||||||
{
|
{
|
||||||
std::string msg=" Returning to ";
|
std::string msg=" Returning to ";
|
||||||
|
@ -1635,17 +1694,23 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath,
|
||||||
->MakeLocalGenerator(newSnapshot, this->LocalGenerator);
|
->MakeLocalGenerator(newSnapshot, this->LocalGenerator);
|
||||||
this->GetGlobalGenerator()->AddLocalGenerator(lg2);
|
this->GetGlobalGenerator()->AddLocalGenerator(lg2);
|
||||||
|
|
||||||
|
cmMakefile* subMf = lg2->GetMakefile();
|
||||||
|
|
||||||
// set the subdirs start dirs
|
// set the subdirs start dirs
|
||||||
lg2->GetMakefile()->SetCurrentSourceDirectory(srcPath);
|
subMf->SetCurrentSourceDirectory(srcPath);
|
||||||
lg2->GetMakefile()->SetCurrentBinaryDirectory(binPath);
|
subMf->SetCurrentBinaryDirectory(binPath);
|
||||||
if(excludeFromAll)
|
if(excludeFromAll)
|
||||||
{
|
{
|
||||||
lg2->GetMakefile()->SetProperty("EXCLUDE_FROM_ALL", "TRUE");
|
subMf->SetProperty("EXCLUDE_FROM_ALL", "TRUE");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (immediate)
|
if (immediate)
|
||||||
{
|
{
|
||||||
this->ConfigureSubDirectory(lg2);
|
this->ConfigureSubDirectory(subMf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->UnConfiguredDirectories.push_back(subMf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -270,10 +270,12 @@ public:
|
||||||
bool excludeFromAll,
|
bool excludeFromAll,
|
||||||
bool immediate);
|
bool immediate);
|
||||||
|
|
||||||
|
void Configure();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure a subdirectory
|
* Configure a subdirectory
|
||||||
*/
|
*/
|
||||||
void ConfigureSubDirectory(cmLocalGenerator *);
|
void ConfigureSubDirectory(cmMakefile* mf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add an include directory to the build.
|
* Add an include directory to the build.
|
||||||
|
@ -782,8 +784,8 @@ public:
|
||||||
return this->CompileDefinitionsEntries;
|
return this->CompileDefinitionsEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsGeneratingBuildSystem() const { return this->GeneratingBuildSystem; }
|
bool IsConfigured() const { return this->Configured; }
|
||||||
void SetGeneratingBuildSystem(){ this->GeneratingBuildSystem = true; }
|
void SetConfigured(){ this->Configured = true; }
|
||||||
|
|
||||||
void AddQtUiFileWithOptions(cmSourceFile *sf);
|
void AddQtUiFileWithOptions(cmSourceFile *sf);
|
||||||
std::vector<cmSourceFile*> GetQtUiFilesWithOptions() const;
|
std::vector<cmSourceFile*> GetQtUiFilesWithOptions() const;
|
||||||
|
@ -921,6 +923,8 @@ private:
|
||||||
mutable cmsys::RegularExpression cmAtVarRegex;
|
mutable cmsys::RegularExpression cmAtVarRegex;
|
||||||
mutable cmsys::RegularExpression cmNamedCurly;
|
mutable cmsys::RegularExpression cmNamedCurly;
|
||||||
|
|
||||||
|
std::vector<cmMakefile*> UnConfiguredDirectories;
|
||||||
|
|
||||||
cmPropertyMap Properties;
|
cmPropertyMap Properties;
|
||||||
|
|
||||||
// Unused variable flags
|
// Unused variable flags
|
||||||
|
@ -995,7 +999,7 @@ private:
|
||||||
long line,
|
long line,
|
||||||
bool removeEmpty,
|
bool removeEmpty,
|
||||||
bool replaceAt) const;
|
bool replaceAt) const;
|
||||||
bool GeneratingBuildSystem;
|
bool Configured;
|
||||||
/**
|
/**
|
||||||
* Old version of GetSourceFileWithOutput(const std::string&) kept for
|
* Old version of GetSourceFileWithOutput(const std::string&) kept for
|
||||||
* backward-compatibility. It implements a linear search and support
|
* backward-compatibility. It implements a linear search and support
|
||||||
|
|
|
@ -1215,7 +1215,7 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory,
|
||||||
cmLocalGenerator* lg = gg.MakeLocalGenerator();
|
cmLocalGenerator* lg = gg.MakeLocalGenerator();
|
||||||
lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory);
|
lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory);
|
||||||
lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory);
|
lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory);
|
||||||
gg.SetCurrentLocalGenerator(lg);
|
gg.SetCurrentMakefile(lg->GetMakefile());
|
||||||
|
|
||||||
this->ReadAutogenInfoFile(lg->GetMakefile(), targetDirectory, config);
|
this->ReadAutogenInfoFile(lg->GetMakefile(), targetDirectory, config);
|
||||||
this->ReadOldMocDefinitionsFile(lg->GetMakefile(), targetDirectory);
|
this->ReadOldMocDefinitionsFile(lg->GetMakefile(), targetDirectory);
|
||||||
|
|
|
@ -764,7 +764,7 @@ void cmTarget::GetSourceFiles(std::vector<std::string> &files,
|
||||||
"SOURCES")
|
"SOURCES")
|
||||||
!= debugProperties.end();
|
!= debugProperties.end();
|
||||||
|
|
||||||
if (this->Makefile->IsGeneratingBuildSystem())
|
if (this->Makefile->IsConfigured())
|
||||||
{
|
{
|
||||||
this->DebugSourcesDone = true;
|
this->DebugSourcesDone = true;
|
||||||
}
|
}
|
||||||
|
@ -2106,7 +2106,7 @@ cmTarget::GetIncludeDirectories(const std::string& config,
|
||||||
"INCLUDE_DIRECTORIES")
|
"INCLUDE_DIRECTORIES")
|
||||||
!= debugProperties.end();
|
!= debugProperties.end();
|
||||||
|
|
||||||
if (this->Makefile->IsGeneratingBuildSystem())
|
if (this->Makefile->IsConfigured())
|
||||||
{
|
{
|
||||||
this->DebugIncludesDone = true;
|
this->DebugIncludesDone = true;
|
||||||
}
|
}
|
||||||
|
@ -2277,7 +2277,7 @@ void cmTarget::GetCompileOptions(std::vector<std::string> &result,
|
||||||
"COMPILE_OPTIONS")
|
"COMPILE_OPTIONS")
|
||||||
!= debugProperties.end();
|
!= debugProperties.end();
|
||||||
|
|
||||||
if (this->Makefile->IsGeneratingBuildSystem())
|
if (this->Makefile->IsConfigured())
|
||||||
{
|
{
|
||||||
this->DebugCompileOptionsDone = true;
|
this->DebugCompileOptionsDone = true;
|
||||||
}
|
}
|
||||||
|
@ -2348,7 +2348,7 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list,
|
||||||
"COMPILE_DEFINITIONS")
|
"COMPILE_DEFINITIONS")
|
||||||
!= debugProperties.end();
|
!= debugProperties.end();
|
||||||
|
|
||||||
if (this->Makefile->IsGeneratingBuildSystem())
|
if (this->Makefile->IsConfigured())
|
||||||
{
|
{
|
||||||
this->DebugCompileDefinitionsDone = true;
|
this->DebugCompileDefinitionsDone = true;
|
||||||
}
|
}
|
||||||
|
@ -2449,7 +2449,7 @@ void cmTarget::GetCompileFeatures(std::vector<std::string> &result,
|
||||||
"COMPILE_FEATURES")
|
"COMPILE_FEATURES")
|
||||||
!= debugProperties.end();
|
!= debugProperties.end();
|
||||||
|
|
||||||
if (this->Makefile->IsGeneratingBuildSystem())
|
if (this->Makefile->IsConfigured())
|
||||||
{
|
{
|
||||||
this->DebugCompileFeaturesDone = true;
|
this->DebugCompileFeaturesDone = true;
|
||||||
}
|
}
|
||||||
|
@ -4857,7 +4857,7 @@ cmTarget::ReportPropertyOrigin(const std::string &p,
|
||||||
p)
|
p)
|
||||||
!= debugProperties.end();
|
!= debugProperties.end();
|
||||||
|
|
||||||
if (this->Makefile->IsGeneratingBuildSystem())
|
if (this->Makefile->IsConfigured())
|
||||||
{
|
{
|
||||||
this->DebugCompatiblePropertiesDone[p] = true;
|
this->DebugCompatiblePropertiesDone[p] = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,12 +113,7 @@ static cmMakefile* cmakemainGetMakefile(void *clientdata)
|
||||||
cmGlobalGenerator* gg=cm->GetGlobalGenerator();
|
cmGlobalGenerator* gg=cm->GetGlobalGenerator();
|
||||||
if (gg)
|
if (gg)
|
||||||
{
|
{
|
||||||
cmLocalGenerator* lg=gg->GetCurrentLocalGenerator();
|
return gg->GetCurrentMakefile();
|
||||||
if (lg)
|
|
||||||
{
|
|
||||||
cmMakefile* mf = lg->GetMakefile();
|
|
||||||
return mf;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue