diff options
author | David Cole <david.cole@kitware.com> | 2012-05-17 18:59:39 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2012-05-17 18:59:39 (GMT) |
commit | e1c5691a0facad84a54f651b3755322449251a0a (patch) | |
tree | 15c1f73bd3c389e62740c72da7e33972cb1badb3 | |
parent | 3e595b9ee597cde73c001bfa2947eef619fdaa95 (diff) | |
parent | b3b095a933d7f355fcdd57c041c771b7618c9717 (diff) | |
download | CMake-e1c5691a0facad84a54f651b3755322449251a0a.zip CMake-e1c5691a0facad84a54f651b3755322449251a0a.tar.gz CMake-e1c5691a0facad84a54f651b3755322449251a0a.tar.bz2 |
Merge topic 'cmake-trace-elseif'
b3b095a Print any evaluated 'elseif'/'else' commands in trace mode (#13220)
-rw-r--r-- | Source/cmIfCommand.cxx | 13 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 30 | ||||
-rw-r--r-- | Source/cmMakefile.h | 5 |
3 files changed, 36 insertions, 12 deletions
diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 4eed477..ffc0f35 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -74,6 +74,13 @@ IsFunctionBlocked(const cmListFileFunction& lff, { this->IsBlocking = this->HasRun; this->HasRun = true; + + // if trace is enabled, print a (trivially) evaluated "else" + // statement + if(!this->IsBlocking && mf.GetCMakeInstance()->GetTrace()) + { + mf.PrintCommandTrace(this->Functions[c]); + } } else if (scopeDepth == 0 && !cmSystemTools::Strucmp (this->Functions[c].Name.c_str(),"elseif")) @@ -88,6 +95,12 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefileCall stack_manager(&mf, this->Functions[c], status); static_cast<void>(stack_manager); + // if trace is enabled, print the evaluated "elseif" statement + if(mf.GetCMakeInstance()->GetTrace()) + { + mf.PrintCommandTrace(this->Functions[c]); + } + std::string errorString; std::vector<std::string> expandedArguments; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 0a709ae..a60896f 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -354,6 +354,22 @@ bool cmMakefile::GetBacktrace(cmListFileBacktrace& backtrace) const } //---------------------------------------------------------------------------- +void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) +{ + cmOStringStream msg; + msg << lff.FilePath << "(" << lff.Line << "): "; + msg << lff.Name << "("; + for(std::vector<cmListFileArgument>::const_iterator i = + lff.Arguments.begin(); i != lff.Arguments.end(); ++i) + { + msg << i->Value; + msg << " "; + } + msg << ")"; + cmSystemTools::Message(msg.str().c_str()); +} + +//---------------------------------------------------------------------------- bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, cmExecutionStatus &status) { @@ -385,20 +401,10 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, || pcmd->IsScriptable())) { - // if trace is one, print out invoke information + // if trace is enabled, print out invoke information if(this->GetCMakeInstance()->GetTrace()) { - cmOStringStream msg; - msg << lff.FilePath << "(" << lff.Line << "): "; - msg << lff.Name << "("; - for(std::vector<cmListFileArgument>::const_iterator i = - lff.Arguments.begin(); i != lff.Arguments.end(); ++i) - { - msg << i->Value; - msg << " "; - } - msg << ")"; - cmSystemTools::Message(msg.str().c_str()); + this->PrintCommandTrace(lff); } // Try invoking the command. if(!pcmd->InvokeInitialPass(lff.Arguments,status) || diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 9fc64d6..8a0088b 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -701,6 +701,11 @@ public: #endif /** + * Print a command's invocation + */ + void PrintCommandTrace(const cmListFileFunction& lff); + + /** * Execute a single CMake command. Returns true if the command * succeeded or false if it failed. */ |