Browse Source

cmCacheManager: Port away from cmake instance.

Stephen Kelly 10 years ago
parent
commit
435a2f3ccb
4 changed files with 24 additions and 8 deletions
  1. 1 3
      Source/cmCacheManager.cxx
  2. 1 2
      Source/cmCacheManager.h
  3. 1 0
      Source/cmState.cxx
  4. 21 3
      Source/cmake.cxx

+ 1 - 3
Source/cmCacheManager.cxx

@@ -21,11 +21,10 @@
 #include <cmsys/FStream.hxx>
 #include <cmsys/RegularExpression.hxx>
 
-cmCacheManager::cmCacheManager(cmake* cm)
+cmCacheManager::cmCacheManager()
 {
   this->CacheMajorVersion = 0;
   this->CacheMinorVersion = 0;
-  this->CMakeInstance = cm;
 }
 
 static bool ParseEntryWithoutType(const std::string& entry,
@@ -671,7 +670,6 @@ void cmCacheManager::AddCacheEntry(const std::string& key,
     }
   e.SetProperty("HELPSTRING", helpString? helpString :
                 "(This variable does not exist and should not be used)");
-  this->CMakeInstance->UnwatchUnusedCli(key);
 }
 
 bool cmCacheManager::CacheIterator::IsAtEnd() const

+ 1 - 2
Source/cmCacheManager.h

@@ -17,7 +17,6 @@
 #include "cmState.h"
 
 class cmMarkAsAdvancedCommand;
-class cmake;
 
 /** \class cmCacheManager
  * \brief Control class for cmake's cache
@@ -28,7 +27,7 @@ class cmake;
 class cmCacheManager
 {
 public:
-  cmCacheManager(cmake* cm);
+  cmCacheManager();
   class CacheIterator;
   friend class cmCacheManager::CacheIterator;
 

+ 1 - 0
Source/cmState.cxx

@@ -252,6 +252,7 @@ void cmState::AddCacheEntry(const std::string& key, const char* value,
 {
   this->CMakeInstance->GetCacheManager()->AddCacheEntry(key, value,
                                                         helpString, type);
+  this->CMakeInstance->UnwatchUnusedCli(key);
 }
 
 void cmState::RemoveCacheEntry(std::string const& key)

+ 21 - 3
Source/cmake.cxx

@@ -151,7 +151,7 @@ cmake::cmake()
 #endif
 
   this->Verbose = false;
-  this->CacheManager = new cmCacheManager(this);
+  this->CacheManager = new cmCacheManager;
   this->GlobalGenerator = 0;
   this->ProgressCallback = 0;
   this->ProgressCallbackClientData = 0;
@@ -1760,12 +1760,30 @@ bool cmake::LoadCache(const std::string& path, bool internal,
                 std::set<std::string>& excludes,
                 std::set<std::string>& includes)
 {
-  return this->State->LoadCache(path, internal, excludes, includes);
+  bool result = this->State->LoadCache(path, internal, excludes, includes);
+  static const char* entries[] = {"CMAKE_CACHE_MAJOR_VERSION",
+                                  "CMAKE_CACHE_MINOR_VERSION"};
+  for (const char* const* nameIt = cmArrayBegin(entries);
+       nameIt != cmArrayEnd(entries); ++nameIt)
+    {
+    this->UnwatchUnusedCli(*nameIt);
+    }
+  return result;
 }
 
 bool cmake::SaveCache(const std::string& path)
 {
-  return this->State->SaveCache(path);
+  bool result = this->State->SaveCache(path);
+  static const char* entries[] = {"CMAKE_CACHE_MAJOR_VERSION",
+                                  "CMAKE_CACHE_MINOR_VERSION",
+                                  "CMAKE_CACHE_PATCH_VERSION",
+                                  "CMAKE_CACHEFILE_DIR"};
+  for (const char* const* nameIt = cmArrayBegin(entries);
+       nameIt != cmArrayEnd(entries); ++nameIt)
+    {
+    this->UnwatchUnusedCli(*nameIt);
+    }
+  return result;
 }
 
 bool cmake::DeleteCache(const std::string& path)