summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2005-03-18 15:41:41 (GMT)
committerKen Martin <ken.martin@kitware.com>2005-03-18 15:41:41 (GMT)
commit345cf0401235a1fd64bb9b1c353e0e3fc848d666 (patch)
tree6c1862e3516cd436f3068221ae9fcc11144724b8 /Source/cmGlobalGenerator.cxx
parent1f9df24ba7e76cbd7ecc1816a9f8d46b61816e95 (diff)
downloadCMake-345cf0401235a1fd64bb9b1c353e0e3fc848d666.zip
CMake-345cf0401235a1fd64bb9b1c353e0e3fc848d666.tar.gz
CMake-345cf0401235a1fd64bb9b1c353e0e3fc848d666.tar.bz2
ENH: big change that includes immediate subdir support, removing the notion of inherited commands, makefiles no longer read in the parent makefiles but instead inherit thier parent makefiles current settings
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r--Source/cmGlobalGenerator.cxx90
1 files changed, 43 insertions, 47 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 9dc56c8..8984831 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -18,7 +18,6 @@
#include "cmLocalGenerator.h"
#include "cmake.h"
#include "cmMakefile.h"
-#include "cmSubDirectory.h"
#include <stdlib.h> // required for atof
@@ -492,13 +491,24 @@ void cmGlobalGenerator::Configure()
m_LocalGenerators.push_back(lg);
// set the Start directories
- lg->GetMakefile()->SetStartDirectory(m_CMakeInstance->GetStartDirectory());
- lg->GetMakefile()->SetStartOutputDirectory(m_CMakeInstance->GetStartOutputDirectory());
+ lg->GetMakefile()->SetStartDirectory
+ (m_CMakeInstance->GetStartDirectory());
+ lg->GetMakefile()->SetStartOutputDirectory
+ (m_CMakeInstance->GetStartOutputDirectory());
lg->GetMakefile()->MakeStartDirectoriesCurrent();
// now do it
- this->RecursiveConfigure(lg,0.0f,0.9f);
-
+ lg->Configure();
+
+ // update the cache entry for the number of local generators, this is used
+ // for progress
+ char num[100];
+ sprintf(num,"%d",m_LocalGenerators.size());
+ this->GetCMakeInstance()->AddCacheEntry
+ ("CMAKE_NUMBER_OF_LOCAL_GENERATORS", num,
+ "number of local generators",
+ cmCacheManager::INTERNAL);
+
std::set<cmStdString> notFoundMap;
// after it is all done do a ConfigureFinalPass
cmCacheManager* manager = 0;
@@ -506,7 +516,8 @@ void cmGlobalGenerator::Configure()
{
manager = m_LocalGenerators[i]->GetMakefile()->GetCacheManager();
m_LocalGenerators[i]->ConfigureFinalPass();
- cmTargets const& targets = m_LocalGenerators[i]->GetMakefile()->GetTargets();
+ cmTargets const& targets =
+ m_LocalGenerators[i]->GetMakefile()->GetTargets();
for (cmTargets::const_iterator l = targets.begin();
l != targets.end(); l++)
{
@@ -535,7 +546,7 @@ void cmGlobalGenerator::Configure()
}
}
m_CMakeInstance->UpdateProgress("Configuring",
- 0.9f+0.1f*(i+1.0f)/m_LocalGenerators.size());
+ 0.9f+0.1f*(i+1.0f)/m_LocalGenerators.size());
m_LocalGenerators[i]->GetMakefile()->CheckInfiniteLoops();
}
}
@@ -572,52 +583,13 @@ void cmGlobalGenerator::Configure()
}
}
-
-// loop through the directories creating cmLocalGenerators and Configure()
-void cmGlobalGenerator::RecursiveConfigure(cmLocalGenerator *lg,
- float startProgress,
- float endProgress)
-{
- // configure the current directory
- lg->Configure();
-
- // get all the subdirectories
- std::vector<cmSubDirectory> subdirs =
- lg->GetMakefile()->GetSubDirectories();
-
- float progressPiece = (endProgress - startProgress)/(1.0f+subdirs.size());
- m_CMakeInstance->UpdateProgress("Configuring",
- startProgress + progressPiece);
-
- // for each subdir recurse
- std::vector<cmSubDirectory>::const_iterator sdi = subdirs.begin();
- int i;
- for (i = 0; sdi != subdirs.end(); ++sdi, ++i)
- {
- cmLocalGenerator *lg2 = this->CreateLocalGenerator();
- lg2->SetParent(lg);
- m_LocalGenerators.push_back(lg2);
-
- // add the subdir to the start output directory
- lg2->GetMakefile()->SetStartOutputDirectory(sdi->BinaryPath.c_str());
- lg2->SetExcludeAll(!sdi->IncludeTopLevel);
- // add the subdir to the start source directory
- lg2->GetMakefile()->SetStartDirectory(sdi->SourcePath.c_str());
- lg2->GetMakefile()->MakeStartDirectoriesCurrent();
-
- this->RecursiveConfigure(lg2,
- startProgress + (i+1.0f)*progressPiece,
- startProgress + (i+2.0f)*progressPiece);
- }
-}
-
void cmGlobalGenerator::Generate()
{
// For each existing cmLocalGenerator
unsigned int i;
for (i = 0; i < m_LocalGenerators.size(); ++i)
{
- m_LocalGenerators[i]->Generate(true);
+ m_LocalGenerators[i]->Generate();
m_LocalGenerators[i]->GenerateInstallRules();
m_CMakeInstance->UpdateProgress("Generating",
(i+1.0f)/m_LocalGenerators.size());
@@ -753,6 +725,30 @@ int cmGlobalGenerator::Build(
return retVal;
}
+void cmGlobalGenerator::AddLocalGenerator(cmLocalGenerator *lg)
+{
+ m_LocalGenerators.push_back(lg);
+
+ // update progress
+ // estimate how many lg there will be
+ const char *numGenC =
+ m_CMakeInstance->GetCacheManager()->GetCacheValue
+ ("CMAKE_NUMBER_OF_LOCAL_GENERATORS");
+
+ if (!numGenC)
+ {
+ return;
+ }
+
+ int numGen = atoi(numGenC);
+ float prog = 0.9f*m_LocalGenerators.size()/numGen;
+ if (prog > 0.9f)
+ {
+ prog = 0.9f;
+ }
+ m_CMakeInstance->UpdateProgress("Configuring", prog);
+}
+
cmLocalGenerator *cmGlobalGenerator::CreateLocalGenerator()
{
cmLocalGenerator *lg = new cmLocalGenerator;