Explicitly enable author (dev) warnings by default.

Explicitly enable author warnings by default, via the
cmake::GetSuppressDevWarnings method, which signals suppression
is turned off unless the CMake variables are set as required.

Add test cases for author and deprecated messages displayed by
default.
This commit is contained in:
Michael Scott 2015-11-08 12:59:27 +00:00 committed by Brad King
parent deec3a3f06
commit 246b0bfbfd
8 changed files with 42 additions and 6 deletions

View File

@ -43,7 +43,8 @@ bool cmMessageCommand
}
else if (*i == "AUTHOR_WARNING")
{
if (this->Makefile->IsOn("CMAKE_SUPPRESS_DEVELOPER_WARNINGS"))
if (this->Makefile->GetCMakeInstance()->GetSuppressDevWarnings(
this->Makefile))
{
return true;
}

View File

@ -1580,6 +1580,7 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure)
{
this->AddCMakePaths();
}
// Add any cache args
if ( !this->SetCacheArgs(args) )
{
@ -2511,11 +2512,7 @@ bool cmake::IsMessageTypeVisible(cmake::MessageType t)
}
else if (t == cmake::AUTHOR_WARNING)
{
// if CMAKE_SUPPRESS_DEVELOPER_WARNINGS is on, suppress the message,
// otherwise show it
const char* suppressDevWarnings = this->State->GetCacheEntryValue(
"CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
if(cmSystemTools::IsOn(suppressDevWarnings))
if (this->GetSuppressDevWarnings())
{
isVisible = false;
}
@ -2807,3 +2804,21 @@ void cmake::RunCheckForUnusedVariables()
}
#endif
}
bool cmake::GetSuppressDevWarnings(cmMakefile const* mf)
{
/*
* The suppression CMake variable may be set in the CMake configuration file
* itself, so we have to check what its set to in the makefile if we can.
*/
if (mf)
{
return mf->IsOn("CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
}
else
{
const char* cacheEntryValue = this->State->GetCacheEntryValue(
"CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
return cmSystemTools::IsOn(cacheEntryValue);
}
}

View File

@ -308,6 +308,12 @@ class cmake
this->SuppressDevWarnings = v;
this->DoSuppressDevWarnings = true;
}
/*
* Get the state of the suppression of developer (author) warnings.
* Returns false, by default, if developer warnings should be shown, true
* otherwise.
*/
bool GetSuppressDevWarnings(cmMakefile const* mf = NULL);
/** Display a message to the user. */
void IssueMessage(cmake::MessageType t, std::string const& text,

View File

@ -133,6 +133,9 @@ set(RunCMake_TEST_OPTIONS -Wno-dev -Wdev)
run_cmake(Wdev)
unset(RunCMake_TEST_OPTIONS)
# Dev warnings should be on by default
run_cmake(Wdev)
set(RunCMake_TEST_OPTIONS --debug-output)
run_cmake(debug-output)
unset(RunCMake_TEST_OPTIONS)

View File

@ -1,5 +1,6 @@
include(RunCMake)
run_cmake(defaultmessage)
run_cmake(nomessage)
run_cmake(warnmessage)
run_cmake(errormessage)

View File

@ -0,0 +1 @@
0

View File

@ -0,0 +1,5 @@
^CMake Warning \(dev\) at defaultmessage.cmake:4 \(message\):
This is a author warning
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.$

View File

@ -0,0 +1,4 @@
message(DEPRECATION "This is a deprecation warning")
message(AUTHOR_WARNING "This is a author warning")