Print any evaluated 'elseif'/'else' commands in trace mode (#13220)
In trace mode ('--trace'), any 'elseif' or 'else' commands that are evaluated as part of a conditional block will be printed. Previously, only the opening 'if' command of a conditional block was printed.
This commit is contained in:
parent
75c0304a9e
commit
b3b095a933
|
@ -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;
|
||||
|
|
|
@ -353,6 +353,22 @@ bool cmMakefile::GetBacktrace(cmListFileBacktrace& backtrace) const
|
|||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
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) ||
|
||||
|
|
|
@ -700,6 +700,11 @@ public:
|
|||
std::vector<cmSourceGroup> &groups);
|
||||
#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.
|
||||
|
|
Loading…
Reference in New Issue