Merge topic 'extract-cmMessenger'
1462576b
Parser: Port away from cmMakefile421012a3
cmMessenger: Extract from cmake class14a8d61f
cmMakefile: Port nested error logic away from cmExecutionStatus2af853de
cmMakefile: Simplify IssueMessage implementation33bb9cfa
Parser: Issue messages through cmake, not cmSystemToolsdb7de303
Parser: Store the Backtrace for use in issuing messages
This commit is contained in:
commit
a79abb82fe
|
@ -319,6 +319,8 @@ set(SRCS
|
||||||
cmMakefileExecutableTargetGenerator.cxx
|
cmMakefileExecutableTargetGenerator.cxx
|
||||||
cmMakefileLibraryTargetGenerator.cxx
|
cmMakefileLibraryTargetGenerator.cxx
|
||||||
cmMakefileUtilityTargetGenerator.cxx
|
cmMakefileUtilityTargetGenerator.cxx
|
||||||
|
cmMessenger.cxx
|
||||||
|
cmMessenger.h
|
||||||
cmOSXBundleGenerator.cxx
|
cmOSXBundleGenerator.cxx
|
||||||
cmOSXBundleGenerator.h
|
cmOSXBundleGenerator.h
|
||||||
cmOutputConverter.cxx
|
cmOutputConverter.cxx
|
||||||
|
|
|
@ -38,16 +38,12 @@ public:
|
||||||
this->ReturnInvoked = false;
|
this->ReturnInvoked = false;
|
||||||
this->BreakInvoked = false;
|
this->BreakInvoked = false;
|
||||||
this->ContinueInvoked = false;
|
this->ContinueInvoked = false;
|
||||||
this->NestedError = false;
|
|
||||||
}
|
}
|
||||||
void SetNestedError(bool val) { this->NestedError = val; }
|
|
||||||
bool GetNestedError() { return this->NestedError; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool ReturnInvoked;
|
bool ReturnInvoked;
|
||||||
bool BreakInvoked;
|
bool BreakInvoked;
|
||||||
bool ContinueInvoked;
|
bool ContinueInvoked;
|
||||||
bool NestedError;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -76,7 +76,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
bool cmFunctionHelperCommand::InvokeInitialPass(
|
bool cmFunctionHelperCommand::InvokeInitialPass(
|
||||||
const std::vector<cmListFileArgument>& args, cmExecutionStatus& inStatus)
|
const std::vector<cmListFileArgument>& args, cmExecutionStatus&)
|
||||||
{
|
{
|
||||||
// Expand the argument list to the function.
|
// Expand the argument list to the function.
|
||||||
std::vector<std::string> expandedArgs;
|
std::vector<std::string> expandedArgs;
|
||||||
|
@ -129,11 +129,11 @@ bool cmFunctionHelperCommand::InvokeInitialPass(
|
||||||
for (unsigned int c = 0; c < this->Functions.size(); ++c) {
|
for (unsigned int c = 0; c < this->Functions.size(); ++c) {
|
||||||
cmExecutionStatus status;
|
cmExecutionStatus status;
|
||||||
if (!this->Makefile->ExecuteCommand(this->Functions[c], status) ||
|
if (!this->Makefile->ExecuteCommand(this->Functions[c], status) ||
|
||||||
status.GetNestedError()) {
|
(cmSystemTools::GetErrorOccuredFlag() &&
|
||||||
|
!cmSystemTools::GetFatalErrorOccured())) {
|
||||||
// The error message should have already included the call stack
|
// The error message should have already included the call stack
|
||||||
// so we do not need to report an error here.
|
// so we do not need to report an error here.
|
||||||
functionScope.Quiet();
|
functionScope.Quiet();
|
||||||
inStatus.SetNestedError(true);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (status.GetReturnInvoked()) {
|
if (status.GetReturnInvoked()) {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include "cmListFileCache.h"
|
#include "cmListFileCache.h"
|
||||||
|
|
||||||
#include "cmListFileLexer.h"
|
#include "cmListFileLexer.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMessenger.h"
|
||||||
#include "cmOutputConverter.h"
|
#include "cmOutputConverter.h"
|
||||||
#include "cmSystemTools.h"
|
#include "cmSystemTools.h"
|
||||||
#include "cmVersion.h"
|
#include "cmVersion.h"
|
||||||
|
@ -21,15 +21,18 @@
|
||||||
|
|
||||||
struct cmListFileParser
|
struct cmListFileParser
|
||||||
{
|
{
|
||||||
cmListFileParser(cmListFile* lf, cmMakefile* mf, const char* filename);
|
cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt,
|
||||||
|
cmMessenger* messenger, const char* filename);
|
||||||
~cmListFileParser();
|
~cmListFileParser();
|
||||||
void IssueFileOpenError(std::string const& text) const;
|
void IssueFileOpenError(std::string const& text) const;
|
||||||
|
void IssueError(std::string const& text) const;
|
||||||
bool ParseFile();
|
bool ParseFile();
|
||||||
bool ParseFunction(const char* name, long line);
|
bool ParseFunction(const char* name, long line);
|
||||||
bool AddArgument(cmListFileLexer_Token* token,
|
bool AddArgument(cmListFileLexer_Token* token,
|
||||||
cmListFileArgument::Delimiter delim);
|
cmListFileArgument::Delimiter delim);
|
||||||
cmListFile* ListFile;
|
cmListFile* ListFile;
|
||||||
cmMakefile* Makefile;
|
cmListFileBacktrace Backtrace;
|
||||||
|
cmMessenger* Messenger;
|
||||||
const char* FileName;
|
const char* FileName;
|
||||||
cmListFileLexer* Lexer;
|
cmListFileLexer* Lexer;
|
||||||
cmListFileFunction Function;
|
cmListFileFunction Function;
|
||||||
|
@ -41,10 +44,12 @@ struct cmListFileParser
|
||||||
} Separation;
|
} Separation;
|
||||||
};
|
};
|
||||||
|
|
||||||
cmListFileParser::cmListFileParser(cmListFile* lf, cmMakefile* mf,
|
cmListFileParser::cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt,
|
||||||
|
cmMessenger* messenger,
|
||||||
const char* filename)
|
const char* filename)
|
||||||
: ListFile(lf)
|
: ListFile(lf)
|
||||||
, Makefile(mf)
|
, Backtrace(lfbt)
|
||||||
|
, Messenger(messenger)
|
||||||
, FileName(filename)
|
, FileName(filename)
|
||||||
, Lexer(cmListFileLexer_New())
|
, Lexer(cmListFileLexer_New())
|
||||||
{
|
{
|
||||||
|
@ -57,7 +62,18 @@ cmListFileParser::~cmListFileParser()
|
||||||
|
|
||||||
void cmListFileParser::IssueFileOpenError(const std::string& text) const
|
void cmListFileParser::IssueFileOpenError(const std::string& text) const
|
||||||
{
|
{
|
||||||
this->Makefile->IssueMessage(cmake::FATAL_ERROR, text);
|
this->Messenger->IssueMessage(cmake::FATAL_ERROR, text, this->Backtrace);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmListFileParser::IssueError(const std::string& text) const
|
||||||
|
{
|
||||||
|
cmListFileContext lfc;
|
||||||
|
lfc.FilePath = this->FileName;
|
||||||
|
lfc.Line = cmListFileLexer_GetCurrentLine(this->Lexer);
|
||||||
|
cmListFileBacktrace lfbt = this->Backtrace;
|
||||||
|
lfbt = lfbt.Push(lfc);
|
||||||
|
this->Messenger->IssueMessage(cmake::FATAL_ERROR, text, lfbt);
|
||||||
|
cmSystemTools::SetFatalErrorOccured();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmListFileParser::ParseFile()
|
bool cmListFileParser::ParseFile()
|
||||||
|
@ -96,29 +112,26 @@ bool cmListFileParser::ParseFile()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
std::ostringstream error;
|
std::ostringstream error;
|
||||||
error << "Error in cmake code at\n"
|
error << "Parse error. Expected a newline, got "
|
||||||
<< this->FileName << ":" << token->line << ":\n"
|
|
||||||
<< "Parse error. Expected a newline, got "
|
|
||||||
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
||||||
<< " with text \"" << token->text << "\".";
|
<< " with text \"" << token->text << "\".";
|
||||||
cmSystemTools::Error(error.str().c_str());
|
this->IssueError(error.str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
std::ostringstream error;
|
std::ostringstream error;
|
||||||
error << "Error in cmake code at\n"
|
error << "Parse error. Expected a command name, got "
|
||||||
<< this->FileName << ":" << token->line << ":\n"
|
|
||||||
<< "Parse error. Expected a command name, got "
|
|
||||||
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
||||||
<< " with text \"" << token->text << "\".";
|
<< " with text \"" << token->text << "\".";
|
||||||
cmSystemTools::Error(error.str().c_str());
|
this->IssueError(error.str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmListFile::ParseFile(const char* filename, cmMakefile* mf)
|
bool cmListFile::ParseFile(const char* filename, cmMessenger* messenger,
|
||||||
|
cmListFileBacktrace const& lfbt)
|
||||||
{
|
{
|
||||||
if (!cmSystemTools::FileExists(filename) ||
|
if (!cmSystemTools::FileExists(filename) ||
|
||||||
cmSystemTools::FileIsDirectory(filename)) {
|
cmSystemTools::FileIsDirectory(filename)) {
|
||||||
|
@ -128,7 +141,7 @@ bool cmListFile::ParseFile(const char* filename, cmMakefile* mf)
|
||||||
bool parseError = false;
|
bool parseError = false;
|
||||||
|
|
||||||
{
|
{
|
||||||
cmListFileParser parser(this, mf, filename);
|
cmListFileParser parser(this, lfbt, messenger, filename);
|
||||||
parseError = !parser.ParseFile();
|
parseError = !parser.ParseFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,18 +167,15 @@ bool cmListFileParser::ParseFunction(const char* name, long line)
|
||||||
<< cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
|
<< cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
|
||||||
<< "Parse error. Function missing opening \"(\".";
|
<< "Parse error. Function missing opening \"(\".";
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
cmSystemTools::Error(error.str().c_str());
|
this->IssueError(error.str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (token->type != cmListFileLexer_Token_ParenLeft) {
|
if (token->type != cmListFileLexer_Token_ParenLeft) {
|
||||||
std::ostringstream error;
|
std::ostringstream error;
|
||||||
error << "Error in cmake code at\n"
|
error << "Parse error. Expected \"(\", got "
|
||||||
<< this->FileName << ":"
|
|
||||||
<< cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
|
|
||||||
<< "Parse error. Expected \"(\", got "
|
|
||||||
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
||||||
<< " with text \"" << token->text << "\".";
|
<< " with text \"" << token->text << "\".";
|
||||||
cmSystemTools::Error(error.str().c_str());
|
this->IssueError(error.str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,25 +227,24 @@ bool cmListFileParser::ParseFunction(const char* name, long line)
|
||||||
} else {
|
} else {
|
||||||
// Error.
|
// Error.
|
||||||
std::ostringstream error;
|
std::ostringstream error;
|
||||||
error << "Error in cmake code at\n"
|
error << "Parse error. Function missing ending \")\". "
|
||||||
<< this->FileName << ":"
|
|
||||||
<< cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n"
|
|
||||||
<< "Parse error. Function missing ending \")\". "
|
|
||||||
<< "Instead found "
|
<< "Instead found "
|
||||||
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
<< cmListFileLexer_GetTypeAsString(this->Lexer, token->type)
|
||||||
<< " with text \"" << token->text << "\".";
|
<< " with text \"" << token->text << "\".";
|
||||||
cmSystemTools::Error(error.str().c_str());
|
this->IssueError(error.str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostringstream error;
|
std::ostringstream error;
|
||||||
error << "Error in cmake code at\n"
|
cmListFileContext lfc;
|
||||||
<< this->FileName << ":" << lastLine << ":\n"
|
lfc.FilePath = this->FileName;
|
||||||
<< "Parse error. Function missing ending \")\". "
|
lfc.Line = lastLine;
|
||||||
|
cmListFileBacktrace lfbt = this->Backtrace;
|
||||||
|
lfbt = lfbt.Push(lfc);
|
||||||
|
error << "Parse error. Function missing ending \")\". "
|
||||||
<< "End of file reached.";
|
<< "End of file reached.";
|
||||||
cmSystemTools::Error(error.str().c_str());
|
this->Messenger->IssueMessage(cmake::FATAL_ERROR, error.str(), lfbt);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,17 +259,21 @@ bool cmListFileParser::AddArgument(cmListFileLexer_Token* token,
|
||||||
bool isError = (this->Separation == SeparationError ||
|
bool isError = (this->Separation == SeparationError ||
|
||||||
delim == cmListFileArgument::Bracket);
|
delim == cmListFileArgument::Bracket);
|
||||||
std::ostringstream m;
|
std::ostringstream m;
|
||||||
/* clang-format off */
|
cmListFileContext lfc;
|
||||||
m << "Syntax " << (isError? "Error":"Warning") << " in cmake code at\n"
|
lfc.FilePath = this->FileName;
|
||||||
<< " " << this->FileName << ":" << token->line << ":"
|
lfc.Line = token->line;
|
||||||
<< token->column << "\n"
|
cmListFileBacktrace lfbt = this->Backtrace;
|
||||||
|
lfbt = lfbt.Push(lfc);
|
||||||
|
|
||||||
|
m << "Syntax " << (isError ? "Error" : "Warning") << " in cmake code at "
|
||||||
|
<< "column " << token->column << "\n"
|
||||||
<< "Argument not separated from preceding token by whitespace.";
|
<< "Argument not separated from preceding token by whitespace.";
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
if (isError) {
|
if (isError) {
|
||||||
this->Makefile->IssueMessage(cmake::FATAL_ERROR, m.str());
|
this->Messenger->IssueMessage(cmake::FATAL_ERROR, m.str(), lfbt);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, m.str());
|
this->Messenger->IssueMessage(cmake::AUTHOR_WARNING, m.str(), lfbt);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
* cmake list files.
|
* cmake list files.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class cmMakefile;
|
class cmMessenger;
|
||||||
|
|
||||||
struct cmCommandContext
|
struct cmCommandContext
|
||||||
{
|
{
|
||||||
|
@ -158,7 +158,8 @@ private:
|
||||||
|
|
||||||
struct cmListFile
|
struct cmListFile
|
||||||
{
|
{
|
||||||
bool ParseFile(const char* path, cmMakefile* mf);
|
bool ParseFile(const char* path, cmMessenger* messenger,
|
||||||
|
cmListFileBacktrace const& lfbt);
|
||||||
|
|
||||||
std::vector<cmListFileFunction> Functions;
|
std::vector<cmListFileFunction> Functions;
|
||||||
};
|
};
|
||||||
|
|
|
@ -159,11 +159,11 @@ bool cmMacroHelperCommand::InvokeInitialPass(
|
||||||
}
|
}
|
||||||
cmExecutionStatus status;
|
cmExecutionStatus status;
|
||||||
if (!this->Makefile->ExecuteCommand(newLFF, status) ||
|
if (!this->Makefile->ExecuteCommand(newLFF, status) ||
|
||||||
status.GetNestedError()) {
|
(cmSystemTools::GetErrorOccuredFlag() &&
|
||||||
|
!cmSystemTools::GetFatalErrorOccured())) {
|
||||||
// The error message should have already included the call stack
|
// The error message should have already included the call stack
|
||||||
// so we do not need to report an error here.
|
// so we do not need to report an error here.
|
||||||
macroScope.Quiet();
|
macroScope.Quiet();
|
||||||
inStatus.SetNestedError(true);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (status.GetReturnInvoked()) {
|
if (status.GetReturnInvoked()) {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "cmGlobalGenerator.h"
|
#include "cmGlobalGenerator.h"
|
||||||
#include "cmInstallGenerator.h"
|
#include "cmInstallGenerator.h"
|
||||||
#include "cmListFileCache.h"
|
#include "cmListFileCache.h"
|
||||||
|
#include "cmMessenger.h"
|
||||||
#include "cmSourceFile.h"
|
#include "cmSourceFile.h"
|
||||||
#include "cmSourceFileLocation.h"
|
#include "cmSourceFileLocation.h"
|
||||||
#include "cmState.h"
|
#include "cmState.h"
|
||||||
|
@ -115,12 +116,6 @@ cmMakefile::~cmMakefile()
|
||||||
void cmMakefile::IssueMessage(cmake::MessageType t,
|
void cmMakefile::IssueMessage(cmake::MessageType t,
|
||||||
std::string const& text) const
|
std::string const& text) const
|
||||||
{
|
{
|
||||||
// Collect context information.
|
|
||||||
if (!this->ExecutionStatusStack.empty()) {
|
|
||||||
if ((t == cmake::FATAL_ERROR) || (t == cmake::INTERNAL_ERROR)) {
|
|
||||||
this->ExecutionStatusStack.back()->SetNestedError(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace());
|
this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,11 +276,19 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff,
|
||||||
if (this->GetCMakeInstance()->GetTrace()) {
|
if (this->GetCMakeInstance()->GetTrace()) {
|
||||||
this->PrintCommandTrace(lff);
|
this->PrintCommandTrace(lff);
|
||||||
}
|
}
|
||||||
// Try invoking the command.
|
|
||||||
|
bool hadPreviousNonFatalError = cmSystemTools::GetErrorOccuredFlag() &&
|
||||||
|
!cmSystemTools::GetFatalErrorOccured();
|
||||||
|
cmSystemTools::ResetErrorOccuredFlag();
|
||||||
|
|
||||||
bool invokeSucceeded = pcmd->InvokeInitialPass(lff.Arguments, status);
|
bool invokeSucceeded = pcmd->InvokeInitialPass(lff.Arguments, status);
|
||||||
bool hadNestedError = status.GetNestedError();
|
bool hadNestedError = cmSystemTools::GetErrorOccuredFlag() &&
|
||||||
|
!cmSystemTools::GetFatalErrorOccured();
|
||||||
|
if (hadPreviousNonFatalError) {
|
||||||
|
cmSystemTools::SetErrorOccured();
|
||||||
|
}
|
||||||
if (!invokeSucceeded || hadNestedError) {
|
if (!invokeSucceeded || hadNestedError) {
|
||||||
if (!hadNestedError) {
|
if (!hadNestedError && !cmSystemTools::GetFatalErrorOccured()) {
|
||||||
// The command invocation requested that we report an error.
|
// The command invocation requested that we report an error.
|
||||||
this->IssueMessage(cmake::FATAL_ERROR, pcmd->GetError());
|
this->IssueMessage(cmake::FATAL_ERROR, pcmd->GetError());
|
||||||
}
|
}
|
||||||
|
@ -455,7 +458,8 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope)
|
||||||
IncludeScope incScope(this, filenametoread, noPolicyScope);
|
IncludeScope incScope(this, filenametoread, noPolicyScope);
|
||||||
|
|
||||||
cmListFile listFile;
|
cmListFile listFile;
|
||||||
if (!listFile.ParseFile(filenametoread.c_str(), this)) {
|
if (!listFile.ParseFile(filenametoread.c_str(), this->GetMessenger(),
|
||||||
|
this->Backtrace)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,7 +508,8 @@ bool cmMakefile::ReadListFile(const char* filename)
|
||||||
ListFileScope scope(this, filenametoread);
|
ListFileScope scope(this, filenametoread);
|
||||||
|
|
||||||
cmListFile listFile;
|
cmListFile listFile;
|
||||||
if (!listFile.ParseFile(filenametoread.c_str(), this)) {
|
if (!listFile.ParseFile(filenametoread.c_str(), this->GetMessenger(),
|
||||||
|
this->Backtrace)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1450,7 +1455,8 @@ void cmMakefile::Configure()
|
||||||
this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str());
|
this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str());
|
||||||
|
|
||||||
cmListFile listFile;
|
cmListFile listFile;
|
||||||
if (!listFile.ParseFile(currentStart.c_str(), this)) {
|
if (!listFile.ParseFile(currentStart.c_str(), this->GetMessenger(),
|
||||||
|
this->Backtrace)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this->IsRootMakefile()) {
|
if (this->IsRootMakefile()) {
|
||||||
|
@ -3272,6 +3278,11 @@ cmake* cmMakefile::GetCMakeInstance() const
|
||||||
return this->GlobalGenerator->GetCMakeInstance();
|
return this->GlobalGenerator->GetCMakeInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmMessenger* cmMakefile::GetMessenger() const
|
||||||
|
{
|
||||||
|
return this->GetCMakeInstance()->GetMessenger();
|
||||||
|
}
|
||||||
|
|
||||||
cmGlobalGenerator* cmMakefile::GetGlobalGenerator() const
|
cmGlobalGenerator* cmMakefile::GetGlobalGenerator() const
|
||||||
{
|
{
|
||||||
return this->GlobalGenerator;
|
return this->GlobalGenerator;
|
||||||
|
|
|
@ -607,6 +607,7 @@ public:
|
||||||
* Get the instance
|
* Get the instance
|
||||||
*/
|
*/
|
||||||
cmake* GetCMakeInstance() const;
|
cmake* GetCMakeInstance() const;
|
||||||
|
cmMessenger* GetMessenger() const;
|
||||||
cmGlobalGenerator* GetGlobalGenerator() const;
|
cmGlobalGenerator* GetGlobalGenerator() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
============================================================================*/
|
============================================================================*/
|
||||||
#include "cmMessageCommand.h"
|
#include "cmMessageCommand.h"
|
||||||
|
|
||||||
|
#include "cmMessenger.h"
|
||||||
|
|
||||||
// cmLibraryCommand
|
// cmLibraryCommand
|
||||||
bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
|
bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
|
||||||
cmExecutionStatus&)
|
cmExecutionStatus&)
|
||||||
|
@ -65,8 +67,8 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
|
||||||
|
|
||||||
if (type != cmake::MESSAGE) {
|
if (type != cmake::MESSAGE) {
|
||||||
// we've overriden the message type, above, so display it directly
|
// we've overriden the message type, above, so display it directly
|
||||||
cmake* cm = this->Makefile->GetCMakeInstance();
|
cmMessenger* m = this->Makefile->GetMessenger();
|
||||||
cm->DisplayMessage(type, message, this->Makefile->GetBacktrace());
|
m->DisplayMessage(type, message, this->Makefile->GetBacktrace());
|
||||||
} else {
|
} else {
|
||||||
if (status) {
|
if (status) {
|
||||||
this->Makefile->DisplayStatus(message.c_str(), -1);
|
this->Makefile->DisplayStatus(message.c_str(), -1);
|
||||||
|
|
|
@ -0,0 +1,209 @@
|
||||||
|
/*============================================================================
|
||||||
|
CMake - Cross Platform Makefile Generator
|
||||||
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
||||||
|
|
||||||
|
Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
see accompanying file Copyright.txt for details.
|
||||||
|
|
||||||
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the License for more information.
|
||||||
|
============================================================================*/
|
||||||
|
|
||||||
|
#include "cmMessenger.h"
|
||||||
|
#include "cmDocumentationFormatter.h"
|
||||||
|
#include "cmMessenger.h"
|
||||||
|
#include "cmOutputConverter.h"
|
||||||
|
|
||||||
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
|
#include <cmsys/SystemInformation.hxx>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
cmake::MessageType cmMessenger::ConvertMessageType(cmake::MessageType t) const
|
||||||
|
{
|
||||||
|
bool warningsAsErrors;
|
||||||
|
|
||||||
|
if (t == cmake::AUTHOR_WARNING || t == cmake::AUTHOR_ERROR) {
|
||||||
|
warningsAsErrors = this->GetDevWarningsAsErrors();
|
||||||
|
if (warningsAsErrors && t == cmake::AUTHOR_WARNING) {
|
||||||
|
t = cmake::AUTHOR_ERROR;
|
||||||
|
} else if (!warningsAsErrors && t == cmake::AUTHOR_ERROR) {
|
||||||
|
t = cmake::AUTHOR_WARNING;
|
||||||
|
}
|
||||||
|
} else if (t == cmake::DEPRECATION_WARNING ||
|
||||||
|
t == cmake::DEPRECATION_ERROR) {
|
||||||
|
warningsAsErrors = this->GetDeprecatedWarningsAsErrors();
|
||||||
|
if (warningsAsErrors && t == cmake::DEPRECATION_WARNING) {
|
||||||
|
t = cmake::DEPRECATION_ERROR;
|
||||||
|
} else if (!warningsAsErrors && t == cmake::DEPRECATION_ERROR) {
|
||||||
|
t = cmake::DEPRECATION_WARNING;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmMessenger::IsMessageTypeVisible(cmake::MessageType t) const
|
||||||
|
{
|
||||||
|
bool isVisible = true;
|
||||||
|
|
||||||
|
if (t == cmake::DEPRECATION_ERROR) {
|
||||||
|
if (!this->GetDeprecatedWarningsAsErrors()) {
|
||||||
|
isVisible = false;
|
||||||
|
}
|
||||||
|
} else if (t == cmake::DEPRECATION_WARNING) {
|
||||||
|
if (this->GetSuppressDeprecatedWarnings()) {
|
||||||
|
isVisible = false;
|
||||||
|
}
|
||||||
|
} else if (t == cmake::AUTHOR_ERROR) {
|
||||||
|
if (!this->GetDevWarningsAsErrors()) {
|
||||||
|
isVisible = false;
|
||||||
|
}
|
||||||
|
} else if (t == cmake::AUTHOR_WARNING) {
|
||||||
|
if (this->GetSuppressDevWarnings()) {
|
||||||
|
isVisible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isVisible;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool printMessagePreamble(cmake::MessageType t, std::ostream& msg)
|
||||||
|
{
|
||||||
|
// Construct the message header.
|
||||||
|
if (t == cmake::FATAL_ERROR) {
|
||||||
|
msg << "CMake Error";
|
||||||
|
} else if (t == cmake::INTERNAL_ERROR) {
|
||||||
|
msg << "CMake Internal Error (please report a bug)";
|
||||||
|
} else if (t == cmake::LOG) {
|
||||||
|
msg << "CMake Debug Log";
|
||||||
|
} else if (t == cmake::DEPRECATION_ERROR) {
|
||||||
|
msg << "CMake Deprecation Error";
|
||||||
|
} else if (t == cmake::DEPRECATION_WARNING) {
|
||||||
|
msg << "CMake Deprecation Warning";
|
||||||
|
} else if (t == cmake::AUTHOR_WARNING) {
|
||||||
|
msg << "CMake Warning (dev)";
|
||||||
|
} else if (t == cmake::AUTHOR_ERROR) {
|
||||||
|
msg << "CMake Error (dev)";
|
||||||
|
} else {
|
||||||
|
msg << "CMake Warning";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void printMessageText(std::ostream& msg, std::string const& text)
|
||||||
|
{
|
||||||
|
msg << ":\n";
|
||||||
|
cmDocumentationFormatter formatter;
|
||||||
|
formatter.SetIndent(" ");
|
||||||
|
formatter.PrintFormatted(msg, text.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void displayMessage(cmake::MessageType t, std::ostringstream& msg)
|
||||||
|
{
|
||||||
|
// Add a note about warning suppression.
|
||||||
|
if (t == cmake::AUTHOR_WARNING) {
|
||||||
|
msg << "This warning is for project developers. Use -Wno-dev to suppress "
|
||||||
|
"it.";
|
||||||
|
} else if (t == cmake::AUTHOR_ERROR) {
|
||||||
|
msg << "This error is for project developers. Use -Wno-error=dev to "
|
||||||
|
"suppress "
|
||||||
|
"it.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a terminating blank line.
|
||||||
|
msg << "\n";
|
||||||
|
|
||||||
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
|
// Add a C++ stack trace to internal errors.
|
||||||
|
if (t == cmake::INTERNAL_ERROR) {
|
||||||
|
std::string stack = cmsys::SystemInformation::GetProgramStack(0, 0);
|
||||||
|
if (!stack.empty()) {
|
||||||
|
if (cmHasLiteralPrefix(stack, "WARNING:")) {
|
||||||
|
stack = "Note:" + stack.substr(8);
|
||||||
|
}
|
||||||
|
msg << stack << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Output the message.
|
||||||
|
if (t == cmake::FATAL_ERROR || t == cmake::INTERNAL_ERROR ||
|
||||||
|
t == cmake::DEPRECATION_ERROR || t == cmake::AUTHOR_ERROR) {
|
||||||
|
cmSystemTools::SetErrorOccured();
|
||||||
|
cmSystemTools::Message(msg.str().c_str(), "Error");
|
||||||
|
} else {
|
||||||
|
cmSystemTools::Message(msg.str().c_str(), "Warning");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmMessenger::cmMessenger(cmState* state)
|
||||||
|
: State(state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmMessenger::IssueMessage(cmake::MessageType t, const std::string& text,
|
||||||
|
const cmListFileBacktrace& backtrace) const
|
||||||
|
{
|
||||||
|
bool force = false;
|
||||||
|
if (!force) {
|
||||||
|
// override the message type, if needed, for warnings and errors
|
||||||
|
cmake::MessageType override = this->ConvertMessageType(t);
|
||||||
|
if (override != t) {
|
||||||
|
t = override;
|
||||||
|
force = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!force && !this->IsMessageTypeVisible(t)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this->DisplayMessage(t, text, backtrace);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cmMessenger::DisplayMessage(cmake::MessageType t, const std::string& text,
|
||||||
|
const cmListFileBacktrace& backtrace) const
|
||||||
|
{
|
||||||
|
std::ostringstream msg;
|
||||||
|
if (!printMessagePreamble(t, msg)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the immediate context.
|
||||||
|
backtrace.PrintTitle(msg);
|
||||||
|
|
||||||
|
printMessageText(msg, text);
|
||||||
|
|
||||||
|
// Add the rest of the context.
|
||||||
|
backtrace.PrintCallStack(msg);
|
||||||
|
|
||||||
|
displayMessage(t, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmMessenger::GetSuppressDevWarnings() const
|
||||||
|
{
|
||||||
|
const char* cacheEntryValue =
|
||||||
|
this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
|
||||||
|
return cmSystemTools::IsOn(cacheEntryValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmMessenger::GetSuppressDeprecatedWarnings() const
|
||||||
|
{
|
||||||
|
const char* cacheEntryValue =
|
||||||
|
this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
|
||||||
|
return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmMessenger::GetDevWarningsAsErrors() const
|
||||||
|
{
|
||||||
|
const char* cacheEntryValue =
|
||||||
|
this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS");
|
||||||
|
return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmMessenger::GetDeprecatedWarningsAsErrors() const
|
||||||
|
{
|
||||||
|
const char* cacheEntryValue =
|
||||||
|
this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
|
||||||
|
return cmSystemTools::IsOn(cacheEntryValue);
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
/*============================================================================
|
||||||
|
CMake - Cross Platform Makefile Generator
|
||||||
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
||||||
|
|
||||||
|
Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
see accompanying file Copyright.txt for details.
|
||||||
|
|
||||||
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the License for more information.
|
||||||
|
============================================================================*/
|
||||||
|
|
||||||
|
#ifndef cmMessenger_h
|
||||||
|
#define cmMessenger_h
|
||||||
|
|
||||||
|
#include "cmListFileCache.h"
|
||||||
|
#include "cmState.h"
|
||||||
|
#include "cmake.h"
|
||||||
|
|
||||||
|
class cmMessenger
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cmMessenger(cmState* state);
|
||||||
|
|
||||||
|
void IssueMessage(
|
||||||
|
cmake::MessageType t, std::string const& text,
|
||||||
|
cmListFileBacktrace const& backtrace = cmListFileBacktrace()) const;
|
||||||
|
|
||||||
|
void DisplayMessage(cmake::MessageType t, std::string const& text,
|
||||||
|
cmListFileBacktrace const& backtrace) const;
|
||||||
|
|
||||||
|
bool GetSuppressDevWarnings() const;
|
||||||
|
bool GetSuppressDeprecatedWarnings() const;
|
||||||
|
bool GetDevWarningsAsErrors() const;
|
||||||
|
bool GetDeprecatedWarningsAsErrors() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool IsMessageTypeVisible(cmake::MessageType t) const;
|
||||||
|
cmake::MessageType ConvertMessageType(cmake::MessageType t) const;
|
||||||
|
|
||||||
|
cmState* State;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
176
Source/cmake.cxx
176
Source/cmake.cxx
|
@ -19,6 +19,7 @@
|
||||||
#include "cmFileTimeComparison.h"
|
#include "cmFileTimeComparison.h"
|
||||||
#include "cmLocalGenerator.h"
|
#include "cmLocalGenerator.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMakefile.h"
|
||||||
|
#include "cmMessenger.h"
|
||||||
#include "cmSourceFile.h"
|
#include "cmSourceFile.h"
|
||||||
#include "cmState.h"
|
#include "cmState.h"
|
||||||
#include "cmTest.h"
|
#include "cmTest.h"
|
||||||
|
@ -152,6 +153,7 @@ cmake::cmake()
|
||||||
|
|
||||||
this->State = new cmState;
|
this->State = new cmState;
|
||||||
this->CurrentSnapshot = this->State->CreateBaseSnapshot();
|
this->CurrentSnapshot = this->State->CreateBaseSnapshot();
|
||||||
|
this->Messenger = new cmMessenger(this->State);
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
struct rlimit rlp;
|
struct rlimit rlp;
|
||||||
|
@ -207,6 +209,7 @@ cmake::cmake()
|
||||||
cmake::~cmake()
|
cmake::~cmake()
|
||||||
{
|
{
|
||||||
delete this->State;
|
delete this->State;
|
||||||
|
delete this->Messenger;
|
||||||
if (this->GlobalGenerator) {
|
if (this->GlobalGenerator) {
|
||||||
delete this->GlobalGenerator;
|
delete this->GlobalGenerator;
|
||||||
this->GlobalGenerator = CM_NULLPTR;
|
this->GlobalGenerator = CM_NULLPTR;
|
||||||
|
@ -2281,160 +2284,10 @@ static bool cmakeCheckStampList(const char* stampList)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmake::MessageType cmake::ConvertMessageType(cmake::MessageType t) const
|
|
||||||
{
|
|
||||||
bool warningsAsErrors;
|
|
||||||
|
|
||||||
if (t == cmake::AUTHOR_WARNING || t == cmake::AUTHOR_ERROR) {
|
|
||||||
warningsAsErrors = this->GetDevWarningsAsErrors();
|
|
||||||
if (warningsAsErrors && t == cmake::AUTHOR_WARNING) {
|
|
||||||
t = cmake::AUTHOR_ERROR;
|
|
||||||
} else if (!warningsAsErrors && t == cmake::AUTHOR_ERROR) {
|
|
||||||
t = cmake::AUTHOR_WARNING;
|
|
||||||
}
|
|
||||||
} else if (t == cmake::DEPRECATION_WARNING ||
|
|
||||||
t == cmake::DEPRECATION_ERROR) {
|
|
||||||
warningsAsErrors = this->GetDeprecatedWarningsAsErrors();
|
|
||||||
if (warningsAsErrors && t == cmake::DEPRECATION_WARNING) {
|
|
||||||
t = cmake::DEPRECATION_ERROR;
|
|
||||||
} else if (!warningsAsErrors && t == cmake::DEPRECATION_ERROR) {
|
|
||||||
t = cmake::DEPRECATION_WARNING;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cmake::IsMessageTypeVisible(cmake::MessageType t) const
|
|
||||||
{
|
|
||||||
bool isVisible = true;
|
|
||||||
|
|
||||||
if (t == cmake::DEPRECATION_ERROR) {
|
|
||||||
if (!this->GetDeprecatedWarningsAsErrors()) {
|
|
||||||
isVisible = false;
|
|
||||||
}
|
|
||||||
} else if (t == cmake::DEPRECATION_WARNING) {
|
|
||||||
if (this->GetSuppressDeprecatedWarnings()) {
|
|
||||||
isVisible = false;
|
|
||||||
}
|
|
||||||
} else if (t == cmake::AUTHOR_ERROR) {
|
|
||||||
if (!this->GetDevWarningsAsErrors()) {
|
|
||||||
isVisible = false;
|
|
||||||
}
|
|
||||||
} else if (t == cmake::AUTHOR_WARNING) {
|
|
||||||
if (this->GetSuppressDevWarnings()) {
|
|
||||||
isVisible = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return isVisible;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool printMessagePreamble(cmake::MessageType t, std::ostream& msg)
|
|
||||||
{
|
|
||||||
// Construct the message header.
|
|
||||||
if (t == cmake::FATAL_ERROR) {
|
|
||||||
msg << "CMake Error";
|
|
||||||
} else if (t == cmake::INTERNAL_ERROR) {
|
|
||||||
msg << "CMake Internal Error (please report a bug)";
|
|
||||||
} else if (t == cmake::LOG) {
|
|
||||||
msg << "CMake Debug Log";
|
|
||||||
} else if (t == cmake::DEPRECATION_ERROR) {
|
|
||||||
msg << "CMake Deprecation Error";
|
|
||||||
} else if (t == cmake::DEPRECATION_WARNING) {
|
|
||||||
msg << "CMake Deprecation Warning";
|
|
||||||
} else if (t == cmake::AUTHOR_WARNING) {
|
|
||||||
msg << "CMake Warning (dev)";
|
|
||||||
} else if (t == cmake::AUTHOR_ERROR) {
|
|
||||||
msg << "CMake Error (dev)";
|
|
||||||
} else {
|
|
||||||
msg << "CMake Warning";
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void printMessageText(std::ostream& msg, std::string const& text)
|
|
||||||
{
|
|
||||||
msg << ":\n";
|
|
||||||
cmDocumentationFormatter formatter;
|
|
||||||
formatter.SetIndent(" ");
|
|
||||||
formatter.PrintFormatted(msg, text.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void displayMessage(cmake::MessageType t, std::ostringstream& msg)
|
|
||||||
{
|
|
||||||
|
|
||||||
// Add a note about warning suppression.
|
|
||||||
if (t == cmake::AUTHOR_WARNING) {
|
|
||||||
msg << "This warning is for project developers. Use -Wno-dev to suppress "
|
|
||||||
"it.";
|
|
||||||
} else if (t == cmake::AUTHOR_ERROR) {
|
|
||||||
msg << "This error is for project developers. Use -Wno-error=dev to "
|
|
||||||
"suppress "
|
|
||||||
"it.";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add a terminating blank line.
|
|
||||||
msg << "\n";
|
|
||||||
|
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
|
||||||
// Add a C++ stack trace to internal errors.
|
|
||||||
if (t == cmake::INTERNAL_ERROR) {
|
|
||||||
std::string stack = cmsys::SystemInformation::GetProgramStack(0, 0);
|
|
||||||
if (!stack.empty()) {
|
|
||||||
if (cmHasLiteralPrefix(stack, "WARNING:")) {
|
|
||||||
stack = "Note:" + stack.substr(8);
|
|
||||||
}
|
|
||||||
msg << stack << "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Output the message.
|
|
||||||
if (t == cmake::FATAL_ERROR || t == cmake::INTERNAL_ERROR ||
|
|
||||||
t == cmake::DEPRECATION_ERROR || t == cmake::AUTHOR_ERROR) {
|
|
||||||
cmSystemTools::SetErrorOccured();
|
|
||||||
cmSystemTools::Message(msg.str().c_str(), "Error");
|
|
||||||
} else {
|
|
||||||
cmSystemTools::Message(msg.str().c_str(), "Warning");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
|
void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
|
||||||
cmListFileBacktrace const& backtrace) const
|
cmListFileBacktrace const& backtrace) const
|
||||||
{
|
{
|
||||||
bool force = false;
|
this->Messenger->IssueMessage(t, text, backtrace);
|
||||||
// override the message type, if needed, for warnings and errors
|
|
||||||
cmake::MessageType override = this->ConvertMessageType(t);
|
|
||||||
if (override != t) {
|
|
||||||
t = override;
|
|
||||||
force = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!force && !this->IsMessageTypeVisible(t)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this->DisplayMessage(t, text, backtrace);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cmake::DisplayMessage(cmake::MessageType t, std::string const& text,
|
|
||||||
cmListFileBacktrace const& backtrace) const
|
|
||||||
{
|
|
||||||
std::ostringstream msg;
|
|
||||||
if (!printMessagePreamble(t, msg)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add the immediate context.
|
|
||||||
backtrace.PrintTitle(msg);
|
|
||||||
|
|
||||||
printMessageText(msg, text);
|
|
||||||
|
|
||||||
// Add the rest of the context.
|
|
||||||
backtrace.PrintCallStack(msg);
|
|
||||||
|
|
||||||
displayMessage(t, msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> cmake::GetDebugConfigs()
|
std::vector<std::string> cmake::GetDebugConfigs()
|
||||||
|
@ -2454,6 +2307,11 @@ std::vector<std::string> cmake::GetDebugConfigs()
|
||||||
return configs;
|
return configs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmMessenger* cmake::GetMessenger() const
|
||||||
|
{
|
||||||
|
return this->Messenger;
|
||||||
|
}
|
||||||
|
|
||||||
int cmake::Build(const std::string& dir, const std::string& target,
|
int cmake::Build(const std::string& dir, const std::string& target,
|
||||||
const std::string& config,
|
const std::string& config,
|
||||||
const std::vector<std::string>& nativeOptions, bool clean)
|
const std::vector<std::string>& nativeOptions, bool clean)
|
||||||
|
@ -2560,9 +2418,7 @@ void cmake::RunCheckForUnusedVariables()
|
||||||
|
|
||||||
bool cmake::GetSuppressDevWarnings() const
|
bool cmake::GetSuppressDevWarnings() const
|
||||||
{
|
{
|
||||||
const char* cacheEntryValue =
|
return this->Messenger->GetSuppressDevWarnings();
|
||||||
this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
|
|
||||||
return cmSystemTools::IsOn(cacheEntryValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmake::SetSuppressDevWarnings(bool b)
|
void cmake::SetSuppressDevWarnings(bool b)
|
||||||
|
@ -2586,9 +2442,7 @@ void cmake::SetSuppressDevWarnings(bool b)
|
||||||
|
|
||||||
bool cmake::GetSuppressDeprecatedWarnings() const
|
bool cmake::GetSuppressDeprecatedWarnings() const
|
||||||
{
|
{
|
||||||
const char* cacheEntryValue =
|
return this->Messenger->GetSuppressDeprecatedWarnings();
|
||||||
this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
|
|
||||||
return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmake::SetSuppressDeprecatedWarnings(bool b)
|
void cmake::SetSuppressDeprecatedWarnings(bool b)
|
||||||
|
@ -2612,9 +2466,7 @@ void cmake::SetSuppressDeprecatedWarnings(bool b)
|
||||||
|
|
||||||
bool cmake::GetDevWarningsAsErrors() const
|
bool cmake::GetDevWarningsAsErrors() const
|
||||||
{
|
{
|
||||||
const char* cacheEntryValue =
|
return this->Messenger->GetDevWarningsAsErrors();
|
||||||
this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS");
|
|
||||||
return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmake::SetDevWarningsAsErrors(bool b)
|
void cmake::SetDevWarningsAsErrors(bool b)
|
||||||
|
@ -2638,9 +2490,7 @@ void cmake::SetDevWarningsAsErrors(bool b)
|
||||||
|
|
||||||
bool cmake::GetDeprecatedWarningsAsErrors() const
|
bool cmake::GetDeprecatedWarningsAsErrors() const
|
||||||
{
|
{
|
||||||
const char* cacheEntryValue =
|
return this->Messenger->GetDeprecatedWarningsAsErrors();
|
||||||
this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
|
|
||||||
return cmSystemTools::IsOn(cacheEntryValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmake::SetDeprecatedWarningsAsErrors(bool b)
|
void cmake::SetDeprecatedWarningsAsErrors(bool b)
|
||||||
|
|
|
@ -25,6 +25,7 @@ class cmGlobalGeneratorFactory;
|
||||||
class cmGlobalGenerator;
|
class cmGlobalGenerator;
|
||||||
class cmLocalGenerator;
|
class cmLocalGenerator;
|
||||||
class cmMakefile;
|
class cmMakefile;
|
||||||
|
class cmMessenger;
|
||||||
class cmVariableWatch;
|
class cmVariableWatch;
|
||||||
class cmFileTimeComparison;
|
class cmFileTimeComparison;
|
||||||
class cmExternalMakefileProjectGeneratorFactory;
|
class cmExternalMakefileProjectGeneratorFactory;
|
||||||
|
@ -346,6 +347,8 @@ public:
|
||||||
return this->CMakeEditCommand;
|
return this->CMakeEditCommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmMessenger* GetMessenger() const;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the state of the suppression of developer (author) warnings.
|
* Get the state of the suppression of developer (author) warnings.
|
||||||
* Returns false, by default, if developer warnings should be shown, true
|
* Returns false, by default, if developer warnings should be shown, true
|
||||||
|
@ -395,9 +398,6 @@ public:
|
||||||
cmake::MessageType t, std::string const& text,
|
cmake::MessageType t, std::string const& text,
|
||||||
cmListFileBacktrace const& backtrace = cmListFileBacktrace()) const;
|
cmListFileBacktrace const& backtrace = cmListFileBacktrace()) const;
|
||||||
|
|
||||||
void DisplayMessage(cmake::MessageType t, std::string const& text,
|
|
||||||
cmListFileBacktrace const& backtrace) const;
|
|
||||||
|
|
||||||
///! run the --build option
|
///! run the --build option
|
||||||
int Build(const std::string& dir, const std::string& target,
|
int Build(const std::string& dir, const std::string& target,
|
||||||
const std::string& config,
|
const std::string& config,
|
||||||
|
@ -491,6 +491,7 @@ private:
|
||||||
|
|
||||||
cmState* State;
|
cmState* State;
|
||||||
cmState::Snapshot CurrentSnapshot;
|
cmState::Snapshot CurrentSnapshot;
|
||||||
|
cmMessenger* Messenger;
|
||||||
|
|
||||||
std::vector<std::string> TraceOnlyThisSources;
|
std::vector<std::string> TraceOnlyThisSources;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at BracketComment4.cmake:3:
|
||||||
.*/Tests/RunCMake/Syntax/BracketComment4.cmake:3:
|
Parse error. Expected a newline, got identifier with text "message".
|
||||||
Parse error. Expected a newline, got identifier with text "message".
|
Call Stack \(most recent call first\):
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
CMakeLists.txt:3 \(include\)
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
BracketComment4.cmake
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error in BracketNoSpace0.cmake:
|
CMake Error at BracketNoSpace0.cmake:1:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 27
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/BracketNoSpace0.cmake:1:27
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error in BracketNoSpace1.cmake:
|
CMake Error at BracketNoSpace1.cmake:1:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 24
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/BracketNoSpace1.cmake:1:24
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error in BracketNoSpace2.cmake:
|
CMake Error at BracketNoSpace2.cmake:1:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 44
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/BracketNoSpace2.cmake:1:44
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error in BracketNoSpace3.cmake:
|
CMake Error at BracketNoSpace3.cmake:1:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 45
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/BracketNoSpace3.cmake:1:45
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error in BracketNoSpace4.cmake:
|
CMake Error at BracketNoSpace4.cmake:1:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 44
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/BracketNoSpace4.cmake:1:44
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error in BracketNoSpace5.cmake:
|
CMake Error at BracketNoSpace5.cmake:1:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 45
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/BracketNoSpace5.cmake:1:45
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at CommandError0.cmake:2:
|
||||||
.*/Tests/RunCMake/Syntax/CommandError0.cmake:2:
|
Parse error. Expected "\(", got newline with text "
|
||||||
Parse error. Expected "\(", got newline with text "
|
|
||||||
".
|
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
CommandError0.cmake
|
".
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists.txt:3 \(include\)
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at CommandError1.cmake:1:
|
||||||
.*/Tests/RunCMake/Syntax/CommandError1.cmake:1:
|
Parse error. Expected a newline, got identifier with text "message".
|
||||||
Parse error. Expected a newline, got identifier with text "message".
|
Call Stack \(most recent call first\):
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
CMakeLists.txt:3 \(include\)
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
CommandError1.cmake
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at CommandError2.cmake:1:
|
||||||
.*/Tests/RunCMake/Syntax/CommandError2.cmake:1:
|
Parse error. Expected a command name, got bracket argument with text
|
||||||
Parse error. Expected a command name, got bracket argument with text "oops-not-a-comment".
|
"oops-not-a-comment".
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
Call Stack \(most recent call first\):
|
||||||
include could not find load file:
|
CMakeLists.txt:3 \(include\)
|
||||||
|
|
||||||
CommandError2.cmake
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
CMake Warning \(dev\) in ParenInENV.cmake:
|
CMake Warning \(dev\) at ParenInENV.cmake:2:
|
||||||
Syntax Warning in cmake code at
|
Syntax Warning in cmake code at column 21
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/ParenInENV.cmake:2:21
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
@ -11,7 +9,7 @@ This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
CMake Error at ParenInENV.cmake:2 \(message\):
|
CMake Error at ParenInENV.cmake:2 \(message\):
|
||||||
Syntax error in cmake code at
|
Syntax error in cmake code at
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/ParenInENV.cmake:2
|
.*Tests/RunCMake/Syntax/ParenInENV.cmake:2
|
||||||
|
|
||||||
when parsing string
|
when parsing string
|
||||||
|
|
||||||
|
|
|
@ -1,27 +1,21 @@
|
||||||
CMake Warning \(dev\) in ParenNoSpace1.cmake:
|
CMake Warning \(dev\) at ParenNoSpace1.cmake:1:
|
||||||
Syntax Warning in cmake code at
|
Syntax Warning in cmake code at column 26
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/ParenNoSpace1.cmake:1:26
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
CMakeLists.txt:3 \(include\)
|
CMakeLists.txt:3 \(include\)
|
||||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
|
||||||
CMake Warning \(dev\) in ParenNoSpace1.cmake:
|
CMake Warning \(dev\) at ParenNoSpace1.cmake:2:
|
||||||
Syntax Warning in cmake code at
|
Syntax Warning in cmake code at column 26
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/ParenNoSpace1.cmake:2:26
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
CMakeLists.txt:3 \(include\)
|
CMakeLists.txt:3 \(include\)
|
||||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
|
||||||
CMake Error in ParenNoSpace1.cmake:
|
CMake Error at ParenNoSpace1.cmake:3:
|
||||||
Syntax Error in cmake code at
|
Syntax Error in cmake code at column 29
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/ParenNoSpace1.cmake:3:29
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
CMake Warning \(dev\) in StringNoSpace.cmake:
|
CMake Warning \(dev\) at StringNoSpace.cmake:2:
|
||||||
Syntax Warning in cmake code at
|
Syntax Warning in cmake code at column 28
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/StringNoSpace.cmake:2:28
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
CMakeLists.txt:3 \(include\)
|
CMakeLists.txt:3 \(include\)
|
||||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||||
|
|
||||||
CMake Warning \(dev\) in StringNoSpace.cmake:
|
CMake Warning \(dev\) at StringNoSpace.cmake:2:
|
||||||
Syntax Warning in cmake code at
|
Syntax Warning in cmake code at column 31
|
||||||
|
|
||||||
.*/Tests/RunCMake/Syntax/StringNoSpace.cmake:2:31
|
|
||||||
|
|
||||||
Argument not separated from preceding token by whitespace.
|
Argument not separated from preceding token by whitespace.
|
||||||
Call Stack \(most recent call first\):
|
Call Stack \(most recent call first\):
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at UnterminatedBracket0.cmake:2:
|
||||||
.*/Syntax/UnterminatedBracket0.cmake:2:
|
Parse error. Function missing ending "\)". Instead found unterminated
|
||||||
Parse error. Function missing ending "\)". Instead found unterminated bracket with text "\)
|
bracket with text "\)
|
||||||
".
|
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
UnterminatedBracket0.cmake$
|
".
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists.txt:3 \(include\)
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at UnterminatedBracket1.cmake:2:
|
||||||
.*/Syntax/UnterminatedBracket1.cmake:2:
|
Parse error. Function missing ending "\)". Instead found unterminated
|
||||||
Parse error. Function missing ending "\)". Instead found unterminated bracket with text "\]\]\)
|
bracket with text "]]\)
|
||||||
".
|
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
UnterminatedBracket1.cmake$
|
".
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists.txt:3 \(include\)
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at UnterminatedBracketComment.cmake:3:
|
||||||
.*/Syntax/UnterminatedBracketComment.cmake:1:
|
Parse error. Expected a command name, got unterminated bracket with text
|
||||||
Parse error. Expected a command name, got unterminated bracket with text "#\]\]
|
"#]]
|
||||||
".
|
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
UnterminatedBracketComment.cmake
|
".
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists.txt:3 \(include\)
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at UnterminatedCall1.cmake:2:
|
||||||
.*/Syntax/UnterminatedCall1.cmake:2:
|
Parse error. Function missing ending "\)". End of file reached.
|
||||||
Parse error. Function missing ending "\)". End of file reached.
|
Call Stack \(most recent call first\):
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
CMakeLists.txt:3 \(include\)
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
UnterminatedCall1.cmake
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at UnterminatedCall2.cmake:4:
|
||||||
.*/Syntax/UnterminatedCall2.cmake:4:
|
Parse error. Function missing ending "\)". End of file reached.
|
||||||
Parse error. Function missing ending "\)". End of file reached.
|
Call Stack \(most recent call first\):
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
CMakeLists.txt:3 \(include\)
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
UnterminatedCall2.cmake
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
CMake Error: Error in cmake code at
|
CMake Error at UnterminatedString.cmake:2:
|
||||||
.*/Syntax/UnterminatedString.cmake:2:
|
Parse error. Function missing ending "\)". Instead found unterminated
|
||||||
Parse error. Function missing ending "\)". Instead found unterminated string with text "\)
|
string with text "\)
|
||||||
".
|
|
||||||
CMake Error at CMakeLists.txt:3 \(include\):
|
|
||||||
include could not find load file:
|
|
||||||
|
|
||||||
UnterminatedString.cmake$
|
".
|
||||||
|
Call Stack \(most recent call first\):
|
||||||
|
CMakeLists.txt:3 \(include\)
|
||||||
|
|
|
@ -266,6 +266,7 @@ CMAKE_CXX_SOURCES="\
|
||||||
cmPropertyDefinition \
|
cmPropertyDefinition \
|
||||||
cmPropertyDefinitionMap \
|
cmPropertyDefinitionMap \
|
||||||
cmMakefile \
|
cmMakefile \
|
||||||
|
cmMessenger \
|
||||||
cmExportBuildFileGenerator \
|
cmExportBuildFileGenerator \
|
||||||
cmExportFileGenerator \
|
cmExportFileGenerator \
|
||||||
cmExportInstallFileGenerator \
|
cmExportInstallFileGenerator \
|
||||||
|
|
Loading…
Reference in New Issue