浏览代码

cmGlobalGenerator: Require a snapshot to create a local generator.

Stephen Kelly 10 年之前
父节点
当前提交
acb006229d

+ 2 - 1
Source/CPack/cmCPackGenerator.cxx

@@ -716,7 +716,8 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
         cm.AddCMakePaths();
         cm.SetProgressCallback(cmCPackGeneratorProgress, this);
         cmGlobalGenerator gg(&cm);
-        cmsys::auto_ptr<cmLocalGenerator> lg(gg.MakeLocalGenerator());
+        cmsys::auto_ptr<cmLocalGenerator> lg(
+              gg.MakeLocalGenerator(cm.GetCurrentSnapshot()));
         cmMakefile *mf = lg->GetMakefile();
         std::string realInstallDirectory = tempInstallDirectory;
         if ( !installSubDirectory.empty() && installSubDirectory != "/" )

+ 2 - 1
Source/CPack/cpack.cxx

@@ -202,7 +202,8 @@ int main (int argc, char const* const* argv)
   cminst.SetHomeOutputDirectory("");
   cminst.GetState()->RemoveUnscriptableCommands();
   cmGlobalGenerator cmgg(&cminst);
-  cmsys::auto_ptr<cmLocalGenerator> cmlg(cmgg.MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> cmlg(
+        cmgg.MakeLocalGenerator(cminst.GetCurrentSnapshot()));
   cmMakefile* globalMF = cmlg->GetMakefile();
 #if defined(__CYGWIN__)
   globalMF->AddDefinition("CMAKE_LEGACY_CYGWIN_WIN32", "0");

+ 2 - 1
Source/CTest/cmCTestLaunch.cxx

@@ -738,7 +738,8 @@ void cmCTestLaunch::LoadConfig()
   cm.SetHomeDirectory("");
   cm.SetHomeOutputDirectory("");
   cmGlobalGenerator gg(&cm);
-  cmsys::auto_ptr<cmLocalGenerator> lg(gg.MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> lg(
+        gg.MakeLocalGenerator(cm.GetCurrentSnapshot()));
   cmMakefile* mf = lg->GetMakefile();
   std::string fname = this->LogDir;
   fname += "CTestLaunchConfig.cmake";

+ 2 - 1
Source/CTest/cmCTestScriptHandler.cxx

@@ -341,7 +341,8 @@ void cmCTestScriptHandler::CreateCMake()
   this->CMake->AddCMakePaths();
   this->GlobalGenerator = new cmGlobalGenerator(this->CMake);
 
-  this->LocalGenerator = this->GlobalGenerator->MakeLocalGenerator();
+  cmState::Snapshot snapshot = this->CMake->GetCurrentSnapshot();
+  this->LocalGenerator = this->GlobalGenerator->MakeLocalGenerator(snapshot);
   this->Makefile = this->LocalGenerator->GetMakefile();
 
   this->CMake->SetProgressCallback(ctestScriptProgressCallback, this->CTest);

+ 2 - 1
Source/CTest/cmCTestTestHandler.cxx

@@ -1592,7 +1592,8 @@ void cmCTestTestHandler::GetListOfTests()
   cm.SetHomeDirectory("");
   cm.SetHomeOutputDirectory("");
   cmGlobalGenerator gg(&cm);
-  cmsys::auto_ptr<cmLocalGenerator> lg(gg.MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> lg(
+        gg.MakeLocalGenerator(cm.GetCurrentSnapshot()));
   cmMakefile *mf = lg->GetMakefile();
   mf->AddDefinition("CTEST_CONFIGURATION_TYPE",
     this->CTest->GetConfigType().c_str());

+ 2 - 1
Source/cmCTest.cxx

@@ -520,7 +520,8 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command)
   cm.SetHomeDirectory("");
   cm.SetHomeOutputDirectory("");
   cmGlobalGenerator gg(&cm);
-  cmsys::auto_ptr<cmLocalGenerator> lg(gg.MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> lg(
+        gg.MakeLocalGenerator(cm.GetCurrentSnapshot()));
   cmMakefile *mf = lg->GetMakefile();
   if ( !this->ReadCustomConfigurationFileTree(this->BinaryDir.c_str(), mf) )
     {

+ 2 - 6
Source/cmGlobalGenerator.cxx

@@ -1128,7 +1128,8 @@ void cmGlobalGenerator::Configure()
   this->ClearGeneratorMembers();
 
   // start with this directory
-  cmLocalGenerator *lg = this->MakeLocalGenerator();
+  cmLocalGenerator *lg = this->MakeLocalGenerator(
+        this->GetCMakeInstance()->GetCurrentSnapshot());
   this->Makefiles.push_back(lg->GetMakefile());
   this->LocalGenerators.push_back(lg);
 
@@ -1988,11 +1989,6 @@ void cmGlobalGenerator::EnableInstallTarget()
 cmLocalGenerator *
 cmGlobalGenerator::MakeLocalGenerator(cmState::Snapshot snapshot)
 {
-  if (!snapshot.IsValid())
-    {
-    snapshot = this->CMakeInstance->GetCurrentSnapshot();
-    }
-
   return this->CreateLocalGenerator(snapshot);
 }
 

+ 2 - 1
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -585,8 +585,9 @@ void cmGlobalUnixMakefileGenerator3
       }
     else
       {
+      cmState::Snapshot snapshot = this->CMakeInstance->GetCurrentSnapshot();
       lg = static_cast<cmLocalUnixMakefileGenerator3 *>
-        (this->MakeLocalGenerator());
+        (this->MakeLocalGenerator(snapshot));
       // set the Start directories
       lg->GetMakefile()->SetCurrentSourceDirectory
         (this->CMakeInstance->GetHomeDirectory());

+ 2 - 1
Source/cmGraphVizWriter.cxx

@@ -68,7 +68,8 @@ void cmGraphVizWriter::ReadSettings(const char* settingsFileName,
   cm.SetHomeDirectory("");
   cm.SetHomeOutputDirectory("");
   cmGlobalGenerator ggi(&cm);
-  cmsys::auto_ptr<cmLocalGenerator> lg(ggi.MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> lg(
+        ggi.MakeLocalGenerator(cm.GetCurrentSnapshot()));
   cmMakefile *mf = lg->GetMakefile();
 
   const char* inFileName = settingsFileName;

+ 2 - 1
Source/cmQtAutoGenerators.cxx

@@ -1217,7 +1217,8 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory,
   cm.SetHomeDirectory(targetDirectory);
   cmGlobalGenerator gg(&cm);
 
-  cmLocalGenerator* lg = gg.MakeLocalGenerator();
+  cmState::Snapshot snapshot = cm.GetCurrentSnapshot();
+  cmLocalGenerator* lg = gg.MakeLocalGenerator(snapshot);
   lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory);
   lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory);
   gg.SetCurrentMakefile(lg->GetMakefile());

+ 8 - 4
Source/cmake.cxx

@@ -429,7 +429,8 @@ void cmake::ReadListFile(const std::vector<std::string>& args,
     std::string homeOutputDir = this->GetHomeOutputDirectory();
     this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory());
     this->SetHomeOutputDirectory(cmSystemTools::GetCurrentWorkingDirectory());
-    cmsys::auto_ptr<cmLocalGenerator> lg(gg->MakeLocalGenerator());
+    cmState::Snapshot snapshot = this->GetCurrentSnapshot();
+    cmsys::auto_ptr<cmLocalGenerator> lg(gg->MakeLocalGenerator(snapshot));
     lg->GetMakefile()->SetCurrentBinaryDirectory
       (cmSystemTools::GetCurrentWorkingDirectory());
     lg->GetMakefile()->SetCurrentSourceDirectory
@@ -469,8 +470,9 @@ bool cmake::FindPackage(const std::vector<std::string>& args)
   cmGlobalGenerator *gg = new cmGlobalGenerator(this);
   this->SetGlobalGenerator(gg);
 
+  cmState::Snapshot snapshot = this->GetCurrentSnapshot();
   // read in the list file to fill the cache
-  cmsys::auto_ptr<cmLocalGenerator> lg(gg->MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> lg(gg->MakeLocalGenerator(snapshot));
   cmMakefile* mf = lg->GetMakefile();
   mf->SetCurrentBinaryDirectory
     (cmSystemTools::GetCurrentWorkingDirectory());
@@ -2059,7 +2061,8 @@ int cmake::CheckBuildSystem()
   cm.SetHomeDirectory("");
   cm.SetHomeOutputDirectory("");
   cmGlobalGenerator gg(&cm);
-  cmsys::auto_ptr<cmLocalGenerator> lg(gg.MakeLocalGenerator());
+  cmsys::auto_ptr<cmLocalGenerator> lg(
+        gg.MakeLocalGenerator(cm.GetCurrentSnapshot()));
   cmMakefile* mf = lg->GetMakefile();
   if(!mf->ReadListFile(this->CheckBuildSystemArgument.c_str()) ||
      cmSystemTools::GetErrorOccuredFlag())
@@ -2089,7 +2092,8 @@ int cmake::CheckBuildSystem()
       ggd(this->CreateGlobalGenerator(genName));
     if(ggd.get())
       {
-      cmsys::auto_ptr<cmLocalGenerator> lgd(ggd->MakeLocalGenerator());
+      cmsys::auto_ptr<cmLocalGenerator> lgd(
+            ggd->MakeLocalGenerator(cm.GetCurrentSnapshot()));
       lgd->ClearDependencies(mf, verbose);
       }
     }

+ 3 - 1
Source/cmcmd.cxx

@@ -768,7 +768,9 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
       if(cmGlobalGenerator* ggd = cm.CreateGlobalGenerator(gen))
         {
         cm.SetGlobalGenerator(ggd);
-        cmsys::auto_ptr<cmLocalGenerator> lgd(ggd->MakeLocalGenerator());
+        cmState::Snapshot snapshot = cm.GetCurrentSnapshot();
+        cmsys::auto_ptr<cmLocalGenerator> lgd(
+              ggd->MakeLocalGenerator(snapshot));
         lgd->GetMakefile()->SetCurrentSourceDirectory(startDir);
         lgd->GetMakefile()->SetCurrentBinaryDirectory(startOutDir);