This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  f60ec9e63a3a237ba868d2a454152a59a8c38b6a (commit)
       via  822697996e3c3fb92eaa817584d0bf6e0bd76b22 (commit)
      from  c2ffcb3aabc5d422784eed7d11412e754087ea58 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f60ec9e63a3a237ba868d2a454152a59a8c38b6a
commit f60ec9e63a3a237ba868d2a454152a59a8c38b6a
Merge: c2ffcb3 8226979
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Feb 7 11:42:23 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Thu Feb 7 06:42:30 2019 -0500

    Merge topic 'vs-csharp-nowarn-numbers'
    
    822697996e VS: Fix nowarn compiler option to accept warning numbers.
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !2923


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=822697996e3c3fb92eaa817584d0bf6e0bd76b22
commit 822697996e3c3fb92eaa817584d0bf6e0bd76b22
Author:     Wil Stark <wil_st...@keysight.com>
AuthorDate: Tue Feb 5 15:12:38 2019 -0800
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Thu Feb 7 06:39:45 2019 -0500

    VS: Fix nowarn compiler option to accept warning numbers.
    
    Warning disables are transferred to the VS IDE `<NoWarn>` node.
    
    Fixes: #18878

diff --git a/Source/cmGlobalVisualStudio10Generator.cxx 
b/Source/cmGlobalVisualStudio10Generator.cxx
index 07656ed..d8b2e89 100644
--- a/Source/cmGlobalVisualStudio10Generator.cxx
+++ b/Source/cmGlobalVisualStudio10Generator.cxx
@@ -1136,6 +1136,8 @@ static unsigned int cmLoadFlagTableSpecial(Json::Value 
entry,
           value |= cmIDEFlagTable::CaseInsensitive;
         } else if (s == "SpaceAppendable") {
           value |= cmIDEFlagTable::SpaceAppendable;
+        } else if (s == "CommaAppendable") {
+          value |= cmIDEFlagTable::CommaAppendable;
         }
       }
     }
diff --git a/Source/cmIDEFlagTable.h b/Source/cmIDEFlagTable.h
index 28d5d53..ff93432 100644
--- a/Source/cmIDEFlagTable.h
+++ b/Source/cmIDEFlagTable.h
@@ -29,6 +29,9 @@ struct cmIDEFlagTable
     SpaceAppendable = (1 << 7),     // a flag that if specified multiple times
                                     // should have its value appended to the
                                     // old value with spaces
+    CommaAppendable = (1 << 8),     // a flag that if specified multiple times
+                                    // should have its value appended to the
+                                    // old value with commas (e.g. C# /nowarn
 
     UserValueIgnored = UserValue | UserIgnored,
     UserValueRequired = UserValue | UserRequired
diff --git a/Source/cmIDEOptions.cxx b/Source/cmIDEOptions.cxx
index ee0c782..ea67d45 100644
--- a/Source/cmIDEOptions.cxx
+++ b/Source/cmIDEOptions.cxx
@@ -148,6 +148,8 @@ void cmIDEOptions::FlagMapUpdate(cmIDEFlagTable const* 
entry,
     this->FlagMap[entry->IDEName].push_back(new_value);
   } else if (entry->special & cmIDEFlagTable::SpaceAppendable) {
     this->FlagMap[entry->IDEName].append_with_space(new_value);
+  } else if (entry->special & cmIDEFlagTable::CommaAppendable) {
+    this->FlagMap[entry->IDEName].append_with_comma(new_value);
   } else {
     // Use the user-specified value.
     this->FlagMap[entry->IDEName] = new_value;
diff --git a/Source/cmIDEOptions.h b/Source/cmIDEOptions.h
index a4e5757..4a43073 100644
--- a/Source/cmIDEOptions.h
+++ b/Source/cmIDEOptions.h
@@ -65,12 +65,22 @@ protected:
       this->derived::operator=(r);
       return *this;
     }
+    FlagValue& append_with_comma(std::string const& r)
+    {
+      return append_with_separator(r, ',');
+    }
     FlagValue& append_with_space(std::string const& r)
     {
+      return append_with_separator(r, ' ');
+    }
+
+  private:
+    FlagValue& append_with_separator(std::string const& r, char separator)
+    {
       this->resize(1);
       std::string& l = this->operator[](0);
       if (!l.empty()) {
-        l += " ";
+        l += separator;
       }
       l += r;
       return *this;
diff --git a/Templates/MSBuild/FlagTables/v10_CSharp.json 
b/Templates/MSBuild/FlagTables/v10_CSharp.json
index a0780a4..5989aea 100644
--- a/Templates/MSBuild/FlagTables/v10_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v10_CSharp.json
@@ -299,11 +299,15 @@
     "flags": []
   },
   {
-    "name":  "DisabledWarnings",
-    "switch": "nowarn",
+    "name":  "NoWarn",
+    "switch": "nowarn:",
     "comment": "",
     "value": "",
-    "flags": []
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
   },
   {
     "name":  "CheckForOverflowUnderflow",
diff --git a/Templates/MSBuild/FlagTables/v11_CSharp.json 
b/Templates/MSBuild/FlagTables/v11_CSharp.json
index a0780a4..5989aea 100644
--- a/Templates/MSBuild/FlagTables/v11_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v11_CSharp.json
@@ -299,11 +299,15 @@
     "flags": []
   },
   {
-    "name":  "DisabledWarnings",
-    "switch": "nowarn",
+    "name":  "NoWarn",
+    "switch": "nowarn:",
     "comment": "",
     "value": "",
-    "flags": []
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
   },
   {
     "name":  "CheckForOverflowUnderflow",
diff --git a/Templates/MSBuild/FlagTables/v12_CSharp.json 
b/Templates/MSBuild/FlagTables/v12_CSharp.json
index a0780a4..5989aea 100644
--- a/Templates/MSBuild/FlagTables/v12_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v12_CSharp.json
@@ -299,11 +299,15 @@
     "flags": []
   },
   {
-    "name":  "DisabledWarnings",
-    "switch": "nowarn",
+    "name":  "NoWarn",
+    "switch": "nowarn:",
     "comment": "",
     "value": "",
-    "flags": []
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
   },
   {
     "name":  "CheckForOverflowUnderflow",
diff --git a/Templates/MSBuild/FlagTables/v140_CSharp.json 
b/Templates/MSBuild/FlagTables/v140_CSharp.json
index a0780a4..5989aea 100644
--- a/Templates/MSBuild/FlagTables/v140_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v140_CSharp.json
@@ -299,11 +299,15 @@
     "flags": []
   },
   {
-    "name":  "DisabledWarnings",
-    "switch": "nowarn",
+    "name":  "NoWarn",
+    "switch": "nowarn:",
     "comment": "",
     "value": "",
-    "flags": []
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
   },
   {
     "name":  "CheckForOverflowUnderflow",
diff --git a/Templates/MSBuild/FlagTables/v141_CSharp.json 
b/Templates/MSBuild/FlagTables/v141_CSharp.json
index a0780a4..5989aea 100644
--- a/Templates/MSBuild/FlagTables/v141_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v141_CSharp.json
@@ -299,11 +299,15 @@
     "flags": []
   },
   {
-    "name":  "DisabledWarnings",
-    "switch": "nowarn",
+    "name":  "NoWarn",
+    "switch": "nowarn:",
     "comment": "",
     "value": "",
-    "flags": []
+    "flags": [
+      "UserValue",
+      "UserRequired",
+      "CommaAppendable"
+    ]
   },
   {
     "name":  "CheckForOverflowUnderflow",
diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake 
b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
index 7c1ed4e..df253a9 100644
--- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
@@ -1,5 +1,6 @@
 include(RunCMake)
 
+run_cmake(VsCSharpCompilerOpts)
 run_cmake(ExplicitCMakeLists)
 run_cmake(SourceGroupCMakeLists)
 
diff --git a/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts-check.cmake 
b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts-check.cmake
new file mode 100644
index 0000000..3e418c3
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts-check.cmake
@@ -0,0 +1,64 @@
+#
+# Check C# VS project for required elements.
+#
+set(csProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.csproj")
+if(NOT EXISTS "${csProjectFile}")
+  set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.")
+  return()
+endif()
+
+
+set(inDebug FALSE)
+set(inRelease FALSE)
+set(debugOK FALSE)
+set(releaseOK FALSE)
+
+
+file(STRINGS "${csProjectFile}" lines)
+foreach(line IN LISTS lines)
+  #message(STATUS ${line})
+  if(line MATCHES "^ *<PropertyGroup .*Debug\\|(Win32|x64).*")
+    set(inDebug TRUE)
+  elseif(line MATCHES "^ *<PropertyGroup .*Release\\|(Win32|x64).*")
+    set(inRelease TRUE)
+  elseif(line MATCHES "^ *</PropertyGroup> *$")
+    set(inRelease FALSE)
+    set(inDebug  FALSE)
+  elseif(inDebug AND
+    (line MATCHES "^ *<NoWarn>.*505.*</NoWarn> *$") AND
+    (line MATCHES "^ *<NoWarn>.*707.*</NoWarn> *$") AND
+    (line MATCHES "^ *<NoWarn>.*808.*</NoWarn> *$") AND
+    (line MATCHES "^ *<NoWarn>.*909.*</NoWarn> *$")
+    )
+    set(debugOK TRUE)
+  elseif(inRelease AND
+    (NOT (line MATCHES "^ *<NoWarn>.*505.*</NoWarn> *$")) AND
+    (line MATCHES "^ *<NoWarn>.*707.*</NoWarn> *$") AND
+    (line MATCHES "^ *<NoWarn>.*808.*</NoWarn> *$") AND
+    (line MATCHES "^ *<NoWarn>.*909.*</NoWarn> *$")
+    )
+    set(releaseOK TRUE)
+  endif()
+endforeach()
+
+function(print_csprojfile)
+  file(STRINGS "${csProjectFile}" lines)
+  foreach(line IN LISTS lines)
+    message(STATUS ${line})
+  endforeach()
+endfunction()
+
+
+if(NOT debugOK)
+  message(STATUS "Failed to set Debug configuration warning config correctly.")
+  set(RunCMake_TEST_FAILED "Failed to set Debug configuration defines 
correctly.")
+  print_csprojfile()
+  return()
+endif()
+
+if(NOT releaseOK)
+  message(STATUS "Failed to set Release configuration warning config 
correctly.")
+  set(RunCMake_TEST_FAILED "Failed to set Release configuration defines 
correctly.")
+  print_csprojfile()
+  return()
+endif()
diff --git a/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake 
b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake
new file mode 100644
index 0000000..85af38b
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake
@@ -0,0 +1,14 @@
+enable_language(CSharp)
+
+add_library(foo SHARED
+  foo.cs)
+
+set_target_properties(foo PROPERTIES
+  LINKER_LANGUAGE CSharp)
+
+
+# Issue 18878
+target_compile_options(foo PRIVATE     "/platform:anycpu" "/nowarn:707,808" 
"/nowarn:909" )
+
+# Debug only warning disable
+set(CMAKE_CSharp_FLAGS_DEBUG "${CMAKE_CSharp_FLAGS_DEBUG} /nowarn:505")

-----------------------------------------------------------------------

Summary of changes:
 Source/cmGlobalVisualStudio10Generator.cxx           |  2 ++
 Source/cmIDEFlagTable.h                              |  3 +++
 Source/cmIDEOptions.cxx                              |  2 ++
 Source/cmIDEOptions.h                                | 12 +++++++++++-
 Templates/MSBuild/FlagTables/v10_CSharp.json         | 10 +++++++---
 Templates/MSBuild/FlagTables/v11_CSharp.json         | 10 +++++++---
 Templates/MSBuild/FlagTables/v12_CSharp.json         | 10 +++++++---
 Templates/MSBuild/FlagTables/v140_CSharp.json        | 10 +++++++---
 Templates/MSBuild/FlagTables/v141_CSharp.json        | 10 +++++++---
 Tests/RunCMake/VS10Project/RunCMakeTest.cmake        |  1 +
 ...-check.cmake => VsCSharpCompilerOpts-check.cmake} | 20 ++++++++++----------
 .../RunCMake/VS10Project/VsCSharpCompilerOpts.cmake  | 14 ++++++++++++++
 12 files changed, 78 insertions(+), 26 deletions(-)
 copy Tests/RunCMake/VS10Project/{VsCSharpDefines-check.cmake => 
VsCSharpCompilerOpts-check.cmake} (58%)
 create mode 100644 Tests/RunCMake/VS10Project/VsCSharpCompilerOpts.cmake


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to