diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-06-01 15:59:22 -0400 |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-06-01 15:59:22 -0400 |
commit | 36121b92345993a338129ca535cfcc7bc5de2c5c (patch) | |
tree | f9bf4675c9f295f3c2c9a2270359b7ea5b63c88f /Source/CTest/cmCTestBuildHandler.h | |
parent | 46e5b9afe2e155aebc4eac0fed80ef98b23a0f7d (diff) | |
download | cmake-36121b92345993a338129ca535cfcc7bc5de2c5c.tar.gz |
ENH: Streamline build process. This reduces the memory footprint, since only some number of lines of output will be in memory at the time. Also, this will report the build errors and warnings as it goes through the build
Diffstat (limited to 'Source/CTest/cmCTestBuildHandler.h')
-rw-r--r-- | Source/CTest/cmCTestBuildHandler.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestBuildHandler.h b/Source/CTest/cmCTestBuildHandler.h index 575068e290..fdeac5c57f 100644 --- a/Source/CTest/cmCTestBuildHandler.h +++ b/Source/CTest/cmCTestBuildHandler.h @@ -44,6 +44,18 @@ public: void PopulateCustomVectors(cmMakefile *mf); private: + //! Run command specialized for make and configure. Returns process status + // and retVal is return value or exception. + int RunMakeCommand(const char* command, + int* retVal, const char* dir, int timeout, + std::ofstream& ofs); + + enum { + b_REGULAR_LINE, + b_WARNING_LINE, + b_ERROR_LINE + }; + class cmCTestCompileErrorWarningRex { public: @@ -79,6 +91,36 @@ private: std::vector<cmStdString> m_CustomWarningMatches; std::vector<cmStdString> m_CustomWarningExceptions; std::vector<cmCTestCompileErrorWarningRex> m_ErrorWarningFileLineRegex; + + std::vector<cmsys::RegularExpression> m_ErrorMatchRegex; + std::vector<cmsys::RegularExpression> m_ErrorExceptionRegex; + std::vector<cmsys::RegularExpression> m_WarningMatchRegex; + std::vector<cmsys::RegularExpression> m_WarningExceptionRegex; + + void ProcessBuffer(const char* data, int length, size_t& tick, size_t tick_len, + std::ofstream& ofs); + int ProcessSingleLine(const char* data); + + typedef std::deque<char> t_BuildProcessingQueueType; + t_BuildProcessingQueueType m_BuildProcessingQueue; + t_BuildProcessingQueueType::iterator m_BuildProcessingQueueLocation; + size_t m_BuildOutputLogSize; + std::vector<char> m_CurrentProcessingLine; + + cmStdString m_SimplifySourceDir; + cmStdString m_SimplifyBuildDir; + size_t m_OutputLineCounter; + typedef std::vector<cmCTestBuildErrorWarning> t_ErrorsAndWarningsVector; + t_ErrorsAndWarningsVector m_ErrorsAndWarnings; + t_ErrorsAndWarningsVector::iterator m_LastErrorOrWarning; + size_t m_PostContextCount; + size_t m_MaxPreContext; + size_t m_MaxPostContext; + std::deque<cmStdString> m_PreContext; + + int m_TotalErrors; + int m_TotalWarnings; + char m_LastTickChar; }; #endif |