summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmake.cxx31
-rw-r--r--Source/cmake.h4
2 files changed, 35 insertions, 0 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 636c766..ffb6ff2 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -65,6 +65,8 @@
# include <sys/resource.h>
#endif
+#include <sys/stat.h> // struct stat
+
#include <memory> // auto_ptr
void cmNeedBackwardsCompatibility(const std::string& variable,
@@ -1107,6 +1109,9 @@ int cmake::Configure()
cmCacheManager::STRING);
}
+ this->TruncateOutputLog("CMakeOutput.log");
+ this->TruncateOutputLog("CMakeError.log");
+
// no generator specified on the command line
if(!m_GlobalGenerator)
{
@@ -1696,3 +1701,29 @@ int cmake::CheckBuildSystem()
// No need to rerun.
return 0;
}
+
+//----------------------------------------------------------------------------
+void cmake::TruncateOutputLog(const char* fname)
+{
+ std::string fullPath = this->GetHomeOutputDirectory();
+ fullPath += "/";
+ fullPath += fname;
+ struct stat st;
+ if ( ::stat(fullPath.c_str(), &st) )
+ {
+ return;
+ }
+ if ( !m_CacheManager->GetCacheValue("CMAKE_CACHEFILE_DIR") )
+ {
+ cmSystemTools::RemoveFile(fullPath.c_str());
+ return;
+ }
+ size_t fsize = st.st_size;
+ const size_t maxFileSize = 50 * 1024;
+ if ( fsize < maxFileSize )
+ {
+ //TODO: truncate file
+ return;
+ }
+}
+
diff --git a/Source/cmake.h b/Source/cmake.h
index 3f92de4..4e61c5f 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -283,6 +283,10 @@ protected:
bool CacheVersionMatches();
///! read in a cmake list file to initialize the cache
void ReadListFile(const char *path);
+
+ ///! Check if CMAKE_CACHEFILE_DIR is set. If it is not, delete the log file.
+ /// If it is set, truncate it to 50kb
+ void TruncateOutputLog(const char* fname);
/**
* Method called to check build system integrity at build time.