Selaa lähdekoodia

Merge topic 'revert-cmake-W-options'

2e606306 Merge branch 'improve-variable-help-formatting' into revert-cmake-W-options
81739e92 Revert topic 'cmake-W-options' (#15747)
Brad King 10 vuotta sitten
vanhempi
sitoutus
414cc18a9a

+ 2 - 41
Help/manual/OPTIONS_BUILD.txt

@@ -77,49 +77,10 @@
  Suppress developer warnings.
 
  Suppress warnings that are meant for the author of the
- CMakeLists.txt files. By default this will also turn off
- deprecation warnings.
+ CMakeLists.txt files.
 
 ``-Wdev``
  Enable developer warnings.
 
  Enable warnings that are meant for the author of the CMakeLists.txt
- files. By default this will also turn on deprecation warnings.
-
-``-Werror=dev``
- Make developer warnings errors.
-
- Make warnings that are meant for the author of the CMakeLists.txt
- files errors. By default this will also turn on treatment of
- deprecation warnings as errors.
-
-``-Wno-error=dev``
- Make developer warnings not errors.
-
- Make warnings that are meant for the author of the CMakeLists.txt
- files not errors. By default this will also turn off treatment of
- deprecation warnings as errors.
-
-``-Wdeprecated``
- Enable deprecated macro and function warnings.
-
- Enable warnings for usage of deprecated macros and functions, that
- are meant for the author of the CMakeLists.txt files.
-
-``-Wno-deprecated``
- Suppress deprecated macro and function warnings.
-
- Suppress warnings for usage of deprecated macros and functions, that
- are meant for the author of the CMakeLists.txt files.
-
-``-Werror=deprecated``
- Make deprecated macro and function warnings errors.
-
- Make warnings for usage of deprecated macros and functions, that
- are meant for the author of the CMakeLists.txt files, errors.
-
-``-Wno-error=deprecated``
- Make deprecated macro and function warnings not errors.
-
- Make warnings for usage of deprecated macros and functions, that
- are meant for the author of the CMakeLists.txt files, not errors.
+ files.

+ 0 - 13
Help/release/dev/cmake-W-options.rst

@@ -1,13 +0,0 @@
-cmake-W-options
----------------
-
-* The :variable:`CMAKE_ERROR_DEPRECATED` variable can now be set using the
-  ``-Werror=deprecated`` and ``-Wno-error=deprecated`` :manual:`cmake(1)`
-  options.
-
-* The :variable:`CMAKE_WARN_DEPRECATED` variable can now be set using the
-  ``-Wdeprecated`` and ``-Wno-deprecated`` :manual:`cmake(1)` options.
-
-* :manual:`cmake(1)` gained options ``-Werror=dev`` and ``-Wno-error=dev``
-  to control whether developer warnings intended for project authors
-  are treated as errors.

+ 0 - 4
Help/variable/CMAKE_ERROR_DEPRECATED.rst

@@ -6,7 +6,3 @@ Whether to issue deprecation errors for macros and functions.
 If ``TRUE``, this can be used by macros and functions to issue fatal
 errors when deprecated macros or functions are used.  This variable is
 ``FALSE`` by default.
-
-These errors can be enabled with the ``-Werror=deprecated`` option, or
-disabled with the ``-Wno-error=deprecated`` option, when running
-:manual:`cmake(1)`.

+ 0 - 4
Help/variable/CMAKE_WARN_DEPRECATED.rst

@@ -5,7 +5,3 @@ Whether to issue deprecation warnings for macros and functions.
 
 If ``TRUE``, this can be used by macros and functions to issue deprecation
 warnings.  This variable is ``FALSE`` by default.
-
-These warnings can be enabled with the ``-Wdeprecated`` option, or
-disabled with the ``-Wno-deprecated`` option, when running
-:manual:`cmake(1)`.

+ 1 - 13
Source/cmMessageCommand.cxx

@@ -43,19 +43,7 @@ bool cmMessageCommand
     }
   else if (*i == "AUTHOR_WARNING")
     {
-    if (this->Makefile->IsOn("CMAKE_ERROR_DEVELOPER_WARNINGS"))
-      {
-      fatal = true;
-      type = cmake::AUTHOR_ERROR;
-      }
-    else if (!this->Makefile->IsOn("CMAKE_SUPPRESS_DEVELOPER_WARNINGS"))
-      {
-      type = cmake::AUTHOR_WARNING;
-      }
-    else
-      {
-      return true;
-      }
+    type = cmake::AUTHOR_WARNING;
     ++i;
     }
   else if (*i == "STATUS")

+ 29 - 205
Source/cmake.cxx

@@ -128,6 +128,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)
       {
@@ -645,7 +592,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
       }
@@ -1232,121 +1183,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_");
@@ -1677,18 +1532,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) )
     {
@@ -2596,17 +2439,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;
 }
@@ -2628,12 +2474,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";
@@ -2657,8 +2497,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");
@@ -2855,18 +2694,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);
-    }
-}

+ 9 - 18
Source/cmake.h

@@ -59,7 +59,6 @@ class cmake
  public:
   enum MessageType
   { AUTHOR_WARNING,
-    AUTHOR_ERROR,
     FATAL_ERROR,
     INTERNAL_ERROR,
     MESSAGE,
@@ -69,12 +68,6 @@ class cmake
     DEPRECATION_WARNING
   };
 
-  enum WarningLevel
-  {
-    IGNORE_LEVEL,
-    WARNING_LEVEL,
-    ERROR_LEVEL
-  };
 
   /** \brief Describes the working modes of cmake */
   enum WorkingMode
@@ -278,7 +271,6 @@ class cmake
   void SetTrace(bool b) {  this->Trace = b;}
   bool GetTraceExpand() { return this->TraceExpand;}
   void SetTraceExpand(bool b) {  this->TraceExpand = b;}
-  void SetSuppressDevWarnings(bool b);
   bool GetWarnUninitialized() { return this->WarnUninitialized;}
   void SetWarnUninitialized(bool b) {  this->WarnUninitialized = b;}
   bool GetWarnUnused() { return this->WarnUnused;}
@@ -299,6 +291,12 @@ class cmake
   std::string const& GetCMakeEditCommand() const
     { return this->CMakeEditCommand; }
 
+  void SetSuppressDevWarnings(bool v)
+    {
+      this->SuppressDevWarnings = v;
+      this->DoSuppressDevWarnings = true;
+    }
+
   /** Display a message to the user.  */
   void IssueMessage(cmake::MessageType t, std::string const& text,
         cmListFileBacktrace const& backtrace = cmListFileBacktrace());
@@ -341,7 +339,8 @@ protected:
 
   cmGlobalGenerator *GlobalGenerator;
   cmCacheManager *CacheManager;
-  std::map<std::string, WarningLevel> WarningLevels;
+  bool SuppressDevWarnings;
+  bool DoSuppressDevWarnings;
   std::string GeneratorPlatform;
   std::string GeneratorToolset;
 
@@ -417,15 +416,7 @@ private:
   {"-T <toolset-name>", "Specify toolset name if supported by generator."}, \
   {"-A <platform-name>", "Specify platform name if supported by generator."}, \
   {"-Wno-dev", "Suppress developer warnings."},\
-  {"-Wdev", "Enable developer warnings."},\
-  {"-Werror=dev", "Make developer warnings errors."},\
-  {"-Wno-error=dev", "Make developer warnings not errors."},\
-  {"-Wdeprecated", "Enable deprecated macro and function warnings."},\
-  {"-Wno-deprecated", "Suppress deprecated macro and function warnings."},\
-  {"-Werror=deprecated", "Make deprecated macro and function warnings " \
-                         "errors."},\
-  {"-Wno-error=deprecated", "Make deprecated macro and function warnings " \
-                            "not errors."}
+  {"-Wdev", "Enable developer warnings."}
 
 #define FOR_EACH_C_FEATURE(F) \
   F(c_function_prototypes) \

+ 0 - 46
Tests/RunCMake/CommandLine/RunCMakeTest.cmake

@@ -132,52 +132,6 @@ set(RunCMake_TEST_OPTIONS -Wno-dev -Wdev)
 run_cmake(Wdev)
 unset(RunCMake_TEST_OPTIONS)
 
-set(RunCMake_TEST_OPTIONS -Werror=dev)
-run_cmake(Werror_dev)
-unset(RunCMake_TEST_OPTIONS)
-
-set(RunCMake_TEST_OPTIONS -Wno-error=dev)
-run_cmake(Wno-error_deprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-# -Wdev should not override deprecated options if specified
-set(RunCMake_TEST_OPTIONS -Wdev -Wno-deprecated)
-run_cmake(Wno-deprecated)
-unset(RunCMake_TEST_OPTIONS)
-set(RunCMake_TEST_OPTIONS -Wno-deprecated -Wdev)
-run_cmake(Wno-deprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-# -Wdev should enable deprecated warnings as well
-set(RunCMake_TEST_OPTIONS -Wdev)
-run_cmake(Wdeprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-# -Werror=dev should enable deprecated errors as well
-set(RunCMake_TEST_OPTIONS -Werror=dev)
-run_cmake(Werror_deprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-set(RunCMake_TEST_OPTIONS -Wdeprecated)
-run_cmake(Wdeprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-set(RunCMake_TEST_OPTIONS -Wno-deprecated)
-run_cmake(Wno-deprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-set(RunCMake_TEST_OPTIONS -Werror=deprecated)
-run_cmake(Werror_deprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-set(RunCMake_TEST_OPTIONS -Wno-error=deprecated)
-run_cmake(Wno-error_deprecated)
-unset(RunCMake_TEST_OPTIONS)
-
-run_cmake_command(W_bad-arg1 ${CMAKE_COMMAND} -W)
-run_cmake_command(W_bad-arg2 ${CMAKE_COMMAND} -Wno-)
-run_cmake_command(W_bad-arg3 ${CMAKE_COMMAND} -Werror=)
-
 set(RunCMake_TEST_OPTIONS --debug-output)
 run_cmake(debug-output)
 unset(RunCMake_TEST_OPTIONS)

+ 0 - 1
Tests/RunCMake/CommandLine/W_bad-arg1-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 2
Tests/RunCMake/CommandLine/W_bad-arg1-stderr.txt

@@ -1,2 +0,0 @@
-CMake Error: -W must be followed with \[no-\]\[error=\]<name>.
-CMake Error: Problem processing arguments. Aborting.

+ 0 - 1
Tests/RunCMake/CommandLine/W_bad-arg2-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 2
Tests/RunCMake/CommandLine/W_bad-arg2-stderr.txt

@@ -1,2 +0,0 @@
-CMake Error: No warning name provided.
-CMake Error: Problem processing arguments. Aborting.

+ 0 - 1
Tests/RunCMake/CommandLine/W_bad-arg3-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 2
Tests/RunCMake/CommandLine/W_bad-arg3-stderr.txt

@@ -1,2 +0,0 @@
-CMake Error: No warning name provided.
-CMake Error: Problem processing arguments. Aborting.

+ 0 - 4
Tests/RunCMake/CommandLine/Wdeprecated-stderr.txt

@@ -1,4 +0,0 @@
-^CMake Deprecation Warning at Wdeprecated.cmake:1 \(message\):
-  Some deprecated warning
-Call Stack \(most recent call first\):
-  CMakeLists.txt:3 \(include\)

+ 0 - 1
Tests/RunCMake/CommandLine/Wdeprecated.cmake

@@ -1 +0,0 @@
-message(DEPRECATION "Some deprecated warning")

+ 0 - 1
Tests/RunCMake/CommandLine/Werror_deprecated-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 4
Tests/RunCMake/CommandLine/Werror_deprecated-stderr.txt

@@ -1,4 +0,0 @@
-^CMake Deprecation Error at Werror_deprecated.cmake:1 \(message\):
-  Some deprecated warning
-Call Stack \(most recent call first\):
-  CMakeLists.txt:3 \(include\)

+ 0 - 1
Tests/RunCMake/CommandLine/Werror_deprecated.cmake

@@ -1 +0,0 @@
-message(DEPRECATION "Some deprecated warning")

+ 0 - 1
Tests/RunCMake/CommandLine/Werror_dev-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 5
Tests/RunCMake/CommandLine/Werror_dev-stderr.txt

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

+ 0 - 1
Tests/RunCMake/CommandLine/Werror_dev.cmake

@@ -1 +0,0 @@
-message(AUTHOR_WARNING "Some author warning")

+ 0 - 1
Tests/RunCMake/CommandLine/Wno-deprecated.cmake

@@ -1 +0,0 @@
-message(DEPRECATION "Some deprecated warning")

+ 0 - 1
Tests/RunCMake/CommandLine/Wno-error_deprecated.cmake

@@ -1 +0,0 @@
-message(DEPRECATION "Some deprecated warning")

+ 0 - 1
Tests/RunCMake/CommandLine/Wno-error_dev.cmake

@@ -1 +0,0 @@
-message(AUTHOR_WARNING "Some author warning")