Merge topic 'cmake-trace-elseif'
b3b095a
Print any evaluated 'elseif'/'else' commands in trace mode (#13220)
This commit is contained in:
commit
e1c5691a0f
|
@ -74,6 +74,13 @@ IsFunctionBlocked(const cmListFileFunction& lff,
|
||||||
{
|
{
|
||||||
this->IsBlocking = this->HasRun;
|
this->IsBlocking = this->HasRun;
|
||||||
this->HasRun = true;
|
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
|
else if (scopeDepth == 0 && !cmSystemTools::Strucmp
|
||||||
(this->Functions[c].Name.c_str(),"elseif"))
|
(this->Functions[c].Name.c_str(),"elseif"))
|
||||||
|
@ -88,6 +95,12 @@ IsFunctionBlocked(const cmListFileFunction& lff,
|
||||||
cmMakefileCall stack_manager(&mf, this->Functions[c], status);
|
cmMakefileCall stack_manager(&mf, this->Functions[c], status);
|
||||||
static_cast<void>(stack_manager);
|
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::string errorString;
|
||||||
|
|
||||||
std::vector<std::string> expandedArguments;
|
std::vector<std::string> expandedArguments;
|
||||||
|
|
|
@ -353,6 +353,22 @@ bool cmMakefile::GetBacktrace(cmListFileBacktrace& backtrace) const
|
||||||
return true;
|
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,
|
bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff,
|
||||||
cmExecutionStatus &status)
|
cmExecutionStatus &status)
|
||||||
|
@ -385,20 +401,10 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff,
|
||||||
|| pcmd->IsScriptable()))
|
|| pcmd->IsScriptable()))
|
||||||
|
|
||||||
{
|
{
|
||||||
// if trace is one, print out invoke information
|
// if trace is enabled, print out invoke information
|
||||||
if(this->GetCMakeInstance()->GetTrace())
|
if(this->GetCMakeInstance()->GetTrace())
|
||||||
{
|
{
|
||||||
cmOStringStream msg;
|
this->PrintCommandTrace(lff);
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
// Try invoking the command.
|
// Try invoking the command.
|
||||||
if(!pcmd->InvokeInitialPass(lff.Arguments,status) ||
|
if(!pcmd->InvokeInitialPass(lff.Arguments,status) ||
|
||||||
|
|
|
@ -700,6 +700,11 @@ public:
|
||||||
std::vector<cmSourceGroup> &groups);
|
std::vector<cmSourceGroup> &groups);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print a command's invocation
|
||||||
|
*/
|
||||||
|
void PrintCommandTrace(const cmListFileFunction& lff);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a single CMake command. Returns true if the command
|
* Execute a single CMake command. Returns true if the command
|
||||||
* succeeded or false if it failed.
|
* succeeded or false if it failed.
|
||||||
|
|
Loading…
Reference in New Issue