summaryrefslogtreecommitdiffstats
path: root/Source/cmake.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-09-22 17:51:40 (GMT)
committerBrad King <brad.king@kitware.com>2015-09-22 17:53:09 (GMT)
commit81739e9215ef10d870f14404b0ec5eb4bee16ce4 (patch)
tree96a5cdb8bc99c5949a4f4570a4cd0e34f41190f0 /Source/cmake.cxx
parent975426ceb339cf7a17f57ffba2757bb368669f93 (diff)
downloadCMake-81739e9215ef10d870f14404b0ec5eb4bee16ce4.zip
CMake-81739e9215ef10d870f14404b0ec5eb4bee16ce4.tar.gz
CMake-81739e9215ef10d870f14404b0ec5eb4bee16ce4.tar.bz2
Revert topic 'cmake-W-options' (#15747)
The changes in commit c96fe0b4 (cmake: Add -W options to control deprecation warnings and errors, 2015-07-28) fail to account for -Wdev warnings produced by places in CMake other than message(). This causes a regression in which -Wno-dev fails to suppress such warnings. Revert the feature until it can be revised accordingly.
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r--Source/cmake.cxx234
1 files changed, 29 insertions, 205 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index e28f385..9d2c19e 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -126,6 +126,8 @@ cmake::cmake()
this->WarnUnused = false;
this->WarnUnusedCli = true;
this->CheckSystemVars = false;
+ this->SuppressDevWarnings = false;
+ this->DoSuppressDevWarnings = false;
this->DebugOutput = false;
this->DebugTryCompile = false;
this->ClearBuildSystem = false;
@@ -250,70 +252,15 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
return false;
}
}
- else if(cmHasLiteralPrefix(arg, "-W"))
+ else if(arg.find("-Wno-dev",0) == 0)
{
- std::string entry = arg.substr(2);
- if (entry.empty())
- {
- ++i;
- if (i < args.size())
- {
- entry = args[i];
- }
- else
- {
- cmSystemTools::Error(
- "-W must be followed with [no-][error=]<name>.");
- return false;
- }
+ this->SuppressDevWarnings = true;
+ this->DoSuppressDevWarnings = true;
}
-
- std::string name;
- bool foundNo = false;
- bool foundError = false;
- unsigned int nameStartPosition = 0;
-
- if (entry.find("no-", nameStartPosition) == 0)
- {
- foundNo = true;
- nameStartPosition += 3;
- }
-
- if (entry.find("error=", nameStartPosition) == 0)
- {
- foundError = true;
- nameStartPosition += 6;
- }
-
- name = entry.substr(nameStartPosition);
- if (name.empty())
- {
- cmSystemTools::Error("No warning name provided.");
- return false;
- }
-
- if (!foundNo && !foundError)
- {
- // -W<name>
- this->WarningLevels[name] = std::max(this->WarningLevels[name],
- WARNING_LEVEL);
- }
- else if (foundNo && !foundError)
- {
- // -Wno<name>
- this->WarningLevels[name] = IGNORE_LEVEL;
- }
- else if (!foundNo && foundError)
- {
- // -Werror=<name>
- this->WarningLevels[name] = ERROR_LEVEL;
- }
- else
- {
- // -Wno-error=<name>
- this->WarningLevels[name] = std::min(this->WarningLevels[name],
- WARNING_LEVEL);
- }
+ else if(arg.find("-Wdev",0) == 0)
+ {
+ this->SuppressDevWarnings = false;
+ this->DoSuppressDevWarnings = true;
}
else if(arg.find("-U",0) == 0)
{
@@ -642,7 +589,11 @@ void cmake::SetArgs(const std::vector<std::string>& args,
// skip for now
i++;
}
- else if(arg.find("-W",0) == 0)
+ else if(arg.find("-Wno-dev",0) == 0)
+ {
+ // skip for now
+ }
+ else if(arg.find("-Wdev",0) == 0)
{
// skip for now
}
@@ -1229,121 +1180,25 @@ int cmake::HandleDeleteCacheVariables(const std::string& var)
int cmake::Configure()
{
- WarningLevel warningLevel;
-
- if (this->WarningLevels.count("deprecated") == 1)
+ if(this->DoSuppressDevWarnings)
{
- warningLevel = this->WarningLevels["deprecated"];
- if (warningLevel == IGNORE_LEVEL)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_WARN_DEPRECATED", "FALSE",
- "Whether to issue deprecation warnings for"
- " macros and functions.",
- cmState::BOOL);
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEPRECATED", "FALSE",
- "Whether to issue deprecation errors for macros"
- " and functions.",
- cmState::BOOL);
- }
- if (warningLevel == WARNING_LEVEL)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_WARN_DEPRECATED", "TRUE",
- "Whether to issue deprecation warnings for"
- " macros and functions.",
- cmState::BOOL);
- }
- else if (warningLevel == ERROR_LEVEL)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEPRECATED", "TRUE",
- "Whether to issue deprecation errors for macros"
- " and functions.",
- cmState::BOOL);
- }
- }
-
- if (this->WarningLevels.count("dev") == 1)
- {
- bool setDeprecatedVariables = false;
-
- const char* cachedWarnDeprecated =
- this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
- const char* cachedErrorDeprecated =
- this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
-
- // don't overwrite deprecated warning setting from a previous invocation
- if (!cachedWarnDeprecated && !cachedErrorDeprecated)
- {
- setDeprecatedVariables = true;
- }
-
- warningLevel = this->WarningLevels["dev"];
- if (warningLevel == IGNORE_LEVEL)
+ if(this->SuppressDevWarnings)
{
this->CacheManager->
AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_WARNINGS", "TRUE",
"Suppress Warnings that are meant for"
" the author of the CMakeLists.txt files.",
cmState::INTERNAL);
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEVELOPER_WARNINGS", "FALSE",
- "Suppress errors that are meant for"
- " the author of the CMakeLists.txt files.",
- cmState::INTERNAL);
-
- if (setDeprecatedVariables)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_WARN_DEPRECATED", "FALSE",
- "Whether to issue deprecation warnings for"
- " macros and functions.",
- cmState::BOOL);
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEPRECATED", "FALSE",
- "Whether to issue deprecation errors for macros"
- " and functions.",
- cmState::BOOL);
- }
}
- else if (warningLevel == WARNING_LEVEL)
+ else
{
this->CacheManager->
AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_WARNINGS", "FALSE",
"Suppress Warnings that are meant for"
" the author of the CMakeLists.txt files.",
cmState::INTERNAL);
-
- if (setDeprecatedVariables)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_WARN_DEPRECATED", "TRUE",
- "Whether to issue deprecation warnings for"
- " macros and functions.",
- cmState::BOOL);
- }
- }
- else if (warningLevel == ERROR_LEVEL)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEVELOPER_WARNINGS", "TRUE",
- "Suppress errors that are meant for"
- " the author of the CMakeLists.txt files.",
- cmState::INTERNAL);
-
- if (setDeprecatedVariables)
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEPRECATED", "TRUE",
- "Whether to issue deprecation errors for macros"
- " and functions.",
- cmState::BOOL);
- }
}
}
-
int ret = this->ActualConfigure();
const char* delCacheVars = this->State
->GetGlobalProperty("__CMAKE_DELETE_CACHE_CHANGE_VARS_");
@@ -1674,18 +1529,6 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure)
{
this->AddCMakePaths();
}
-
- // don't turn dev warnings into errors by default, if no value has been
- // specified for the flag, disable it
- if (!this->State->GetCacheEntryValue("CMAKE_ERROR_DEVELOPER_WARNINGS"))
- {
- this->CacheManager->
- AddCacheEntry("CMAKE_ERROR_DEVELOPER_WARNINGS", "FALSE",
- "Suppress errors that are meant for"
- " the author of the CMakeLists.txt files.",
- cmState::INTERNAL);
- }
-
// Add any cache args
if ( !this->SetCacheArgs(args) )
{
@@ -2584,17 +2427,20 @@ bool cmake::PrintMessagePreamble(cmake::MessageType t, std::ostream& msg)
{
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";
+ if(t == cmake::AUTHOR_WARNING)
+ {
+ // Allow suppression of these warnings.
+ const char* suppress = this->State->GetCacheEntryValue(
+ "CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
+ if(suppress && cmSystemTools::IsOn(suppress))
+ {
+ return false;
+ }
+ msg << " (dev)";
+ }
}
return true;
}
@@ -2616,12 +2462,6 @@ void displayMessage(cmake::MessageType t, std::ostringstream& msg)
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";
@@ -2645,8 +2485,7 @@ void displayMessage(cmake::MessageType t, std::ostringstream& msg)
// Output the message.
if(t == cmake::FATAL_ERROR
|| t == cmake::INTERNAL_ERROR
- || t == cmake::DEPRECATION_ERROR
- || t == cmake::AUTHOR_ERROR)
+ || t == cmake::DEPRECATION_ERROR)
{
cmSystemTools::SetErrorOccured();
cmSystemTools::Message(msg.str().c_str(), "Error");
@@ -2824,18 +2663,3 @@ void cmake::RunCheckForUnusedVariables()
}
#endif
}
-
-void cmake::SetSuppressDevWarnings(bool b)
-{
- // equivalent to -Wno-dev
- if (b)
- {
- this->WarningLevels["dev"] = IGNORE_LEVEL;
- }
- // equivalent to -Wdev
- else
- {
- this->WarningLevels["dev"] = std::max(this->WarningLevels["dev"],
- WARNING_LEVEL);
- }
-}