Browse Source

Merge topic 'fix-Message-API-ISP-violation'

0a4af073 cmake: Issue message independent of cmMakefile definition
Brad King 9 years ago
parent
commit
3b14a4bca4

+ 6 - 5
Source/cmMessageCommand.cxx

@@ -24,7 +24,6 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
   cmake::MessageType type = cmake::MESSAGE;
   bool status = false;
   bool fatal = false;
-  cmake* cm = this->Makefile->GetCMakeInstance();
   if (*i == "SEND_ERROR") {
     type = cmake::FATAL_ERROR;
     ++i;
@@ -36,10 +35,11 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
     type = cmake::WARNING;
     ++i;
   } else if (*i == "AUTHOR_WARNING") {
-    if (cm->GetDevWarningsAsErrors(this->Makefile)) {
+    if (this->Makefile->IsSet("CMAKE_SUPPRESS_DEVELOPER_ERRORS") &&
+        !this->Makefile->IsOn("CMAKE_SUPPRESS_DEVELOPER_ERRORS")) {
       fatal = true;
       type = cmake::AUTHOR_ERROR;
-    } else if (!cm->GetSuppressDevWarnings(this->Makefile)) {
+    } else if (!this->Makefile->IsOn("CMAKE_SUPPRESS_DEVELOPER_WARNINGS")) {
       type = cmake::AUTHOR_WARNING;
     } else {
       return true;
@@ -49,10 +49,11 @@ bool cmMessageCommand::InitialPass(std::vector<std::string> const& args,
     status = true;
     ++i;
   } else if (*i == "DEPRECATION") {
-    if (cm->GetDeprecatedWarningsAsErrors(this->Makefile)) {
+    if (this->Makefile->IsOn("CMAKE_ERROR_DEPRECATED")) {
       fatal = true;
       type = cmake::DEPRECATION_ERROR;
-    } else if (!cm->GetSuppressDeprecatedWarnings(this->Makefile)) {
+    } else if ((!this->Makefile->IsSet("CMAKE_WARN_DEPRECATED") ||
+                this->Makefile->IsOn("CMAKE_WARN_DEPRECATED"))) {
       type = cmake::DEPRECATION_WARNING;
     } else {
       return true;

+ 17 - 43
Source/cmake.cxx

@@ -2447,19 +2447,11 @@ void cmake::RunCheckForUnusedVariables()
 #endif
 }
 
-bool cmake::GetSuppressDevWarnings(cmMakefile const* mf) const
-{
-  /*
-   * 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);
-  }
+bool cmake::GetSuppressDevWarnings() const
+{
+  const char* cacheEntryValue =
+    this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_WARNINGS");
+  return cmSystemTools::IsOn(cacheEntryValue);
 }
 
 void cmake::SetSuppressDevWarnings(bool b)
@@ -2481,20 +2473,11 @@ void cmake::SetSuppressDevWarnings(bool b)
                       cmState::INTERNAL);
 }
 
-bool cmake::GetSuppressDeprecatedWarnings(cmMakefile const* mf) const
+bool cmake::GetSuppressDeprecatedWarnings() const
 {
-  /*
-   * 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->IsSet("CMAKE_WARN_DEPRECATED") &&
-            !mf->IsOn("CMAKE_WARN_DEPRECATED"));
-  } else {
-    const char* cacheEntryValue =
-      this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
-    return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
-  }
+  const char* cacheEntryValue =
+    this->State->GetCacheEntryValue("CMAKE_WARN_DEPRECATED");
+  return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
 }
 
 void cmake::SetSuppressDeprecatedWarnings(bool b)
@@ -2516,16 +2499,11 @@ void cmake::SetSuppressDeprecatedWarnings(bool b)
                       cmState::INTERNAL);
 }
 
-bool cmake::GetDevWarningsAsErrors(cmMakefile const* mf) const
+bool cmake::GetDevWarningsAsErrors() const
 {
-  if (mf) {
-    return (mf->IsSet("CMAKE_SUPPRESS_DEVELOPER_ERRORS") &&
-            !mf->IsOn("CMAKE_SUPPRESS_DEVELOPER_ERRORS"));
-  } else {
-    const char* cacheEntryValue =
-      this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS");
-    return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
-  }
+  const char* cacheEntryValue =
+    this->State->GetCacheEntryValue("CMAKE_SUPPRESS_DEVELOPER_ERRORS");
+  return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
 }
 
 void cmake::SetDevWarningsAsErrors(bool b)
@@ -2547,15 +2525,11 @@ void cmake::SetDevWarningsAsErrors(bool b)
                       cmState::INTERNAL);
 }
 
-bool cmake::GetDeprecatedWarningsAsErrors(cmMakefile const* mf) const
+bool cmake::GetDeprecatedWarningsAsErrors() const
 {
-  if (mf) {
-    return mf->IsOn("CMAKE_ERROR_DEPRECATED");
-  } else {
-    const char* cacheEntryValue =
-      this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
-    return cmSystemTools::IsOn(cacheEntryValue);
-  }
+  const char* cacheEntryValue =
+    this->State->GetCacheEntryValue("CMAKE_ERROR_DEPRECATED");
+  return cmSystemTools::IsOn(cacheEntryValue);
 }
 
 void cmake::SetDeprecatedWarningsAsErrors(bool b)

+ 4 - 4
Source/cmake.h

@@ -339,7 +339,7 @@ public:
    * Returns false, by default, if developer warnings should be shown, true
    * otherwise.
    */
-  bool GetSuppressDevWarnings(cmMakefile const* mf = NULL) const;
+  bool GetSuppressDevWarnings() const;
   /*
    * Set the state of the suppression of developer (author) warnings.
    */
@@ -350,7 +350,7 @@ public:
    * Returns false, by default, if deprecated warnings should be shown, true
    * otherwise.
    */
-  bool GetSuppressDeprecatedWarnings(cmMakefile const* mf = NULL) const;
+  bool GetSuppressDeprecatedWarnings() const;
   /*
    * Set the state of the suppression of deprecated warnings.
    */
@@ -361,7 +361,7 @@ public:
    * Returns false, by default, if warnings should not be treated as errors,
    * true otherwise.
    */
-  bool GetDevWarningsAsErrors(cmMakefile const* mf = NULL) const;
+  bool GetDevWarningsAsErrors() const;
   /**
    * Set the state of treating developer (author) warnings as errors.
    */
@@ -372,7 +372,7 @@ public:
    * Returns false, by default, if warnings should not be treated as errors,
    * true otherwise.
    */
-  bool GetDeprecatedWarningsAsErrors(cmMakefile const* mf = NULL) const;
+  bool GetDeprecatedWarningsAsErrors() const;
   /**
    * Set the state of treating developer (author) warnings as errors.
    */

+ 2 - 0
Tests/RunCMake/message/RunCMakeTest.cmake

@@ -2,6 +2,8 @@ include(RunCMake)
 
 run_cmake(defaultmessage)
 run_cmake(nomessage)
+run_cmake(message-internal-warning)
+run_cmake(nomessage-internal-warning)
 run_cmake(warnmessage)
 # message command sets fatal occurred flag, so check each type of error
 

+ 13 - 0
Tests/RunCMake/message/message-internal-warning-stderr.txt

@@ -0,0 +1,13 @@
+^CMake Warning \(dev\) in message-internal-warning.cmake:
+  A logical block opening on the line
+
+    .*Tests/RunCMake/message/message-internal-warning.cmake:4 \(macro\)
+
+  closes on the line
+
+    .*Tests/RunCMake/message/message-internal-warning.cmake:5 \(endmacro\)
+
+  with mis-matching arguments.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.$

+ 5 - 0
Tests/RunCMake/message/message-internal-warning.cmake

@@ -0,0 +1,5 @@
+
+set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS ON)
+
+macro(mymacro)
+endmacro(notmymacro)

+ 0 - 0
Tests/RunCMake/message/nomessage-internal-warning-stderr.txt


+ 5 - 0
Tests/RunCMake/message/nomessage-internal-warning.cmake

@@ -0,0 +1,5 @@
+
+set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS ON CACHE BOOL "")
+
+macro(mymacro)
+endmacro(notmymacro)