[Cmake-commits] CMake branch, master, updated. v3.13.1-654-g99a224e

Kitware Robot kwrobot at kitware.com
Fri Dec 7 08:43:04 EST 2018


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  99a224e3ee0b6a770c388313a7b32746a95514e8 (commit)
       via  ce1ac9b92d23577f96abd4d750fc8499cc40d70f (commit)
       via  cb85bb3573a89f16fcc9b2852e3ce1bae30838fc (commit)
       via  2d402239c7bdfc538bd4834112abd92ba571c0a4 (commit)
       via  170bcb6fdca5942d0484042ad38c09b420554792 (commit)
       via  a816fe298d14d8cb27e1a64858bd94c3581f7d05 (commit)
       via  9501a6145dfc5d3905d6b241d6599806ec40fd38 (commit)
       via  e184603378e85046fb6e4d627f47e9853577486e (commit)
       via  8c25aa2feb589f733b5b80ec231217fc31518752 (commit)
       via  a688c6b92861c77ee8d065ae8c679c317fe8d0c0 (commit)
       via  c339b64cf241788edd9f886daff619eec41dc242 (commit)
       via  aebdad399efb1394f904428b52011513f7dd0b7c (commit)
       via  c2f6872c4e98a24a24675fa3f9fe016230eeb878 (commit)
       via  8107508b3e610cd2fbbcbf6111f125d39e16f74d (commit)
       via  6d855fbf442d1ab3b209ac9b46f97ad8e567df41 (commit)
       via  9c60ae5f1105d6d793f2693630bf09abb7d66935 (commit)
       via  584ad067ba28924861eeab06cc73d49fdf6f9f89 (commit)
       via  8df25f9400bef5dd374f74725a72e818c2424f4e (commit)
       via  f1223e34c653e4ed6a5f86fe17ae72e7d7a89e9a (commit)
       via  efc90eed7768e1263c60b299e24c6293df274708 (commit)
       via  36b7fc7db6a64b4537bea38640e324c9f283a168 (commit)
       via  21d26a9ecde5a23d6deb6432153c2aede533aead (commit)
       via  44dc9fc48af8171423b4d5e996a8415dfd5f96c0 (commit)
       via  aba364d190fca77d86412f25968a597edf3d725f (commit)
       via  b9fe2785f2df089c731a64c4939a364d49009333 (commit)
       via  6c6c13297c67a7838ff8e05fde1bfedb41401b1d (commit)
       via  454b47ba0bd16a98b15896c732f9a4b91863b581 (commit)
       via  57a78b55260616053ae0f733d2cecfffc9e7455f (commit)
       via  f77320c12aaf74b7d22463965242a3e01d36d882 (commit)
       via  a5d9aa506350291cfe7ca3e144a97edba74959b1 (commit)
       via  1d00fd7702d9cf9c1f2d7a1c17bc9a80f345c39b (commit)
       via  3133fa50948d3f2369a9e5b598ff6537ff7506df (commit)
       via  66704e4271f3bd3b869c86bcd9aef9be87f831ea (commit)
       via  fc58a40e763cd65053acf774c3cf4e4c743004f1 (commit)
       via  7fd339b1e5a23d8e04fe3b4607be260bf26a3ec4 (commit)
       via  f61e0975540504c00c7dc6f763a83e8c74fe7d83 (commit)
       via  c17809bcd7014bf64cd9f95d9e38d5198abc4588 (commit)
       via  73ce99cbfe5712b0f35644baf619ddc0ca754de9 (commit)
       via  f044bbbf08575cb06f468f30680108162d7288d0 (commit)
       via  7faa4d59a858ef0d7eef77c2ae8e8194c2d87385 (commit)
       via  6e947179a84cb790616aa038e9bf127e306ad746 (commit)
       via  2f37ce5e8656dabab304453b15684d60e7a2338c (commit)
       via  a84461160c927279de0435223c35c539e6e22f0e (commit)
       via  8279302110ee6eb09a16e33b3bf8f8ad4ee13b73 (commit)
       via  139b39985f26d4517072d49715c3dfd50a0d7001 (commit)
      from  049d324e42451fb92d9504551f3885e221f05b8a (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=99a224e3ee0b6a770c388313a7b32746a95514e8
commit 99a224e3ee0b6a770c388313a7b32746a95514e8
Merge: ce1ac9b 8107508
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 7 13:37:03 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 7 08:37:14 2018 -0500

    Merge topic 'vs-json-flag-table'
    
    8107508b3e Remove old flag table headers
    6d855fbf44 Replace header flag tables with json reading
    9c60ae5f11 VS: Add flag table entry for -JMC
    584ad067ba VS: Fix flag table entry for -Qspectre
    8df25f9400 VS: connect /Y- compiler option with "Not Using Precompiled Headers"
    f1223e34c6 VS: Add v140 flag table entries for `-Zc:inline[-]`
    efc90eed77 VS: Fix regressed mapping for the cl `/Os` compiler flag
    36b7fc7db6 VS 14: Add flag map for -std= to CppLanguageStandard tag in project files
    ...
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2611


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ce1ac9b92d23577f96abd4d750fc8499cc40d70f
commit ce1ac9b92d23577f96abd4d750fc8499cc40d70f
Merge: cb85bb3 170bcb6
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 7 13:33:45 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 7 08:35:37 2018 -0500

    Merge topic 'gnu-octave'
    
    170bcb6fdc FindOctave: Add module to find GNU octave
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2630


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cb85bb3573a89f16fcc9b2852e3ce1bae30838fc
commit cb85bb3573a89f16fcc9b2852e3ce1bae30838fc
Merge: 2d40223 a816fe2
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 7 13:32:06 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 7 08:34:46 2018 -0500

    Merge topic 'pkg-clang-tidy'
    
    a816fe298d cmCPackFreeBSDGenerator: fix clang-tidy issues
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2712


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d402239c7bdfc538bd4834112abd92ba571c0a4
commit 2d402239c7bdfc538bd4834112abd92ba571c0a4
Merge: 049d324 9501a61
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Dec 7 13:31:10 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Dec 7 08:33:46 2018 -0500

    Merge topic 'submit-method'
    
    9501a6145d CTest: Remove special case for Dart version <= 1
    e184603378 CTest: Add release note about removed submission methods
    8c25aa2feb CTest: Remove submission trigger
    a688c6b928 CTest: Remove submit method 'ftp'
    c339b64cf2 CTest: Remove submit method 'scp'
    aebdad399e CTest: Remove submit method 'cp'
    c2f6872c4e CTest: Remove submit method 'xmlrpc'
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2672


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=170bcb6fdca5942d0484042ad38c09b420554792
commit 170bcb6fdca5942d0484042ad38c09b420554792
Author:     Michael Hirsch, Ph.D <scivision at users.noreply.github.com>
AuthorDate: Sat Nov 17 21:48:26 2018 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Dec 6 14:16:44 2018 -0500

    FindOctave: Add module to find GNU octave

diff --git a/Copyright.txt b/Copyright.txt
index c7a81b1..dc6deb9 100644
--- a/Copyright.txt
+++ b/Copyright.txt
@@ -63,6 +63,7 @@ The following individuals and institutions are among the Contributors:
 * Ilya Lavrenov <ilya.lavrenov at itseez.com>
 * Insight Software Consortium <insightsoftwareconsortium.org>
 * Jan Woetzel
+* Julien Schueller
 * Kelly Thompson <kgt at lanl.gov>
 * Laurent Montel <montel at kde.org>
 * Konstantin Podsvirov <konstantin at podsvirov.pro>
@@ -72,6 +73,7 @@ The following individuals and institutions are among the Contributors:
 * Matthaeus G. Chajdas
 * Matthias Kretz <kretz at kde.org>
 * Matthias Maennich <matthias at maennich.net>
+* Michael Hirsch, Ph.D. <www.scivision.co>
 * Michael Stürmer
 * Miguel A. Figueroa-Villanueva
 * Mike Jackson
diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index cd5d1a5..2f08a04 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -176,6 +176,7 @@ They are normally called through the :command:`find_package` command.
    /module/FindMPEG2
    /module/FindMPEG
    /module/FindMPI
+   /module/FindOctave
    /module/FindODBC
    /module/FindOpenACC
    /module/FindOpenAL
diff --git a/Help/module/FindOctave.rst b/Help/module/FindOctave.rst
new file mode 100644
index 0000000..2dbcec4
--- /dev/null
+++ b/Help/module/FindOctave.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindOctave.cmake
diff --git a/Help/release/dev/FindOctave.rst b/Help/release/dev/FindOctave.rst
new file mode 100644
index 0000000..fe3b242
--- /dev/null
+++ b/Help/release/dev/FindOctave.rst
@@ -0,0 +1,4 @@
+FindOctave
+----------
+
+* A :module:`FindOctave` module was added to find GNU octave.
diff --git a/Modules/FindOctave.cmake b/Modules/FindOctave.cmake
new file mode 100644
index 0000000..8ae6a47
--- /dev/null
+++ b/Modules/FindOctave.cmake
@@ -0,0 +1,167 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindOctave
+----------
+
+Finds GNU Octave interpreter, libraries and compilers.
+
+Imported targets
+^^^^^^^^^^^^^^^^
+
+This module defines the following :prop_tgt:`IMPORTED` targets:
+
+``Octave::Interpreter``
+  Octave interpreter (the main program)
+``Octave::Octave``
+  include directories and libraries
+
+If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``Octave_FOUND``
+  Octave interpreter and/or libraries were found
+``Octave_<component>_FOUND``
+  Octave <component> specified was found
+
+``Octave_EXECUTABLE``
+  Octave interpreter
+``Octave_INCLUDE_DIRS``
+  include path for mex.h
+``Octave_LIBRARIES``
+  octinterp, octave libraries
+
+
+Cache variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set:
+
+``Octave_INTERP_LIBRARY``
+  path to the library octinterp
+``Octave_OCTAVE_LIBRARY``
+  path to the liboctave library
+
+#]=======================================================================]
+
+cmake_policy(VERSION 3.3)
+
+unset(Octave_REQUIRED_VARS)
+unset(Octave_Development_FOUND)
+unset(Octave_Interpreter_FOUND)
+set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME Interpreter)
+
+if(Development IN_LIST Octave_FIND_COMPONENTS)
+  find_program(Octave_CONFIG_EXECUTABLE
+               NAMES octave-config)
+
+  if(Octave_CONFIG_EXECUTABLE)
+
+    execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p BINDIR
+                    OUTPUT_VARIABLE Octave_BINARY_DIR
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p OCTINCLUDEDIR
+                    OUTPUT_VARIABLE Octave_INCLUDE_DIR
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+    list(APPEND Octave_REQUIRED_VARS ${Octave_INCLUDE_DIR})
+
+    execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p OCTLIBDIR
+                    OUTPUT_VARIABLE Octave_LIB1
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    execute_process(COMMAND ${Octave_CONFIG_EXECUTABLE} -p LIBDIR
+                    OUTPUT_VARIABLE Octave_LIB2
+                    ERROR_QUIET
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    find_library(Octave_INTERP_LIBRARY
+               NAMES octinterp
+               PATHS ${Octave_LIB1} ${Octave_LIB2}
+               NO_DEFAULT_PATH
+              )
+    find_library(Octave_OCTAVE_LIBRARY
+                 NAMES octave
+                 PATHS ${Octave_LIB1} ${Octave_LIB2}
+                 NO_DEFAULT_PATH
+                )
+    list(APPEND Octave_REQUIRED_VARS ${Octave_OCTAVE_LIBRARY} ${Octave_INTERP_LIBRARY})
+
+    if(Octave_REQUIRED_VARS)
+      set(Octave_Development_FOUND true)
+    endif()
+  endif(Octave_CONFIG_EXECUTABLE)
+endif()
+
+if(Interpreter IN_LIST Octave_FIND_COMPONENTS)
+
+  find_program(Octave_EXECUTABLE
+               NAMES octave)
+
+  list(APPEND Octave_REQUIRED_VARS ${Octave_EXECUTABLE})
+
+endif()
+
+if(Octave_EXECUTABLE)
+  execute_process(COMMAND ${Octave_EXECUTABLE} -v
+                  OUTPUT_VARIABLE Octave_VERSION
+                  ERROR_QUIET
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+
+  string(REGEX REPLACE "GNU Octave, version ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" Octave_VERSION_MAJOR ${Octave_VERSION})
+  string(REGEX REPLACE "GNU Octave, version [0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" Octave_VERSION_MINOR ${Octave_VERSION})
+  string(REGEX REPLACE "GNU Octave, version [0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" Octave_VERSION_PATCH ${Octave_VERSION})
+
+  set(Octave_VERSION ${Octave_VERSION_MAJOR}.${Octave_VERSION_MINOR}.${Octave_VERSION_PATCH})
+
+  set(Octave_Interpreter_FOUND true)
+
+endif(Octave_EXECUTABLE)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Octave
+  REQUIRED_VARS Octave_REQUIRED_VARS
+  VERSION_VAR Octave_VERSION
+  HANDLE_COMPONENTS)
+
+
+if(Octave_Development_FOUND)
+  set(Octave_LIBRARIES ${Octave_INTERP_LIBRARY} ${Octave_OCTAVE_LIBRARY})
+  set(Octave_INCLUDE_DIRS ${Octave_INCLUDE_DIR})
+
+  if(NOT TARGET Octave::Octave)
+    add_library(Octave::Octave UNKNOWN IMPORTED)
+    set_target_properties(Octave::Octave PROPERTIES
+                          IMPORTED_LOCATION ${Octave_OCTAVE_LIBRARY}
+                          INTERFACE_INCLUDE_DIRECTORIES ${Octave_INCLUDE_DIR}
+                         )
+  endif()
+
+endif()
+
+
+if(Octave_Interpreter_FOUND)
+  if(NOT TARGET Octave::Interpreter)
+    add_executable(Octave::Interpreter IMPORTED)
+    set_target_properties(Octave::Interpreter PROPERTIES
+                          IMPORTED_LOCATION ${Octave_EXECUTABLE}
+                          VERSION ${Octave_VERSION})
+  endif()
+endif()
+
+mark_as_advanced(
+  Octave_CONFIG_EXECUTABLE
+  Octave_INTERP_LIBRARY
+  Octave_OCTAVE_LIBRARY
+  Octave_INCLUDE_DIR
+  Octave_VERSION_MAJOR
+  Octave_VERSION_MINOR
+  Octave_VERSION_PATCH
+)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 8b5f2e9..408c941 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1441,6 +1441,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
     add_subdirectory(FindODBC)
   endif()
 
+  if(CMake_TEST_FindOctave)
+    add_subdirectory(FindOctave)
+  endif()
+
   if(CMake_TEST_FindOpenCL)
     add_subdirectory(FindOpenCL)
   endif()
diff --git a/Tests/FindOctave/CMakeLists.txt b/Tests/FindOctave/CMakeLists.txt
new file mode 100644
index 0000000..1acc966
--- /dev/null
+++ b/Tests/FindOctave/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_test(NAME FindOctave.Test COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/FindOctave/Test"
+  "${CMake_BINARY_DIR}/Tests/FindOctave/Test"
+  ${build_generator_args}
+  --build-project TestFindOctave
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
diff --git a/Tests/FindOctave/Test/CMakeLists.txt b/Tests/FindOctave/Test/CMakeLists.txt
new file mode 100644
index 0000000..ce33fcd
--- /dev/null
+++ b/Tests/FindOctave/Test/CMakeLists.txt
@@ -0,0 +1,20 @@
+cmake_minimum_required(VERSION 3.3)
+project(TestFindOctave CXX)
+enable_testing()
+
+find_package(Octave REQUIRED COMPONENTS Development Interpreter)
+
+add_definitions(-DCMAKE_EXPECTED_Octave_VERSION=${Octave_VERSION})
+
+add_executable(test_tgt main.cpp)
+target_link_libraries(test_tgt Octave::Octave)
+add_test(NAME test_tgt COMMAND test_tgt)
+
+add_test(NAME test_tgt_exe
+         COMMAND Octave::Interpreter -q --eval "runtests('.')"
+         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+add_executable(test_var main.cpp)
+target_include_directories(test_var PRIVATE ${Octave_INCLUDE_DIRS})
+target_link_libraries(test_var PRIVATE ${Octave_LIBRARIES})
+add_test(NAME test_var COMMAND test_var)
diff --git a/Tests/FindOctave/Test/main.cpp b/Tests/FindOctave/Test/main.cpp
new file mode 100644
index 0000000..68270b1
--- /dev/null
+++ b/Tests/FindOctave/Test/main.cpp
@@ -0,0 +1,18 @@
+#include <iostream>
+#include <oct.h>
+
+// http://www.dm.unibo.it/~achilles/calc/octave.html/Standalone-Programs.html
+int main(void)
+{
+  int n = 2;
+  Matrix a_matrix = Matrix(n, n);
+  for (octave_idx_type i = 0; i < n; i++) {
+    for (octave_idx_type j = 0; j < n; j++) {
+      a_matrix(i, j) = (i + 1) * 10 + (j + 1);
+    }
+  }
+
+  std::cout << a_matrix << std::endl;
+
+  return EXIT_SUCCESS;
+}
diff --git a/Tests/FindOctave/Test/testtrue.m b/Tests/FindOctave/Test/testtrue.m
new file mode 100644
index 0000000..0c28a9e
--- /dev/null
+++ b/Tests/FindOctave/Test/testtrue.m
@@ -0,0 +1 @@
+%!assert(true)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a816fe298d14d8cb27e1a64858bd94c3581f7d05
commit a816fe298d14d8cb27e1a64858bd94c3581f7d05
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Thu Dec 6 19:45:17 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Dec 6 19:45:24 2018 +0100

    cmCPackFreeBSDGenerator: fix clang-tidy issues
    
    Install FreeBSD's libpkg on Linux and configure CMake with
    CPACK_ENABLE_FREEBSD_PKG and CMake_RUN_IWYU set to ON.
    Then, fix all warnings.

diff --git a/Source/CPack/cmCPackFreeBSDGenerator.cxx b/Source/CPack/cmCPackFreeBSDGenerator.cxx
index 1433414..2fcd1a8 100644
--- a/Source/CPack/cmCPackFreeBSDGenerator.cxx
+++ b/Source/CPack/cmCPackFreeBSDGenerator.cxx
@@ -55,8 +55,7 @@ cmGeneratedFileStream& operator<<(cmGeneratedFileStream& s,
                                   const EscapeQuotes& v)
 {
   s << '"';
-  for (std::string::size_type i = 0; i < v.value.length(); ++i) {
-    char c = v.value[i];
+  for (char c : v.value) {
     switch (c) {
       case '\n':
         s << "\\n";
@@ -148,8 +147,8 @@ public:
 
   ManifestKeyListValue& operator<<(const std::vector<std::string>& v)
   {
-    for (VList::const_iterator it = v.begin(); it != v.end(); ++it) {
-      (*this) << (*it);
+    for (std::string const& e : v) {
+      (*this) << e;
     }
     return *this;
   }
@@ -159,9 +158,9 @@ public:
     bool with_comma = false;
 
     s << '[';
-    for (VList::const_iterator it = value.begin(); it != value.end(); ++it) {
+    for (std::string const& elem : value) {
       s << (with_comma ? ',' : ' ');
-      s << EscapeQuotes(*it);
+      s << EscapeQuotes(elem);
       with_comma = true;
     }
     s << " ]";
@@ -182,8 +181,8 @@ public:
   void write_value(cmGeneratedFileStream& s) const override
   {
     s << "{\n";
-    for (VList::const_iterator it = value.begin(); it != value.end(); ++it) {
-      s << "  \"" << *it << "\": {\"origin\": \"" << *it << "\"},\n";
+    for (std::string const& elem : value) {
+      s << "  \"" << elem << "\": {\"origin\": \"" << elem << "\"},\n";
     }
     s << '}';
   }
@@ -206,9 +205,8 @@ std::string cmCPackFreeBSDGenerator::var_lookup(const char* var_name)
   const char* pv = this->GetOption(var_name);
   if (!pv) {
     return std::string();
-  } else {
-    return pv;
   }
+  return pv;
 }
 
 // Produce UCL in the given @p manifest file for the common
@@ -234,7 +232,7 @@ void cmCPackFreeBSDGenerator::write_manifest_fields(
   cmSystemTools::ExpandListArgument(
     var_lookup("CPACK_FREEBSD_PACKAGE_LICENSE"), licenses);
   std::string licenselogic("single");
-  if (licenses.size() < 1) {
+  if (licenses.empty()) {
     cmSystemTools::SetFatalErrorOccured();
   } else if (licenses.size() > 1) {
     licenselogic = var_lookup("CPACK_FREEBSD_PACKAGE_LICENSE_LOGIC");
@@ -249,7 +247,7 @@ void cmCPackFreeBSDGenerator::write_manifest_fields(
   std::vector<std::string> deps;
   cmSystemTools::ExpandListArgument(var_lookup("CPACK_FREEBSD_PACKAGE_DEPS"),
                                     deps);
-  if (deps.size() > 0) {
+  if (!deps.empty()) {
     manifest << (ManifestKeyDepsValue("deps") << deps);
   }
 }
@@ -277,13 +275,9 @@ void write_manifest_files(cmGeneratedFileStream& s,
                           const std::string& toplevel,
                           const std::vector<std::string>& files)
 {
-  const char* c_toplevel = toplevel.c_str();
-  std::vector<std::string>::const_iterator it;
-
   s << "\"files\": {\n";
-  for (it = files.begin(); it != files.end(); ++it) {
-    s << "  \"/" << cmSystemTools::RelativePath(c_toplevel, it->c_str())
-      << "\": \""
+  for (std::string const& file : files) {
+    s << "  \"/" << cmSystemTools::RelativePath(toplevel, file) << "\": \""
       << "<sha256>"
       << "\",\n";
   }
@@ -313,7 +307,7 @@ int cmCPackFreeBSDGenerator::PackageFiles()
 
   std::string manifestname = toplevel + "/+MANIFEST";
   {
-    cmGeneratedFileStream manifest(manifestname.c_str());
+    cmGeneratedFileStream manifest(manifestname);
     manifest << "{\n";
     write_manifest_fields(manifest);
     write_manifest_files(manifest, toplevel, files);
@@ -340,16 +334,15 @@ int cmCPackFreeBSDGenerator::PackageFiles()
   std::string output_dir =
     cmSystemTools::CollapseCombinedPath(toplevel, "../");
   pkg_create_from_manifest(output_dir.c_str(), ::TXZ, toplevel.c_str(),
-                           manifestname.c_str(), NULL);
+                           manifestname.c_str(), nullptr);
 
   std::string broken_suffix = std::string("-") +
     var_lookup("CPACK_TOPLEVEL_TAG") + std::string(GetOutputExtension());
-  for (std::vector<std::string>::iterator it = packageFileNames.begin();
-       it != packageFileNames.end(); ++it) {
-    cmCPackLogger(cmCPackLog::LOG_DEBUG, "Packagefile " << *it << std::endl);
-    if (has_suffix(*it, broken_suffix)) {
-      it->replace(it->size() - broken_suffix.size(), std::string::npos,
-                  GetOutputExtension());
+  for (std::string& name : packageFileNames) {
+    cmCPackLogger(cmCPackLog::LOG_DEBUG, "Packagefile " << name << std::endl);
+    if (has_suffix(name, broken_suffix)) {
+      name.replace(name.size() - broken_suffix.size(), std::string::npos,
+                   GetOutputExtension());
       break;
     }
   }

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9501a6145dfc5d3905d6b241d6599806ec40fd38
commit 9501a6145dfc5d3905d6b241d6599806ec40fd38
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Wed Nov 28 00:10:14 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:13 2018 +0100

    CTest: Remove special case for Dart version <= 1

diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index 064a6da..110b08f 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -1069,7 +1069,7 @@ Configuration settings include:
   * :module:`CTest` module variable: ``BUILDNAME``
 
 ``CDashVersion``
-  Specify the version of `CDash`_ on the server.
+  Legacy option.  Not used.
 
   * `CTest Script`_ variable: none, detected from server
   * :module:`CTest` module variable: ``CTEST_CDASH_VERSION``
@@ -1136,8 +1136,7 @@ Configuration settings include:
     else ``CTEST_DROP_SITE_USER``
 
 ``IsCDash``
-  Specify whether the dashboard server is `CDash`_ or an older
-  dashboard server implementation.
+  Legacy option.  Not used.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_CDASH`
   * :module:`CTest` module variable: ``CTEST_DROP_SITE_CDASH``
diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in
index 8cf2f4d..24e7b55 100644
--- a/Modules/DartConfiguration.tcl.in
+++ b/Modules/DartConfiguration.tcl.in
@@ -20,9 +20,6 @@ BuildName: @BUILDNAME@
 LabelsForSubprojects: @CTEST_LABELS_FOR_SUBPROJECTS@
 
 # Submission information
-IsCDash: @CTEST_DROP_SITE_CDASH@
-CDashVersion: @CTEST_CDASH_VERSION@
-QueryCDashVersion: @CTEST_CDASH_QUERY_VERSION@
 DropSite: @DROP_SITE@
 DropLocation: @DROP_LOCATION@
 DropSiteUser: @DROP_SITE_USER@
diff --git a/Source/CTest/cmCTestHandlerCommand.cxx b/Source/CTest/cmCTestHandlerCommand.cxx
index 667a8ba..c63694d 100644
--- a/Source/CTest/cmCTestHandlerCommand.cxx
+++ b/Source/CTest/cmCTestHandlerCommand.cxx
@@ -206,18 +206,7 @@ bool cmCTestHandlerCommand::InitialPass(std::vector<std::string> const& args,
 
   handler->PopulateCustomVectors(this->Makefile);
   if (this->Values[ct_SUBMIT_INDEX]) {
-    if (!this->CTest->GetDropSiteCDash() &&
-        this->CTest->GetDartVersion() <= 1) {
-      cmCTestLog(
-        this->CTest, ERROR_MESSAGE,
-        "Dart before version 2.0 does not support collecting submissions."
-          << std::endl
-          << "Please upgrade the server to Dart 2 or higher, or do not use "
-             "SUBMIT_INDEX."
-          << std::endl);
-    } else {
-      handler->SetSubmitIndex(atoi(this->Values[ct_SUBMIT_INDEX]));
-    }
+    handler->SetSubmitIndex(atoi(this->Values[ct_SUBMIT_INDEX]));
   }
   cmWorkingDirectory workdir(
     this->CTest->GetCTestConfiguration("BuildDirectory"));
diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx
index 2165f40..43bd636 100644
--- a/Source/CTest/cmCTestSubmitCommand.cxx
+++ b/Source/CTest/cmCTestSubmitCommand.cxx
@@ -20,7 +20,6 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
   const char* ctestDropSite = this->Makefile->GetDefinition("CTEST_DROP_SITE");
   const char* ctestDropLocation =
     this->Makefile->GetDefinition("CTEST_DROP_LOCATION");
-  bool ctestDropSiteCDash = this->Makefile->IsOn("CTEST_DROP_SITE_CDASH");
   if (!ctestDropMethod) {
     ctestDropMethod = "http";
   }
@@ -39,9 +38,6 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
   this->CTest->SetCTestConfiguration("DropLocation", ctestDropLocation,
                                      this->Quiet);
 
-  this->CTest->SetCTestConfiguration(
-    "IsCDash", ctestDropSiteCDash ? "TRUE" : "FALSE", this->Quiet);
-
   this->CTest->SetCTestConfigurationFromCMakeVariable(
     this->Makefile, "CurlOptions", "CTEST_CURL_OPTIONS", this->Quiet);
   this->CTest->SetCTestConfigurationFromCMakeVariable(
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index d35d41e..7c19864 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -292,8 +292,6 @@ cmCTest::cmCTest()
   this->OutputLogFile = nullptr;
   this->OutputLogFileLastTag = -1;
   this->SuppressUpdatingCTestConfiguration = false;
-  this->DartVersion = 1;
-  this->DropSiteCDash = false;
   this->BuildID = "";
   this->OutputTestOutputOnTestFailure = false;
   this->OutputColorCode = cmCTest::ColoredOutputSupportedByConsole();
@@ -613,8 +611,6 @@ bool cmCTest::InitializeFromCommand(cmCTestStartCommand* command)
 {
   std::string src_dir = this->GetCTestConfiguration("SourceDirectory");
   std::string bld_dir = this->GetCTestConfiguration("BuildDirectory");
-  this->DartVersion = 1;
-  this->DropSiteCDash = false;
   this->BuildID = "";
   for (Part p = PartStart; p != PartCount; p = Part(p + 1)) {
     this->Parts[p].SubmitFiles.clear();
@@ -658,18 +654,6 @@ bool cmCTest::InitializeFromCommand(cmCTestStartCommand* command)
                                                command->ShouldBeQuiet());
   this->SetCTestConfigurationFromCMakeVariable(
     mf, "BuildName", "CTEST_BUILD_NAME", command->ShouldBeQuiet());
-  const char* dartVersion = mf->GetDefinition("CTEST_DART_SERVER_VERSION");
-  if (dartVersion) {
-    this->DartVersion = atoi(dartVersion);
-    if (this->DartVersion < 0) {
-      cmCTestLog(this, ERROR_MESSAGE,
-                 "Invalid Dart server version: "
-                   << dartVersion << ". Please specify the version number."
-                   << std::endl);
-      return false;
-    }
-  }
-  this->DropSiteCDash = mf->IsOn("CTEST_DROP_SITE_CDASH");
 
   if (!this->Initialize(bld_dir.c_str(), command)) {
     return false;
diff --git a/Source/cmCTest.h b/Source/cmCTest.h
index 9139e42..7da0e1d 100644
--- a/Source/cmCTest.h
+++ b/Source/cmCTest.h
@@ -418,10 +418,6 @@ public:
   /** Get color code characters for a specific color */
   std::string GetColorCode(Color color) const;
 
-  /** Get the version of dart server */
-  int GetDartVersion() { return this->DartVersion; }
-  int GetDropSiteCDash() { return this->DropSiteCDash; }
-
   /** The Build ID is assigned by CDash */
   void SetBuildID(const std::string& id) { this->BuildID = id; }
   std::string GetBuildID() { return this->BuildID; }
@@ -633,9 +629,6 @@ private:
   bool ShowLineNumbers;
   bool Quiet;
 
-  int DartVersion;
-  bool DropSiteCDash;
-
   std::string BuildID;
 
   std::vector<std::string> InitialCommandLineArguments;
diff --git a/Tests/CTestTestBadExe/CTestConfig.cmake b/Tests/CTestTestBadExe/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestBadExe/CTestConfig.cmake
+++ b/Tests/CTestTestBadExe/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestBadGenerator/CTestConfig.cmake b/Tests/CTestTestBadGenerator/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestBadGenerator/CTestConfig.cmake
+++ b/Tests/CTestTestBadGenerator/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestCostSerial/CTestConfig.cmake b/Tests/CTestTestCostSerial/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestCostSerial/CTestConfig.cmake
+++ b/Tests/CTestTestCostSerial/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestCrash/CTestConfig.cmake b/Tests/CTestTestCrash/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestCrash/CTestConfig.cmake
+++ b/Tests/CTestTestCrash/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestCycle/CTestConfig.cmake b/Tests/CTestTestCycle/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestCycle/CTestConfig.cmake
+++ b/Tests/CTestTestCycle/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestDepends/CTestConfig.cmake b/Tests/CTestTestDepends/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestDepends/CTestConfig.cmake
+++ b/Tests/CTestTestDepends/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestFailure/CTestConfig.cmake b/Tests/CTestTestFailure/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestFailure/CTestConfig.cmake
+++ b/Tests/CTestTestFailure/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestLaunchers/launcher_compiler_test_project/CTestConfig.cmake b/Tests/CTestTestLaunchers/launcher_compiler_test_project/CTestConfig.cmake
index 409d83a..c08eded 100644
--- a/Tests/CTestTestLaunchers/launcher_compiler_test_project/CTestConfig.cmake
+++ b/Tests/CTestTestLaunchers/launcher_compiler_test_project/CTestConfig.cmake
@@ -1,7 +1,5 @@
 set(CTEST_USE_LAUNCHERS 1)
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestLaunchers/launcher_custom_command_test_project/CTestConfig.cmake b/Tests/CTestTestLaunchers/launcher_custom_command_test_project/CTestConfig.cmake
index 409d83a..c08eded 100644
--- a/Tests/CTestTestLaunchers/launcher_custom_command_test_project/CTestConfig.cmake
+++ b/Tests/CTestTestLaunchers/launcher_custom_command_test_project/CTestConfig.cmake
@@ -1,7 +1,5 @@
 set(CTEST_USE_LAUNCHERS 1)
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestLaunchers/launcher_linker_test_project/CTestConfig.cmake b/Tests/CTestTestLaunchers/launcher_linker_test_project/CTestConfig.cmake
index 409d83a..c08eded 100644
--- a/Tests/CTestTestLaunchers/launcher_linker_test_project/CTestConfig.cmake
+++ b/Tests/CTestTestLaunchers/launcher_linker_test_project/CTestConfig.cmake
@@ -1,7 +1,5 @@
 set(CTEST_USE_LAUNCHERS 1)
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestParallel/CTestConfig.cmake b/Tests/CTestTestParallel/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestParallel/CTestConfig.cmake
+++ b/Tests/CTestTestParallel/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestResourceLock/CTestConfig.cmake b/Tests/CTestTestResourceLock/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestResourceLock/CTestConfig.cmake
+++ b/Tests/CTestTestResourceLock/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestScheduler/CTestConfig.cmake b/Tests/CTestTestScheduler/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestScheduler/CTestConfig.cmake
+++ b/Tests/CTestTestScheduler/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestSkipReturnCode/CTestConfig.cmake b/Tests/CTestTestSkipReturnCode/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestSkipReturnCode/CTestConfig.cmake
+++ b/Tests/CTestTestSkipReturnCode/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestStopTime/CTestConfig.cmake b/Tests/CTestTestStopTime/CTestConfig.cmake
index fc5bffc..5bc1e9e 100644
--- a/Tests/CTestTestStopTime/CTestConfig.cmake
+++ b/Tests/CTestTestStopTime/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestSubdir/CTestConfig.cmake b/Tests/CTestTestSubdir/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestSubdir/CTestConfig.cmake
+++ b/Tests/CTestTestSubdir/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestTimeout/CTestConfig.cmake b/Tests/CTestTestTimeout/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestTimeout/CTestConfig.cmake
+++ b/Tests/CTestTestTimeout/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestUpload/CTestConfig.cmake b/Tests/CTestTestUpload/CTestConfig.cmake
index 95c79ff..21318b4 100644
--- a/Tests/CTestTestUpload/CTestConfig.cmake
+++ b/Tests/CTestTestUpload/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set (CTEST_DROP_METHOD "http")
 set (CTEST_DROP_SITE "open.cdash.org")
 set (CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set (CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestVerboseOutput/CTestConfig.cmake b/Tests/CTestTestVerboseOutput/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestVerboseOutput/CTestConfig.cmake
+++ b/Tests/CTestTestVerboseOutput/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestZeroTimeout/CTestConfig.cmake b/Tests/CTestTestZeroTimeout/CTestConfig.cmake
index faa91f0..bd265f9 100644
--- a/Tests/CTestTestZeroTimeout/CTestConfig.cmake
+++ b/Tests/CTestTestZeroTimeout/CTestConfig.cmake
@@ -1,6 +1,4 @@
 set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set(CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in b/Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in
index fe6f6ce..53bdd20 100644
--- a/Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in
+++ b/Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in
@@ -1,8 +1,6 @@
 set (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
-set (CTEST_DART_SERVER_VERSION "2")
 set(CTEST_DROP_METHOD "http")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
-set(CTEST_DROP_SITE_CDASH TRUE)
 
 @CTEST_EXTRA_CONFIG@

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e184603378e85046fb6e4d627f47e9853577486e
commit e184603378e85046fb6e4d627f47e9853577486e
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Tue Nov 27 23:39:36 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:13 2018 +0100

    CTest: Add release note about removed submission methods

diff --git a/Help/release/dev/submit-method.rst b/Help/release/dev/submit-method.rst
new file mode 100644
index 0000000..38f0b92
--- /dev/null
+++ b/Help/release/dev/submit-method.rst
@@ -0,0 +1,6 @@
+submit-method
+-------------
+
+* CTest no longer supports submissions via ``ftp``, ``scp``, ``cp``, and
+  ``xmlrpc``.  CDash is the only maintained testing dashboard for CTest,
+  and it only supports submissions over ``http`` and ``https``.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8c25aa2feb589f733b5b80ec231217fc31518752
commit 8c25aa2feb589f733b5b80ec231217fc31518752
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Tue Nov 27 23:19:32 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:13 2018 +0100

    CTest: Remove submission trigger

diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index 3999feb..064a6da 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -1137,7 +1137,7 @@ Configuration settings include:
 
 ``IsCDash``
   Specify whether the dashboard server is `CDash`_ or an older
-  dashboard server implementation requiring ``TriggerSite``.
+  dashboard server implementation.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE_CDASH`
   * :module:`CTest` module variable: ``CTEST_DROP_SITE_CDASH``
@@ -1157,8 +1157,7 @@ Configuration settings include:
     initialized by the :command:`site_name` command
 
 ``TriggerSite``
-  Legacy option to support older dashboard server implementations.
-  Not used when ``IsCDash`` is true.
+  Legacy option.  Not used.
 
   * `CTest Script`_ variable: :variable:`CTEST_TRIGGER_SITE`
   * :module:`CTest` module variable: ``TRIGGER_SITE`` if set,
diff --git a/Help/variable/CTEST_TRIGGER_SITE.rst b/Help/variable/CTEST_TRIGGER_SITE.rst
index de92428..a50e405 100644
--- a/Help/variable/CTEST_TRIGGER_SITE.rst
+++ b/Help/variable/CTEST_TRIGGER_SITE.rst
@@ -1,5 +1,4 @@
 CTEST_TRIGGER_SITE
 ------------------
 
-Specify the CTest ``TriggerSite`` setting
-in a :manual:`ctest(1)` dashboard client script.
+Legacy option.  Not used.
diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in
index 735cadd..8cf2f4d 100644
--- a/Modules/DartConfiguration.tcl.in
+++ b/Modules/DartConfiguration.tcl.in
@@ -29,7 +29,6 @@ DropSiteUser: @DROP_SITE_USER@
 DropSitePassword: @DROP_SITE_PASSWORD@
 DropSiteMode: @DROP_SITE_MODE@
 DropMethod: @DROP_METHOD@
-TriggerSite: @TRIGGER_SITE@
 
 # Dashboard start time
 NightlyStartTime: @NIGHTLY_START_TIME@
diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx
index c1705d7..2165f40 100644
--- a/Source/CTest/cmCTestSubmitCommand.cxx
+++ b/Source/CTest/cmCTestSubmitCommand.cxx
@@ -20,8 +20,6 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
   const char* ctestDropSite = this->Makefile->GetDefinition("CTEST_DROP_SITE");
   const char* ctestDropLocation =
     this->Makefile->GetDefinition("CTEST_DROP_LOCATION");
-  const char* ctestTriggerSite =
-    this->Makefile->GetDefinition("CTEST_TRIGGER_SITE");
   bool ctestDropSiteCDash = this->Makefile->IsOn("CTEST_DROP_SITE_CDASH");
   if (!ctestDropMethod) {
     ctestDropMethod = "http";
@@ -44,13 +42,6 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
   this->CTest->SetCTestConfiguration(
     "IsCDash", ctestDropSiteCDash ? "TRUE" : "FALSE", this->Quiet);
 
-  // Only propagate TriggerSite for non-CDash projects:
-  //
-  if (!ctestDropSiteCDash) {
-    this->CTest->SetCTestConfiguration("TriggerSite", ctestTriggerSite,
-                                       this->Quiet);
-  }
-
   this->CTest->SetCTestConfigurationFromCMakeVariable(
     this->Makefile, "CurlOptions", "CTEST_CURL_OPTIONS", this->Quiet);
   this->CTest->SetCTestConfigurationFromCMakeVariable(
diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index 509d767..75e2cd5 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -131,7 +131,6 @@ void cmCTestSubmitHandler::Initialize()
        p = cmCTest::Part(p + 1)) {
     this->SubmitPart[p] = true;
   }
-  this->CDash = false;
   this->HasWarnings = false;
   this->HasErrors = false;
   this->Superclass::Initialize();
@@ -516,136 +515,6 @@ void cmCTestSubmitHandler::ParseResponse(
   }
 }
 
-bool cmCTestSubmitHandler::TriggerUsingHTTP(
-  const std::vector<std::string>& files, const std::string& remoteprefix,
-  const std::string& url)
-{
-  CURL* curl;
-  char error_buffer[1024];
-
-  /* In windows, this will init the winsock stuff */
-  ::curl_global_init(CURL_GLOBAL_ALL);
-
-  for (std::string const& file : files) {
-    /* get a curl handle */
-    curl = curl_easy_init();
-    if (curl) {
-      // Using proxy
-      if (this->HTTPProxyType > 0) {
-        curl_easy_setopt(curl, CURLOPT_PROXY, this->HTTPProxy.c_str());
-        switch (this->HTTPProxyType) {
-          case 2:
-            curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
-            break;
-          case 3:
-            curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
-            break;
-          default:
-            curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
-            if (!this->HTTPProxyAuth.empty()) {
-              curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD,
-                               this->HTTPProxyAuth.c_str());
-            }
-        }
-      }
-
-      ::curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
-
-      // and give curl the buffer for errors
-      ::curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &error_buffer);
-
-      // specify handler for output
-      ::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,
-                         cmCTestSubmitHandlerWriteMemoryCallback);
-      ::curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION,
-                         cmCTestSubmitHandlerCurlDebugCallback);
-
-      /* we pass our 'chunk' struct to the callback function */
-      cmCTestSubmitHandlerVectorOfChar chunk;
-      cmCTestSubmitHandlerVectorOfChar chunkDebug;
-      ::curl_easy_setopt(curl, CURLOPT_FILE, &chunk);
-      ::curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &chunkDebug);
-
-      std::string rfile = remoteprefix + cmSystemTools::GetFilenameName(file);
-      std::string ofile;
-      for (char c : rfile) {
-        char hexCh[4] = { 0, 0, 0, 0 };
-        hexCh[0] = c;
-        switch (c) {
-          case '+':
-          case '?':
-          case '/':
-          case '\\':
-          case '&':
-          case ' ':
-          case '=':
-          case '%':
-            sprintf(hexCh, "%%%02X", static_cast<int>(c));
-            ofile.append(hexCh);
-            break;
-          default:
-            ofile.append(hexCh);
-        }
-      }
-      std::string turl = url +
-        ((url.find('?') == std::string::npos) ? '?' : '&') +
-        "xmlfile=" + ofile;
-      *this->LogFile << "Trigger url: " << turl << std::endl;
-      cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                         "   Trigger url: " << turl << std::endl, this->Quiet);
-      curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
-      curl_easy_setopt(curl, CURLOPT_URL, turl.c_str());
-      if (curl_easy_perform(curl)) {
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Error when triggering: " << turl << std::endl);
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Error message was: " << error_buffer << std::endl);
-        *this->LogFile << "\tTriggering failed with error: " << error_buffer
-                       << std::endl
-                       << "   Error message was: " << error_buffer
-                       << std::endl;
-        if (!chunk.empty()) {
-          *this->LogFile << "   Curl output was: "
-                         << cmCTestLogWrite(&*chunk.begin(), chunk.size())
-                         << std::endl;
-          cmCTestLog(this->CTest, ERROR_MESSAGE,
-                     "CURL output: ["
-                       << cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "]"
-                       << std::endl);
-        }
-        ::curl_easy_cleanup(curl);
-        ::curl_global_cleanup();
-        return false;
-      }
-
-      if (!chunk.empty()) {
-        cmCTestOptionalLog(this->CTest, DEBUG,
-                           "CURL output: ["
-                             << cmCTestLogWrite(&*chunk.begin(), chunk.size())
-                             << "]" << std::endl,
-                           this->Quiet);
-      }
-      if (!chunkDebug.empty()) {
-        cmCTestOptionalLog(
-          this->CTest, DEBUG,
-          "CURL debug output: ["
-            << cmCTestLogWrite(&*chunkDebug.begin(), chunkDebug.size()) << "]"
-            << std::endl,
-          this->Quiet);
-      }
-
-      // always cleanup
-      ::curl_easy_cleanup(curl);
-      cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl,
-                         this->Quiet);
-    }
-  }
-  ::curl_global_cleanup();
-  cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                     "   Dart server triggered..." << std::endl, this->Quiet);
-  return true;
-}
-
 void cmCTestSubmitHandler::ConstructCDashURL(std::string& dropMethod,
                                              std::string& url)
 {
@@ -900,11 +769,6 @@ int cmCTestSubmitHandler::ProcessHandler()
   if (cdashUploadFile && cdashUploadType) {
     return this->HandleCDashUploadFile(cdashUploadFile, cdashUploadType);
   }
-  std::string iscdash = this->CTest->GetCTestConfiguration("IsCDash");
-  // cdash does not need to trigger so just return true
-  if (!iscdash.empty()) {
-    this->CDash = true;
-  }
 
   const std::string& buildDirectory =
     this->CTest->GetCTestConfiguration("BuildDirectory");
@@ -1084,23 +948,6 @@ int cmCTestSubmitHandler::ProcessHandler()
       ofs << "   Problems when submitting via HTTP" << std::endl;
       return -1;
     }
-    if (!this->CDash) {
-      cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                         "   Using HTTP trigger method"
-                           << std::endl
-                           << "   Trigger site: "
-                           << this->CTest->GetCTestConfiguration("TriggerSite")
-                           << std::endl,
-                         this->Quiet);
-      if (!this->TriggerUsingHTTP(
-            files, prefix,
-            this->CTest->GetCTestConfiguration("TriggerSite"))) {
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Problems when triggering via HTTP" << std::endl);
-        ofs << "   Problems when triggering via HTTP" << std::endl;
-        return -1;
-      }
-    }
     if (this->HasErrors) {
       cmCTestLog(this->CTest, HANDLER_OUTPUT,
                  "   Errors occurred during "
diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h
index 15f230b..393e826 100644
--- a/Source/CTest/cmCTestSubmitHandler.h
+++ b/Source/CTest/cmCTestSubmitHandler.h
@@ -61,10 +61,6 @@ private:
                        const std::string& remoteprefix,
                        const std::string& url);
 
-  bool TriggerUsingHTTP(const std::vector<std::string>& files,
-                        const std::string& remoteprefix,
-                        const std::string& url);
-
   typedef std::vector<char> cmCTestSubmitHandlerVectorOfChar;
 
   void ParseResponse(cmCTestSubmitHandlerVectorOfChar chunk);
@@ -78,7 +74,6 @@ private:
   std::string HTTPProxyAuth;
   std::ostream* LogFile;
   bool SubmitPart[cmCTest::PartCount];
-  bool CDash;
   bool HasWarnings;
   bool HasErrors;
   cmCTest::SetOfStrings Files;

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a688c6b92861c77ee8d065ae8c679c317fe8d0c0
commit a688c6b92861c77ee8d065ae8c679c317fe8d0c0
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Tue Nov 27 21:15:57 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:13 2018 +0100

    CTest: Remove submit method 'ftp'

diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index 1ac5efd..3999feb 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -1106,8 +1106,7 @@ Configuration settings include:
 
 ``DropMethod``
   Specify the method by which results should be submitted to the
-  dashboard server.  The value may be ``ftp``, ``http``, or
-  ``https``.
+  dashboard server.  The value may be ``http`` or ``https``.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
   * :module:`CTest` module variable: ``DROP_METHOD`` if set,
diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index 2232e38..509d767 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -120,7 +120,6 @@ static size_t cmCTestSubmitHandlerCurlDebugCallback(CURL* /*unused*/,
 
 cmCTestSubmitHandler::cmCTestSubmitHandler()
   : HTTPProxy()
-  , FTPProxy()
 {
   this->Initialize();
 }
@@ -139,158 +138,10 @@ void cmCTestSubmitHandler::Initialize()
   this->HTTPProxy.clear();
   this->HTTPProxyType = 0;
   this->HTTPProxyAuth.clear();
-  this->FTPProxy.clear();
-  this->FTPProxyType = 0;
   this->LogFile = nullptr;
   this->Files.clear();
 }
 
-bool cmCTestSubmitHandler::SubmitUsingFTP(
-  const std::string& localprefix, const std::vector<std::string>& files,
-  const std::string& remoteprefix, const std::string& url)
-{
-  CURL* curl;
-  CURLcode res;
-  FILE* ftpfile;
-  char error_buffer[1024];
-
-  /* In windows, this will init the winsock stuff */
-  ::curl_global_init(CURL_GLOBAL_ALL);
-
-  for (std::string const& file : files) {
-    /* get a curl handle */
-    curl = curl_easy_init();
-    if (curl) {
-      // Using proxy
-      if (this->FTPProxyType > 0) {
-        curl_easy_setopt(curl, CURLOPT_PROXY, this->FTPProxy.c_str());
-        switch (this->FTPProxyType) {
-          case 2:
-            curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
-            break;
-          case 3:
-            curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
-            break;
-          default:
-            curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
-        }
-      }
-
-      // enable uploading
-      ::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
-
-      // if there is little to no activity for too long stop submitting
-      ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1);
-      ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME,
-                         SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT);
-
-      ::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
-
-      std::string local_file = file;
-      if (!cmSystemTools::FileExists(local_file)) {
-        local_file = localprefix + "/" + file;
-      }
-      std::string upload_as =
-        url + "/" + remoteprefix + cmSystemTools::GetFilenameName(file);
-
-      if (!cmSystemTools::FileExists(local_file)) {
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Cannot find file: " << local_file << std::endl);
-        ::curl_easy_cleanup(curl);
-        ::curl_global_cleanup();
-        return false;
-      }
-      unsigned long filelen = cmSystemTools::FileLength(local_file);
-
-      ftpfile = cmsys::SystemTools::Fopen(local_file, "rb");
-      *this->LogFile << "\tUpload file: " << local_file << " to " << upload_as
-                     << std::endl;
-      cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                         "   Upload file: " << local_file << " to "
-                                            << upload_as << std::endl,
-                         this->Quiet);
-
-      ::curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
-
-      // specify target
-      ::curl_easy_setopt(curl, CURLOPT_URL, upload_as.c_str());
-
-      // now specify which file to upload
-      ::curl_easy_setopt(curl, CURLOPT_INFILE, ftpfile);
-
-      // and give the size of the upload (optional)
-      ::curl_easy_setopt(curl, CURLOPT_INFILESIZE, static_cast<long>(filelen));
-
-      // and give curl the buffer for errors
-      ::curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &error_buffer);
-
-      // specify handler for output
-      ::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,
-                         cmCTestSubmitHandlerWriteMemoryCallback);
-      ::curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION,
-                         cmCTestSubmitHandlerCurlDebugCallback);
-
-      /* we pass our 'chunk' struct to the callback function */
-      cmCTestSubmitHandlerVectorOfChar chunk;
-      cmCTestSubmitHandlerVectorOfChar chunkDebug;
-      ::curl_easy_setopt(curl, CURLOPT_FILE, &chunk);
-      ::curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &chunkDebug);
-
-      // Now run off and do what you've been told!
-      res = ::curl_easy_perform(curl);
-
-      if (!chunk.empty()) {
-        cmCTestOptionalLog(this->CTest, DEBUG,
-                           "CURL output: ["
-                             << cmCTestLogWrite(&*chunk.begin(), chunk.size())
-                             << "]" << std::endl,
-                           this->Quiet);
-      }
-      if (!chunkDebug.empty()) {
-        cmCTestOptionalLog(
-          this->CTest, DEBUG,
-          "CURL debug output: ["
-            << cmCTestLogWrite(&*chunkDebug.begin(), chunkDebug.size()) << "]"
-            << std::endl,
-          this->Quiet);
-      }
-
-      fclose(ftpfile);
-      if (res) {
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Error when uploading file: " << local_file
-                                                    << std::endl);
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Error message was: " << error_buffer << std::endl);
-        *this->LogFile << "   Error when uploading file: " << local_file
-                       << std::endl
-                       << "   Error message was: " << error_buffer << std::endl
-                       << "   Curl output was: ";
-        // avoid dereference of empty vector
-        if (!chunk.empty()) {
-          *this->LogFile << cmCTestLogWrite(&*chunk.begin(), chunk.size());
-          cmCTestLog(this->CTest, ERROR_MESSAGE,
-                     "CURL output: ["
-                       << cmCTestLogWrite(&*chunk.begin(), chunk.size()) << "]"
-                       << std::endl);
-        }
-        *this->LogFile << std::endl;
-        ::curl_easy_cleanup(curl);
-        ::curl_global_cleanup();
-        return false;
-      }
-      // always cleanup
-      ::curl_easy_cleanup(curl);
-      cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                         "   Uploaded: " + local_file << std::endl,
-                         this->Quiet);
-    }
-  }
-  ::curl_global_cleanup();
-  return true;
-}
-
-// Uploading files is simpler
 bool cmCTestSubmitHandler::SubmitUsingHTTP(
   const std::string& localprefix, const std::vector<std::string>& files,
   const std::string& remoteprefix, const std::string& url)
@@ -1091,36 +942,11 @@ int cmCTestSubmitHandler::ProcessHandler()
     }
   }
 
-  if (getenv("FTP_PROXY")) {
-    this->FTPProxyType = 1;
-    this->FTPProxy = getenv("FTP_PROXY");
-    if (getenv("FTP_PROXY_PORT")) {
-      this->FTPProxy += ":";
-      this->FTPProxy += getenv("FTP_PROXY_PORT");
-    }
-    if (getenv("FTP_PROXY_TYPE")) {
-      std::string type = getenv("FTP_PROXY_TYPE");
-      // HTTP/SOCKS4/SOCKS5
-      if (type == "HTTP") {
-        this->FTPProxyType = 1;
-      } else if (type == "SOCKS4") {
-        this->FTPProxyType = 2;
-      } else if (type == "SOCKS5") {
-        this->FTPProxyType = 3;
-      }
-    }
-  }
-
   if (!this->HTTPProxy.empty()) {
     cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
                        "   Use HTTP Proxy: " << this->HTTPProxy << std::endl,
                        this->Quiet);
   }
-  if (!this->FTPProxy.empty()) {
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Use FTP Proxy: " << this->FTPProxy << std::endl,
-                       this->Quiet);
-  }
   cmGeneratedFileStream ofs;
   this->StartLogFile("Submit", ofs);
 
@@ -1217,66 +1043,11 @@ int cmCTestSubmitHandler::ProcessHandler()
 
   std::string dropMethod(this->CTest->GetCTestConfiguration("DropMethod"));
 
-  if (dropMethod.empty() || dropMethod == "ftp") {
-    ofs << "Using drop method: FTP" << std::endl;
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Using FTP submit method" << std::endl
-                                                    << "   Drop site: ftp://",
-                       this->Quiet);
-    std::string url = "ftp://";
-    url += cmCTest::MakeURLSafe(
-             this->CTest->GetCTestConfiguration("DropSiteUser")) +
-      ":" +
-      cmCTest::MakeURLSafe(
-             this->CTest->GetCTestConfiguration("DropSitePassword")) +
-      "@" + this->CTest->GetCTestConfiguration("DropSite") +
-      cmCTest::MakeURLSafe(this->CTest->GetCTestConfiguration("DropLocation"));
-    if (!this->CTest->GetCTestConfiguration("DropSiteUser").empty()) {
-      cmCTestOptionalLog(
-        this->CTest, HANDLER_OUTPUT,
-        this->CTest->GetCTestConfiguration("DropSiteUser").c_str(),
-        this->Quiet);
-      if (!this->CTest->GetCTestConfiguration("DropSitePassword").empty()) {
-        cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, ":******",
-                           this->Quiet);
-      }
-      cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, "@", this->Quiet);
-    }
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       this->CTest->GetCTestConfiguration("DropSite")
-                         << this->CTest->GetCTestConfiguration("DropLocation")
-                         << std::endl,
-                       this->Quiet);
-    if (!this->SubmitUsingFTP(buildDirectory + "/Testing/" +
-                                this->CTest->GetCurrentTag(),
-                              files, prefix, url)) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "   Problems when submitting via FTP" << std::endl);
-      ofs << "   Problems when submitting via FTP" << std::endl;
-      return -1;
-    }
-    if (!this->CDash) {
-      cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                         "   Using HTTP trigger method"
-                           << std::endl
-                           << "   Trigger site: "
-                           << this->CTest->GetCTestConfiguration("TriggerSite")
-                           << std::endl,
-                         this->Quiet);
-      if (!this->TriggerUsingHTTP(
-            files, prefix,
-            this->CTest->GetCTestConfiguration("TriggerSite"))) {
-        cmCTestLog(this->CTest, ERROR_MESSAGE,
-                   "   Problems when triggering via HTTP" << std::endl);
-        ofs << "   Problems when triggering via HTTP" << std::endl;
-        return -1;
-      }
-      cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                         "   Submission successful" << std::endl, this->Quiet);
-      ofs << "   Submission successful" << std::endl;
-      return 0;
-    }
-  } else if (dropMethod == "http" || dropMethod == "https") {
+  if (dropMethod.empty()) {
+    dropMethod = "http";
+  }
+
+  if (dropMethod == "http" || dropMethod == "https") {
     std::string url = dropMethod;
     url += "://";
     ofs << "Using drop method: " << dropMethod << std::endl;
diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h
index 5cbc9f6..15f230b 100644
--- a/Source/CTest/cmCTestSubmitHandler.h
+++ b/Source/CTest/cmCTestSubmitHandler.h
@@ -56,9 +56,6 @@ private:
   /**
    * Submit file using various ways
    */
-  bool SubmitUsingFTP(const std::string& localprefix,
-                      const std::vector<std::string>& files,
-                      const std::string& remoteprefix, const std::string& url);
   bool SubmitUsingHTTP(const std::string& localprefix,
                        const std::vector<std::string>& files,
                        const std::string& remoteprefix,
@@ -79,8 +76,6 @@ private:
   std::string HTTPProxy;
   int HTTPProxyType;
   std::string HTTPProxyAuth;
-  std::string FTPProxy;
-  int FTPProxyType;
   std::ostream* LogFile;
   bool SubmitPart[cmCTest::PartCount];
   bool CDash;
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-ftp-result.txt b/Tests/RunCMake/ctest_submit/FailDrop-ftp-result.txt
deleted file mode 100644
index b57e2de..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-ftp-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-(-1|255)
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-ftp-stderr.txt b/Tests/RunCMake/ctest_submit/FailDrop-ftp-stderr.txt
deleted file mode 100644
index b9d9394..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-ftp-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Error message was: ([Cc]ould *n.t resolve host:? '?-no-site-'?.*|The requested URL returned error:.*)
-   Problems when submitting via FTP
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-ftp-stdout.txt b/Tests/RunCMake/ctest_submit/FailDrop-ftp-stdout.txt
deleted file mode 100644
index 345bb62..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-ftp-stdout.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Submit files \(using ftp\)
-   Using FTP submit method
-   Drop site: ftp://
diff --git a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
index 097818c..4d7d29b 100644
--- a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
@@ -49,6 +49,5 @@ function(run_ctest_submit_FailDrop CASE_DROP_METHOD)
   run_ctest(FailDrop-${CASE_DROP_METHOD})
 endfunction()
 
-run_ctest_submit_FailDrop(ftp)
 run_ctest_submit_FailDrop(http)
 run_ctest_submit_FailDrop(https)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c339b64cf241788edd9f886daff619eec41dc242
commit c339b64cf241788edd9f886daff619eec41dc242
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Tue Nov 27 22:35:00 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:13 2018 +0100

    CTest: Remove submit method 'scp'

diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index 511764c..1ac5efd 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -1106,8 +1106,8 @@ Configuration settings include:
 
 ``DropMethod``
   Specify the method by which results should be submitted to the
-  dashboard server.  The value may be ``ftp``, ``http``,
-  ``https``, or ``scp``.
+  dashboard server.  The value may be ``ftp``, ``http``, or
+  ``https``.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
   * :module:`CTest` module variable: ``DROP_METHOD`` if set,
@@ -1144,7 +1144,7 @@ Configuration settings include:
   * :module:`CTest` module variable: ``CTEST_DROP_SITE_CDASH``
 
 ``ScpCommand``
-  ``scp`` command-line tool to use when ``DropMethod`` is ``scp``.
+  Legacy option.  Not used.
 
   * `CTest Script`_ variable: :variable:`CTEST_SCP_COMMAND`
   * :module:`CTest` module variable: ``SCPCOMMAND``
diff --git a/Help/variable/CTEST_SCP_COMMAND.rst b/Help/variable/CTEST_SCP_COMMAND.rst
index 0f128b1..19ea8b3 100644
--- a/Help/variable/CTEST_SCP_COMMAND.rst
+++ b/Help/variable/CTEST_SCP_COMMAND.rst
@@ -1,5 +1,4 @@
 CTEST_SCP_COMMAND
 -----------------
 
-Specify the CTest ``SCPCommand`` setting
-in a :manual:`ctest(1)` dashboard client script.
+Legacy option.  Not used.
diff --git a/Modules/CTest.cmake b/Modules/CTest.cmake
index 18bb452..8848bdd 100644
--- a/Modules/CTest.cmake
+++ b/Modules/CTest.cmake
@@ -177,9 +177,6 @@ if(BUILD_TESTING)
     )
   set(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH
     "File that contains suppressions for the memory checker")
-  find_program(SCPCOMMAND scp DOC
-    "Path to scp command, used by CTest for submitting results to a Dart server"
-    )
   find_program(COVERAGE_COMMAND gcov DOC
     "Path to the coverage program that CTest uses for performing coverage inspection"
     )
diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in
index b86a5a9..735cadd 100644
--- a/Modules/DartConfiguration.tcl.in
+++ b/Modules/DartConfiguration.tcl.in
@@ -30,7 +30,6 @@ DropSitePassword: @DROP_SITE_PASSWORD@
 DropSiteMode: @DROP_SITE_MODE@
 DropMethod: @DROP_METHOD@
 TriggerSite: @TRIGGER_SITE@
-ScpCommand: @SCPCOMMAND@
 
 # Dashboard start time
 NightlyStartTime: @NIGHTLY_START_TIME@
diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx
index 60029ab..c1705d7 100644
--- a/Source/CTest/cmCTestSubmitCommand.cxx
+++ b/Source/CTest/cmCTestSubmitCommand.cxx
@@ -58,8 +58,6 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler()
   this->CTest->SetCTestConfigurationFromCMakeVariable(
     this->Makefile, "DropSitePassword", "CTEST_DROP_SITE_PASSWORD",
     this->Quiet);
-  this->CTest->SetCTestConfigurationFromCMakeVariable(
-    this->Makefile, "ScpCommand", "CTEST_SCP_COMMAND", this->Quiet);
 
   const char* notesFilesVariable =
     this->Makefile->GetDefinition("CTEST_NOTES_FILES");
diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index f457828..2232e38 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -5,9 +5,7 @@
 #include "cm_curl.h"
 #include "cm_jsoncpp_reader.h"
 #include "cm_jsoncpp_value.h"
-#include "cmsys/Process.h"
 #include <chrono>
-#include <cstring>
 #include <sstream>
 #include <stdio.h>
 #include <stdlib.h>
@@ -20,10 +18,8 @@
 #include "cmCurl.h"
 #include "cmDuration.h"
 #include "cmGeneratedFileStream.h"
-#include "cmProcessOutput.h"
 #include "cmState.h"
 #include "cmSystemTools.h"
-#include "cmWorkingDirectory.h"
 #include "cmXMLParser.h"
 #include "cmake.h"
 
@@ -799,102 +795,6 @@ bool cmCTestSubmitHandler::TriggerUsingHTTP(
   return true;
 }
 
-bool cmCTestSubmitHandler::SubmitUsingSCP(
-  const std::string& scp_command, const std::string& localprefix,
-  const std::vector<std::string>& files, const std::string& remoteprefix,
-  const std::string& url)
-{
-  if (scp_command.empty() || localprefix.empty() || files.empty() ||
-      remoteprefix.empty() || url.empty()) {
-    return false;
-  }
-
-  std::vector<const char*> argv;
-  argv.push_back(scp_command.c_str()); // Scp command
-  argv.push_back(scp_command.c_str()); // Dummy string for file
-  argv.push_back(scp_command.c_str()); // Dummy string for remote url
-  argv.push_back(nullptr);
-
-  cmsysProcess* cp = cmsysProcess_New();
-  cmsysProcess_SetOption(cp, cmsysProcess_Option_HideWindow, 1);
-  // cmsysProcess_SetTimeout(cp, timeout);
-
-  int problems = 0;
-
-  for (std::string const& file : files) {
-    int retVal;
-
-    std::string lfname = localprefix;
-    cmSystemTools::ConvertToUnixSlashes(lfname);
-    lfname += "/" + file;
-    lfname = cmSystemTools::ConvertToOutputPath(lfname);
-    argv[1] = lfname.c_str();
-    std::string rfname = url + "/" + remoteprefix + file;
-    argv[2] = rfname.c_str();
-    cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                       "Execute \"" << argv[0] << "\" \"" << argv[1] << "\" \""
-                                    << argv[2] << "\"" << std::endl,
-                       this->Quiet);
-    *this->LogFile << "Execute \"" << argv[0] << "\" \"" << argv[1] << "\" \""
-                   << argv[2] << "\"" << std::endl;
-
-    cmsysProcess_SetCommand(cp, &*argv.begin());
-    cmsysProcess_Execute(cp);
-    char* data;
-    int length;
-    cmProcessOutput processOutput;
-    std::string strdata;
-
-    while (cmsysProcess_WaitForData(cp, &data, &length, nullptr)) {
-      processOutput.DecodeText(data, length, strdata);
-      cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                         cmCTestLogWrite(strdata.c_str(), strdata.size()),
-                         this->Quiet);
-    }
-    processOutput.DecodeText(std::string(), strdata);
-    if (!strdata.empty()) {
-      cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                         cmCTestLogWrite(strdata.c_str(), strdata.size()),
-                         this->Quiet);
-    }
-
-    cmsysProcess_WaitForExit(cp, nullptr);
-
-    int result = cmsysProcess_GetState(cp);
-
-    if (result == cmsysProcess_State_Exited) {
-      retVal = cmsysProcess_GetExitValue(cp);
-      if (retVal != 0) {
-        cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                           "\tSCP returned: " << retVal << std::endl,
-                           this->Quiet);
-        *this->LogFile << "\tSCP returned: " << retVal << std::endl;
-        problems++;
-      }
-    } else if (result == cmsysProcess_State_Exception) {
-      retVal = cmsysProcess_GetExitException(cp);
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "\tThere was an exception: " << retVal << std::endl);
-      *this->LogFile << "\tThere was an exception: " << retVal << std::endl;
-      problems++;
-    } else if (result == cmsysProcess_State_Expired) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "\tThere was a timeout" << std::endl);
-      *this->LogFile << "\tThere was a timeout" << std::endl;
-      problems++;
-    } else if (result == cmsysProcess_State_Error) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "\tError executing SCP: " << cmsysProcess_GetErrorString(cp)
-                                           << std::endl);
-      *this->LogFile << "\tError executing SCP: "
-                     << cmsysProcess_GetErrorString(cp) << std::endl;
-      problems++;
-    }
-  }
-  cmsysProcess_Delete(cp);
-  return problems == 0;
-}
-
 void cmCTestSubmitHandler::ConstructCDashURL(std::string& dropMethod,
                                              std::string& url)
 {
@@ -1447,39 +1347,6 @@ int cmCTestSubmitHandler::ProcessHandler()
     }
 
     return 0;
-  } else if (dropMethod == "scp") {
-    std::string url;
-    if (!this->CTest->GetCTestConfiguration("DropSiteUser").empty()) {
-      url += this->CTest->GetCTestConfiguration("DropSiteUser") + "@";
-    }
-    url += this->CTest->GetCTestConfiguration("DropSite") + ":" +
-      this->CTest->GetCTestConfiguration("DropLocation");
-
-    // change to the build directory so that we can uses a relative path
-    // on windows since scp doesn't support "c:" a drive in the path
-    cmWorkingDirectory workdir(buildDirectory);
-    if (workdir.Failed()) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "   Failed to change directory to "
-                   << buildDirectory << " : "
-                   << std::strerror(workdir.GetLastResult()) << std::endl);
-      ofs << "   Failed to change directory to " << buildDirectory << " : "
-          << std::strerror(workdir.GetLastResult()) << std::endl;
-      return -1;
-    }
-
-    if (!this->SubmitUsingSCP(this->CTest->GetCTestConfiguration("ScpCommand"),
-                              "Testing/" + this->CTest->GetCurrentTag(), files,
-                              prefix, url)) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "   Problems when submitting via SCP" << std::endl);
-      ofs << "   Problems when submitting via SCP" << std::endl;
-      return -1;
-    }
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Submission successful" << std::endl, this->Quiet);
-    ofs << "   Submission successful" << std::endl;
-    return 0;
   }
 
   cmCTestLog(this->CTest, ERROR_MESSAGE,
diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h
index 5590561..5cbc9f6 100644
--- a/Source/CTest/cmCTestSubmitHandler.h
+++ b/Source/CTest/cmCTestSubmitHandler.h
@@ -63,10 +63,6 @@ private:
                        const std::vector<std::string>& files,
                        const std::string& remoteprefix,
                        const std::string& url);
-  bool SubmitUsingSCP(const std::string& scp_command,
-                      const std::string& localprefix,
-                      const std::vector<std::string>& files,
-                      const std::string& remoteprefix, const std::string& url);
 
   bool TriggerUsingHTTP(const std::vector<std::string>& files,
                         const std::string& remoteprefix,
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-scp-result.txt b/Tests/RunCMake/ctest_submit/FailDrop-scp-result.txt
deleted file mode 100644
index b57e2de..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-scp-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-(-1|255)
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-scp-stderr.txt b/Tests/RunCMake/ctest_submit/FailDrop-scp-stderr.txt
deleted file mode 100644
index ef67149..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-scp-stderr.txt
+++ /dev/null
@@ -1 +0,0 @@
-   Problems when submitting via SCP
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-scp-stdout.txt b/Tests/RunCMake/ctest_submit/FailDrop-scp-stdout.txt
deleted file mode 100644
index ec2ce92..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-scp-stdout.txt
+++ /dev/null
@@ -1 +0,0 @@
-Submit files \(using scp\)
diff --git a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
index b945ff6..097818c 100644
--- a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
@@ -52,4 +52,3 @@ endfunction()
 run_ctest_submit_FailDrop(ftp)
 run_ctest_submit_FailDrop(http)
 run_ctest_submit_FailDrop(https)
-run_ctest_submit_FailDrop(scp)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aebdad399efb1394f904428b52011513f7dd0b7c
commit aebdad399efb1394f904428b52011513f7dd0b7c
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Tue Nov 27 20:58:41 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:13 2018 +0100

    CTest: Remove submit method 'cp'

diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index 82be6e3..511764c 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -1106,7 +1106,7 @@ Configuration settings include:
 
 ``DropMethod``
   Specify the method by which results should be submitted to the
-  dashboard server.  The value may be ``cp``, ``ftp``, ``http``,
+  dashboard server.  The value may be ``ftp``, ``http``,
   ``https``, or ``scp``.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
@@ -1114,8 +1114,7 @@ Configuration settings include:
     else ``CTEST_DROP_METHOD``
 
 ``DropSite``
-  The dashboard server name
-  (for ``ftp``, ``http``, and ``https``, ``scp``).
+  The dashboard server name.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE`
   * :module:`CTest` module variable: ``DROP_SITE`` if set,
diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index 8323381..f457828 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -895,40 +895,6 @@ bool cmCTestSubmitHandler::SubmitUsingSCP(
   return problems == 0;
 }
 
-bool cmCTestSubmitHandler::SubmitUsingCP(const std::string& localprefix,
-                                         const std::vector<std::string>& files,
-                                         const std::string& remoteprefix,
-                                         const std::string& destination)
-{
-  if (localprefix.empty() || files.empty() || remoteprefix.empty() ||
-      destination.empty()) {
-    /* clang-format off */
-    cmCTestLog(this->CTest, ERROR_MESSAGE,
-               "Missing arguments for submit via cp:\n"
-               << "\tlocalprefix: " << localprefix << "\n"
-               << "\tNumber of files: " << files.size() << "\n"
-               << "\tremoteprefix: " << remoteprefix << "\n"
-               << "\tdestination: " << destination << std::endl);
-    /* clang-format on */
-    return false;
-  }
-
-  for (std::string const& file : files) {
-    std::string lfname = localprefix;
-    cmSystemTools::ConvertToUnixSlashes(lfname);
-    lfname += "/" + file;
-    std::string rfname = destination + "/" + remoteprefix + file;
-    cmSystemTools::CopyFileAlways(lfname, rfname);
-    cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                       "   Copy file: " << lfname << " to " << rfname
-                                        << std::endl,
-                       this->Quiet);
-  }
-  std::string tagDoneFile = destination + "/" + remoteprefix + "DONE";
-  cmSystemTools::Touch(tagDoneFile, true);
-  return true;
-}
-
 void cmCTestSubmitHandler::ConstructCDashURL(std::string& dropMethod,
                                              std::string& url)
 {
@@ -1514,36 +1480,6 @@ int cmCTestSubmitHandler::ProcessHandler()
                        "   Submission successful" << std::endl, this->Quiet);
     ofs << "   Submission successful" << std::endl;
     return 0;
-  } else if (dropMethod == "cp") {
-    std::string location = this->CTest->GetCTestConfiguration("DropLocation");
-
-    // change to the build directory so that we can uses a relative path
-    // on windows since scp doesn't support "c:" a drive in the path
-    cmWorkingDirectory workdir(buildDirectory);
-    if (workdir.Failed()) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "   Failed to change directory to "
-                   << buildDirectory << " : "
-                   << std::strerror(workdir.GetLastResult()) << std::endl);
-      ofs << "   Failed to change directory to " << buildDirectory << " : "
-          << std::strerror(workdir.GetLastResult()) << std::endl;
-      return -1;
-    }
-    cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT,
-                       "   Change directory: " << buildDirectory << std::endl,
-                       this->Quiet);
-
-    if (!this->SubmitUsingCP("Testing/" + this->CTest->GetCurrentTag(), files,
-                             prefix, location)) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "   Problems when submitting via CP" << std::endl);
-      ofs << "   Problems when submitting via cp" << std::endl;
-      return -1;
-    }
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Submission successful" << std::endl, this->Quiet);
-    ofs << "   Submission successful" << std::endl;
-    return 0;
   }
 
   cmCTestLog(this->CTest, ERROR_MESSAGE,
diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h
index 0f33735..5590561 100644
--- a/Source/CTest/cmCTestSubmitHandler.h
+++ b/Source/CTest/cmCTestSubmitHandler.h
@@ -68,10 +68,6 @@ private:
                       const std::vector<std::string>& files,
                       const std::string& remoteprefix, const std::string& url);
 
-  bool SubmitUsingCP(const std::string& localprefix,
-                     const std::vector<std::string>& files,
-                     const std::string& remoteprefix, const std::string& url);
-
   bool TriggerUsingHTTP(const std::vector<std::string>& files,
                         const std::string& remoteprefix,
                         const std::string& url);
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-cp-result.txt b/Tests/RunCMake/ctest_submit/FailDrop-cp-result.txt
deleted file mode 100644
index b57e2de..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-cp-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-(-1|255)
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt b/Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt
deleted file mode 100644
index 00a60ac..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Missing arguments for submit via cp:
-.*
-   Problems when submitting via CP
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt b/Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt
deleted file mode 100644
index fa6e004..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt
+++ /dev/null
@@ -1 +0,0 @@
-Submit files \(using cp\)
diff --git a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
index fc24f64..b945ff6 100644
--- a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
@@ -49,7 +49,6 @@ function(run_ctest_submit_FailDrop CASE_DROP_METHOD)
   run_ctest(FailDrop-${CASE_DROP_METHOD})
 endfunction()
 
-run_ctest_submit_FailDrop(cp)
 run_ctest_submit_FailDrop(ftp)
 run_ctest_submit_FailDrop(http)
 run_ctest_submit_FailDrop(https)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c2f6872c4e98a24a24675fa3f9fe016230eeb878
commit c2f6872c4e98a24a24675fa3f9fe016230eeb878
Author:     Regina Pfeifer <regina at mailbox.org>
AuthorDate: Tue Nov 27 20:39:48 2018 +0100
Commit:     Regina Pfeifer <regina at mailbox.org>
CommitDate: Thu Nov 29 00:29:12 2018 +0100

    CTest: Remove submit method 'xmlrpc'

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 756e379..699fd4d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -137,10 +137,6 @@ macro(CMAKE_HANDLE_SYSTEM_LIBRARIES)
   # Options have dependencies.
   include(CMakeDependentOption)
 
-  # Optionally use system xmlrpc.  We no longer build or use it by default.
-  option(CTEST_USE_XMLRPC "Enable xmlrpc submission method in CTest." OFF)
-  mark_as_advanced(CTEST_USE_XMLRPC)
-
   # Allow the user to enable/disable all system utility library options by
   # defining CMAKE_USE_SYSTEM_LIBRARIES or CMAKE_USE_SYSTEM_LIBRARY_${util}.
   set(UTILITIES BZIP2 CURL EXPAT FORM JSONCPP LIBARCHIVE LIBLZMA LIBRHASH LIBUV ZLIB)
@@ -171,10 +167,8 @@ macro(CMAKE_HANDLE_SYSTEM_LIBRARIES)
 
   # Optionally use system utility libraries.
   option(CMAKE_USE_SYSTEM_LIBARCHIVE "Use system-installed libarchive" "${CMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE}")
-  CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl"
-    "${CMAKE_USE_SYSTEM_LIBRARY_CURL}" "NOT CTEST_USE_XMLRPC" ON)
-  CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat"
-    "${CMAKE_USE_SYSTEM_LIBRARY_EXPAT}" "NOT CTEST_USE_XMLRPC" ON)
+  option(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" "${CMAKE_USE_SYSTEM_LIBRARY_CURL}")
+  option(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" "${CMAKE_USE_SYSTEM_LIBRARY_EXPAT}")
   CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib"
     "${CMAKE_USE_SYSTEM_LIBRARY_ZLIB}" "NOT CMAKE_USE_SYSTEM_LIBARCHIVE;NOT CMAKE_USE_SYSTEM_CURL" ON)
   CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_BZIP2 "Use system-installed bzip2"
@@ -212,7 +206,7 @@ endmacro()
 macro(CMAKE_SETUP_TESTING)
   if(BUILD_TESTING)
     set(CMAKE_TEST_SYSTEM_LIBRARIES 0)
-    foreach(util CURL EXPAT XMLRPC ZLIB)
+    foreach(util CURL EXPAT ZLIB)
       if(CMAKE_USE_SYSTEM_${util})
         set(CMAKE_TEST_SYSTEM_LIBRARIES 1)
       endif()
@@ -572,18 +566,6 @@ macro (CMAKE_BUILD_UTILITIES)
   endif()
 
   #---------------------------------------------------------------------
-  # Build XMLRPC library for CMake and CTest.
-  if(CTEST_USE_XMLRPC)
-    find_package(XMLRPC QUIET REQUIRED libwww-client)
-    if(NOT XMLRPC_FOUND)
-      message(FATAL_ERROR
-        "CTEST_USE_XMLRPC is ON but xmlrpc is not found!")
-    endif()
-    set(CMAKE_XMLRPC_INCLUDES ${XMLRPC_INCLUDE_DIRS})
-    set(CMAKE_XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES})
-  endif()
-
-  #---------------------------------------------------------------------
   # Use curses?
   if (UNIX)
     if(NOT DEFINED BUILD_CursesDialog)
@@ -736,7 +718,7 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE)
   # the build tree, which is both the build and the install RPATH.
   if (UNIX)
     if(   CMAKE_USE_SYSTEM_CURL   OR  CMAKE_USE_SYSTEM_ZLIB
-          OR  CMAKE_USE_SYSTEM_EXPAT  OR  CTEST_USE_XMLRPC  OR  CURSES_NEED_RPATH  OR  QT_NEED_RPATH)
+          OR  CMAKE_USE_SYSTEM_EXPAT  OR  CURSES_NEED_RPATH  OR  QT_NEED_RPATH)
       set(CMAKE_SKIP_RPATH OFF CACHE INTERNAL "CMake built with RPATH.")
       set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
       set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst
index 9e0ce27..82be6e3 100644
--- a/Help/manual/ctest.1.rst
+++ b/Help/manual/ctest.1.rst
@@ -1107,8 +1107,7 @@ Configuration settings include:
 ``DropMethod``
   Specify the method by which results should be submitted to the
   dashboard server.  The value may be ``cp``, ``ftp``, ``http``,
-  ``https``, ``scp``, or ``xmlrpc`` (if CMake was built with
-  support for it).
+  ``https``, or ``scp``.
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_METHOD`
   * :module:`CTest` module variable: ``DROP_METHOD`` if set,
@@ -1116,7 +1115,7 @@ Configuration settings include:
 
 ``DropSite``
   The dashboard server name
-  (for ``ftp``, ``http``, and ``https``, ``scp``, and ``xmlrpc``).
+  (for ``ftp``, ``http``, and ``https``, ``scp``).
 
   * `CTest Script`_ variable: :variable:`CTEST_DROP_SITE`
   * :module:`CTest` module variable: ``DROP_SITE`` if set,
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 9aebfa7..464d6f3 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -813,7 +813,6 @@ target_compile_definitions(CMakeLib PUBLIC ${CLANG_TIDY_DEFINITIONS})
 #
 include_directories(
   "${CMake_SOURCE_DIR}/Source/CTest"
-  ${CMAKE_XMLRPC_INCLUDES}
   ${CMAKE_CURL_INCLUDES}
   )
 #
@@ -879,7 +878,7 @@ set(CTEST_SRCS cmCTest.cxx
 
 # Build CTestLib
 add_library(CTestLib ${CTEST_SRCS})
-target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
+target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES})
 
 #
 # CPack
diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx
index 061c8ef..8323381 100644
--- a/Source/CTest/cmCTestSubmitHandler.cxx
+++ b/Source/CTest/cmCTestSubmitHandler.cxx
@@ -23,17 +23,10 @@
 #include "cmProcessOutput.h"
 #include "cmState.h"
 #include "cmSystemTools.h"
-#include "cmThirdParty.h"
 #include "cmWorkingDirectory.h"
 #include "cmXMLParser.h"
 #include "cmake.h"
 
-#if defined(CTEST_USE_XMLRPC)
-#  include "cmVersion.h"
-#  include "cm_sys_stat.h"
-#  include "cm_xmlrpc.h"
-#endif
-
 #define SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT 120
 
 typedef std::vector<char> cmCTestSubmitHandlerVectorOfChar;
@@ -936,110 +929,6 @@ bool cmCTestSubmitHandler::SubmitUsingCP(const std::string& localprefix,
   return true;
 }
 
-#if defined(CTEST_USE_XMLRPC)
-bool cmCTestSubmitHandler::SubmitUsingXMLRPC(
-  const std::string& localprefix, const std::vector<std::string>& files,
-  const std::string& remoteprefix, const std::string& url)
-{
-  xmlrpc_env env;
-  char ctestString[] = "CTest";
-  std::string ctestVersionString = cmVersion::GetCMakeVersion();
-  char* ctestVersion = const_cast<char*>(ctestVersionString.c_str());
-
-  std::string realURL = url + "/" + remoteprefix + "/Command/";
-
-  /* Start up our XML-RPC client library. */
-  xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, ctestString, ctestVersion);
-
-  /* Initialize our error-handling environment. */
-  xmlrpc_env_init(&env);
-
-  /* Call the famous server at UserLand. */
-  cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                     "   Submitting to: " << realURL << " (" << remoteprefix
-                                          << ")" << std::endl,
-                     this->Quiet);
-  for (std::string const& file : files) {
-    xmlrpc_value* result;
-
-    std::string local_file = file;
-    if (!cmSystemTools::FileExists(local_file)) {
-      local_file = localprefix + "/" + file;
-    }
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Submit file: " << local_file << std::endl,
-                       this->Quiet);
-    struct stat st;
-    if (::stat(local_file.c_str(), &st)) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "  Cannot find file: " << local_file << std::endl);
-      return false;
-    }
-
-    // off_t can be bigger than size_t.  fread takes size_t.
-    // make sure the file is not too big.
-    if (static_cast<off_t>(static_cast<size_t>(st.st_size)) !=
-        static_cast<off_t>(st.st_size)) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "  File too big: " << local_file << std::endl);
-      return false;
-    }
-    size_t fileSize = static_cast<size_t>(st.st_size);
-    FILE* fp = cmsys::SystemTools::Fopen(local_file, "rb");
-    if (!fp) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "  Cannot open file: " << local_file << std::endl);
-      return false;
-    }
-
-    unsigned char* fileBuffer = new unsigned char[fileSize];
-    if (fread(fileBuffer, 1, fileSize, fp) != fileSize) {
-      delete[] fileBuffer;
-      fclose(fp);
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "  Cannot read file: " << local_file << std::endl);
-      return false;
-    }
-    fclose(fp);
-
-    char remoteCommand[] = "Submit.put";
-    char* pRealURL = const_cast<char*>(realURL.c_str());
-    result =
-      xmlrpc_client_call(&env, pRealURL, remoteCommand, "(6)", fileBuffer,
-                         static_cast<xmlrpc_int32>(fileSize));
-
-    delete[] fileBuffer;
-
-    if (env.fault_occurred) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 " Submission problem: " << env.fault_string << " ("
-                                         << env.fault_code << ")"
-                                         << std::endl);
-      xmlrpc_env_clean(&env);
-      xmlrpc_client_cleanup();
-      return false;
-    }
-
-    /* Dispose of our result value. */
-    xmlrpc_DECREF(result);
-  }
-
-  /* Clean up our error-handling environment. */
-  xmlrpc_env_clean(&env);
-
-  /* Shutdown our XML-RPC client library. */
-  xmlrpc_client_cleanup();
-  return true;
-}
-#else
-bool cmCTestSubmitHandler::SubmitUsingXMLRPC(
-  std::string const& /*unused*/, std::vector<std::string> const& /*unused*/,
-  std::string const& /*unused*/, std::string const& /*unused*/)
-{
-  return false;
-}
-#endif
-
 void cmCTestSubmitHandler::ConstructCDashURL(std::string& dropMethod,
                                              std::string& url)
 {
@@ -1592,32 +1481,6 @@ int cmCTestSubmitHandler::ProcessHandler()
     }
 
     return 0;
-  } else if (dropMethod == "xmlrpc") {
-#if defined(CTEST_USE_XMLRPC)
-    ofs << "Using drop method: XML-RPC" << std::endl;
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Using XML-RPC submit method" << std::endl,
-                       this->Quiet);
-    std::string url = this->CTest->GetCTestConfiguration("DropSite");
-    prefix = this->CTest->GetCTestConfiguration("DropLocation");
-    if (!this->SubmitUsingXMLRPC(buildDirectory + "/Testing/" +
-                                   this->CTest->GetCurrentTag(),
-                                 files, prefix, url)) {
-      cmCTestLog(this->CTest, ERROR_MESSAGE,
-                 "   Problems when submitting via XML-RPC" << std::endl);
-      ofs << "   Problems when submitting via XML-RPC" << std::endl;
-      return -1;
-    }
-    cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Submission successful" << std::endl, this->Quiet);
-    ofs << "   Submission successful" << std::endl;
-    return 0;
-#else
-    cmCTestLog(this->CTest, ERROR_MESSAGE,
-               "   Submission method \"xmlrpc\" not compiled into CTest!"
-                 << std::endl);
-    return -1;
-#endif
   } else if (dropMethod == "scp") {
     std::string url;
     if (!this->CTest->GetCTestConfiguration("DropSiteUser").empty()) {
diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h
index 66f2173..0f33735 100644
--- a/Source/CTest/cmCTestSubmitHandler.h
+++ b/Source/CTest/cmCTestSubmitHandler.h
@@ -76,11 +76,6 @@ private:
                         const std::string& remoteprefix,
                         const std::string& url);
 
-  bool SubmitUsingXMLRPC(const std::string& localprefix,
-                         const std::vector<std::string>& files,
-                         const std::string& remoteprefix,
-                         const std::string& url);
-
   typedef std::vector<char> cmCTestSubmitHandlerVectorOfChar;
 
   void ParseResponse(cmCTestSubmitHandlerVectorOfChar chunk);
diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx
index 3360323..0482898 100644
--- a/Source/cmCurl.cxx
+++ b/Source/cmCurl.cxx
@@ -2,8 +2,6 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmCurl.h"
 
-#include "cmThirdParty.h"
-
 #if !defined(CMAKE_USE_SYSTEM_CURL) && !defined(_WIN32) &&                    \
   !defined(__APPLE__) && !defined(CURL_CA_BUNDLE) && !defined(CURL_CA_PATH)
 #  define CMAKE_FIND_CAFILE
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-result.txt b/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-result.txt
deleted file mode 100644
index b57e2de..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-(-1|255)
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stderr.txt b/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stderr.txt
deleted file mode 100644
index c0f718e..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stderr.txt
+++ /dev/null
@@ -1 +0,0 @@
-   (Problems when submitting via XML-RPC|Submission method "xmlrpc" not compiled into CTest!)
diff --git a/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stdout.txt b/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stdout.txt
deleted file mode 100644
index ed2acb5..0000000
--- a/Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stdout.txt
+++ /dev/null
@@ -1 +0,0 @@
-Submit files \(using xmlrpc\)
diff --git a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
index 178f0cb..fc24f64 100644
--- a/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ctest_submit/RunCMakeTest.cmake
@@ -54,4 +54,3 @@ run_ctest_submit_FailDrop(ftp)
 run_ctest_submit_FailDrop(http)
 run_ctest_submit_FailDrop(https)
 run_ctest_submit_FailDrop(scp)
-run_ctest_submit_FailDrop(xmlrpc)
diff --git a/Utilities/IWYU/mapping.imp b/Utilities/IWYU/mapping.imp
index 5af8b85..a68d767 100644
--- a/Utilities/IWYU/mapping.imp
+++ b/Utilities/IWYU/mapping.imp
@@ -97,9 +97,6 @@
   { include: [ "@<uv-.+\\.h>", private, "\"cm_uv.h\"", public ] },
   { include: [ "<kwiml/abi.h>", private, "\"cm_kwiml.h\"", public ] },
   { include: [ "<kwiml/int.h>", private, "\"cm_kwiml.h\"", public ] },
-  { include: [ "<xmlrpc.h>", private, "\"cm_xmlrpc.h\"", public ] },
-  { include: [ "<xmlrpc_client.h>", private, "\"cm_xmlrpc.h\"", public ] },
-  { include: [ "@<xmlrpc-c/.+\\.h>", private, "\"cm_xmlrpc.h\"", public ] },
   { include: [ "<zconf.h>", private, "\"cm_zlib.h\"", public ] },
   { include: [ "<zlib.h>", private, "\"cm_zlib.h\"", public ] },
 
diff --git a/Utilities/cmThirdParty.h.in b/Utilities/cmThirdParty.h.in
index a547f0d..46e0490 100644
--- a/Utilities/cmThirdParty.h.in
+++ b/Utilities/cmThirdParty.h.in
@@ -15,6 +15,5 @@
 #cmakedefine CMAKE_USE_SYSTEM_JSONCPP
 #cmakedefine CMAKE_USE_SYSTEM_LIBRHASH
 #cmakedefine CMAKE_USE_SYSTEM_LIBUV
-#cmakedefine CTEST_USE_XMLRPC
 
 #endif
diff --git a/Utilities/cm_xmlrpc.h b/Utilities/cm_xmlrpc.h
deleted file mode 100644
index 932066a..0000000
--- a/Utilities/cm_xmlrpc.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
-   file Copyright.txt or https://cmake.org/licensing for details.  */
-#ifndef cm_xmlrpc_h
-#define cm_xmlrpc_h
-
-/* Use the xmlrpc library configured for CMake.  */
-#include "cmThirdParty.h"
-#ifdef CTEST_USE_XMLRPC
-#  include <xmlrpc.h>
-#  include <xmlrpc_client.h>
-#endif
-
-#endif

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8107508b3e610cd2fbbcbf6111f125d39e16f74d
commit 8107508b3e610cd2fbbcbf6111f125d39e16f74d
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Tue Nov 20 17:01:59 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:31 2018 -0800

    Remove old flag table headers

diff --git a/Source/cmVS10CLFlagTable.h b/Source/cmVS10CLFlagTable.h
deleted file mode 100644
index f707afc..0000000
--- a/Source/cmVS10CLFlagTable.h
+++ /dev/null
@@ -1,205 +0,0 @@
-static cmVS7FlagTable cmVS10CLFlagTable[] = {
-
-  // Enum Properties
-  { "DebugInformationFormat", "Z7", "C7 compatible", "OldStyle", 0 },
-  { "DebugInformationFormat", "Zi", "Program Database", "ProgramDatabase", 0 },
-  { "DebugInformationFormat", "ZI", "Program Database for Edit And Continue",
-    "EditAndContinue", 0 },
-
-  { "WarningLevel", "W0", "Turn Off All Warnings", "TurnOffAllWarnings", 0 },
-  { "WarningLevel", "W1", "Level1", "Level1", 0 },
-  { "WarningLevel", "W2", "Level2", "Level2", 0 },
-  { "WarningLevel", "W3", "Level3", "Level3", 0 },
-  { "WarningLevel", "W4", "Level4", "Level4", 0 },
-  { "WarningLevel", "Wall", "EnableAllWarnings", "EnableAllWarnings", 0 },
-
-  { "Optimization", "Od", "Disabled", "Disabled", 0 },
-  { "Optimization", "O1", "Minimize Size", "MinSpace", 0 },
-  { "Optimization", "O2", "Maximize Speed", "MaxSpeed", 0 },
-  { "Optimization", "Ox", "Full Optimization", "Full", 0 },
-
-  { "InlineFunctionExpansion", "", "Default", "Default", 0 },
-  { "InlineFunctionExpansion", "Ob0", "Disabled", "Disabled", 0 },
-  { "InlineFunctionExpansion", "Ob1", "Only __inline", "OnlyExplicitInline",
-    0 },
-  { "InlineFunctionExpansion", "Ob2", "Any Suitable", "AnySuitable", 0 },
-
-  { "FavorSizeOrSpeed", "Os", "Favor small code", "Size", 0 },
-  { "FavorSizeOrSpeed", "Ot", "Favor fast code", "Speed", 0 },
-  { "FavorSizeOrSpeed", "", "Neither", "Neither", 0 },
-
-  { "ExceptionHandling", "EHa", "Yes with SEH Exceptions", "Async", 0 },
-  { "ExceptionHandling", "EHsc", "Yes", "Sync", 0 },
-  { "ExceptionHandling", "EHs", "Yes with Extern C functions", "SyncCThrow",
-    0 },
-  { "ExceptionHandling", "", "No", "false", 0 },
-
-  { "BasicRuntimeChecks", "RTCs", "Stack Frames", "StackFrameRuntimeCheck",
-    0 },
-  { "BasicRuntimeChecks", "RTCu", "Uninitialized variables",
-    "UninitializedLocalUsageCheck", 0 },
-  { "BasicRuntimeChecks", "RTC1", "Both (/RTC1, equiv. to /RTCsu)",
-    "EnableFastChecks", 0 },
-  { "BasicRuntimeChecks", "", "Default", "Default", 0 },
-
-  { "RuntimeLibrary", "MT", "Multi-threaded", "MultiThreaded", 0 },
-  { "RuntimeLibrary", "MTd", "Multi-threaded Debug", "MultiThreadedDebug", 0 },
-  { "RuntimeLibrary", "MD", "Multi-threaded DLL", "MultiThreadedDLL", 0 },
-  { "RuntimeLibrary", "MDd", "Multi-threaded Debug DLL",
-    "MultiThreadedDebugDLL", 0 },
-
-  { "StructMemberAlignment", "Zp1", "1 Byte", "1Byte", 0 },
-  { "StructMemberAlignment", "Zp2", "2 Bytes", "2Bytes", 0 },
-  { "StructMemberAlignment", "Zp4", "4 Byte", "4Bytes", 0 },
-  { "StructMemberAlignment", "Zp8", "8 Bytes", "8Bytes", 0 },
-  { "StructMemberAlignment", "Zp16", "16 Bytes", "16Bytes", 0 },
-  { "StructMemberAlignment", "", "Default", "Default", 0 },
-
-  { "EnableEnhancedInstructionSet", "arch:SSE",
-    "Streaming SIMD Extensions (/arch:SSE)", "StreamingSIMDExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:SSE2",
-    "Streaming SIMD Extensions 2 (/arch:SSE2)", "StreamingSIMDExtensions2",
-    0 },
-  { "EnableEnhancedInstructionSet", "", "Not Set", "NotSet", 0 },
-
-  { "FloatingPointModel", "fp:precise", "Precise", "Precise", 0 },
-  { "FloatingPointModel", "fp:strict", "Strict", "Strict", 0 },
-  { "FloatingPointModel", "fp:fast", "Fast", "Fast", 0 },
-
-  { "PrecompiledHeader", "Yc", "Create", "Create",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Yu", "Use", "Use",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Y-", "Not Using Precompiled Headers", "NotUsing",
-    0 },
-
-  { "AssemblerOutput", "", "No Listing", "NoListing", 0 },
-  { "AssemblerOutput", "FA", "Assembly-Only Listing", "AssemblyCode", 0 },
-  { "AssemblerOutput", "FAc", "Assembly With Machine Code",
-    "AssemblyAndMachineCode", 0 },
-  { "AssemblerOutput", "FAs", "Assembly With Source Code",
-    "AssemblyAndSourceCode", 0 },
-  { "AssemblerOutput", "FAcs", "Assembly, Machine Code and Source", "All", 0 },
-
-  { "CallingConvention", "Gd", "__cdecl", "Cdecl", 0 },
-  { "CallingConvention", "Gr", "__fastcall", "FastCall", 0 },
-  { "CallingConvention", "Gz", "__stdcall", "StdCall", 0 },
-
-  { "CompileAs", "", "Default", "Default", 0 },
-  { "CompileAs", "TC", "Compile as C Code", "CompileAsC", 0 },
-  { "CompileAs", "TP", "Compile as C++ Code", "CompileAsCpp", 0 },
-
-  { "ErrorReporting", "errorReport:none", "Do Not Send Report", "None", 0 },
-  { "ErrorReporting", "errorReport:prompt", "Prompt Immediately", "Prompt",
-    0 },
-  { "ErrorReporting", "errorReport:queue", "Queue For Next Login", "Queue",
-    0 },
-  { "ErrorReporting", "errorReport:send", "Send Automatically", "Send", 0 },
-
-  { "CompileAsManaged", "", "No Common Language RunTime Support", "false", 0 },
-  { "CompileAsManaged", "clr", "Common Language RunTime Support", "true", 0 },
-  { "CompileAsManaged", "clr:pure",
-    "Pure MSIL Common Language RunTime Support", "Pure", 0 },
-  { "CompileAsManaged", "clr:safe",
-    "Safe MSIL Common Language RunTime Support", "Safe", 0 },
-  { "CompileAsManaged", "clr:oldSyntax",
-    "Common Language RunTime Support, Old Syntax", "OldSyntax", 0 },
-
-  // Bool Properties
-  { "SuppressStartupBanner", "nologo-", "", "false", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-  { "TreatWarningAsError", "WX-", "", "false", 0 },
-  { "TreatWarningAsError", "WX", "", "true", 0 },
-  { "IntrinsicFunctions", "Oi", "", "true", 0 },
-  { "OmitFramePointers", "Oy-", "", "false", 0 },
-  { "OmitFramePointers", "Oy", "", "true", 0 },
-  { "EnableFiberSafeOptimizations", "GT", "", "true", 0 },
-  { "WholeProgramOptimization", "GL", "", "true", 0 },
-  { "UndefineAllPreprocessorDefinitions", "u", "", "true", 0 },
-  { "IgnoreStandardIncludePath", "X", "", "true", 0 },
-  { "PreprocessToFile", "P", "", "true", 0 },
-  { "PreprocessSuppressLineNumbers", "EP", "", "true", 0 },
-  { "PreprocessKeepComments", "C", "", "true", 0 },
-  { "StringPooling", "GF-", "", "false", 0 },
-  { "StringPooling", "GF", "", "true", 0 },
-  { "MinimalRebuild", "Gm-", "", "false", 0 },
-  { "MinimalRebuild", "Gm", "", "true", 0 },
-  { "SmallerTypeCheck", "RTCc", "", "true", 0 },
-  { "BufferSecurityCheck", "GS-", "", "false", 0 },
-  { "BufferSecurityCheck", "GS", "", "true", 0 },
-  { "FunctionLevelLinking", "Gy-", "", "false", 0 },
-  { "FunctionLevelLinking", "Gy", "", "true", 0 },
-  { "FloatingPointExceptions", "fp:except-", "", "false", 0 },
-  { "FloatingPointExceptions", "fp:except", "", "true", 0 },
-  { "CreateHotpatchableImage", "hotpatch", "", "true", 0 },
-  { "DisableLanguageExtensions", "Za", "", "true", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t", "", "true", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope-", "", "false", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope", "", "true", 0 },
-  { "RuntimeTypeInfo", "GR-", "", "false", 0 },
-  { "RuntimeTypeInfo", "GR", "", "true", 0 },
-  { "OpenMPSupport", "openmp-", "", "false", 0 },
-  { "OpenMPSupport", "openmp", "", "true", 0 },
-  { "ExpandAttributedSource", "Fx", "", "true", 0 },
-  { "ShowIncludes", "showIncludes", "", "true", 0 },
-  { "EnablePREfast", "analyze-", "", "false", 0 },
-  { "EnablePREfast", "analyze", "", "true", 0 },
-  { "UseFullPaths", "FC", "", "true", 0 },
-  { "OmitDefaultLibName", "Zl", "", "true", 0 },
-  { "UseUnicodeForAssemblerListing", "FAu", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "MultiProcessorCompilation", "MP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "ProcessorNumber", "MP", "Multi-processor Compilation", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "GenerateXMLDocumentationFiles", "doc", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "BrowseInformation", "FR", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "BrowseInformationFile", "FR", "Enable Browse Information", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalIncludeDirectories", "I", "Additional Include Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalUsingDirectories", "AI", "Resolve #using References", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PreprocessorDefinitions", "D ", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "UndefinePreprocessorDefinitions", "U",
-    "Undefine Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DisableSpecificWarnings", "wd", "Disable Specific Warnings", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedIncludeFiles", "FI", "Forced Include File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedUsingFiles", "FU", "Forced #using File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "TreatSpecificWarningsAsErrors", "we", "Treat Specific Warnings As Errors",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "PreprocessOutputPath", "Fi", "Preprocess Output Path", "",
-    cmVS7FlagTable::UserValue },
-  { "PrecompiledHeaderFile", "Yc", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderFile", "Yu", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderOutputFile", "Fp", "Precompiled Header Output File", "",
-    cmVS7FlagTable::UserValue },
-  { "AssemblerListingLocation", "Fa", "ASM List Location", "",
-    cmVS7FlagTable::UserValue },
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDataBaseFileName", "Fd", "Program Database File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [XMLDocumentationFileName] - no command line Switch.
-  // Skip [BrowseInformationFile] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10CSharpFlagTable.h b/Source/cmVS10CSharpFlagTable.h
deleted file mode 100644
index 40c21e8..0000000
--- a/Source/cmVS10CSharpFlagTable.h
+++ /dev/null
@@ -1,121 +0,0 @@
-static cmVS7FlagTable cmVS10CSharpFlagTable[] = {
-  { "ProjectName", "out:", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "OutputType", "target:exe", "", "Exe", 0 },
-  { "OutputType", "target:winexe", "", "Winexe", 0 },
-  { "OutputType", "target:library", "", "Library", 0 },
-  { "OutputType", "target:module", "", "Module", 0 },
-
-  { "DocumentationFile", "doc", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "Platform", "platform:x86", "", "x86", 0 },
-  { "Platform", "platform:Itanium", "", "Itanium", 0 },
-  { "Platform", "platform:x64", "", "x64", 0 },
-  { "Platform", "platform:arm", "", "arm", 0 },
-  { "Platform", "platform:anycpu32bitpreferred", "", "anycpu32bitpreferred",
-    0 },
-  { "Platform", "platform:anycpu", "", "anycpu", 0 },
-
-  { "References", "reference:", "mit alias", "", 0 },
-  { "References", "reference:", "dateiliste", "", 0 },
-  { "AddModules", "addmodule:", "", "", cmIDEFlagTable::SemicolonAppendable },
-  { "", "link", "", "", 0 },
-
-  { "Win32Resource", "win32res:", "", "", cmIDEFlagTable::UserValueRequired },
-  { "ApplicationIcon", "win32icon:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "ApplicationManifest", "win32manifest:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "NoWin32Manifest", "nowin32manifest", "", "true", 0 },
-
-  { "DefineDebug", "debug", "", "true", cmIDEFlagTable::Continue },
-
-  { "DebugSymbols", "debug", "", "true", 0 },
-  { "DebugSymbols", "debug-", "", "false", 0 },
-  { "DebugSymbols", "debug+", "", "true", 0 },
-
-  { "DebugType", "debug:none", "", "none", 0 },
-  { "DebugType", "debug:full", "", "full", 0 },
-  { "DebugType", "debug:pdbonly", "", "pdbonly", 0 },
-
-  { "Optimize", "optimize", "", "true", 0 },
-  { "Optimize", "optimize-", "", "false", 0 },
-  { "Optimize", "optimize+", "", "true", 0 },
-
-  { "TreatWarningsAsErrors", "warnaserror", "", "true", 0 },
-  { "TreatWarningsAsErrors", "warnaserror-", "", "false", 0 },
-  { "TreatWarningsAsErrors", "warnaserror+", "", "true", 0 },
-
-  { "WarningsAsErrors", "warnaserror", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror-", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror+", "", "", 0 },
-
-  { "WarningLevel", "warn:0", "", "0", 0 },
-  { "WarningLevel", "warn:1", "", "1", 0 },
-  { "WarningLevel", "warn:2", "", "2", 0 },
-  { "WarningLevel", "warn:3", "", "3", 0 },
-  { "WarningLevel", "warn:4", "", "4", 0 },
-  { "DisabledWarnings", "nowarn", "", "", 0 },
-
-  { "CheckForOverflowUnderflow", "checked", "", "true", 0 },
-  { "CheckForOverflowUnderflow", "checked-", "", "false", 0 },
-  { "CheckForOverflowUnderflow", "checked+", "", "true", 0 },
-
-  { "AllowUnsafeBlocks", "unsafe", "", "true", 0 },
-  { "AllowUnsafeBlocks", "unsafe-", "", "false", 0 },
-  { "AllowUnsafeBlocks", "unsafe+", "", "true", 0 },
-
-  { "DefineConstants", "define:", "", "",
-    cmIDEFlagTable::SemicolonAppendable | cmIDEFlagTable::UserValue },
-
-  { "LangVersion", "langversion:ISO-1", "", "ISO-1", 0 },
-  { "LangVersion", "langversion:ISO-2", "", "ISO-2", 0 },
-  { "LangVersion", "langversion:3", "", "3", 0 },
-  { "LangVersion", "langversion:4", "", "4", 0 },
-  { "LangVersion", "langversion:5", "", "5", 0 },
-  { "LangVersion", "langversion:6", "", "6", 0 },
-  { "LangVersion", "langversion:default", "", "default", 0 },
-
-  { "DelaySign", "delaysign", "", "true", 0 },
-  { "DelaySign", "delaysign-", "", "false", 0 },
-  { "DelaySign", "delaysign+", "", "true", 0 },
-
-  { "AssemblyOriginatorKeyFile", "keyfile", "", "", 0 },
-
-  { "KeyContainerName", "keycontainer", "", "", 0 },
-
-  { "NoLogo", "nologo", "", "", 0 },
-
-  { "NoConfig", "noconfig", "", "true", 0 },
-
-  { "BaseAddress", "baseaddress:", "", "", 0 },
-
-  { "CodePage", "codepage", "", "", 0 },
-
-  { "Utf8Output", "utf8output", "", "", 0 },
-
-  { "MainEntryPoint", "main:", "", "", 0 },
-
-  { "GenerateFullPaths", "fullpaths", "", "true", 0 },
-
-  { "FileAlignment", "filealign", "", "", 0 },
-
-  { "PdbFile", "pdb:", "", "", 0 },
-
-  { "NoStandardLib", "nostdlib", "", "true", 0 },
-  { "NoStandardLib", "nostdlib-", "", "false", 0 },
-  { "NoStandardLib", "nostdlib+", "", "true", 0 },
-
-  { "SubsystemVersion", "subsystemversion", "", "", 0 },
-
-  { "AdditionalLibPaths", "lib:", "", "", 0 },
-
-  { "ErrorReport", "errorreport:none", "Do Not Send Report", "none", 0 },
-  { "ErrorReport", "errorreport:prompt", "Prompt Immediately", "prompt", 0 },
-  { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
-  { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
-
-  { "", "", "", "", 0 },
-};
diff --git a/Source/cmVS10CudaFlagTable.h b/Source/cmVS10CudaFlagTable.h
deleted file mode 100644
index 858b97b..0000000
--- a/Source/cmVS10CudaFlagTable.h
+++ /dev/null
@@ -1,54 +0,0 @@
-static cmVS7FlagTable cmVS10CudaFlagTable[] = {
-  // Collect options meant for the host compiler.
-  { "AdditionalCompilerOptions", "Xcompiler=", "Host compiler options", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SpaceAppendable },
-  { "AdditionalCompilerOptions", "Xcompiler", "Host compiler options", "",
-    cmVS7FlagTable::UserFollowing | cmVS7FlagTable::SpaceAppendable },
-
-  // Select the CUDA runtime library.
-  { "CudaRuntime", "cudart=none", "No CUDA runtime library", "None", 0 },
-  { "CudaRuntime", "cudart=shared", "Shared/dynamic CUDA runtime library",
-    "Shared", 0 },
-  { "CudaRuntime", "cudart=static", "Static CUDA runtime library", "Static",
-    0 },
-  { "CudaRuntime", "cudart", "CUDA runtime library", "",
-    cmVS7FlagTable::UserFollowing },
-
-  // Capture arch/code arguments into temporaries for post-processing.
-  { "cmake-temp-gencode", "gencode=", "", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "cmake-temp-gencode", "gencode", "", "",
-    cmVS7FlagTable::UserFollowing | cmVS7FlagTable::SemicolonAppendable },
-  { "cmake-temp-gencode", "-generate-code=", "", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "cmake-temp-gencode", "-generate-code", "", "",
-    cmVS7FlagTable::UserFollowing | cmVS7FlagTable::SemicolonAppendable },
-
-  { "cmake-temp-code", "code=", "", "", cmVS7FlagTable::UserValue },
-  { "cmake-temp-code", "code", "", "", cmVS7FlagTable::UserFollowing },
-  { "cmake-temp-code", "-gpu-code=", "", "", cmVS7FlagTable::UserValue },
-  { "cmake-temp-code", "-gpu-code", "", "", cmVS7FlagTable::UserFollowing },
-
-  { "cmake-temp-arch", "arch=", "", "", cmVS7FlagTable::UserValue },
-  { "cmake-temp-arch", "arch", "", "", cmVS7FlagTable::UserFollowing },
-  { "cmake-temp-arch", "-gpu-architecture=", "", "",
-    cmVS7FlagTable::UserValue },
-  { "cmake-temp-arch", "-gpu-architecture", "", "",
-    cmVS7FlagTable::UserFollowing },
-
-  // Other flags.
-
-  { "FastMath", "use_fast_math", "", "true", 0 },
-  { "FastMath", "-use_fast_math", "", "true", 0 },
-
-  { "GPUDebugInfo", "G", "", "true", 0 },
-  { "GPUDebugInfo", "-device-debug", "", "true", 0 },
-
-  { "HostDebugInfo", "g", "", "true", 0 },
-  { "HostDebugInfo", "-debug", "", "true", 0 },
-
-  { "MaxRegCount", "maxrregcount=", "", "", cmVS7FlagTable::UserValue },
-  { "MaxRegCount", "maxrregcount", "", "", cmVS7FlagTable::UserFollowing },
-
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10CudaHostFlagTable.h b/Source/cmVS10CudaHostFlagTable.h
deleted file mode 100644
index b4b73c7..0000000
--- a/Source/cmVS10CudaHostFlagTable.h
+++ /dev/null
@@ -1,35 +0,0 @@
-static cmVS7FlagTable cmVS10CudaHostFlagTable[] = {
-  //{"Optimization", "", "<inherit from host>", "InheritFromHost", 0},
-  { "Optimization", "Od", "Disabled", "Od", 0 },
-  { "Optimization", "O1", "Minimize Size", "O1", 0 },
-  { "Optimization", "O2", "Maximize Speed", "O2", 0 },
-  { "Optimization", "Ox", "Full Optimization", "O3", 0 },
-
-  //{"Runtime", "", "<inherit from host>", "InheritFromHost", 0},
-  { "Runtime", "MT", "Multi-Threaded", "MT", 0 },
-  { "Runtime", "MTd", "Multi-Threaded Debug", "MTd", 0 },
-  { "Runtime", "MD", "Multi-Threaded DLL", "MD", 0 },
-  { "Runtime", "MDd", "Multi-threaded Debug DLL", "MDd", 0 },
-  { "Runtime", "ML", "Single-Threaded", "ML", 0 },
-  { "Runtime", "MLd", "Single-Threaded Debug", "MLd", 0 },
-
-  //{"RuntimeChecks", "", "<inherit from host>", "InheritFromHost", 0},
-  //{"RuntimeChecks", "", "Default", "Default", 0},
-  { "RuntimeChecks", "RTCs", "Stack Frames", "RTCs", 0 },
-  { "RuntimeChecks", "RTCu", "Uninitialized Variables", "RTCu", 0 },
-  { "RuntimeChecks", "RTC1", "Both", "RTC1", 0 },
-
-  //{"TypeInfo", "", "<inherit from host>", "InheritFromHost", 0},
-  { "TypeInfo", "GR", "Yes", "true", 0 },
-  { "TypeInfo", "GR-", "No", "false", 0 },
-
-  //{"Warning", "", "<inherit from host>", "InheritFromHost", 0},
-  { "Warning", "W0", "Off: Turn Off All Warnings", "W0", 0 },
-  { "Warning", "W1", "Level 1", "W1", 0 },
-  { "Warning", "W2", "Level 2", "W2", 0 },
-  { "Warning", "W3", "Level 3", "W3", 0 },
-  { "Warning", "W4", "Level 4", "W4", 0 },
-  { "Warning", "Wall", "Enable All Warnings", "Wall", 0 },
-
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10LibFlagTable.h b/Source/cmVS10LibFlagTable.h
deleted file mode 100644
index bb08a1c..0000000
--- a/Source/cmVS10LibFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS10LibFlagTable[] = {
-
-  // Enum Properties
-  { "ErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "ErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "ErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "ErrorReporting", "ERRORREPORT:NONE", "No Error Report", "NoErrorReport",
-    0 },
-
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWSCE", "WindowsCE", "WindowsCE", 0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  // Bool Properties
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "TreatLibWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLibWarningAsErrors", "WX", "", "true", 0 },
-  { "Verbose", "VERBOSE", "", "true", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ExportNamedFunctions", "EXPORT:", "Export Named Functions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "RemoveObjects", "REMOVE:", "Remove Objects", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue },
-  { "DisplayLibrary", "LIST:", "Display Library to standard output", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10LinkFlagTable.h b/Source/cmVS10LinkFlagTable.h
deleted file mode 100644
index 5ae93d9..0000000
--- a/Source/cmVS10LinkFlagTable.h
+++ /dev/null
@@ -1,247 +0,0 @@
-static cmVS7FlagTable cmVS10LinkFlagTable[] = {
-
-  // Enum Properties
-  { "ShowProgress", "", "Not Set", "NotSet", 0 },
-  { "ShowProgress", "VERBOSE", "Display all progress messages", "LinkVerbose",
-    0 },
-  { "ShowProgress", "VERBOSE:Lib", "For Libraries Searched", "LinkVerboseLib",
-    0 },
-  { "ShowProgress", "VERBOSE:ICF",
-    "About COMDAT folding during optimized linking", "LinkVerboseICF", 0 },
-  { "ShowProgress", "VERBOSE:REF",
-    "About data removed during optimized linking", "LinkVerboseREF", 0 },
-  { "ShowProgress", "VERBOSE:SAFESEH", "About Modules incompatible with SEH",
-    "LinkVerboseSAFESEH", 0 },
-  { "ShowProgress", "VERBOSE:CLR",
-    "About linker activity related to managed code", "LinkVerboseCLR", 0 },
-
-  { "ForceFileOutput", "FORCE", "Enabled", "Enabled", 0 },
-  { "ForceFileOutput", "FORCE:MULTIPLE", "Multiply Defined Symbol Only",
-    "MultiplyDefinedSymbolOnly", 0 },
-  { "ForceFileOutput", "FORCE:UNRESOLVED", "Undefined Symbol Only",
-    "UndefinedSymbolOnly", 0 },
-
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN", "Enabled", "Enabled", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:5", "X86 Image Only",
-    "X86Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:6", "X64 Image Only",
-    "X64Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
-    "ItaniumImage", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
-  { "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
-    "HighestAvailable", 0 },
-  { "UACExecutionLevel", "level='requireAdministrator'",
-    "requireAdministrator", "RequireAdministrator", 0 },
-
-  { "SubSystem", "", "Not Set", "NotSet", 0 },
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWSCE", "WindowsCE", "WindowsCE", 0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  { "Driver", "", "Not Set", "NotSet", 0 },
-  { "Driver", "Driver", "Driver", "Driver", 0 },
-  { "Driver", "DRIVER:UPONLY", "UP Only", "UpOnly", 0 },
-  { "Driver", "DRIVER:WDM", "WDM", "WDM", 0 },
-
-  { "LinkTimeCodeGeneration", "", "Default", "Default", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "Use Link Time Code Generation",
-    "UseLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGInstrument",
-    "Profile Guided Optimization - Instrument", "PGInstrument", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGOptimize",
-    "Profile Guided Optimization - Optimization", "PGOptimization", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGUpdate",
-    "Profile Guided Optimization - Update", "PGUpdate", 0 },
-
-  { "TargetMachine", "", "Not Set", "NotSet", 0 },
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", "MTA threading attribute",
-    "MTAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", "STA threading attribute",
-    "STAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE",
-    "Default threading attribute", "DefaultThreadingAttribute", 0 },
-
-  { "CLRImageType", "CLRIMAGETYPE:IJW", "Force IJW image", "ForceIJWImage",
-    0 },
-  { "CLRImageType", "CLRIMAGETYPE:PURE", "Force Pure IL Image",
-    "ForcePureILImage", 0 },
-  { "CLRImageType", "CLRIMAGETYPE:SAFE", "Force Safe IL Image",
-    "ForceSafeILImage", 0 },
-  { "CLRImageType", "", "Default image type", "Default", 0 },
-
-  { "LinkErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:NONE", "No Error Report",
-    "NoErrorReport", 0 },
-
-  { "CLRSupportLastError", "CLRSupportLastError", "Enabled", "Enabled", 0 },
-  { "CLRSupportLastError", "CLRSupportLastError:NO", "Disabled", "Disabled",
-    0 },
-  { "CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", "System Dlls Only",
-    "SystemDlls", 0 },
-
-  // Bool Properties
-  { "LinkIncremental", "INCREMENTAL:NO", "", "false", 0 },
-  { "LinkIncremental", "INCREMENTAL", "", "true", 0 },
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "LinkStatus", "LTCG:NOSTATUS", "", "false", 0 },
-  { "LinkStatus", "LTCG:STATUS", "", "true", 0 },
-  { "PreventDllBinding", "ALLOWBIND:NO", "", "false", 0 },
-  { "PreventDllBinding", "ALLOWBIND", "", "true", 0 },
-  { "TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLinkerWarningAsErrors", "WX", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
-  { "GenerateManifest", "MANIFEST", "", "true", 0 },
-  { "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACUIAccess", "uiAccess='false'", "", "false", 0 },
-  { "UACUIAccess", "uiAccess='true'", "", "true", 0 },
-
-  { "GenerateDebugInformation", "DEBUG", "", "true",
-    cmVS7FlagTable::CaseInsensitive },
-  { "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0 },
-  { "TerminalServerAware", "TSAWARE:NO", "", "false", 0 },
-  { "TerminalServerAware", "TSAWARE", "", "true", 0 },
-  { "SwapRunFromCD", "SWAPRUN:CD", "", "true", 0 },
-  { "SwapRunFromNET", "SWAPRUN:NET", "", "true", 0 },
-  { "OptimizeReferences", "OPT:NOREF", "", "false", 0 },
-  { "OptimizeReferences", "OPT:REF", "", "true", 0 },
-  { "EnableCOMDATFolding", "OPT:NOICF", "", "false", 0 },
-  { "EnableCOMDATFolding", "OPT:ICF", "", "true", 0 },
-  { "IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0 },
-  { "NoEntryPoint", "NOENTRY", "", "true", 0 },
-  { "SetChecksum", "RELEASE", "", "true", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0 },
-  { "FixedBaseAddress", "FIXED:NO", "", "false", 0 },
-  { "FixedBaseAddress", "FIXED", "", "true", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT", "", "true", 0 },
-  { "TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0 },
-  { "SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0 },
-  { "SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0 },
-  { "Profile", "PROFILE", "", "true", 0 },
-  { "LinkDelaySign", "DELAYSIGN:NO", "", "false", 0 },
-  { "LinkDelaySign", "DELAYSIGN", "", "true", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0 },
-  { "LinkDLL", "DLL", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "EnableUAC", "MANIFESTUAC:", "", "",
-    cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
-  { "GenerateMapFile", "MAP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "MapFileName", "MAP:", "Generate Map File", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AddModuleNamesToAssembly", "ASSEMBLYMODULE:", "Add Module to Assembly",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "EmbedManagedResourceFile",
-    "ASSEMBLYRESOURCE:", "Embed Managed Resource File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DelayLoadDLLs", "DELAYLOAD:", "Delay Loaded Dlls", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", "Assembly Link Resource",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalManifestDependencies",
-    "MANIFESTDEPENDENCY:", "Additional Manifest Dependencies", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "Version", "VERSION:", "Version", "", cmVS7FlagTable::UserValue },
-  { "SpecifySectionAttributes", "SECTION:", "Specify Section Attributes", "",
-    cmVS7FlagTable::UserValue },
-  { "MSDOSStubFileName", "STUB:", "MS-DOS Stub File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File", "",
-    cmVS7FlagTable::UserValue },
-  { "ManifestFile", "ManifestFile:", "Manifest File", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDatabaseFile", "PDB:", "Generate Program Database File", "",
-    cmVS7FlagTable::UserValue },
-  { "StripPrivateSymbols", "PDBSTRIPPED:", "Strip Private Symbols", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MapFileName] - no command line Switch.
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "HeapReserveSize", "HEAP:", "Heap Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [HeapCommitSize] - no command line Switch.
-  { "StackReserveSize", "STACK:", "Stack Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [StackCommitSize] - no command line Switch.
-  { "FunctionOrder", "ORDER:@", "Function Order", "",
-    cmVS7FlagTable::UserValue },
-  { "ProfileGuidedDatabase", "PGD:", "Profile Guided Database", "",
-    cmVS7FlagTable::UserValue },
-  { "MidlCommandFile", "MIDL:@", "MIDL Commands", "",
-    cmVS7FlagTable::UserValue },
-  { "MergedIDLBaseFileName", "IDLOUT:", "Merged IDL Base File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "TypeLibraryFile", "TLBOUT:", "Type Library", "",
-    cmVS7FlagTable::UserValue },
-  { "EntryPointSymbol", "ENTRY:", "Entry Point", "",
-    cmVS7FlagTable::UserValue },
-  { "BaseAddress", "BASE:", "Base Address", "", cmVS7FlagTable::UserValue },
-  { "ImportLibrary", "IMPLIB:", "Import Library", "",
-    cmVS7FlagTable::UserValue },
-  { "MergeSections", "MERGE:", "Merge Sections", "",
-    cmVS7FlagTable::UserValue },
-  { "LinkKeyFile", "KEYFILE:", "Key File", "", cmVS7FlagTable::UserValue },
-  { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10MASMFlagTable.h b/Source/cmVS10MASMFlagTable.h
deleted file mode 100644
index 3a72a78..0000000
--- a/Source/cmVS10MASMFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS10MASMFlagTable[] = {
-
-  // Enum Properties
-  { "PreserveIdentifierCase", "", "Default", "0", 0 },
-  { "PreserveIdentifierCase", "Cp", "Preserves Identifier Case (/Cp)", "1",
-    0 },
-  { "PreserveIdentifierCase", "Cu",
-    "Maps all identifiers to upper case. (/Cu)", "2", 0 },
-  { "PreserveIdentifierCase", "Cx",
-    "Preserves case in public and extern symbols. (/Cx)", "3", 0 },
-
-  { "WarningLevel", "W0", "Warning Level 0 (/W0)", "0", 0 },
-  { "WarningLevel", "W1", "Warning Level 1 (/W1)", "1", 0 },
-  { "WarningLevel", "W2", "Warning Level 2 (/W2)", "2", 0 },
-  { "WarningLevel", "W3", "Warning Level 3 (/W3)", "3", 0 },
-
-  { "PackAlignmentBoundary", "", "Default", "0", 0 },
-  { "PackAlignmentBoundary", "Zp1", "One Byte Boundary (/Zp1)", "1", 0 },
-  { "PackAlignmentBoundary", "Zp2", "Two Byte Boundary (/Zp2)", "2", 0 },
-  { "PackAlignmentBoundary", "Zp4", "Four Byte Boundary (/Zp4)", "3", 0 },
-  { "PackAlignmentBoundary", "Zp8", "Eight Byte Boundary (/Zp8)", "4", 0 },
-  { "PackAlignmentBoundary", "Zp16", "Sixteen Byte Boundary (/Zp16)", "5", 0 },
-
-  { "CallingConvention", "", "Default", "0", 0 },
-  { "CallingConvention", "Gd", "Use C-style Calling Convention (/Gd)", "1",
-    0 },
-  { "CallingConvention", "Gz", "Use stdcall Calling Convention (/Gz)", "2",
-    0 },
-  { "CallingConvention", "Gc", "Use Pascal Calling Convention (/Gc)", "3", 0 },
-
-  { "ErrorReporting", "errorReport:prompt",
-    "Prompt to send report immediately (/errorReport:prompt)", "0", 0 },
-  { "ErrorReporting", "errorReport:queue",
-    "Prompt to send report at the next logon (/errorReport:queue)", "1", 0 },
-  { "ErrorReporting", "errorReport:send",
-    "Automatically send report (/errorReport:send)", "2", 0 },
-  { "ErrorReporting", "errorReport:none",
-    "Do not send report (/errorReport:none)", "3", 0 },
-
-  // Bool Properties
-  { "NoLogo", "nologo", "", "true", 0 },
-  { "GeneratePreprocessedSourceListing", "EP", "", "true", 0 },
-  { "ListAllAvailableInformation", "Sa", "", "true", 0 },
-  { "UseSafeExceptionHandlers", "safeseh", "", "true", 0 },
-  { "AddFirstPassListing", "Sf", "", "true", 0 },
-  { "EnableAssemblyGeneratedCodeListing", "Sg", "", "true", 0 },
-  { "DisableSymbolTable", "Sn", "", "true", 0 },
-  { "EnableFalseConditionalsInListing", "Sx", "", "true", 0 },
-  { "TreatWarningsAsErrors", "WX", "", "true", 0 },
-  { "MakeAllSymbolsPublic", "Zf", "", "true", 0 },
-  { "GenerateDebugInformation", "Zi", "", "true", 0 },
-  { "EnableMASM51Compatibility", "Zm", "", "true", 0 },
-  { "PerformSyntaxCheckOnly", "Zs", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  { "PreprocessorDefinitions", "D", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IncludePaths", "I", "Include Paths", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "BrowseFile", "FR", "Generate Browse Information File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-
-  // String Properties
-  // Skip [Inputs] - no command line Switch.
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "AssembledCodeListingFile", "Fl", "Assembled Code Listing File", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [CommandLineTemplate] - no command line Switch.
-  // Skip [ExecutionDescription] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10NASMFlagTable.h b/Source/cmVS10NASMFlagTable.h
deleted file mode 100644
index b5f3f6f..0000000
--- a/Source/cmVS10NASMFlagTable.h
+++ /dev/null
@@ -1,50 +0,0 @@
-static cmVS7FlagTable cmVS10NASMFlagTable[] = {
-
-  // Enum Properties
-  { "Outputswitch", "fwin32", "", "0", 0 },
-  { "Outputswitch", "fwin", "", "0", 0 },
-  { "Outputswitch", "fwin64", "", "1", 0 },
-  { "Outputswitch", "felf", "", "2", 0 },
-  { "Outputswitch", "felf32", "", "2", 0 },
-  { "Outputswitch", "felf64", "", "3", 0 },
-
-  { "ErrorReportingFormat", "Xgnu", "", "-Xgnu	GNU format: Default format",
-    0 },
-  { "ErrorReportingFormat", "Xvc", "",
-    "-Xvc	Style used by Microsoft Visual C++", 0 },
-
-  // Bool Properties
-  { "TreatWarningsAsErrors", "Werror", "", "true", 0 },
-  { "GenerateDebugInformation", "g", "", "true", 0 },
-  { "floatunderflow", "w+float-underflow", "", "true", 0 },
-  { "macrodefaults", "w-macro-defaults", "", "true", 0 },
-  { "user", "w-user", "%warning directives (default on)", "true", 0 },
-  { "floatoverflow", "w-float-overflow", "", "true", 0 },
-  { "floatdenorm", "w+float-denorm", "", "true", 0 },
-  { "numberoverflow", "w-number-overflow", "", "true", 0 },
-  { "macroselfref", "w+macro-selfref", "", "true", 0 },
-  { "floattoolong", "w-float-toolong", "", "true", 0 },
-  { "orphanlabels", "w-orphan-labels", "", "true", 0 },
-  { "tasmmode", "t", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  { "PreprocessorDefinitions", "D", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "UndefinePreprocessorDefinitions", "U",
-    "Undefine Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IncludePaths", "I", "Include Paths", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AssembledCodeListingFile", "l",
-    "Generates an assembled code listing file.", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  // Skip [Inputs] - no command line Switch.
-  // Skip [CommandLineTemplate] - no command line Switch.
-  // Skip [ExecutionDescription] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS10RCFlagTable.h b/Source/cmVS10RCFlagTable.h
deleted file mode 100644
index 347fdab..0000000
--- a/Source/cmVS10RCFlagTable.h
+++ /dev/null
@@ -1,7 +0,0 @@
-static cmVS7FlagTable cmVS10RCFlagTable[] = {
-  // Bool Properties
-  { "NullTerminateStrings", "n", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS11CLFlagTable.h b/Source/cmVS11CLFlagTable.h
deleted file mode 100644
index 10f901d..0000000
--- a/Source/cmVS11CLFlagTable.h
+++ /dev/null
@@ -1,220 +0,0 @@
-static cmVS7FlagTable cmVS11CLFlagTable[] = {
-
-  // Enum Properties
-  { "DebugInformationFormat", "", "None", "None", 0 },
-  { "DebugInformationFormat", "Z7", "C7 compatible", "OldStyle", 0 },
-  { "DebugInformationFormat", "Zi", "Program Database", "ProgramDatabase", 0 },
-  { "DebugInformationFormat", "ZI", "Program Database for Edit And Continue",
-    "EditAndContinue", 0 },
-
-  { "WarningLevel", "W0", "Turn Off All Warnings", "TurnOffAllWarnings", 0 },
-  { "WarningLevel", "W1", "Level1", "Level1", 0 },
-  { "WarningLevel", "W2", "Level2", "Level2", 0 },
-  { "WarningLevel", "W3", "Level3", "Level3", 0 },
-  { "WarningLevel", "W4", "Level4", "Level4", 0 },
-  { "WarningLevel", "Wall", "EnableAllWarnings", "EnableAllWarnings", 0 },
-
-  { "Optimization", "Od", "Disabled", "Disabled", 0 },
-  { "Optimization", "O1", "Minimize Size", "MinSpace", 0 },
-  { "Optimization", "O2", "Maximize Speed", "MaxSpeed", 0 },
-  { "Optimization", "Ox", "Full Optimization", "Full", 0 },
-
-  { "InlineFunctionExpansion", "", "Default", "Default", 0 },
-  { "InlineFunctionExpansion", "Ob0", "Disabled", "Disabled", 0 },
-  { "InlineFunctionExpansion", "Ob1", "Only __inline", "OnlyExplicitInline",
-    0 },
-  { "InlineFunctionExpansion", "Ob2", "Any Suitable", "AnySuitable", 0 },
-
-  { "FavorSizeOrSpeed", "Os", "Favor small code", "Size", 0 },
-  { "FavorSizeOrSpeed", "Ot", "Favor fast code", "Speed", 0 },
-  { "FavorSizeOrSpeed", "", "Neither", "Neither", 0 },
-
-  { "ExceptionHandling", "EHa", "Yes with SEH Exceptions", "Async", 0 },
-  { "ExceptionHandling", "EHsc", "Yes", "Sync", 0 },
-  { "ExceptionHandling", "EHs", "Yes with Extern C functions", "SyncCThrow",
-    0 },
-  { "ExceptionHandling", "", "No", "false", 0 },
-
-  { "BasicRuntimeChecks", "RTCs", "Stack Frames", "StackFrameRuntimeCheck",
-    0 },
-  { "BasicRuntimeChecks", "RTCu", "Uninitialized variables",
-    "UninitializedLocalUsageCheck", 0 },
-  { "BasicRuntimeChecks", "RTC1", "Both (/RTC1, equiv. to /RTCsu)",
-    "EnableFastChecks", 0 },
-  { "BasicRuntimeChecks", "", "Default", "Default", 0 },
-
-  { "RuntimeLibrary", "MT", "Multi-threaded", "MultiThreaded", 0 },
-  { "RuntimeLibrary", "MTd", "Multi-threaded Debug", "MultiThreadedDebug", 0 },
-  { "RuntimeLibrary", "MD", "Multi-threaded DLL", "MultiThreadedDLL", 0 },
-  { "RuntimeLibrary", "MDd", "Multi-threaded Debug DLL",
-    "MultiThreadedDebugDLL", 0 },
-
-  { "StructMemberAlignment", "Zp1", "1 Byte", "1Byte", 0 },
-  { "StructMemberAlignment", "Zp2", "2 Bytes", "2Bytes", 0 },
-  { "StructMemberAlignment", "Zp4", "4 Byte", "4Bytes", 0 },
-  { "StructMemberAlignment", "Zp8", "8 Bytes", "8Bytes", 0 },
-  { "StructMemberAlignment", "Zp16", "16 Bytes", "16Bytes", 0 },
-  { "StructMemberAlignment", "", "Default", "Default", 0 },
-
-  { "EnableEnhancedInstructionSet", "arch:SSE", "Streaming SIMD Extensions",
-    "StreamingSIMDExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:SSE2", "Streaming SIMD Extensions 2",
-    "StreamingSIMDExtensions2", 0 },
-  { "EnableEnhancedInstructionSet", "arch:AVX", "Advanced Vector Extensions",
-    "AdvancedVectorExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:IA32", "No Enhanced Instructions",
-    "NoExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "", "Not Set", "NotSet", 0 },
-
-  { "FloatingPointModel", "fp:precise", "Precise", "Precise", 0 },
-  { "FloatingPointModel", "fp:strict", "Strict", "Strict", 0 },
-  { "FloatingPointModel", "fp:fast", "Fast", "Fast", 0 },
-
-  { "PrecompiledHeader", "Yc", "Create", "Create",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Yu", "Use", "Use",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Y-", "Not Using Precompiled Headers", "NotUsing",
-    0 },
-
-  { "AssemblerOutput", "", "No Listing", "NoListing", 0 },
-  { "AssemblerOutput", "FA", "Assembly-Only Listing", "AssemblyCode", 0 },
-  { "AssemblerOutput", "FAc", "Assembly With Machine Code",
-    "AssemblyAndMachineCode", 0 },
-  { "AssemblerOutput", "FAs", "Assembly With Source Code",
-    "AssemblyAndSourceCode", 0 },
-  { "AssemblerOutput", "FAcs", "Assembly, Machine Code and Source", "All", 0 },
-
-  { "CallingConvention", "Gd", "__cdecl", "Cdecl", 0 },
-  { "CallingConvention", "Gr", "__fastcall", "FastCall", 0 },
-  { "CallingConvention", "Gz", "__stdcall", "StdCall", 0 },
-
-  { "CompileAs", "", "Default", "Default", 0 },
-  { "CompileAs", "TC", "Compile as C Code", "CompileAsC", 0 },
-  { "CompileAs", "TP", "Compile as C++ Code", "CompileAsCpp", 0 },
-
-  { "ErrorReporting", "errorReport:none", "Do Not Send Report", "None", 0 },
-  { "ErrorReporting", "errorReport:prompt", "Prompt Immediately", "Prompt",
-    0 },
-  { "ErrorReporting", "errorReport:queue", "Queue For Next Login", "Queue",
-    0 },
-  { "ErrorReporting", "errorReport:send", "Send Automatically", "Send", 0 },
-
-  { "CompileAsManaged", "", "No Common Language RunTime Support", "false", 0 },
-  { "CompileAsManaged", "clr", "Common Language RunTime Support", "true", 0 },
-  { "CompileAsManaged", "clr:pure",
-    "Pure MSIL Common Language RunTime Support", "Pure", 0 },
-  { "CompileAsManaged", "clr:safe",
-    "Safe MSIL Common Language RunTime Support", "Safe", 0 },
-  { "CompileAsManaged", "clr:oldSyntax",
-    "Common Language RunTime Support, Old Syntax", "OldSyntax", 0 },
-
-  // Bool Properties
-  { "CompileAsWinRT", "ZW", "", "true", 0 },
-  { "WinRTNoStdLib", "ZW:nostdlib", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo-", "", "false", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-  { "TreatWarningAsError", "WX-", "", "false", 0 },
-  { "TreatWarningAsError", "WX", "", "true", 0 },
-  { "SDLCheck", "sdl-", "", "false", 0 },
-  { "SDLCheck", "sdl", "", "true", 0 },
-  { "IntrinsicFunctions", "Oi", "", "true", 0 },
-  { "OmitFramePointers", "Oy-", "", "false", 0 },
-  { "OmitFramePointers", "Oy", "", "true", 0 },
-  { "EnableFiberSafeOptimizations", "GT", "", "true", 0 },
-  { "WholeProgramOptimization", "GL", "", "true", 0 },
-  { "UndefineAllPreprocessorDefinitions", "u", "", "true", 0 },
-  { "IgnoreStandardIncludePath", "X", "", "true", 0 },
-  { "PreprocessToFile", "P", "", "true", 0 },
-  { "PreprocessSuppressLineNumbers", "EP", "", "true", 0 },
-  { "PreprocessKeepComments", "C", "", "true", 0 },
-  { "StringPooling", "GF-", "", "false", 0 },
-  { "StringPooling", "GF", "", "true", 0 },
-  { "MinimalRebuild", "Gm-", "", "false", 0 },
-  { "MinimalRebuild", "Gm", "", "true", 0 },
-  { "SmallerTypeCheck", "RTCc", "", "true", 0 },
-  { "BufferSecurityCheck", "GS-", "", "false", 0 },
-  { "BufferSecurityCheck", "GS", "", "true", 0 },
-  { "FunctionLevelLinking", "Gy-", "", "false", 0 },
-  { "FunctionLevelLinking", "Gy", "", "true", 0 },
-  { "EnableParallelCodeGeneration", "Qpar-", "", "false", 0 },
-  { "EnableParallelCodeGeneration", "Qpar", "", "true", 0 },
-  { "FloatingPointExceptions", "fp:except-", "", "false", 0 },
-  { "FloatingPointExceptions", "fp:except", "", "true", 0 },
-  { "CreateHotpatchableImage", "hotpatch", "", "true", 0 },
-  { "DisableLanguageExtensions", "Za", "", "true", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t", "", "true", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope-", "", "false", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope", "", "true", 0 },
-  { "RuntimeTypeInfo", "GR-", "", "false", 0 },
-  { "RuntimeTypeInfo", "GR", "", "true", 0 },
-  { "OpenMPSupport", "openmp-", "", "false", 0 },
-  { "OpenMPSupport", "openmp", "", "true", 0 },
-  { "ExpandAttributedSource", "Fx", "", "true", 0 },
-  { "UseUnicodeForAssemblerListing", "FAu", "", "true", 0 },
-  { "ShowIncludes", "showIncludes", "", "true", 0 },
-  { "EnablePREfast", "analyze-", "", "false", 0 },
-  { "EnablePREfast", "analyze", "", "true", 0 },
-  { "UseFullPaths", "FC", "", "true", 0 },
-  { "OmitDefaultLibName", "Zl", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "MultiProcessorCompilation", "MP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "ProcessorNumber", "MP", "Multi-processor Compilation", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "GenerateXMLDocumentationFiles", "doc", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "BrowseInformation", "FR", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "BrowseInformationFile", "FR", "Enable Browse Information", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalIncludeDirectories", "I", "Additional Include Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalUsingDirectories", "AI", "Additional #using Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PreprocessorDefinitions", "D ", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "UndefinePreprocessorDefinitions", "U",
-    "Undefine Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DisableSpecificWarnings", "wd", "Disable Specific Warnings", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedIncludeFiles", "FI", "Forced Include File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedUsingFiles", "FU", "Forced #using File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PREfastLog", "analyze:log", "Code Analysis Log", "",
-    cmVS7FlagTable::UserFollowing },
-  { "PREfastAdditionalPlugins", "analyze:plugin",
-    "Additional Code Analysis Native plugins", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "TreatSpecificWarningsAsErrors", "we", "Treat Specific Warnings As Errors",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "PreprocessOutputPath", "Fi", "Preprocess Output Path", "",
-    cmVS7FlagTable::UserValue },
-  { "PrecompiledHeaderFile", "Yc", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderFile", "Yu", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderOutputFile", "Fp", "Precompiled Header Output File", "",
-    cmVS7FlagTable::UserValue },
-  { "AssemblerListingLocation", "Fa", "ASM List Location", "",
-    cmVS7FlagTable::UserValue },
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDataBaseFileName", "Fd", "Program Database File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [XMLDocumentationFileName] - no command line Switch.
-  // Skip [BrowseInformationFile] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS11CSharpFlagTable.h b/Source/cmVS11CSharpFlagTable.h
deleted file mode 100644
index 1b10e7d..0000000
--- a/Source/cmVS11CSharpFlagTable.h
+++ /dev/null
@@ -1,121 +0,0 @@
-static cmVS7FlagTable cmVS11CSharpFlagTable[] = {
-  { "ProjectName", "out:", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "OutputType", "target:exe", "", "Exe", 0 },
-  { "OutputType", "target:winexe", "", "Winexe", 0 },
-  { "OutputType", "target:library", "", "Library", 0 },
-  { "OutputType", "target:module", "", "Module", 0 },
-
-  { "DocumentationFile", "doc", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "Platform", "platform:x86", "", "x86", 0 },
-  { "Platform", "platform:Itanium", "", "Itanium", 0 },
-  { "Platform", "platform:x64", "", "x64", 0 },
-  { "Platform", "platform:arm", "", "arm", 0 },
-  { "Platform", "platform:anycpu32bitpreferred", "", "anycpu32bitpreferred",
-    0 },
-  { "Platform", "platform:anycpu", "", "anycpu", 0 },
-
-  { "References", "reference:", "mit alias", "", 0 },
-  { "References", "reference:", "dateiliste", "", 0 },
-  { "AddModules", "addmodule:", "", "", cmIDEFlagTable::SemicolonAppendable },
-  { "", "link", "", "", 0 },
-
-  { "Win32Resource", "win32res:", "", "", cmIDEFlagTable::UserValueRequired },
-  { "ApplicationIcon", "win32icon:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "ApplicationManifest", "win32manifest:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "NoWin32Manifest", "nowin32manifest", "", "true", 0 },
-
-  { "DefineDebug", "debug", "", "true", cmIDEFlagTable::Continue },
-
-  { "DebugSymbols", "debug", "", "true", 0 },
-  { "DebugSymbols", "debug-", "", "false", 0 },
-  { "DebugSymbols", "debug+", "", "true", 0 },
-
-  { "DebugType", "debug:none", "", "none", 0 },
-  { "DebugType", "debug:full", "", "full", 0 },
-  { "DebugType", "debug:pdbonly", "", "pdbonly", 0 },
-
-  { "Optimize", "optimize", "", "true", 0 },
-  { "Optimize", "optimize-", "", "false", 0 },
-  { "Optimize", "optimize+", "", "true", 0 },
-
-  { "TreatWarningsAsErrors", "warnaserror", "", "true", 0 },
-  { "TreatWarningsAsErrors", "warnaserror-", "", "false", 0 },
-  { "TreatWarningsAsErrors", "warnaserror+", "", "true", 0 },
-
-  { "WarningsAsErrors", "warnaserror", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror-", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror+", "", "", 0 },
-
-  { "WarningLevel", "warn:0", "", "0", 0 },
-  { "WarningLevel", "warn:1", "", "1", 0 },
-  { "WarningLevel", "warn:2", "", "2", 0 },
-  { "WarningLevel", "warn:3", "", "3", 0 },
-  { "WarningLevel", "warn:4", "", "4", 0 },
-  { "DisabledWarnings", "nowarn", "", "", 0 },
-
-  { "CheckForOverflowUnderflow", "checked", "", "true", 0 },
-  { "CheckForOverflowUnderflow", "checked-", "", "false", 0 },
-  { "CheckForOverflowUnderflow", "checked+", "", "true", 0 },
-
-  { "AllowUnsafeBlocks", "unsafe", "", "true", 0 },
-  { "AllowUnsafeBlocks", "unsafe-", "", "false", 0 },
-  { "AllowUnsafeBlocks", "unsafe+", "", "true", 0 },
-
-  { "DefineConstants", "define:", "", "",
-    cmIDEFlagTable::SemicolonAppendable | cmIDEFlagTable::UserValue },
-
-  { "LangVersion", "langversion:ISO-1", "", "ISO-1", 0 },
-  { "LangVersion", "langversion:ISO-2", "", "ISO-2", 0 },
-  { "LangVersion", "langversion:3", "", "3", 0 },
-  { "LangVersion", "langversion:4", "", "4", 0 },
-  { "LangVersion", "langversion:5", "", "5", 0 },
-  { "LangVersion", "langversion:6", "", "6", 0 },
-  { "LangVersion", "langversion:default", "", "default", 0 },
-
-  { "DelaySign", "delaysign", "", "true", 0 },
-  { "DelaySign", "delaysign-", "", "false", 0 },
-  { "DelaySign", "delaysign+", "", "true", 0 },
-
-  { "AssemblyOriginatorKeyFile", "keyfile", "", "", 0 },
-
-  { "KeyContainerName", "keycontainer", "", "", 0 },
-
-  { "NoLogo", "nologo", "", "", 0 },
-
-  { "NoConfig", "noconfig", "", "true", 0 },
-
-  { "BaseAddress", "baseaddress:", "", "", 0 },
-
-  { "CodePage", "codepage", "", "", 0 },
-
-  { "Utf8Output", "utf8output", "", "", 0 },
-
-  { "MainEntryPoint", "main:", "", "", 0 },
-
-  { "GenerateFullPaths", "fullpaths", "", "true", 0 },
-
-  { "FileAlignment", "filealign", "", "", 0 },
-
-  { "PdbFile", "pdb:", "", "", 0 },
-
-  { "NoStandardLib", "nostdlib", "", "true", 0 },
-  { "NoStandardLib", "nostdlib-", "", "false", 0 },
-  { "NoStandardLib", "nostdlib+", "", "true", 0 },
-
-  { "SubsystemVersion", "subsystemversion", "", "", 0 },
-
-  { "AdditionalLibPaths", "lib:", "", "", 0 },
-
-  { "ErrorReport", "errorreport:none", "Do Not Send Report", "none", 0 },
-  { "ErrorReport", "errorreport:prompt", "Prompt Immediately", "prompt", 0 },
-  { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
-  { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
-
-  { "", "", "", "", 0 },
-};
diff --git a/Source/cmVS11LibFlagTable.h b/Source/cmVS11LibFlagTable.h
deleted file mode 100644
index afadf37..0000000
--- a/Source/cmVS11LibFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS11LibFlagTable[] = {
-
-  // Enum Properties
-  { "ErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "ErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "ErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "ErrorReporting", "ERRORREPORT:NONE", "No Error Report", "NoErrorReport",
-    0 },
-
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWSCE", "WindowsCE", "WindowsCE", 0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  // Bool Properties
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "TreatLibWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLibWarningAsErrors", "WX", "", "true", 0 },
-  { "Verbose", "VERBOSE", "", "true", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ExportNamedFunctions", "EXPORT:", "Export Named Functions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "RemoveObjects", "REMOVE:", "Remove Objects", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue },
-  { "DisplayLibrary", "LIST:", "Display Library to standard output", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS11LinkFlagTable.h b/Source/cmVS11LinkFlagTable.h
deleted file mode 100644
index 4dea670..0000000
--- a/Source/cmVS11LinkFlagTable.h
+++ /dev/null
@@ -1,272 +0,0 @@
-static cmVS7FlagTable cmVS11LinkFlagTable[] = {
-
-  // Enum Properties
-  { "ShowProgress", "", "Not Set", "NotSet", 0 },
-  { "ShowProgress", "VERBOSE", "Display all progress messages", "LinkVerbose",
-    0 },
-  { "ShowProgress", "VERBOSE:Lib", "For Libraries Searched", "LinkVerboseLib",
-    0 },
-  { "ShowProgress", "VERBOSE:ICF",
-    "About COMDAT folding during optimized linking", "LinkVerboseICF", 0 },
-  { "ShowProgress", "VERBOSE:REF",
-    "About data removed during optimized linking", "LinkVerboseREF", 0 },
-  { "ShowProgress", "VERBOSE:SAFESEH", "About Modules incompatible with SEH",
-    "LinkVerboseSAFESEH", 0 },
-  { "ShowProgress", "VERBOSE:CLR",
-    "About linker activity related to managed code", "LinkVerboseCLR", 0 },
-
-  { "ForceFileOutput", "FORCE", "Enabled", "Enabled", 0 },
-  { "ForceFileOutput", "FORCE:MULTIPLE", "Multiply Defined Symbol Only",
-    "MultiplyDefinedSymbolOnly", 0 },
-  { "ForceFileOutput", "FORCE:UNRESOLVED", "Undefined Symbol Only",
-    "UndefinedSymbolOnly", 0 },
-
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN", "Enabled", "Enabled", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:5", "X86 Image Only",
-    "X86Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:6", "X64 Image Only",
-    "X64Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
-    "ItaniumImage", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
-  { "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
-    "HighestAvailable", 0 },
-  { "UACExecutionLevel", "level='requireAdministrator'",
-    "requireAdministrator", "RequireAdministrator", 0 },
-
-  { "SubSystem", "", "Not Set", "NotSet", 0 },
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  { "Driver", "", "Not Set", "NotSet", 0 },
-  { "Driver", "Driver", "Driver", "Driver", 0 },
-  { "Driver", "DRIVER:UPONLY", "UP Only", "UpOnly", 0 },
-  { "Driver", "DRIVER:WDM", "WDM", "WDM", 0 },
-
-  { "LinkTimeCodeGeneration", "", "Default", "Default", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "Use Link Time Code Generation",
-    "UseLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGInstrument",
-    "Profile Guided Optimization - Instrument", "PGInstrument", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGOptimize",
-    "Profile Guided Optimization - Optimization", "PGOptimization", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGUpdate",
-    "Profile Guided Optimization - Update", "PGUpdate", 0 },
-
-  { "GenerateWindowsMetadata", "WINMD", "Yes", "true", 0 },
-  { "GenerateWindowsMetadata", "WINMD:NO", "No", "false", 0 },
-
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "TargetMachine", "", "Not Set", "NotSet", 0 },
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", "MTA threading attribute",
-    "MTAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", "STA threading attribute",
-    "STAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE",
-    "Default threading attribute", "DefaultThreadingAttribute", 0 },
-
-  { "CLRImageType", "CLRIMAGETYPE:IJW", "Force IJW image", "ForceIJWImage",
-    0 },
-  { "CLRImageType", "CLRIMAGETYPE:PURE", "Force Pure IL Image",
-    "ForcePureILImage", 0 },
-  { "CLRImageType", "CLRIMAGETYPE:SAFE", "Force Safe IL Image",
-    "ForceSafeILImage", 0 },
-  { "CLRImageType", "", "Default image type", "Default", 0 },
-
-  { "SignHash", "CLRSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "LinkErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:NONE", "No Error Report",
-    "NoErrorReport", 0 },
-
-  { "CLRSupportLastError", "CLRSupportLastError", "Enabled", "Enabled", 0 },
-  { "CLRSupportLastError", "CLRSupportLastError:NO", "Disabled", "Disabled",
-    0 },
-  { "CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", "System Dlls Only",
-    "SystemDlls", 0 },
-
-  // Bool Properties
-  { "LinkIncremental", "INCREMENTAL:NO", "", "false", 0 },
-  { "LinkIncremental", "INCREMENTAL", "", "true", 0 },
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "LinkStatus", "LTCG:NOSTATUS", "", "false", 0 },
-  { "LinkStatus", "LTCG:STATUS", "", "true", 0 },
-  { "PreventDllBinding", "ALLOWBIND:NO", "", "false", 0 },
-  { "PreventDllBinding", "ALLOWBIND", "", "true", 0 },
-  { "TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLinkerWarningAsErrors", "WX", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
-  { "GenerateManifest", "MANIFEST", "", "true", 0 },
-  { "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACUIAccess", "uiAccess='false'", "", "false", 0 },
-  { "UACUIAccess", "uiAccess='true'", "", "true", 0 },
-
-  { "ManifestEmbed", "manifest:embed", "", "true", 0 },
-  { "GenerateDebugInformation", "DEBUG", "", "true",
-    cmVS7FlagTable::CaseInsensitive },
-  { "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0 },
-  { "TerminalServerAware", "TSAWARE:NO", "", "false", 0 },
-  { "TerminalServerAware", "TSAWARE", "", "true", 0 },
-  { "SwapRunFromCD", "SWAPRUN:CD", "", "true", 0 },
-  { "SwapRunFromNET", "SWAPRUN:NET", "", "true", 0 },
-  { "OptimizeReferences", "OPT:NOREF", "", "false", 0 },
-  { "OptimizeReferences", "OPT:REF", "", "true", 0 },
-  { "EnableCOMDATFolding", "OPT:NOICF", "", "false", 0 },
-  { "EnableCOMDATFolding", "OPT:ICF", "", "true", 0 },
-  { "IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0 },
-  { "AppContainer", "APPCONTAINER", "", "true", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN:NO", "", "false", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN", "", "true", 0 },
-  { "NoEntryPoint", "NOENTRY", "", "true", 0 },
-  { "SetChecksum", "RELEASE", "", "true", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0 },
-  { "FixedBaseAddress", "FIXED:NO", "", "false", 0 },
-  { "FixedBaseAddress", "FIXED", "", "true", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT", "", "true", 0 },
-  { "TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0 },
-  { "SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0 },
-  { "SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0 },
-  { "Profile", "PROFILE", "", "true", 0 },
-  { "LinkDelaySign", "DELAYSIGN:NO", "", "false", 0 },
-  { "LinkDelaySign", "DELAYSIGN", "", "true", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0 },
-  { "DetectOneDefinitionRule", "ODR", "", "true", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0 },
-  { "LinkDLL", "DLL", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "EnableUAC", "MANIFESTUAC:", "", "",
-    cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
-  { "GenerateMapFile", "MAP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "MapFileName", "MAP:", "Generate Map File", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AddModuleNamesToAssembly", "ASSEMBLYMODULE:", "Add Module to Assembly",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "EmbedManagedResourceFile",
-    "ASSEMBLYRESOURCE:", "Embed Managed Resource File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DelayLoadDLLs", "DELAYLOAD:", "Delay Loaded Dlls", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", "Assembly Link Resource",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalManifestDependencies",
-    "MANIFESTDEPENDENCY:", "Additional Manifest Dependencies", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ManifestInput", "manifestinput:", "Manifest Input", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "Version", "VERSION:", "Version", "", cmVS7FlagTable::UserValue },
-  { "SpecifySectionAttributes", "SECTION:", "Specify Section Attributes", "",
-    cmVS7FlagTable::UserValue },
-  { "MSDOSStubFileName", "STUB:", "MS-DOS Stub File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File", "",
-    cmVS7FlagTable::UserValue },
-  { "ManifestFile", "ManifestFile:", "Manifest File", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDatabaseFile", "PDB:", "Generate Program Database File", "",
-    cmVS7FlagTable::UserValue },
-  { "StripPrivateSymbols", "PDBSTRIPPED:", "Strip Private Symbols", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MapFileName] - no command line Switch.
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "HeapReserveSize", "HEAP:", "Heap Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [HeapCommitSize] - no command line Switch.
-  { "StackReserveSize", "STACK:", "Stack Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [StackCommitSize] - no command line Switch.
-  { "FunctionOrder", "ORDER:@", "Function Order", "",
-    cmVS7FlagTable::UserValue },
-  { "ProfileGuidedDatabase", "PGD:", "Profile Guided Database", "",
-    cmVS7FlagTable::UserValue },
-  { "MidlCommandFile", "MIDL:@", "MIDL Commands", "",
-    cmVS7FlagTable::UserValue },
-  { "MergedIDLBaseFileName", "IDLOUT:", "Merged IDL Base File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "TypeLibraryFile", "TLBOUT:", "Type Library", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataFile", "WINMDFILE:", "Windows Metadata File", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataLinkKeyFile", "WINMDKEYFILE:", "Windows Metadata Key File",
-    "", cmVS7FlagTable::UserValue },
-  { "WindowsMetadataKeyContainer", "WINMDKEYCONTAINER:",
-    "Windows Metadata Key Container", "", cmVS7FlagTable::UserValue },
-  { "EntryPointSymbol", "ENTRY:", "Entry Point", "",
-    cmVS7FlagTable::UserValue },
-  { "BaseAddress", "BASE:", "Base Address", "", cmVS7FlagTable::UserValue },
-  { "ImportLibrary", "IMPLIB:", "Import Library", "",
-    cmVS7FlagTable::UserValue },
-  { "MergeSections", "MERGE:", "Merge Sections", "",
-    cmVS7FlagTable::UserValue },
-  { "LinkKeyFile", "KEYFILE:", "Key File", "", cmVS7FlagTable::UserValue },
-  { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS11MASMFlagTable.h b/Source/cmVS11MASMFlagTable.h
deleted file mode 100644
index fc0443c..0000000
--- a/Source/cmVS11MASMFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS11MASMFlagTable[] = {
-
-  // Enum Properties
-  { "PreserveIdentifierCase", "", "Default", "0", 0 },
-  { "PreserveIdentifierCase", "Cp", "Preserves Identifier Case (/Cp)", "1",
-    0 },
-  { "PreserveIdentifierCase", "Cu",
-    "Maps all identifiers to upper case. (/Cu)", "2", 0 },
-  { "PreserveIdentifierCase", "Cx",
-    "Preserves case in public and extern symbols. (/Cx)", "3", 0 },
-
-  { "WarningLevel", "W0", "Warning Level 0 (/W0)", "0", 0 },
-  { "WarningLevel", "W1", "Warning Level 1 (/W1)", "1", 0 },
-  { "WarningLevel", "W2", "Warning Level 2 (/W2)", "2", 0 },
-  { "WarningLevel", "W3", "Warning Level 3 (/W3)", "3", 0 },
-
-  { "PackAlignmentBoundary", "", "Default", "0", 0 },
-  { "PackAlignmentBoundary", "Zp1", "One Byte Boundary (/Zp1)", "1", 0 },
-  { "PackAlignmentBoundary", "Zp2", "Two Byte Boundary (/Zp2)", "2", 0 },
-  { "PackAlignmentBoundary", "Zp4", "Four Byte Boundary (/Zp4)", "3", 0 },
-  { "PackAlignmentBoundary", "Zp8", "Eight Byte Boundary (/Zp8)", "4", 0 },
-  { "PackAlignmentBoundary", "Zp16", "Sixteen Byte Boundary (/Zp16)", "5", 0 },
-
-  { "CallingConvention", "", "Default", "0", 0 },
-  { "CallingConvention", "Gd", "Use C-style Calling Convention (/Gd)", "1",
-    0 },
-  { "CallingConvention", "Gz", "Use stdcall Calling Convention (/Gz)", "2",
-    0 },
-  { "CallingConvention", "Gc", "Use Pascal Calling Convention (/Gc)", "3", 0 },
-
-  { "ErrorReporting", "errorReport:prompt",
-    "Prompt to send report immediately (/errorReport:prompt)", "0", 0 },
-  { "ErrorReporting", "errorReport:queue",
-    "Prompt to send report at the next logon (/errorReport:queue)", "1", 0 },
-  { "ErrorReporting", "errorReport:send",
-    "Automatically send report (/errorReport:send)", "2", 0 },
-  { "ErrorReporting", "errorReport:none",
-    "Do not send report (/errorReport:none)", "3", 0 },
-
-  // Bool Properties
-  { "NoLogo", "nologo", "", "true", 0 },
-  { "GeneratePreprocessedSourceListing", "EP", "", "true", 0 },
-  { "ListAllAvailableInformation", "Sa", "", "true", 0 },
-  { "UseSafeExceptionHandlers", "safeseh", "", "true", 0 },
-  { "AddFirstPassListing", "Sf", "", "true", 0 },
-  { "EnableAssemblyGeneratedCodeListing", "Sg", "", "true", 0 },
-  { "DisableSymbolTable", "Sn", "", "true", 0 },
-  { "EnableFalseConditionalsInListing", "Sx", "", "true", 0 },
-  { "TreatWarningsAsErrors", "WX", "", "true", 0 },
-  { "MakeAllSymbolsPublic", "Zf", "", "true", 0 },
-  { "GenerateDebugInformation", "Zi", "", "true", 0 },
-  { "EnableMASM51Compatibility", "Zm", "", "true", 0 },
-  { "PerformSyntaxCheckOnly", "Zs", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  { "PreprocessorDefinitions", "D", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IncludePaths", "I", "Include Paths", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "BrowseFile", "FR", "Generate Browse Information File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-
-  // String Properties
-  // Skip [Inputs] - no command line Switch.
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "AssembledCodeListingFile", "Fl", "Assembled Code Listing File", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [CommandLineTemplate] - no command line Switch.
-  // Skip [ExecutionDescription] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS11RCFlagTable.h b/Source/cmVS11RCFlagTable.h
deleted file mode 100644
index f71604c..0000000
--- a/Source/cmVS11RCFlagTable.h
+++ /dev/null
@@ -1,7 +0,0 @@
-static cmVS7FlagTable cmVS11RCFlagTable[] = {
-  // Bool Properties
-  { "NullTerminateStrings", "n", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS12CLFlagTable.h b/Source/cmVS12CLFlagTable.h
deleted file mode 100644
index 5cac77c..0000000
--- a/Source/cmVS12CLFlagTable.h
+++ /dev/null
@@ -1,222 +0,0 @@
-static cmVS7FlagTable cmVS12CLFlagTable[] = {
-
-  // Enum Properties
-  { "DebugInformationFormat", "", "None", "None", 0 },
-  { "DebugInformationFormat", "Z7", "C7 compatible", "OldStyle", 0 },
-  { "DebugInformationFormat", "Zi", "Program Database", "ProgramDatabase", 0 },
-  { "DebugInformationFormat", "ZI", "Program Database for Edit And Continue",
-    "EditAndContinue", 0 },
-
-  { "WarningLevel", "W0", "Turn Off All Warnings", "TurnOffAllWarnings", 0 },
-  { "WarningLevel", "W1", "Level1", "Level1", 0 },
-  { "WarningLevel", "W2", "Level2", "Level2", 0 },
-  { "WarningLevel", "W3", "Level3", "Level3", 0 },
-  { "WarningLevel", "W4", "Level4", "Level4", 0 },
-  { "WarningLevel", "Wall", "EnableAllWarnings", "EnableAllWarnings", 0 },
-
-  { "Optimization", "", "Custom", "Custom", 0 },
-  { "Optimization", "Od", "Disabled", "Disabled", 0 },
-  { "Optimization", "O1", "Minimize Size", "MinSpace", 0 },
-  { "Optimization", "O2", "Maximize Speed", "MaxSpeed", 0 },
-  { "Optimization", "Ox", "Full Optimization", "Full", 0 },
-
-  { "InlineFunctionExpansion", "", "Default", "Default", 0 },
-  { "InlineFunctionExpansion", "Ob0", "Disabled", "Disabled", 0 },
-  { "InlineFunctionExpansion", "Ob1", "Only __inline", "OnlyExplicitInline",
-    0 },
-  { "InlineFunctionExpansion", "Ob2", "Any Suitable", "AnySuitable", 0 },
-
-  { "FavorSizeOrSpeed", "Os", "Favor small code", "Size", 0 },
-  { "FavorSizeOrSpeed", "Ot", "Favor fast code", "Speed", 0 },
-  { "FavorSizeOrSpeed", "", "Neither", "Neither", 0 },
-
-  { "ExceptionHandling", "EHa", "Yes with SEH Exceptions", "Async", 0 },
-  { "ExceptionHandling", "EHsc", "Yes", "Sync", 0 },
-  { "ExceptionHandling", "EHs", "Yes with Extern C functions", "SyncCThrow",
-    0 },
-  { "ExceptionHandling", "", "No", "false", 0 },
-
-  { "BasicRuntimeChecks", "RTCs", "Stack Frames", "StackFrameRuntimeCheck",
-    0 },
-  { "BasicRuntimeChecks", "RTCu", "Uninitialized variables",
-    "UninitializedLocalUsageCheck", 0 },
-  { "BasicRuntimeChecks", "RTC1", "Both (/RTC1, equiv. to /RTCsu)",
-    "EnableFastChecks", 0 },
-  { "BasicRuntimeChecks", "", "Default", "Default", 0 },
-
-  { "RuntimeLibrary", "MT", "Multi-threaded", "MultiThreaded", 0 },
-  { "RuntimeLibrary", "MTd", "Multi-threaded Debug", "MultiThreadedDebug", 0 },
-  { "RuntimeLibrary", "MD", "Multi-threaded DLL", "MultiThreadedDLL", 0 },
-  { "RuntimeLibrary", "MDd", "Multi-threaded Debug DLL",
-    "MultiThreadedDebugDLL", 0 },
-
-  { "StructMemberAlignment", "Zp1", "1 Byte", "1Byte", 0 },
-  { "StructMemberAlignment", "Zp2", "2 Bytes", "2Bytes", 0 },
-  { "StructMemberAlignment", "Zp4", "4 Byte", "4Bytes", 0 },
-  { "StructMemberAlignment", "Zp8", "8 Bytes", "8Bytes", 0 },
-  { "StructMemberAlignment", "Zp16", "16 Bytes", "16Bytes", 0 },
-  { "StructMemberAlignment", "", "Default", "Default", 0 },
-
-  { "BufferSecurityCheck", "GS-", "Disable Security Check", "false", 0 },
-  { "BufferSecurityCheck", "GS", "Enable Security Check", "true", 0 },
-
-  { "EnableEnhancedInstructionSet", "arch:SSE", "Streaming SIMD Extensions",
-    "StreamingSIMDExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:SSE2", "Streaming SIMD Extensions 2",
-    "StreamingSIMDExtensions2", 0 },
-  { "EnableEnhancedInstructionSet", "arch:AVX", "Advanced Vector Extensions",
-    "AdvancedVectorExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:IA32", "No Enhanced Instructions",
-    "NoExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "", "Not Set", "NotSet", 0 },
-
-  { "FloatingPointModel", "fp:precise", "Precise", "Precise", 0 },
-  { "FloatingPointModel", "fp:strict", "Strict", "Strict", 0 },
-  { "FloatingPointModel", "fp:fast", "Fast", "Fast", 0 },
-
-  { "PrecompiledHeader", "Yc", "Create", "Create",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Yu", "Use", "Use",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Y-", "Not Using Precompiled Headers", "NotUsing",
-    0 },
-
-  { "AssemblerOutput", "", "No Listing", "NoListing", 0 },
-  { "AssemblerOutput", "FA", "Assembly-Only Listing", "AssemblyCode", 0 },
-  { "AssemblerOutput", "FAc", "Assembly With Machine Code",
-    "AssemblyAndMachineCode", 0 },
-  { "AssemblerOutput", "FAs", "Assembly With Source Code",
-    "AssemblyAndSourceCode", 0 },
-  { "AssemblerOutput", "FAcs", "Assembly, Machine Code and Source", "All", 0 },
-
-  { "CallingConvention", "Gd", "__cdecl", "Cdecl", 0 },
-  { "CallingConvention", "Gr", "__fastcall", "FastCall", 0 },
-  { "CallingConvention", "Gz", "__stdcall", "StdCall", 0 },
-  { "CallingConvention", "Gv", "__vectorcall", "VectorCall", 0 },
-
-  { "CompileAs", "", "Default", "Default", 0 },
-  { "CompileAs", "TC", "Compile as C Code", "CompileAsC", 0 },
-  { "CompileAs", "TP", "Compile as C++ Code", "CompileAsCpp", 0 },
-
-  { "ErrorReporting", "errorReport:none", "Do Not Send Report", "None", 0 },
-  { "ErrorReporting", "errorReport:prompt", "Prompt Immediately", "Prompt",
-    0 },
-  { "ErrorReporting", "errorReport:queue", "Queue For Next Login", "Queue",
-    0 },
-  { "ErrorReporting", "errorReport:send", "Send Automatically", "Send", 0 },
-
-  { "CompileAsManaged", "", "No Common Language RunTime Support", "false", 0 },
-  { "CompileAsManaged", "clr", "Common Language RunTime Support", "true", 0 },
-  { "CompileAsManaged", "clr:pure",
-    "Pure MSIL Common Language RunTime Support", "Pure", 0 },
-  { "CompileAsManaged", "clr:safe",
-    "Safe MSIL Common Language RunTime Support", "Safe", 0 },
-  { "CompileAsManaged", "clr:oldSyntax",
-    "Common Language RunTime Support, Old Syntax", "OldSyntax", 0 },
-
-  // Bool Properties
-  { "CompileAsWinRT", "ZW", "", "true", 0 },
-  { "WinRTNoStdLib", "ZW:nostdlib", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-  { "TreatWarningAsError", "WX-", "", "false", 0 },
-  { "TreatWarningAsError", "WX", "", "true", 0 },
-  { "SDLCheck", "sdl-", "", "false", 0 },
-  { "SDLCheck", "sdl", "", "true", 0 },
-  { "IntrinsicFunctions", "Oi", "", "true", 0 },
-  { "OmitFramePointers", "Oy-", "", "false", 0 },
-  { "OmitFramePointers", "Oy", "", "true", 0 },
-  { "EnableFiberSafeOptimizations", "GT", "", "true", 0 },
-  { "WholeProgramOptimization", "GL", "", "true", 0 },
-  { "UndefineAllPreprocessorDefinitions", "u", "", "true", 0 },
-  { "IgnoreStandardIncludePath", "X", "", "true", 0 },
-  { "PreprocessToFile", "P", "", "true", 0 },
-  { "PreprocessSuppressLineNumbers", "EP", "", "true", 0 },
-  { "PreprocessKeepComments", "C", "", "true", 0 },
-  { "StringPooling", "GF-", "", "false", 0 },
-  { "StringPooling", "GF", "", "true", 0 },
-  { "MinimalRebuild", "Gm-", "", "false", 0 },
-  { "MinimalRebuild", "Gm", "", "true", 0 },
-  { "SmallerTypeCheck", "RTCc", "", "true", 0 },
-  { "FunctionLevelLinking", "Gy-", "", "false", 0 },
-  { "FunctionLevelLinking", "Gy", "", "true", 0 },
-  { "EnableParallelCodeGeneration", "Qpar-", "", "false", 0 },
-  { "EnableParallelCodeGeneration", "Qpar", "", "true", 0 },
-  { "FloatingPointExceptions", "fp:except-", "", "false", 0 },
-  { "FloatingPointExceptions", "fp:except", "", "true", 0 },
-  { "CreateHotpatchableImage", "hotpatch", "", "true", 0 },
-  { "DisableLanguageExtensions", "Za", "", "true", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t", "", "true", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope-", "", "false", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope", "", "true", 0 },
-  { "RuntimeTypeInfo", "GR-", "", "false", 0 },
-  { "RuntimeTypeInfo", "GR", "", "true", 0 },
-  { "OpenMPSupport", "openmp-", "", "false", 0 },
-  { "OpenMPSupport", "openmp", "", "true", 0 },
-  { "ExpandAttributedSource", "Fx", "", "true", 0 },
-  { "UseUnicodeForAssemblerListing", "FAu", "", "true", 0 },
-  { "ShowIncludes", "showIncludes", "", "true", 0 },
-  { "EnablePREfast", "analyze-", "", "false", 0 },
-  { "EnablePREfast", "analyze", "", "true", 0 },
-  { "UseFullPaths", "FC", "", "true", 0 },
-  { "OmitDefaultLibName", "Zl", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "MultiProcessorCompilation", "MP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "ProcessorNumber", "MP", "Multi-processor Compilation", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "GenerateXMLDocumentationFiles", "doc", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "BrowseInformation", "FR", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "BrowseInformationFile", "FR", "Enable Browse Information", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalIncludeDirectories", "I", "Additional Include Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalUsingDirectories", "AI", "Additional #using Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PreprocessorDefinitions", "D ", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "UndefinePreprocessorDefinitions", "U",
-    "Undefine Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DisableSpecificWarnings", "wd", "Disable Specific Warnings", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedIncludeFiles", "FI", "Forced Include File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedUsingFiles", "FU", "Forced #using File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PREfastLog", "analyze:log", "Code Analysis Log", "",
-    cmVS7FlagTable::UserFollowing },
-  { "PREfastAdditionalPlugins", "analyze:plugin",
-    "Additional Code Analysis Native plugins", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "TreatSpecificWarningsAsErrors", "we", "Treat Specific Warnings As Errors",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "PreprocessOutputPath", "Fi", "Preprocess Output Path", "",
-    cmVS7FlagTable::UserValue },
-  { "PrecompiledHeaderFile", "Yc", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderFile", "Yu", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderOutputFile", "Fp", "Precompiled Header Output File", "",
-    cmVS7FlagTable::UserValue },
-  { "AssemblerListingLocation", "Fa", "ASM List Location", "",
-    cmVS7FlagTable::UserValue },
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDataBaseFileName", "Fd", "Program Database File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [XMLDocumentationFileName] - no command line Switch.
-  // Skip [BrowseInformationFile] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS12CSharpFlagTable.h b/Source/cmVS12CSharpFlagTable.h
deleted file mode 100644
index d407696..0000000
--- a/Source/cmVS12CSharpFlagTable.h
+++ /dev/null
@@ -1,121 +0,0 @@
-static cmVS7FlagTable cmVS12CSharpFlagTable[] = {
-  { "ProjectName", "out:", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "OutputType", "target:exe", "", "Exe", 0 },
-  { "OutputType", "target:winexe", "", "Winexe", 0 },
-  { "OutputType", "target:library", "", "Library", 0 },
-  { "OutputType", "target:module", "", "Module", 0 },
-
-  { "DocumentationFile", "doc", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "Platform", "platform:x86", "", "x86", 0 },
-  { "Platform", "platform:Itanium", "", "Itanium", 0 },
-  { "Platform", "platform:x64", "", "x64", 0 },
-  { "Platform", "platform:arm", "", "arm", 0 },
-  { "Platform", "platform:anycpu32bitpreferred", "", "anycpu32bitpreferred",
-    0 },
-  { "Platform", "platform:anycpu", "", "anycpu", 0 },
-
-  { "References", "reference:", "mit alias", "", 0 },
-  { "References", "reference:", "dateiliste", "", 0 },
-  { "AddModules", "addmodule:", "", "", cmIDEFlagTable::SemicolonAppendable },
-  { "", "link", "", "", 0 },
-
-  { "Win32Resource", "win32res:", "", "", cmIDEFlagTable::UserValueRequired },
-  { "ApplicationIcon", "win32icon:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "ApplicationManifest", "win32manifest:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "NoWin32Manifest", "nowin32manifest", "", "true", 0 },
-
-  { "DefineDebug", "debug", "", "true", cmIDEFlagTable::Continue },
-
-  { "DebugSymbols", "debug", "", "true", 0 },
-  { "DebugSymbols", "debug-", "", "false", 0 },
-  { "DebugSymbols", "debug+", "", "true", 0 },
-
-  { "DebugType", "debug:none", "", "none", 0 },
-  { "DebugType", "debug:full", "", "full", 0 },
-  { "DebugType", "debug:pdbonly", "", "pdbonly", 0 },
-
-  { "Optimize", "optimize", "", "true", 0 },
-  { "Optimize", "optimize-", "", "false", 0 },
-  { "Optimize", "optimize+", "", "true", 0 },
-
-  { "TreatWarningsAsErrors", "warnaserror", "", "true", 0 },
-  { "TreatWarningsAsErrors", "warnaserror-", "", "false", 0 },
-  { "TreatWarningsAsErrors", "warnaserror+", "", "true", 0 },
-
-  { "WarningsAsErrors", "warnaserror", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror-", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror+", "", "", 0 },
-
-  { "WarningLevel", "warn:0", "", "0", 0 },
-  { "WarningLevel", "warn:1", "", "1", 0 },
-  { "WarningLevel", "warn:2", "", "2", 0 },
-  { "WarningLevel", "warn:3", "", "3", 0 },
-  { "WarningLevel", "warn:4", "", "4", 0 },
-  { "DisabledWarnings", "nowarn", "", "", 0 },
-
-  { "CheckForOverflowUnderflow", "checked", "", "true", 0 },
-  { "CheckForOverflowUnderflow", "checked-", "", "false", 0 },
-  { "CheckForOverflowUnderflow", "checked+", "", "true", 0 },
-
-  { "AllowUnsafeBlocks", "unsafe", "", "true", 0 },
-  { "AllowUnsafeBlocks", "unsafe-", "", "false", 0 },
-  { "AllowUnsafeBlocks", "unsafe+", "", "true", 0 },
-
-  { "DefineConstants", "define:", "", "",
-    cmIDEFlagTable::SemicolonAppendable | cmIDEFlagTable::UserValue },
-
-  { "LangVersion", "langversion:ISO-1", "", "ISO-1", 0 },
-  { "LangVersion", "langversion:ISO-2", "", "ISO-2", 0 },
-  { "LangVersion", "langversion:3", "", "3", 0 },
-  { "LangVersion", "langversion:4", "", "4", 0 },
-  { "LangVersion", "langversion:5", "", "5", 0 },
-  { "LangVersion", "langversion:6", "", "6", 0 },
-  { "LangVersion", "langversion:default", "", "default", 0 },
-
-  { "DelaySign", "delaysign", "", "true", 0 },
-  { "DelaySign", "delaysign-", "", "false", 0 },
-  { "DelaySign", "delaysign+", "", "true", 0 },
-
-  { "AssemblyOriginatorKeyFile", "keyfile", "", "", 0 },
-
-  { "KeyContainerName", "keycontainer", "", "", 0 },
-
-  { "NoLogo", "nologo", "", "", 0 },
-
-  { "NoConfig", "noconfig", "", "true", 0 },
-
-  { "BaseAddress", "baseaddress:", "", "", 0 },
-
-  { "CodePage", "codepage", "", "", 0 },
-
-  { "Utf8Output", "utf8output", "", "", 0 },
-
-  { "MainEntryPoint", "main:", "", "", 0 },
-
-  { "GenerateFullPaths", "fullpaths", "", "true", 0 },
-
-  { "FileAlignment", "filealign", "", "", 0 },
-
-  { "PdbFile", "pdb:", "", "", 0 },
-
-  { "NoStandardLib", "nostdlib", "", "true", 0 },
-  { "NoStandardLib", "nostdlib-", "", "false", 0 },
-  { "NoStandardLib", "nostdlib+", "", "true", 0 },
-
-  { "SubsystemVersion", "subsystemversion", "", "", 0 },
-
-  { "AdditionalLibPaths", "lib:", "", "", 0 },
-
-  { "ErrorReport", "errorreport:none", "Do Not Send Report", "none", 0 },
-  { "ErrorReport", "errorreport:prompt", "Prompt Immediately", "prompt", 0 },
-  { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
-  { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
-
-  { "", "", "", "", 0 },
-};
diff --git a/Source/cmVS12LibFlagTable.h b/Source/cmVS12LibFlagTable.h
deleted file mode 100644
index d40eb5c..0000000
--- a/Source/cmVS12LibFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS12LibFlagTable[] = {
-
-  // Enum Properties
-  { "ErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "ErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "ErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "ErrorReporting", "ERRORREPORT:NONE", "No Error Report", "NoErrorReport",
-    0 },
-
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWSCE", "WindowsCE", "WindowsCE", 0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  // Bool Properties
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "TreatLibWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLibWarningAsErrors", "WX", "", "true", 0 },
-  { "Verbose", "VERBOSE", "", "true", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ExportNamedFunctions", "EXPORT:", "Export Named Functions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "RemoveObjects", "REMOVE:", "Remove Objects", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue },
-  { "DisplayLibrary", "LIST:", "Display Library to standard output", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS12LinkFlagTable.h b/Source/cmVS12LinkFlagTable.h
deleted file mode 100644
index 7656e51..0000000
--- a/Source/cmVS12LinkFlagTable.h
+++ /dev/null
@@ -1,272 +0,0 @@
-static cmVS7FlagTable cmVS12LinkFlagTable[] = {
-
-  // Enum Properties
-  { "ShowProgress", "", "Not Set", "NotSet", 0 },
-  { "ShowProgress", "VERBOSE", "Display all progress messages", "LinkVerbose",
-    0 },
-  { "ShowProgress", "VERBOSE:Lib", "For Libraries Searched", "LinkVerboseLib",
-    0 },
-  { "ShowProgress", "VERBOSE:ICF",
-    "About COMDAT folding during optimized linking", "LinkVerboseICF", 0 },
-  { "ShowProgress", "VERBOSE:REF",
-    "About data removed during optimized linking", "LinkVerboseREF", 0 },
-  { "ShowProgress", "VERBOSE:SAFESEH", "About Modules incompatible with SEH",
-    "LinkVerboseSAFESEH", 0 },
-  { "ShowProgress", "VERBOSE:CLR",
-    "About linker activity related to managed code", "LinkVerboseCLR", 0 },
-
-  { "ForceFileOutput", "FORCE", "Enabled", "Enabled", 0 },
-  { "ForceFileOutput", "FORCE:MULTIPLE", "Multiply Defined Symbol Only",
-    "MultiplyDefinedSymbolOnly", 0 },
-  { "ForceFileOutput", "FORCE:UNRESOLVED", "Undefined Symbol Only",
-    "UndefinedSymbolOnly", 0 },
-
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN", "Enabled", "Enabled", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:5", "X86 Image Only",
-    "X86Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:6", "X64 Image Only",
-    "X64Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
-    "ItaniumImage", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
-  { "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
-    "HighestAvailable", 0 },
-  { "UACExecutionLevel", "level='requireAdministrator'",
-    "requireAdministrator", "RequireAdministrator", 0 },
-
-  { "SubSystem", "", "Not Set", "NotSet", 0 },
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  { "Driver", "", "Not Set", "NotSet", 0 },
-  { "Driver", "Driver", "Driver", "Driver", 0 },
-  { "Driver", "DRIVER:UPONLY", "UP Only", "UpOnly", 0 },
-  { "Driver", "DRIVER:WDM", "WDM", "WDM", 0 },
-
-  { "LinkTimeCodeGeneration", "", "Default", "Default", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "Use Link Time Code Generation",
-    "UseLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGInstrument",
-    "Profile Guided Optimization - Instrument", "PGInstrument", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGOptimize",
-    "Profile Guided Optimization - Optimization", "PGOptimization", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGUpdate",
-    "Profile Guided Optimization - Update", "PGUpdate", 0 },
-
-  { "GenerateWindowsMetadata", "WINMD", "Yes", "true", 0 },
-  { "GenerateWindowsMetadata", "WINMD:NO", "No", "false", 0 },
-
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "TargetMachine", "", "Not Set", "NotSet", 0 },
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", "MTA threading attribute",
-    "MTAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", "STA threading attribute",
-    "STAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE",
-    "Default threading attribute", "DefaultThreadingAttribute", 0 },
-
-  { "CLRImageType", "CLRIMAGETYPE:IJW", "Force IJW image", "ForceIJWImage",
-    0 },
-  { "CLRImageType", "CLRIMAGETYPE:PURE", "Force Pure IL Image",
-    "ForcePureILImage", 0 },
-  { "CLRImageType", "CLRIMAGETYPE:SAFE", "Force Safe IL Image",
-    "ForceSafeILImage", 0 },
-  { "CLRImageType", "", "Default image type", "Default", 0 },
-
-  { "SignHash", "CLRSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "LinkErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:NONE", "No Error Report",
-    "NoErrorReport", 0 },
-
-  { "CLRSupportLastError", "CLRSupportLastError", "Enabled", "Enabled", 0 },
-  { "CLRSupportLastError", "CLRSupportLastError:NO", "Disabled", "Disabled",
-    0 },
-  { "CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", "System Dlls Only",
-    "SystemDlls", 0 },
-
-  // Bool Properties
-  { "LinkIncremental", "INCREMENTAL:NO", "", "false", 0 },
-  { "LinkIncremental", "INCREMENTAL", "", "true", 0 },
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "LinkStatus", "LTCG:NOSTATUS", "", "false", 0 },
-  { "LinkStatus", "LTCG:STATUS", "", "true", 0 },
-  { "PreventDllBinding", "ALLOWBIND:NO", "", "false", 0 },
-  { "PreventDllBinding", "ALLOWBIND", "", "true", 0 },
-  { "TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLinkerWarningAsErrors", "WX", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
-  { "GenerateManifest", "MANIFEST", "", "true", 0 },
-  { "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACUIAccess", "uiAccess='false'", "", "false", 0 },
-  { "UACUIAccess", "uiAccess='true'", "", "true", 0 },
-
-  { "ManifestEmbed", "manifest:embed", "", "true", 0 },
-  { "GenerateDebugInformation", "DEBUG", "", "true",
-    cmVS7FlagTable::CaseInsensitive },
-  { "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0 },
-  { "TerminalServerAware", "TSAWARE:NO", "", "false", 0 },
-  { "TerminalServerAware", "TSAWARE", "", "true", 0 },
-  { "SwapRunFromCD", "SWAPRUN:CD", "", "true", 0 },
-  { "SwapRunFromNET", "SWAPRUN:NET", "", "true", 0 },
-  { "OptimizeReferences", "OPT:NOREF", "", "false", 0 },
-  { "OptimizeReferences", "OPT:REF", "", "true", 0 },
-  { "EnableCOMDATFolding", "OPT:NOICF", "", "false", 0 },
-  { "EnableCOMDATFolding", "OPT:ICF", "", "true", 0 },
-  { "IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0 },
-  { "AppContainer", "APPCONTAINER", "", "true", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN:NO", "", "false", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN", "", "true", 0 },
-  { "NoEntryPoint", "NOENTRY", "", "true", 0 },
-  { "SetChecksum", "RELEASE", "", "true", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0 },
-  { "FixedBaseAddress", "FIXED:NO", "", "false", 0 },
-  { "FixedBaseAddress", "FIXED", "", "true", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT", "", "true", 0 },
-  { "TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0 },
-  { "SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0 },
-  { "SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0 },
-  { "Profile", "PROFILE", "", "true", 0 },
-  { "LinkDelaySign", "DELAYSIGN:NO", "", "false", 0 },
-  { "LinkDelaySign", "DELAYSIGN", "", "true", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0 },
-  { "DetectOneDefinitionRule", "ODR", "", "true", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0 },
-  { "LinkDLL", "DLL", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "EnableUAC", "MANIFESTUAC:", "", "",
-    cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
-  { "GenerateMapFile", "MAP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "MapFileName", "MAP:", "Generate Map File", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AddModuleNamesToAssembly", "ASSEMBLYMODULE:", "Add Module to Assembly",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "EmbedManagedResourceFile",
-    "ASSEMBLYRESOURCE:", "Embed Managed Resource File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DelayLoadDLLs", "DELAYLOAD:", "Delay Loaded Dlls", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", "Assembly Link Resource",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalManifestDependencies",
-    "MANIFESTDEPENDENCY:", "Additional Manifest Dependencies", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ManifestInput", "manifestinput:", "Manifest Input", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "Version", "VERSION:", "Version", "", cmVS7FlagTable::UserValue },
-  { "SpecifySectionAttributes", "SECTION:", "Specify Section Attributes", "",
-    cmVS7FlagTable::UserValue },
-  { "MSDOSStubFileName", "STUB:", "MS-DOS Stub File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File", "",
-    cmVS7FlagTable::UserValue },
-  { "ManifestFile", "ManifestFile:", "Manifest File", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDatabaseFile", "PDB:", "Generate Program Database File", "",
-    cmVS7FlagTable::UserValue },
-  { "StripPrivateSymbols", "PDBSTRIPPED:", "Strip Private Symbols", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MapFileName] - no command line Switch.
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "HeapReserveSize", "HEAP:", "Heap Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [HeapCommitSize] - no command line Switch.
-  { "StackReserveSize", "STACK:", "Stack Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [StackCommitSize] - no command line Switch.
-  { "FunctionOrder", "ORDER:@", "Function Order", "",
-    cmVS7FlagTable::UserValue },
-  { "ProfileGuidedDatabase", "PGD:", "Profile Guided Database", "",
-    cmVS7FlagTable::UserValue },
-  { "MidlCommandFile", "MIDL:@", "MIDL Commands", "",
-    cmVS7FlagTable::UserValue },
-  { "MergedIDLBaseFileName", "IDLOUT:", "Merged IDL Base File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "TypeLibraryFile", "TLBOUT:", "Type Library", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataFile", "WINMDFILE:", "Windows Metadata File", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataLinkKeyFile", "WINMDKEYFILE:", "Windows Metadata Key File",
-    "", cmVS7FlagTable::UserValue },
-  { "WindowsMetadataKeyContainer", "WINMDKEYCONTAINER:",
-    "Windows Metadata Key Container", "", cmVS7FlagTable::UserValue },
-  { "EntryPointSymbol", "ENTRY:", "Entry Point", "",
-    cmVS7FlagTable::UserValue },
-  { "BaseAddress", "BASE:", "Base Address", "", cmVS7FlagTable::UserValue },
-  { "ImportLibrary", "IMPLIB:", "Import Library", "",
-    cmVS7FlagTable::UserValue },
-  { "MergeSections", "MERGE:", "Merge Sections", "",
-    cmVS7FlagTable::UserValue },
-  { "LinkKeyFile", "KEYFILE:", "Key File", "", cmVS7FlagTable::UserValue },
-  { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS12MASMFlagTable.h b/Source/cmVS12MASMFlagTable.h
deleted file mode 100644
index 6c3ff90..0000000
--- a/Source/cmVS12MASMFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS12MASMFlagTable[] = {
-
-  // Enum Properties
-  { "PreserveIdentifierCase", "", "Default", "0", 0 },
-  { "PreserveIdentifierCase", "Cp", "Preserves Identifier Case (/Cp)", "1",
-    0 },
-  { "PreserveIdentifierCase", "Cu",
-    "Maps all identifiers to upper case. (/Cu)", "2", 0 },
-  { "PreserveIdentifierCase", "Cx",
-    "Preserves case in public and extern symbols. (/Cx)", "3", 0 },
-
-  { "WarningLevel", "W0", "Warning Level 0 (/W0)", "0", 0 },
-  { "WarningLevel", "W1", "Warning Level 1 (/W1)", "1", 0 },
-  { "WarningLevel", "W2", "Warning Level 2 (/W2)", "2", 0 },
-  { "WarningLevel", "W3", "Warning Level 3 (/W3)", "3", 0 },
-
-  { "PackAlignmentBoundary", "", "Default", "0", 0 },
-  { "PackAlignmentBoundary", "Zp1", "One Byte Boundary (/Zp1)", "1", 0 },
-  { "PackAlignmentBoundary", "Zp2", "Two Byte Boundary (/Zp2)", "2", 0 },
-  { "PackAlignmentBoundary", "Zp4", "Four Byte Boundary (/Zp4)", "3", 0 },
-  { "PackAlignmentBoundary", "Zp8", "Eight Byte Boundary (/Zp8)", "4", 0 },
-  { "PackAlignmentBoundary", "Zp16", "Sixteen Byte Boundary (/Zp16)", "5", 0 },
-
-  { "CallingConvention", "", "Default", "0", 0 },
-  { "CallingConvention", "Gd", "Use C-style Calling Convention (/Gd)", "1",
-    0 },
-  { "CallingConvention", "Gz", "Use stdcall Calling Convention (/Gz)", "2",
-    0 },
-  { "CallingConvention", "Gc", "Use Pascal Calling Convention (/Gc)", "3", 0 },
-
-  { "ErrorReporting", "errorReport:prompt",
-    "Prompt to send report immediately (/errorReport:prompt)", "0", 0 },
-  { "ErrorReporting", "errorReport:queue",
-    "Prompt to send report at the next logon (/errorReport:queue)", "1", 0 },
-  { "ErrorReporting", "errorReport:send",
-    "Automatically send report (/errorReport:send)", "2", 0 },
-  { "ErrorReporting", "errorReport:none",
-    "Do not send report (/errorReport:none)", "3", 0 },
-
-  // Bool Properties
-  { "NoLogo", "nologo", "", "true", 0 },
-  { "GeneratePreprocessedSourceListing", "EP", "", "true", 0 },
-  { "ListAllAvailableInformation", "Sa", "", "true", 0 },
-  { "UseSafeExceptionHandlers", "safeseh", "", "true", 0 },
-  { "AddFirstPassListing", "Sf", "", "true", 0 },
-  { "EnableAssemblyGeneratedCodeListing", "Sg", "", "true", 0 },
-  { "DisableSymbolTable", "Sn", "", "true", 0 },
-  { "EnableFalseConditionalsInListing", "Sx", "", "true", 0 },
-  { "TreatWarningsAsErrors", "WX", "", "true", 0 },
-  { "MakeAllSymbolsPublic", "Zf", "", "true", 0 },
-  { "GenerateDebugInformation", "Zi", "", "true", 0 },
-  { "EnableMASM51Compatibility", "Zm", "", "true", 0 },
-  { "PerformSyntaxCheckOnly", "Zs", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  { "PreprocessorDefinitions", "D", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IncludePaths", "I", "Include Paths", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "BrowseFile", "FR", "Generate Browse Information File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-
-  // String Properties
-  // Skip [Inputs] - no command line Switch.
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "AssembledCodeListingFile", "Fl", "Assembled Code Listing File", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [CommandLineTemplate] - no command line Switch.
-  // Skip [ExecutionDescription] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS12RCFlagTable.h b/Source/cmVS12RCFlagTable.h
deleted file mode 100644
index 5931431..0000000
--- a/Source/cmVS12RCFlagTable.h
+++ /dev/null
@@ -1,7 +0,0 @@
-static cmVS7FlagTable cmVS12RCFlagTable[] = {
-  // Bool Properties
-  { "NullTerminateStrings", "n", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS140CLFlagTable.h b/Source/cmVS140CLFlagTable.h
deleted file mode 100644
index 25ac14b..0000000
--- a/Source/cmVS140CLFlagTable.h
+++ /dev/null
@@ -1,240 +0,0 @@
-static cmVS7FlagTable cmVS140CLFlagTable[] = {
-
-  // Enum Properties
-  { "DebugInformationFormat", "", "None", "None", 0 },
-  { "DebugInformationFormat", "Z7", "C7 compatible", "OldStyle", 0 },
-  { "DebugInformationFormat", "Zi", "Program Database", "ProgramDatabase", 0 },
-  { "DebugInformationFormat", "ZI", "Program Database for Edit And Continue",
-    "EditAndContinue", 0 },
-
-  { "WarningLevel", "W0", "Turn Off All Warnings", "TurnOffAllWarnings", 0 },
-  { "WarningLevel", "W1", "Level1", "Level1", 0 },
-  { "WarningLevel", "W2", "Level2", "Level2", 0 },
-  { "WarningLevel", "W3", "Level3", "Level3", 0 },
-  { "WarningLevel", "W4", "Level4", "Level4", 0 },
-  { "WarningLevel", "Wall", "EnableAllWarnings", "EnableAllWarnings", 0 },
-
-  { "Optimization", "", "Custom", "Custom", 0 },
-  { "Optimization", "Od", "Disabled", "Disabled", 0 },
-  { "Optimization", "O1", "Minimize Size", "MinSpace", 0 },
-  { "Optimization", "O2", "Maximize Speed", "MaxSpeed", 0 },
-  { "Optimization", "Ox", "Full Optimization", "Full", 0 },
-
-  { "InlineFunctionExpansion", "", "Default", "Default", 0 },
-  { "InlineFunctionExpansion", "Ob0", "Disabled", "Disabled", 0 },
-  { "InlineFunctionExpansion", "Ob1", "Only __inline", "OnlyExplicitInline",
-    0 },
-  { "InlineFunctionExpansion", "Ob2", "Any Suitable", "AnySuitable", 0 },
-
-  { "FavorSizeOrSpeed", "Os", "Favor small code", "Size", 0 },
-  { "FavorSizeOrSpeed", "Ot", "Favor fast code", "Speed", 0 },
-  { "FavorSizeOrSpeed", "", "Neither", "Neither", 0 },
-
-  { "ExceptionHandling", "EHa", "Yes with SEH Exceptions", "Async", 0 },
-  { "ExceptionHandling", "EHsc", "Yes", "Sync", 0 },
-  { "ExceptionHandling", "EHs", "Yes with Extern C functions", "SyncCThrow",
-    0 },
-  { "ExceptionHandling", "", "No", "false", 0 },
-
-  { "BasicRuntimeChecks", "RTCs", "Stack Frames", "StackFrameRuntimeCheck",
-    0 },
-  { "BasicRuntimeChecks", "RTCu", "Uninitialized variables",
-    "UninitializedLocalUsageCheck", 0 },
-  { "BasicRuntimeChecks", "RTC1", "Both (/RTC1, equiv. to /RTCsu)",
-    "EnableFastChecks", 0 },
-  { "BasicRuntimeChecks", "", "Default", "Default", 0 },
-
-  { "RuntimeLibrary", "MT", "Multi-threaded", "MultiThreaded", 0 },
-  { "RuntimeLibrary", "MTd", "Multi-threaded Debug", "MultiThreadedDebug", 0 },
-  { "RuntimeLibrary", "MD", "Multi-threaded DLL", "MultiThreadedDLL", 0 },
-  { "RuntimeLibrary", "MDd", "Multi-threaded Debug DLL",
-    "MultiThreadedDebugDLL", 0 },
-
-  { "StructMemberAlignment", "Zp1", "1 Byte", "1Byte", 0 },
-  { "StructMemberAlignment", "Zp2", "2 Bytes", "2Bytes", 0 },
-  { "StructMemberAlignment", "Zp4", "4 Byte", "4Bytes", 0 },
-  { "StructMemberAlignment", "Zp8", "8 Bytes", "8Bytes", 0 },
-  { "StructMemberAlignment", "Zp16", "16 Bytes", "16Bytes", 0 },
-  { "StructMemberAlignment", "", "Default", "Default", 0 },
-
-  { "BufferSecurityCheck", "GS-", "Disable Security Check", "false", 0 },
-  { "BufferSecurityCheck", "GS", "Enable Security Check", "true", 0 },
-
-  { "EnableEnhancedInstructionSet", "arch:SSE", "Streaming SIMD Extensions",
-    "StreamingSIMDExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:SSE2", "Streaming SIMD Extensions 2",
-    "StreamingSIMDExtensions2", 0 },
-  { "EnableEnhancedInstructionSet", "arch:AVX", "Advanced Vector Extensions",
-    "AdvancedVectorExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:AVX2",
-    "Advanced Vector Extensions 2", "AdvancedVectorExtensions2", 0 },
-  { "EnableEnhancedInstructionSet", "arch:IA32", "No Enhanced Instructions",
-    "NoExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "", "Not Set", "NotSet", 0 },
-
-  { "FloatingPointModel", "fp:precise", "Precise", "Precise", 0 },
-  { "FloatingPointModel", "fp:strict", "Strict", "Strict", 0 },
-  { "FloatingPointModel", "fp:fast", "Fast", "Fast", 0 },
-
-  { "PrecompiledHeader", "Yc", "Create", "Create",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Yu", "Use", "Use",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Y-", "Not Using Precompiled Headers", "NotUsing",
-    0 },
-
-  { "AssemblerOutput", "", "No Listing", "NoListing", 0 },
-  { "AssemblerOutput", "FA", "Assembly-Only Listing", "AssemblyCode", 0 },
-  { "AssemblerOutput", "FAc", "Assembly With Machine Code",
-    "AssemblyAndMachineCode", 0 },
-  { "AssemblerOutput", "FAs", "Assembly With Source Code",
-    "AssemblyAndSourceCode", 0 },
-  { "AssemblerOutput", "FAcs", "Assembly, Machine Code and Source", "All", 0 },
-
-  { "CallingConvention", "Gd", "__cdecl", "Cdecl", 0 },
-  { "CallingConvention", "Gr", "__fastcall", "FastCall", 0 },
-  { "CallingConvention", "Gz", "__stdcall", "StdCall", 0 },
-  { "CallingConvention", "Gv", "__vectorcall", "VectorCall", 0 },
-
-  { "CompileAs", "", "Default", "Default", 0 },
-  { "CompileAs", "TC", "Compile as C Code", "CompileAsC", 0 },
-  { "CompileAs", "TP", "Compile as C++ Code", "CompileAsCpp", 0 },
-
-  { "ErrorReporting", "errorReport:none", "Do Not Send Report", "None", 0 },
-  { "ErrorReporting", "errorReport:prompt", "Prompt Immediately", "Prompt",
-    0 },
-  { "ErrorReporting", "errorReport:queue", "Queue For Next Login", "Queue",
-    0 },
-  { "ErrorReporting", "errorReport:send", "Send Automatically", "Send", 0 },
-
-  { "CompileAsManaged", "", "No Common Language RunTime Support", "false", 0 },
-  { "CompileAsManaged", "clr", "Common Language RunTime Support", "true", 0 },
-  { "CompileAsManaged", "clr:pure",
-    "Pure MSIL Common Language RunTime Support", "Pure", 0 },
-  { "CompileAsManaged", "clr:safe",
-    "Safe MSIL Common Language RunTime Support", "Safe", 0 },
-  { "CompileAsManaged", "clr:oldSyntax",
-    "Common Language RunTime Support, Old Syntax", "OldSyntax", 0 },
-
-  { "CppLanguageStandard", "", "Default", "Default", 0 },
-  { "CppLanguageStandard", "std=c++98", "C++03", "c++98", 0 },
-  { "CppLanguageStandard", "std=c++11", "C++11", "c++11", 0 },
-  { "CppLanguageStandard", "std=c++1y", "C++14", "c++1y", 0 },
-  { "CppLanguageStandard", "std=c++14", "C++14", "c++1y", 0 },
-  { "CppLanguageStandard", "std=gnu++98", "C++03 (GNU Dialect)", "gnu++98",
-    0 },
-  { "CppLanguageStandard", "std=gnu++11", "C++11 (GNU Dialect)", "gnu++11",
-    0 },
-  { "CppLanguageStandard", "std=gnu++1y", "C++14 (GNU Dialect)", "gnu++1y",
-    0 },
-  { "CppLanguageStandard", "std=gnu++14", "C++14 (GNU Dialect)", "gnu++1y",
-    0 },
-
-  // Bool Properties
-  { "CompileAsWinRT", "ZW", "", "true", 0 },
-  { "WinRTNoStdLib", "ZW:nostdlib", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-  { "TreatWarningAsError", "WX-", "", "false", 0 },
-  { "TreatWarningAsError", "WX", "", "true", 0 },
-  { "SDLCheck", "sdl-", "", "false", 0 },
-  { "SDLCheck", "sdl", "", "true", 0 },
-  { "IntrinsicFunctions", "Oi", "", "true", 0 },
-  { "OmitFramePointers", "Oy-", "", "false", 0 },
-  { "OmitFramePointers", "Oy", "", "true", 0 },
-  { "EnableFiberSafeOptimizations", "GT", "", "true", 0 },
-  { "WholeProgramOptimization", "GL", "", "true", 0 },
-  { "UndefineAllPreprocessorDefinitions", "u", "", "true", 0 },
-  { "IgnoreStandardIncludePath", "X", "", "true", 0 },
-  { "PreprocessToFile", "P", "", "true", 0 },
-  { "PreprocessSuppressLineNumbers", "EP", "", "true", 0 },
-  { "PreprocessKeepComments", "C", "", "true", 0 },
-  { "StringPooling", "GF-", "", "false", 0 },
-  { "StringPooling", "GF", "", "true", 0 },
-  { "MinimalRebuild", "Gm-", "", "false", 0 },
-  { "MinimalRebuild", "Gm", "", "true", 0 },
-  { "SmallerTypeCheck", "RTCc", "", "true", 0 },
-  { "FunctionLevelLinking", "Gy-", "", "false", 0 },
-  { "FunctionLevelLinking", "Gy", "", "true", 0 },
-  { "EnableParallelCodeGeneration", "Qpar-", "", "false", 0 },
-  { "EnableParallelCodeGeneration", "Qpar", "", "true", 0 },
-  { "FloatingPointExceptions", "fp:except-", "", "false", 0 },
-  { "FloatingPointExceptions", "fp:except", "", "true", 0 },
-  { "CreateHotpatchableImage", "hotpatch", "", "true", 0 },
-  { "DisableLanguageExtensions", "Za", "", "true", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t", "", "true", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope-", "", "false", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope", "", "true", 0 },
-  { "RemoveUnreferencedCodeData", "Zc:inline-", "", "false", 0 },
-  { "RemoveUnreferencedCodeData", "Zc:inline", "", "true", 0 },
-  { "RuntimeTypeInfo", "GR-", "", "false", 0 },
-  { "RuntimeTypeInfo", "GR", "", "true", 0 },
-  { "OpenMPSupport", "openmp-", "", "false", 0 },
-  { "OpenMPSupport", "openmp", "", "true", 0 },
-  { "ExpandAttributedSource", "Fx", "", "true", 0 },
-  { "UseUnicodeForAssemblerListing", "FAu", "", "true", 0 },
-  { "ShowIncludes", "showIncludes", "", "true", 0 },
-  { "EnablePREfast", "analyze-", "", "false", 0 },
-  { "EnablePREfast", "analyze", "", "true", 0 },
-  { "UseFullPaths", "FC", "", "true", 0 },
-  { "OmitDefaultLibName", "Zl", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "MultiProcessorCompilation", "MP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "ProcessorNumber", "MP", "Multi-processor Compilation", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "GenerateXMLDocumentationFiles", "doc", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "BrowseInformation", "FR", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "BrowseInformationFile", "FR", "Enable Browse Information", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalIncludeDirectories", "I", "Additional Include Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalUsingDirectories", "AI", "Additional #using Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PreprocessorDefinitions", "D ", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "UndefinePreprocessorDefinitions", "U",
-    "Undefine Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DisableSpecificWarnings", "wd", "Disable Specific Warnings", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedIncludeFiles", "FI", "Forced Include File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedUsingFiles", "FU", "Forced #using File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PREfastLog", "analyze:log", "Code Analysis Log", "",
-    cmVS7FlagTable::UserFollowing },
-  { "PREfastAdditionalPlugins", "analyze:plugin",
-    "Additional Code Analysis Native plugins", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "TreatSpecificWarningsAsErrors", "we", "Treat Specific Warnings As Errors",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "PreprocessOutputPath", "Fi", "Preprocess Output Path", "",
-    cmVS7FlagTable::UserValue },
-  { "PrecompiledHeaderFile", "Yc", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderFile", "Yu", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderOutputFile", "Fp", "Precompiled Header Output File", "",
-    cmVS7FlagTable::UserValue },
-  { "AssemblerListingLocation", "Fa", "ASM List Location", "",
-    cmVS7FlagTable::UserValue },
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDataBaseFileName", "Fd", "Program Database File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [XMLDocumentationFileName] - no command line Switch.
-  // Skip [BrowseInformationFile] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS140CSharpFlagTable.h b/Source/cmVS140CSharpFlagTable.h
deleted file mode 100644
index c651d67..0000000
--- a/Source/cmVS140CSharpFlagTable.h
+++ /dev/null
@@ -1,121 +0,0 @@
-static cmVS7FlagTable cmVS140CSharpFlagTable[] = {
-  { "ProjectName", "out:", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "OutputType", "target:exe", "", "Exe", 0 },
-  { "OutputType", "target:winexe", "", "Winexe", 0 },
-  { "OutputType", "target:library", "", "Library", 0 },
-  { "OutputType", "target:module", "", "Module", 0 },
-
-  { "DocumentationFile", "doc", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "Platform", "platform:x86", "", "x86", 0 },
-  { "Platform", "platform:Itanium", "", "Itanium", 0 },
-  { "Platform", "platform:x64", "", "x64", 0 },
-  { "Platform", "platform:arm", "", "arm", 0 },
-  { "Platform", "platform:anycpu32bitpreferred", "", "anycpu32bitpreferred",
-    0 },
-  { "Platform", "platform:anycpu", "", "anycpu", 0 },
-
-  { "References", "reference:", "mit alias", "", 0 },
-  { "References", "reference:", "dateiliste", "", 0 },
-  { "AddModules", "addmodule:", "", "", cmIDEFlagTable::SemicolonAppendable },
-  { "", "link", "", "", 0 },
-
-  { "Win32Resource", "win32res:", "", "", cmIDEFlagTable::UserValueRequired },
-  { "ApplicationIcon", "win32icon:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "ApplicationManifest", "win32manifest:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "NoWin32Manifest", "nowin32manifest", "", "true", 0 },
-
-  { "DefineDebug", "debug", "", "true", cmIDEFlagTable::Continue },
-
-  { "DebugSymbols", "debug", "", "true", 0 },
-  { "DebugSymbols", "debug-", "", "false", 0 },
-  { "DebugSymbols", "debug+", "", "true", 0 },
-
-  { "DebugType", "debug:none", "", "none", 0 },
-  { "DebugType", "debug:full", "", "full", 0 },
-  { "DebugType", "debug:pdbonly", "", "pdbonly", 0 },
-
-  { "Optimize", "optimize", "", "true", 0 },
-  { "Optimize", "optimize-", "", "false", 0 },
-  { "Optimize", "optimize+", "", "true", 0 },
-
-  { "TreatWarningsAsErrors", "warnaserror", "", "true", 0 },
-  { "TreatWarningsAsErrors", "warnaserror-", "", "false", 0 },
-  { "TreatWarningsAsErrors", "warnaserror+", "", "true", 0 },
-
-  { "WarningsAsErrors", "warnaserror", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror-", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror+", "", "", 0 },
-
-  { "WarningLevel", "warn:0", "", "0", 0 },
-  { "WarningLevel", "warn:1", "", "1", 0 },
-  { "WarningLevel", "warn:2", "", "2", 0 },
-  { "WarningLevel", "warn:3", "", "3", 0 },
-  { "WarningLevel", "warn:4", "", "4", 0 },
-  { "DisabledWarnings", "nowarn", "", "", 0 },
-
-  { "CheckForOverflowUnderflow", "checked", "", "true", 0 },
-  { "CheckForOverflowUnderflow", "checked-", "", "false", 0 },
-  { "CheckForOverflowUnderflow", "checked+", "", "true", 0 },
-
-  { "AllowUnsafeBlocks", "unsafe", "", "true", 0 },
-  { "AllowUnsafeBlocks", "unsafe-", "", "false", 0 },
-  { "AllowUnsafeBlocks", "unsafe+", "", "true", 0 },
-
-  { "DefineConstants", "define:", "", "",
-    cmIDEFlagTable::SemicolonAppendable | cmIDEFlagTable::UserValue },
-
-  { "LangVersion", "langversion:ISO-1", "", "ISO-1", 0 },
-  { "LangVersion", "langversion:ISO-2", "", "ISO-2", 0 },
-  { "LangVersion", "langversion:3", "", "3", 0 },
-  { "LangVersion", "langversion:4", "", "4", 0 },
-  { "LangVersion", "langversion:5", "", "5", 0 },
-  { "LangVersion", "langversion:6", "", "6", 0 },
-  { "LangVersion", "langversion:default", "", "default", 0 },
-
-  { "DelaySign", "delaysign", "", "true", 0 },
-  { "DelaySign", "delaysign-", "", "false", 0 },
-  { "DelaySign", "delaysign+", "", "true", 0 },
-
-  { "AssemblyOriginatorKeyFile", "keyfile", "", "", 0 },
-
-  { "KeyContainerName", "keycontainer", "", "", 0 },
-
-  { "NoLogo", "nologo", "", "", 0 },
-
-  { "NoConfig", "noconfig", "", "true", 0 },
-
-  { "BaseAddress", "baseaddress:", "", "", 0 },
-
-  { "CodePage", "codepage", "", "", 0 },
-
-  { "Utf8Output", "utf8output", "", "", 0 },
-
-  { "MainEntryPoint", "main:", "", "", 0 },
-
-  { "GenerateFullPaths", "fullpaths", "", "true", 0 },
-
-  { "FileAlignment", "filealign", "", "", 0 },
-
-  { "PdbFile", "pdb:", "", "", 0 },
-
-  { "NoStandardLib", "nostdlib", "", "true", 0 },
-  { "NoStandardLib", "nostdlib-", "", "false", 0 },
-  { "NoStandardLib", "nostdlib+", "", "true", 0 },
-
-  { "SubsystemVersion", "subsystemversion", "", "", 0 },
-
-  { "AdditionalLibPaths", "lib:", "", "", 0 },
-
-  { "ErrorReport", "errorreport:none", "Do Not Send Report", "none", 0 },
-  { "ErrorReport", "errorreport:prompt", "Prompt Immediately", "prompt", 0 },
-  { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
-  { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
-
-  { "", "", "", "", 0 },
-};
diff --git a/Source/cmVS140LinkFlagTable.h b/Source/cmVS140LinkFlagTable.h
deleted file mode 100644
index bf1ee7a..0000000
--- a/Source/cmVS140LinkFlagTable.h
+++ /dev/null
@@ -1,285 +0,0 @@
-static cmVS7FlagTable cmVS140LinkFlagTable[] = {
-
-  // Enum Properties
-  { "ShowProgress", "", "Not Set", "NotSet", 0 },
-  { "ShowProgress", "VERBOSE", "Display all progress messages", "LinkVerbose",
-    0 },
-  { "ShowProgress", "VERBOSE:Lib", "For Libraries Searched", "LinkVerboseLib",
-    0 },
-  { "ShowProgress", "VERBOSE:ICF",
-    "About COMDAT folding during optimized linking", "LinkVerboseICF", 0 },
-  { "ShowProgress", "VERBOSE:REF",
-    "About data removed during optimized linking", "LinkVerboseREF", 0 },
-  { "ShowProgress", "VERBOSE:SAFESEH", "About Modules incompatible with SEH",
-    "LinkVerboseSAFESEH", 0 },
-  { "ShowProgress", "VERBOSE:CLR",
-    "About linker activity related to managed code", "LinkVerboseCLR", 0 },
-
-  { "ForceFileOutput", "FORCE", "Enabled", "Enabled", 0 },
-  { "ForceFileOutput", "FORCE:MULTIPLE", "Multiply Defined Symbol Only",
-    "MultiplyDefinedSymbolOnly", 0 },
-  { "ForceFileOutput", "FORCE:UNRESOLVED", "Undefined Symbol Only",
-    "UndefinedSymbolOnly", 0 },
-
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN", "Enabled", "Enabled", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:5", "X86 Image Only",
-    "X86Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:6", "X64 Image Only",
-    "X64Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
-    "ItaniumImage", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
-  { "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
-    "HighestAvailable", 0 },
-  { "UACExecutionLevel", "level='requireAdministrator'",
-    "requireAdministrator", "RequireAdministrator", 0 },
-
-  { "GenerateDebugInformation", "DEBUG:FASTLINK",
-    "Optimize for faster linking", "DebugFastLink",
-    cmVS7FlagTable::CaseInsensitive },
-  { "GenerateDebugInformation", "DEBUG:FULL", "Optimize for debugging", "true",
-    cmVS7FlagTable::CaseInsensitive },
-  { "GenerateDebugInformation", "DEBUG:NONE",
-    "Produces no debugging information", "false",
-    cmVS7FlagTable::CaseInsensitive },
-  { "GenerateDebugInformation", "DEBUG", "Optimize for debugging", "true",
-    cmVS7FlagTable::CaseInsensitive },
-
-  { "SubSystem", "", "Not Set", "NotSet", 0 },
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  { "Driver", "", "Not Set", "NotSet", 0 },
-  { "Driver", "Driver", "Driver", "Driver", 0 },
-  { "Driver", "DRIVER:UPONLY", "UP Only", "UpOnly", 0 },
-  { "Driver", "DRIVER:WDM", "WDM", "WDM", 0 },
-
-  { "LinkTimeCodeGeneration", "", "Default", "Default", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:incremental",
-    "Use Fast Link Time Code Generation", "UseFastLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "Use Link Time Code Generation",
-    "UseLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGInstrument",
-    "Profile Guided Optimization - Instrument", "PGInstrument", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGOptimize",
-    "Profile Guided Optimization - Optimization", "PGOptimization", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGUpdate",
-    "Profile Guided Optimization - Update", "PGUpdate", 0 },
-
-  { "GenerateWindowsMetadata", "WINMD", "Yes", "true", 0 },
-  { "GenerateWindowsMetadata", "WINMD:NO", "No", "false", 0 },
-
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "TargetMachine", "", "Not Set", "NotSet", 0 },
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", "MTA threading attribute",
-    "MTAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", "STA threading attribute",
-    "STAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE",
-    "Default threading attribute", "DefaultThreadingAttribute", 0 },
-
-  { "CLRImageType", "CLRIMAGETYPE:IJW", "Force IJW image", "ForceIJWImage",
-    0 },
-  { "CLRImageType", "CLRIMAGETYPE:PURE", "Force Pure IL Image",
-    "ForcePureILImage", 0 },
-  { "CLRImageType", "CLRIMAGETYPE:SAFE", "Force Safe IL Image",
-    "ForceSafeILImage", 0 },
-  { "CLRImageType", "", "Default image type", "Default", 0 },
-
-  { "SignHash", "CLRSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "LinkErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:NONE", "No Error Report",
-    "NoErrorReport", 0 },
-
-  { "CLRSupportLastError", "CLRSupportLastError", "Enabled", "Enabled", 0 },
-  { "CLRSupportLastError", "CLRSupportLastError:NO", "Disabled", "Disabled",
-    0 },
-  { "CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", "System Dlls Only",
-    "SystemDlls", 0 },
-
-  // Bool Properties
-  { "LinkIncremental", "INCREMENTAL:NO", "", "false", 0 },
-  { "LinkIncremental", "INCREMENTAL", "", "true", 0 },
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "LinkStatus", "LTCG:NOSTATUS", "", "false", 0 },
-  { "LinkStatus", "LTCG:STATUS", "", "true", 0 },
-  { "PreventDllBinding", "ALLOWBIND:NO", "", "false", 0 },
-  { "PreventDllBinding", "ALLOWBIND", "", "true", 0 },
-  { "TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLinkerWarningAsErrors", "WX", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
-  { "GenerateManifest", "MANIFEST", "", "true", 0 },
-  { "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACUIAccess", "uiAccess='false'", "", "false", 0 },
-  { "UACUIAccess", "uiAccess='true'", "", "true", 0 },
-
-  { "ManifestEmbed", "manifest:embed", "", "true", 0 },
-  { "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0 },
-  { "TerminalServerAware", "TSAWARE:NO", "", "false", 0 },
-  { "TerminalServerAware", "TSAWARE", "", "true", 0 },
-  { "SwapRunFromCD", "SWAPRUN:CD", "", "true", 0 },
-  { "SwapRunFromNET", "SWAPRUN:NET", "", "true", 0 },
-  { "OptimizeReferences", "OPT:NOREF", "", "false", 0 },
-  { "OptimizeReferences", "OPT:REF", "", "true", 0 },
-  { "EnableCOMDATFolding", "OPT:NOICF", "", "false", 0 },
-  { "EnableCOMDATFolding", "OPT:ICF", "", "true", 0 },
-  { "IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0 },
-  { "AppContainer", "APPCONTAINER", "", "true", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN:NO", "", "false", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN", "", "true", 0 },
-  { "NoEntryPoint", "NOENTRY", "", "true", 0 },
-  { "SetChecksum", "RELEASE", "", "true", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0 },
-  { "FixedBaseAddress", "FIXED:NO", "", "false", 0 },
-  { "FixedBaseAddress", "FIXED", "", "true", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT", "", "true", 0 },
-  { "TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0 },
-  { "SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0 },
-  { "SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0 },
-  { "Profile", "PROFILE", "", "true", 0 },
-  { "LinkDelaySign", "DELAYSIGN:NO", "", "false", 0 },
-  { "LinkDelaySign", "DELAYSIGN", "", "true", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0 },
-  { "DetectOneDefinitionRule", "ODR", "", "true", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0 },
-  { "LinkDLL", "DLL", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "EnableUAC", "MANIFESTUAC:", "", "",
-    cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
-  { "GenerateMapFile", "MAP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "MapFileName", "MAP:", "Generate Map File", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "Natvis", "NATVIS:", "Natvis files", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AddModuleNamesToAssembly", "ASSEMBLYMODULE:", "Add Module to Assembly",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "EmbedManagedResourceFile",
-    "ASSEMBLYRESOURCE:", "Embed Managed Resource File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DelayLoadDLLs", "DELAYLOAD:", "Delay Loaded Dlls", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", "Assembly Link Resource",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalManifestDependencies",
-    "MANIFESTDEPENDENCY:", "Additional Manifest Dependencies", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ManifestInput", "manifestinput:", "Manifest Input", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "Version", "VERSION:", "Version", "", cmVS7FlagTable::UserValue },
-  { "SpecifySectionAttributes", "SECTION:", "Specify Section Attributes", "",
-    cmVS7FlagTable::UserValue },
-  { "MSDOSStubFileName", "STUB:", "MS-DOS Stub File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File", "",
-    cmVS7FlagTable::UserValue },
-  { "ManifestFile", "ManifestFile:", "Manifest File", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDatabaseFile", "PDB:", "Generate Program Database File", "",
-    cmVS7FlagTable::UserValue },
-  { "StripPrivateSymbols", "PDBSTRIPPED:", "Strip Private Symbols", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MapFileName] - no command line Switch.
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "HeapReserveSize", "HEAP:", "Heap Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [HeapCommitSize] - no command line Switch.
-  { "StackReserveSize", "STACK:", "Stack Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [StackCommitSize] - no command line Switch.
-  { "FunctionOrder", "ORDER:@", "Function Order", "",
-    cmVS7FlagTable::UserValue },
-  { "ProfileGuidedDatabase", "PGD:", "Profile Guided Database", "",
-    cmVS7FlagTable::UserValue },
-  { "MidlCommandFile", "MIDL:@", "MIDL Commands", "",
-    cmVS7FlagTable::UserValue },
-  { "MergedIDLBaseFileName", "IDLOUT:", "Merged IDL Base File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "TypeLibraryFile", "TLBOUT:", "Type Library", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataFile", "WINMDFILE:", "Windows Metadata File", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataLinkKeyFile", "WINMDKEYFILE:", "Windows Metadata Key File",
-    "", cmVS7FlagTable::UserValue },
-  { "WindowsMetadataKeyContainer", "WINMDKEYCONTAINER:",
-    "Windows Metadata Key Container", "", cmVS7FlagTable::UserValue },
-  { "EntryPointSymbol", "ENTRY:", "Entry Point", "",
-    cmVS7FlagTable::UserValue },
-  { "BaseAddress", "BASE:", "Base Address", "", cmVS7FlagTable::UserValue },
-  { "ImportLibrary", "IMPLIB:", "Import Library", "",
-    cmVS7FlagTable::UserValue },
-  { "MergeSections", "MERGE:", "Merge Sections", "",
-    cmVS7FlagTable::UserValue },
-  { "LinkKeyFile", "KEYFILE:", "Key File", "", cmVS7FlagTable::UserValue },
-  { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS141CLFlagTable.h b/Source/cmVS141CLFlagTable.h
deleted file mode 100644
index 1f564f8..0000000
--- a/Source/cmVS141CLFlagTable.h
+++ /dev/null
@@ -1,260 +0,0 @@
-static cmVS7FlagTable cmVS141CLFlagTable[] = {
-
-  // Enum Properties
-  { "DiagnosticsFormat", "diagnostics:classic", "Classic", "Classic", 0 },
-  { "DiagnosticsFormat", "diagnostics:column", "Column", "Column", 0 },
-  { "DiagnosticsFormat", "diagnostics:caret", "Caret", "Caret", 0 },
-
-  { "DebugInformationFormat", "", "None", "None", 0 },
-  { "DebugInformationFormat", "Z7", "C7 compatible", "OldStyle", 0 },
-  { "DebugInformationFormat", "Zi", "Program Database", "ProgramDatabase", 0 },
-  { "DebugInformationFormat", "ZI", "Program Database for Edit And Continue",
-    "EditAndContinue", 0 },
-
-  { "WarningLevel", "W0", "Turn Off All Warnings", "TurnOffAllWarnings", 0 },
-  { "WarningLevel", "W1", "Level1", "Level1", 0 },
-  { "WarningLevel", "W2", "Level2", "Level2", 0 },
-  { "WarningLevel", "W3", "Level3", "Level3", 0 },
-  { "WarningLevel", "W4", "Level4", "Level4", 0 },
-  { "WarningLevel", "Wall", "EnableAllWarnings", "EnableAllWarnings", 0 },
-
-  { "Optimization", "", "Custom", "Custom", 0 },
-  { "Optimization", "Od", "Disabled", "Disabled", 0 },
-  { "Optimization", "O1", "Minimize Size", "MinSpace", 0 },
-  { "Optimization", "O2", "Maximize Speed", "MaxSpeed", 0 },
-  { "Optimization", "Ox", "Full Optimization", "Full", 0 },
-
-  { "InlineFunctionExpansion", "", "Default", "Default", 0 },
-  { "InlineFunctionExpansion", "Ob0", "Disabled", "Disabled", 0 },
-  { "InlineFunctionExpansion", "Ob1", "Only __inline", "OnlyExplicitInline",
-    0 },
-  { "InlineFunctionExpansion", "Ob2", "Any Suitable", "AnySuitable", 0 },
-
-  { "FavorSizeOrSpeed", "Os", "Favor small code", "Size", 0 },
-  { "FavorSizeOrSpeed", "Ot", "Favor fast code", "Speed", 0 },
-  { "FavorSizeOrSpeed", "", "Neither", "Neither", 0 },
-
-  { "ExceptionHandling", "EHa", "Yes with SEH Exceptions", "Async", 0 },
-  { "ExceptionHandling", "EHsc", "Yes", "Sync", 0 },
-  { "ExceptionHandling", "EHs", "Yes with Extern C functions", "SyncCThrow",
-    0 },
-  { "ExceptionHandling", "", "No", "false", 0 },
-
-  { "BasicRuntimeChecks", "RTCs", "Stack Frames", "StackFrameRuntimeCheck",
-    0 },
-  { "BasicRuntimeChecks", "RTCu", "Uninitialized variables",
-    "UninitializedLocalUsageCheck", 0 },
-  { "BasicRuntimeChecks", "RTC1", "Both (/RTC1, equiv. to /RTCsu)",
-    "EnableFastChecks", 0 },
-  { "BasicRuntimeChecks", "", "Default", "Default", 0 },
-
-  { "RuntimeLibrary", "MT", "Multi-threaded", "MultiThreaded", 0 },
-  { "RuntimeLibrary", "MTd", "Multi-threaded Debug", "MultiThreadedDebug", 0 },
-  { "RuntimeLibrary", "MD", "Multi-threaded DLL", "MultiThreadedDLL", 0 },
-  { "RuntimeLibrary", "MDd", "Multi-threaded Debug DLL",
-    "MultiThreadedDebugDLL", 0 },
-
-  { "StructMemberAlignment", "Zp1", "1 Byte", "1Byte", 0 },
-  { "StructMemberAlignment", "Zp2", "2 Bytes", "2Bytes", 0 },
-  { "StructMemberAlignment", "Zp4", "4 Byte", "4Bytes", 0 },
-  { "StructMemberAlignment", "Zp8", "8 Bytes", "8Bytes", 0 },
-  { "StructMemberAlignment", "Zp16", "16 Bytes", "16Bytes", 0 },
-  { "StructMemberAlignment", "", "Default", "Default", 0 },
-
-  { "BufferSecurityCheck", "GS-", "Disable Security Check", "false", 0 },
-  { "BufferSecurityCheck", "GS", "Enable Security Check", "true", 0 },
-
-  { "ControlFlowGuard", "guard:cf", "Yes", "Guard", 0 },
-  { "ControlFlowGuard", "", "No", "false", 0 },
-
-  { "EnableEnhancedInstructionSet", "arch:SSE", "Streaming SIMD Extensions",
-    "StreamingSIMDExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:SSE2", "Streaming SIMD Extensions 2",
-    "StreamingSIMDExtensions2", 0 },
-  { "EnableEnhancedInstructionSet", "arch:AVX", "Advanced Vector Extensions",
-    "AdvancedVectorExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "arch:AVX2",
-    "Advanced Vector Extensions 2", "AdvancedVectorExtensions2", 0 },
-  { "EnableEnhancedInstructionSet", "arch:IA32", "No Enhanced Instructions",
-    "NoExtensions", 0 },
-  { "EnableEnhancedInstructionSet", "", "Not Set", "NotSet", 0 },
-
-  { "FloatingPointModel", "fp:precise", "Precise", "Precise", 0 },
-  { "FloatingPointModel", "fp:strict", "Strict", "Strict", 0 },
-  { "FloatingPointModel", "fp:fast", "Fast", "Fast", 0 },
-
-  { "SpectreMitigation", "Qspectre", "Spectre mitigations", "Spectre", 0 },
-
-  { "LanguageStandard", "std:c++17", "ISO C++17 Standard", "stdcpp17", 0 },
-  { "LanguageStandard", "std:c++14", "ISO C++14 Standard", "stdcpp14", 0 },
-  { "LanguageStandard", "std:c++latest", "ISO C++ Latest Draft Standard",
-    "stdcpplatest", 0 },
-
-  { "PrecompiledHeader", "Yc", "Create", "Create",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Yu", "Use", "Use",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "PrecompiledHeader", "Y-", "Not Using Precompiled Headers", "NotUsing",
-    0 },
-
-  { "AssemblerOutput", "", "No Listing", "NoListing", 0 },
-  { "AssemblerOutput", "FA", "Assembly-Only Listing", "AssemblyCode", 0 },
-  { "AssemblerOutput", "FAc", "Assembly With Machine Code",
-    "AssemblyAndMachineCode", 0 },
-  { "AssemblerOutput", "FAs", "Assembly With Source Code",
-    "AssemblyAndSourceCode", 0 },
-  { "AssemblerOutput", "FAcs", "Assembly, Machine Code and Source", "All", 0 },
-
-  { "CallingConvention", "Gd", "__cdecl", "Cdecl", 0 },
-  { "CallingConvention", "Gr", "__fastcall", "FastCall", 0 },
-  { "CallingConvention", "Gz", "__stdcall", "StdCall", 0 },
-  { "CallingConvention", "Gv", "__vectorcall", "VectorCall", 0 },
-
-  { "CompileAs", "", "Default", "Default", 0 },
-  { "CompileAs", "TC", "Compile as C Code", "CompileAsC", 0 },
-  { "CompileAs", "TP", "Compile as C++ Code", "CompileAsCpp", 0 },
-
-  { "ErrorReporting", "errorReport:none", "Do Not Send Report", "None", 0 },
-  { "ErrorReporting", "errorReport:prompt", "Prompt Immediately", "Prompt",
-    0 },
-  { "ErrorReporting", "errorReport:queue", "Queue For Next Login", "Queue",
-    0 },
-  { "ErrorReporting", "errorReport:send", "Send Automatically", "Send", 0 },
-
-  { "CompileAsManaged", "", "No Common Language RunTime Support", "false", 0 },
-  { "CompileAsManaged", "clr", "Common Language RunTime Support", "true", 0 },
-  { "CompileAsManaged", "clr:pure",
-    "Pure MSIL Common Language RunTime Support", "Pure", 0 },
-  { "CompileAsManaged", "clr:safe",
-    "Safe MSIL Common Language RunTime Support", "Safe", 0 },
-  { "CompileAsManaged", "clr:oldSyntax",
-    "Common Language RunTime Support, Old Syntax", "OldSyntax", 0 },
-
-  { "CppLanguageStandard", "", "Default", "Default", 0 },
-  { "CppLanguageStandard", "std=c++98", "C++03", "c++98", 0 },
-  { "CppLanguageStandard", "std=c++11", "C++11", "c++11", 0 },
-  { "CppLanguageStandard", "std=c++1y", "C++14", "c++1y", 0 },
-  { "CppLanguageStandard", "std=c++14", "C++14", "c++1y", 0 },
-  { "CppLanguageStandard", "std=gnu++98", "C++03 (GNU Dialect)", "gnu++98",
-    0 },
-  { "CppLanguageStandard", "std=gnu++11", "C++11 (GNU Dialect)", "gnu++11",
-    0 },
-  { "CppLanguageStandard", "std=gnu++1y", "C++14 (GNU Dialect)", "gnu++1y",
-    0 },
-  { "CppLanguageStandard", "std=gnu++14", "C++14 (GNU Dialect)", "gnu++1y",
-    0 },
-
-  // Bool Properties
-  { "CompileAsWinRT", "ZW", "", "true", 0 },
-  { "WinRTNoStdLib", "ZW:nostdlib", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-  { "TreatWarningAsError", "WX-", "", "false", 0 },
-  { "TreatWarningAsError", "WX", "", "true", 0 },
-  { "SDLCheck", "sdl-", "", "false", 0 },
-  { "SDLCheck", "sdl", "", "true", 0 },
-  { "IntrinsicFunctions", "Oi", "", "true", 0 },
-  { "OmitFramePointers", "Oy-", "", "false", 0 },
-  { "OmitFramePointers", "Oy", "", "true", 0 },
-  { "EnableFiberSafeOptimizations", "GT", "", "true", 0 },
-  { "WholeProgramOptimization", "GL", "", "true", 0 },
-  { "UndefineAllPreprocessorDefinitions", "u", "", "true", 0 },
-  { "IgnoreStandardIncludePath", "X", "", "true", 0 },
-  { "PreprocessToFile", "P", "", "true", 0 },
-  { "PreprocessSuppressLineNumbers", "EP", "", "true", 0 },
-  { "PreprocessKeepComments", "C", "", "true", 0 },
-  { "StringPooling", "GF-", "", "false", 0 },
-  { "StringPooling", "GF", "", "true", 0 },
-  { "MinimalRebuild", "Gm-", "", "false", 0 },
-  { "MinimalRebuild", "Gm", "", "true", 0 },
-  { "SmallerTypeCheck", "RTCc", "", "true", 0 },
-  { "FunctionLevelLinking", "Gy-", "", "false", 0 },
-  { "FunctionLevelLinking", "Gy", "", "true", 0 },
-  { "EnableParallelCodeGeneration", "Qpar-", "", "false", 0 },
-  { "EnableParallelCodeGeneration", "Qpar", "", "true", 0 },
-  { "FloatingPointExceptions", "fp:except-", "", "false", 0 },
-  { "FloatingPointExceptions", "fp:except", "", "true", 0 },
-  { "CreateHotpatchableImage", "hotpatch", "", "true", 0 },
-  { "DisableLanguageExtensions", "Za", "", "true", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t-", "", "false", 0 },
-  { "TreatWChar_tAsBuiltInType", "Zc:wchar_t", "", "true", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope-", "", "false", 0 },
-  { "ForceConformanceInForLoopScope", "Zc:forScope", "", "true", 0 },
-  { "RemoveUnreferencedCodeData", "Zc:inline-", "", "false", 0 },
-  { "RemoveUnreferencedCodeData", "Zc:inline", "", "true", 0 },
-  { "EnforceTypeConversionRules", "Zc:rvalueCast-", "", "false", 0 },
-  { "EnforceTypeConversionRules", "Zc:rvalueCast", "", "true", 0 },
-  { "RuntimeTypeInfo", "GR-", "", "false", 0 },
-  { "RuntimeTypeInfo", "GR", "", "true", 0 },
-  { "OpenMPSupport", "openmp-", "", "false", 0 },
-  { "OpenMPSupport", "openmp", "", "true", 0 },
-  { "ExpandAttributedSource", "Fx", "", "true", 0 },
-  { "UseUnicodeForAssemblerListing", "FAu", "", "true", 0 },
-  { "ShowIncludes", "showIncludes", "", "true", 0 },
-  { "EnablePREfast", "analyze-", "", "false", 0 },
-  { "EnablePREfast", "analyze", "", "true", 0 },
-  { "UseFullPaths", "FC", "", "true", 0 },
-  { "OmitDefaultLibName", "Zl", "", "true", 0 },
-  { "SupportJustMyCode", "JMC-", "", "false", 0 },
-  { "SupportJustMyCode", "JMC", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "MultiProcessorCompilation", "MP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "ProcessorNumber", "MP", "Multi-processor Compilation", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "GenerateXMLDocumentationFiles", "doc", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "XMLDocumentationFileName", "doc", "Generate XML Documentation Files", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "BrowseInformation", "FR", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "BrowseInformationFile", "FR", "Enable Browse Information", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalIncludeDirectories", "I", "Additional Include Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalUsingDirectories", "AI", "Additional #using Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PreprocessorDefinitions", "D ", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "UndefinePreprocessorDefinitions", "U",
-    "Undefine Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DisableSpecificWarnings", "wd", "Disable Specific Warnings", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedIncludeFiles", "FI", "Forced Include File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForcedUsingFiles", "FU", "Forced #using File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "PREfastLog", "analyze:log", "Code Analysis Log", "",
-    cmVS7FlagTable::UserFollowing },
-  { "PREfastAdditionalPlugins", "analyze:plugin",
-    "Additional Code Analysis Native plugins", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "TreatSpecificWarningsAsErrors", "we", "Treat Specific Warnings As Errors",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "WarningVersion", "Wv:", "Warning Version", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "PreprocessOutputPath", "Fi", "Preprocess Output Path", "",
-    cmVS7FlagTable::UserValue },
-  { "PrecompiledHeaderFile", "Yc", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderFile", "Yu", "Precompiled Header Name", "",
-    cmVS7FlagTable::UserValueRequired },
-  { "PrecompiledHeaderOutputFile", "Fp", "Precompiled Header Output File", "",
-    cmVS7FlagTable::UserValue },
-  { "AssemblerListingLocation", "Fa", "ASM List Location", "",
-    cmVS7FlagTable::UserValue },
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDataBaseFileName", "Fd", "Program Database File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [XMLDocumentationFileName] - no command line Switch.
-  // Skip [BrowseInformationFile] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS141CSharpFlagTable.h b/Source/cmVS141CSharpFlagTable.h
deleted file mode 100644
index 7688dba..0000000
--- a/Source/cmVS141CSharpFlagTable.h
+++ /dev/null
@@ -1,126 +0,0 @@
-static cmVS7FlagTable cmVS141CSharpFlagTable[] = {
-  { "ProjectName", "out:", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "OutputType", "target:exe", "", "Exe", 0 },
-  { "OutputType", "target:winexe", "", "Winexe", 0 },
-  { "OutputType", "target:library", "", "Library", 0 },
-  { "OutputType", "target:module", "", "Module", 0 },
-
-  { "DocumentationFile", "doc", "", "", cmIDEFlagTable::UserValueRequired },
-
-  { "Platform", "platform:x86", "", "x86", 0 },
-  { "Platform", "platform:Itanium", "", "Itanium", 0 },
-  { "Platform", "platform:x64", "", "x64", 0 },
-  { "Platform", "platform:arm", "", "arm", 0 },
-  { "Platform", "platform:anycpu32bitpreferred", "", "anycpu32bitpreferred",
-    0 },
-  { "Platform", "platform:anycpu", "", "anycpu", 0 },
-
-  { "References", "reference:", "mit alias", "", 0 },
-  { "References", "reference:", "dateiliste", "", 0 },
-  { "AddModules", "addmodule:", "", "", cmIDEFlagTable::SemicolonAppendable },
-  { "", "link", "", "", 0 },
-
-  { "Win32Resource", "win32res:", "", "", cmIDEFlagTable::UserValueRequired },
-  { "ApplicationIcon", "win32icon:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "ApplicationManifest", "win32manifest:", "", "",
-    cmIDEFlagTable::UserValueRequired },
-
-  { "NoWin32Manifest", "nowin32manifest", "", "true", 0 },
-
-  { "DefineDebug", "debug", "", "true", cmIDEFlagTable::Continue },
-
-  { "DebugSymbols", "debug", "", "true", 0 },
-  { "DebugSymbols", "debug-", "", "false", 0 },
-  { "DebugSymbols", "debug+", "", "true", 0 },
-
-  { "DebugType", "debug:none", "", "none", 0 },
-  { "DebugType", "debug:full", "", "full", 0 },
-  { "DebugType", "debug:pdbonly", "", "pdbonly", 0 },
-
-  { "Optimize", "optimize", "", "true", 0 },
-  { "Optimize", "optimize-", "", "false", 0 },
-  { "Optimize", "optimize+", "", "true", 0 },
-
-  { "TreatWarningsAsErrors", "warnaserror", "", "true", 0 },
-  { "TreatWarningsAsErrors", "warnaserror-", "", "false", 0 },
-  { "TreatWarningsAsErrors", "warnaserror+", "", "true", 0 },
-
-  { "WarningsAsErrors", "warnaserror", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror-", "", "", 0 },
-  { "WarningsAsErrors", "warnaserror+", "", "", 0 },
-
-  { "WarningLevel", "warn:0", "", "0", 0 },
-  { "WarningLevel", "warn:1", "", "1", 0 },
-  { "WarningLevel", "warn:2", "", "2", 0 },
-  { "WarningLevel", "warn:3", "", "3", 0 },
-  { "WarningLevel", "warn:4", "", "4", 0 },
-  { "DisabledWarnings", "nowarn", "", "", 0 },
-
-  { "CheckForOverflowUnderflow", "checked", "", "true", 0 },
-  { "CheckForOverflowUnderflow", "checked-", "", "false", 0 },
-  { "CheckForOverflowUnderflow", "checked+", "", "true", 0 },
-
-  { "AllowUnsafeBlocks", "unsafe", "", "true", 0 },
-  { "AllowUnsafeBlocks", "unsafe-", "", "false", 0 },
-  { "AllowUnsafeBlocks", "unsafe+", "", "true", 0 },
-
-  { "DefineConstants", "define:", "", "",
-    cmIDEFlagTable::SemicolonAppendable | cmIDEFlagTable::UserValue },
-
-  { "LangVersion", "langversion:ISO-1", "", "ISO-1", 0 },
-  { "LangVersion", "langversion:ISO-2", "", "ISO-2", 0 },
-  { "LangVersion", "langversion:3", "", "3", 0 },
-  { "LangVersion", "langversion:4", "", "4", 0 },
-  { "LangVersion", "langversion:5", "", "5", 0 },
-  { "LangVersion", "langversion:6", "", "6", 0 },
-  { "LangVersion", "langversion:7.0", "", "7.0", 0 },
-  { "LangVersion", "langversion:7.1", "", "7.1", 0 },
-  { "LangVersion", "langversion:7.2", "", "7.2", 0 },
-  { "LangVersion", "langversion:7.3", "", "7.3", 0 },
-  { "LangVersion", "langversion:default", "", "default", 0 },
-  { "LangVersion", "langversion:latest", "", "latest", 0 },
-
-  { "DelaySign", "delaysign", "", "true", 0 },
-  { "DelaySign", "delaysign-", "", "false", 0 },
-  { "DelaySign", "delaysign+", "", "true", 0 },
-
-  { "AssemblyOriginatorKeyFile", "keyfile", "", "", 0 },
-
-  { "KeyContainerName", "keycontainer", "", "", 0 },
-
-  { "NoLogo", "nologo", "", "", 0 },
-
-  { "NoConfig", "noconfig", "", "true", 0 },
-
-  { "BaseAddress", "baseaddress:", "", "", 0 },
-
-  { "CodePage", "codepage", "", "", 0 },
-
-  { "Utf8Output", "utf8output", "", "", 0 },
-
-  { "MainEntryPoint", "main:", "", "", 0 },
-
-  { "GenerateFullPaths", "fullpaths", "", "true", 0 },
-
-  { "FileAlignment", "filealign", "", "", 0 },
-
-  { "PdbFile", "pdb:", "", "", 0 },
-
-  { "NoStandardLib", "nostdlib", "", "true", 0 },
-  { "NoStandardLib", "nostdlib-", "", "false", 0 },
-  { "NoStandardLib", "nostdlib+", "", "true", 0 },
-
-  { "SubsystemVersion", "subsystemversion", "", "", 0 },
-
-  { "AdditionalLibPaths", "lib:", "", "", 0 },
-
-  { "ErrorReport", "errorreport:none", "Do Not Send Report", "none", 0 },
-  { "ErrorReport", "errorreport:prompt", "Prompt Immediately", "prompt", 0 },
-  { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
-  { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
-
-  { "", "", "", "", 0 },
-};
diff --git a/Source/cmVS141LinkFlagTable.h b/Source/cmVS141LinkFlagTable.h
deleted file mode 100644
index 9ee3334..0000000
--- a/Source/cmVS141LinkFlagTable.h
+++ /dev/null
@@ -1,287 +0,0 @@
-static cmVS7FlagTable cmVS141LinkFlagTable[] = {
-
-  // Enum Properties
-  { "ShowProgress", "", "Not Set", "NotSet", 0 },
-  { "ShowProgress", "VERBOSE", "Display all progress messages", "LinkVerbose",
-    0 },
-  { "ShowProgress", "VERBOSE:Lib", "For Libraries Searched", "LinkVerboseLib",
-    0 },
-  { "ShowProgress", "VERBOSE:ICF",
-    "About COMDAT folding during optimized linking", "LinkVerboseICF", 0 },
-  { "ShowProgress", "VERBOSE:REF",
-    "About data removed during optimized linking", "LinkVerboseREF", 0 },
-  { "ShowProgress", "VERBOSE:SAFESEH", "About Modules incompatible with SEH",
-    "LinkVerboseSAFESEH", 0 },
-  { "ShowProgress", "VERBOSE:CLR",
-    "About linker activity related to managed code", "LinkVerboseCLR", 0 },
-
-  { "ForceFileOutput", "FORCE", "Enabled", "Enabled", 0 },
-  { "ForceFileOutput", "FORCE:MULTIPLE", "Multiply Defined Symbol Only",
-    "MultiplyDefinedSymbolOnly", 0 },
-  { "ForceFileOutput", "FORCE:UNRESOLVED", "Undefined Symbol Only",
-    "UndefinedSymbolOnly", 0 },
-
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN", "Enabled", "Enabled", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:5", "X86 Image Only",
-    "X86Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:6", "X64 Image Only",
-    "X64Image", 0 },
-  { "CreateHotPatchableImage", "FUNCTIONPADMIN:16", "Itanium Image Only",
-    "ItaniumImage", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACExecutionLevel", "level='asInvoker'", "asInvoker", "AsInvoker", 0 },
-  { "UACExecutionLevel", "level='highestAvailable'", "highestAvailable",
-    "HighestAvailable", 0 },
-  { "UACExecutionLevel", "level='requireAdministrator'",
-    "requireAdministrator", "RequireAdministrator", 0 },
-
-  { "GenerateDebugInformation", "DEBUG:FASTLINK",
-    "Generate Debug Information optimized for faster links", "DebugFastLink",
-    cmVS7FlagTable::CaseInsensitive },
-  { "GenerateDebugInformation", "DEBUG:FULL",
-    "Generate Debug Information optimized for sharing and publishing",
-    "DebugFull", cmVS7FlagTable::CaseInsensitive },
-  { "GenerateDebugInformation", "DEBUG:NONE",
-    "Produces no debugging information", "false",
-    cmVS7FlagTable::CaseInsensitive },
-  { "GenerateDebugInformation", "DEBUG", "Generate Debug Information", "true",
-    cmVS7FlagTable::CaseInsensitive },
-
-  { "SubSystem", "", "Not Set", "NotSet", 0 },
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  { "Driver", "", "Not Set", "NotSet", 0 },
-  { "Driver", "Driver", "Driver", "Driver", 0 },
-  { "Driver", "DRIVER:UPONLY", "UP Only", "UpOnly", 0 },
-  { "Driver", "DRIVER:WDM", "WDM", "WDM", 0 },
-
-  { "LinkTimeCodeGeneration", "", "Default", "Default", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:incremental",
-    "Use Fast Link Time Code Generation", "UseFastLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "Use Link Time Code Generation",
-    "UseLinkTimeCodeGeneration", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGInstrument",
-    "Profile Guided Optimization - Instrument", "PGInstrument", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGOptimize",
-    "Profile Guided Optimization - Optimization", "PGOptimization", 0 },
-  { "LinkTimeCodeGeneration", "LTCG:PGUpdate",
-    "Profile Guided Optimization - Update", "PGUpdate", 0 },
-
-  { "GenerateWindowsMetadata", "WINMD", "Yes", "true", 0 },
-  { "GenerateWindowsMetadata", "WINMD:NO", "No", "false", 0 },
-
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "WindowsMetadataSignHash", "WINMDSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "TargetMachine", "", "Not Set", "NotSet", 0 },
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:ARM64", "MachineARM64", "MachineARM64", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:MTA", "MTA threading attribute",
-    "MTAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:STA", "STA threading attribute",
-    "STAThreadingAttribute", 0 },
-  { "CLRThreadAttribute", "CLRTHREADATTRIBUTE:NONE",
-    "Default threading attribute", "DefaultThreadingAttribute", 0 },
-
-  { "CLRImageType", "CLRIMAGETYPE:IJW", "Force IJW image", "ForceIJWImage",
-    0 },
-  { "CLRImageType", "CLRIMAGETYPE:PURE", "Force Pure IL Image",
-    "ForcePureILImage", 0 },
-  { "CLRImageType", "CLRIMAGETYPE:SAFE", "Force Safe IL Image",
-    "ForceSafeILImage", 0 },
-  { "CLRImageType", "", "Default image type", "Default", 0 },
-
-  { "SignHash", "CLRSIGNHASH:SHA1", "SHA1", "SHA1", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA256", "SHA256", "SHA256", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA384", "SHA384", "SHA384", 0 },
-  { "SignHash", "CLRSIGNHASH:SHA512", "SHA512", "SHA512", 0 },
-
-  { "LinkErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "LinkErrorReporting", "ERRORREPORT:NONE", "No Error Report",
-    "NoErrorReport", 0 },
-
-  { "CLRSupportLastError", "CLRSupportLastError", "Enabled", "Enabled", 0 },
-  { "CLRSupportLastError", "CLRSupportLastError:NO", "Disabled", "Disabled",
-    0 },
-  { "CLRSupportLastError", "CLRSupportLastError:SYSTEMDLL", "System Dlls Only",
-    "SystemDlls", 0 },
-
-  // Bool Properties
-  { "LinkIncremental", "INCREMENTAL:NO", "", "false", 0 },
-  { "LinkIncremental", "INCREMENTAL", "", "true", 0 },
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "LinkStatus", "LTCG:NOSTATUS", "", "false", 0 },
-  { "LinkStatus", "LTCG:STATUS", "", "true", 0 },
-  { "PreventDllBinding", "ALLOWBIND:NO", "", "false", 0 },
-  { "PreventDllBinding", "ALLOWBIND", "", "true", 0 },
-  { "TreatLinkerWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLinkerWarningAsErrors", "WX", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "GenerateManifest", "MANIFEST:NO", "", "false", 0 },
-  { "GenerateManifest", "MANIFEST", "", "true", 0 },
-  { "AllowIsolation", "ALLOWISOLATION:NO", "", "false", 0 },
-
-  // correct flags for uac should be /MANIFESTUAC, but some projects already
-  // use this bug to access uac field, so keep these for compatibility
-  { "UACUIAccess", "uiAccess='false'", "", "false", 0 },
-  { "UACUIAccess", "uiAccess='true'", "", "true", 0 },
-
-  { "ManifestEmbed", "manifest:embed", "", "true", 0 },
-  { "MapExports", "MAPINFO:EXPORTS", "", "true", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG:DISABLE", "", "false", 0 },
-  { "AssemblyDebug", "ASSEMBLYDEBUG", "", "true", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE:NO", "", "false", 0 },
-  { "LargeAddressAware", "LARGEADDRESSAWARE", "", "true", 0 },
-  { "TerminalServerAware", "TSAWARE:NO", "", "false", 0 },
-  { "TerminalServerAware", "TSAWARE", "", "true", 0 },
-  { "SwapRunFromCD", "SWAPRUN:CD", "", "true", 0 },
-  { "SwapRunFromNET", "SWAPRUN:NET", "", "true", 0 },
-  { "OptimizeReferences", "OPT:NOREF", "", "false", 0 },
-  { "OptimizeReferences", "OPT:REF", "", "true", 0 },
-  { "EnableCOMDATFolding", "OPT:NOICF", "", "false", 0 },
-  { "EnableCOMDATFolding", "OPT:ICF", "", "true", 0 },
-  { "IgnoreEmbeddedIDL", "IGNOREIDL", "", "true", 0 },
-  { "AppContainer", "APPCONTAINER", "", "true", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN:NO", "", "false", 0 },
-  { "WindowsMetadataLinkDelaySign", "WINMDDELAYSIGN", "", "true", 0 },
-  { "NoEntryPoint", "NOENTRY", "", "true", 0 },
-  { "SetChecksum", "RELEASE", "", "true", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE:NO", "", "false", 0 },
-  { "RandomizedBaseAddress", "DYNAMICBASE", "", "true", 0 },
-  { "FixedBaseAddress", "FIXED:NO", "", "false", 0 },
-  { "FixedBaseAddress", "FIXED", "", "true", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT:NO", "", "false", 0 },
-  { "DataExecutionPrevention", "NXCOMPAT", "", "true", 0 },
-  { "TurnOffAssemblyGeneration", "NOASSEMBLY", "", "true", 0 },
-  { "SupportUnloadOfDelayLoadedDLL", "DELAY:UNLOAD", "", "true", 0 },
-  { "SupportNobindOfDelayLoadedDLL", "DELAY:NOBIND", "", "true", 0 },
-  { "Profile", "PROFILE", "", "true", 0 },
-  { "LinkDelaySign", "DELAYSIGN:NO", "", "false", 0 },
-  { "LinkDelaySign", "DELAYSIGN", "", "true", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK:NO", "", "false", 0 },
-  { "CLRUnmanagedCodeCheck", "CLRUNMANAGEDCODECHECK", "", "true", 0 },
-  { "DetectOneDefinitionRule", "ODR", "", "true", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH:NO", "", "false", 0 },
-  { "ImageHasSafeExceptionHandlers", "SAFESEH", "", "true", 0 },
-  { "LinkDLL", "DLL", "", "true", 0 },
-
-  // Bool Properties With Argument
-  { "EnableUAC", "MANIFESTUAC:", "", "",
-    cmVS7FlagTable::UserValueRequired | cmVS7FlagTable::SpaceAppendable },
-  { "GenerateMapFile", "MAP", "", "true",
-    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue },
-  { "MapFileName", "MAP:", "Generate Map File", "",
-    cmVS7FlagTable::UserValueRequired },
-
-  // String List Properties
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "Natvis", "NATVIS:", "Natvis files", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AddModuleNamesToAssembly", "ASSEMBLYMODULE:", "Add Module to Assembly",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "EmbedManagedResourceFile",
-    "ASSEMBLYRESOURCE:", "Embed Managed Resource File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "DelayLoadDLLs", "DELAYLOAD:", "Delay Loaded Dlls", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AssemblyLinkResource", "ASSEMBLYLINKRESOURCE:", "Assembly Link Resource",
-    "", cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "AdditionalManifestDependencies",
-    "MANIFESTDEPENDENCY:", "Additional Manifest Dependencies", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ManifestInput", "manifestinput:", "Manifest Input", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "Version", "VERSION:", "Version", "", cmVS7FlagTable::UserValue },
-  { "SpecifySectionAttributes", "SECTION:", "Specify Section Attributes", "",
-    cmVS7FlagTable::UserValue },
-  { "MSDOSStubFileName", "STUB:", "MS-DOS Stub File Name", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File", "",
-    cmVS7FlagTable::UserValue },
-  { "ManifestFile", "ManifestFile:", "Manifest File", "",
-    cmVS7FlagTable::UserValue },
-  { "ProgramDatabaseFile", "PDB:", "Generate Program Database File", "",
-    cmVS7FlagTable::UserValue },
-  { "StripPrivateSymbols", "PDBSTRIPPED:", "Strip Private Symbols", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MapFileName] - no command line Switch.
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "HeapReserveSize", "HEAP:", "Heap Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [HeapCommitSize] - no command line Switch.
-  { "StackReserveSize", "STACK:", "Stack Reserve Size", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [StackCommitSize] - no command line Switch.
-  { "FunctionOrder", "ORDER:@", "Function Order", "",
-    cmVS7FlagTable::UserValue },
-  { "ProfileGuidedDatabase", "PGD:", "Profile Guided Database", "",
-    cmVS7FlagTable::UserValue },
-  { "MidlCommandFile", "MIDL:@", "MIDL Commands", "",
-    cmVS7FlagTable::UserValue },
-  { "MergedIDLBaseFileName", "IDLOUT:", "Merged IDL Base File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "TypeLibraryFile", "TLBOUT:", "Type Library", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataFile", "WINMDFILE:", "Windows Metadata File", "",
-    cmVS7FlagTable::UserValue },
-  { "WindowsMetadataLinkKeyFile", "WINMDKEYFILE:", "Windows Metadata Key File",
-    "", cmVS7FlagTable::UserValue },
-  { "WindowsMetadataKeyContainer", "WINMDKEYCONTAINER:",
-    "Windows Metadata Key Container", "", cmVS7FlagTable::UserValue },
-  { "EntryPointSymbol", "ENTRY:", "Entry Point", "",
-    cmVS7FlagTable::UserValue },
-  { "BaseAddress", "BASE:", "Base Address", "", cmVS7FlagTable::UserValue },
-  { "ImportLibrary", "IMPLIB:", "Import Library", "",
-    cmVS7FlagTable::UserValue },
-  { "MergeSections", "MERGE:", "Merge Sections", "",
-    cmVS7FlagTable::UserValue },
-  { "LinkKeyFile", "KEYFILE:", "Key File", "", cmVS7FlagTable::UserValue },
-  { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS14LibFlagTable.h b/Source/cmVS14LibFlagTable.h
deleted file mode 100644
index 0cac898..0000000
--- a/Source/cmVS14LibFlagTable.h
+++ /dev/null
@@ -1,77 +0,0 @@
-static cmVS7FlagTable cmVS14LibFlagTable[] = {
-
-  // Enum Properties
-  { "ErrorReporting", "ERRORREPORT:PROMPT", "PromptImmediately",
-    "PromptImmediately", 0 },
-  { "ErrorReporting", "ERRORREPORT:QUEUE", "Queue For Next Login",
-    "QueueForNextLogin", 0 },
-  { "ErrorReporting", "ERRORREPORT:SEND", "Send Error Report",
-    "SendErrorReport", 0 },
-  { "ErrorReporting", "ERRORREPORT:NONE", "No Error Report", "NoErrorReport",
-    0 },
-
-  { "TargetMachine", "MACHINE:ARM", "MachineARM", "MachineARM", 0 },
-  { "TargetMachine", "MACHINE:ARM64", "MachineARM64", "MachineARM64", 0 },
-  { "TargetMachine", "MACHINE:EBC", "MachineEBC", "MachineEBC", 0 },
-  { "TargetMachine", "MACHINE:IA64", "MachineIA64", "MachineIA64", 0 },
-  { "TargetMachine", "MACHINE:MIPS", "MachineMIPS", "MachineMIPS", 0 },
-  { "TargetMachine", "MACHINE:MIPS16", "MachineMIPS16", "MachineMIPS16", 0 },
-  { "TargetMachine", "MACHINE:MIPSFPU", "MachineMIPSFPU", "MachineMIPSFPU",
-    0 },
-  { "TargetMachine", "MACHINE:MIPSFPU16", "MachineMIPSFPU16",
-    "MachineMIPSFPU16", 0 },
-  { "TargetMachine", "MACHINE:SH4", "MachineSH4", "MachineSH4", 0 },
-  { "TargetMachine", "MACHINE:THUMB", "MachineTHUMB", "MachineTHUMB", 0 },
-  { "TargetMachine", "MACHINE:X64", "MachineX64", "MachineX64", 0 },
-  { "TargetMachine", "MACHINE:X86", "MachineX86", "MachineX86", 0 },
-
-  { "SubSystem", "SUBSYSTEM:CONSOLE", "Console", "Console", 0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWS", "Windows", "Windows", 0 },
-  { "SubSystem", "SUBSYSTEM:NATIVE", "Native", "Native", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_APPLICATION", "EFI Application",
-    "EFI Application", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
-    "EFI Boot Service Driver", "EFI Boot Service Driver", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_ROM", "EFI ROM", "EFI ROM", 0 },
-  { "SubSystem", "SUBSYSTEM:EFI_RUNTIME_DRIVER", "EFI Runtime", "EFI Runtime",
-    0 },
-  { "SubSystem", "SUBSYSTEM:WINDOWSCE", "WindowsCE", "WindowsCE", 0 },
-  { "SubSystem", "SUBSYSTEM:POSIX", "POSIX", "POSIX", 0 },
-
-  // Bool Properties
-  { "SuppressStartupBanner", "NOLOGO", "", "true", 0 },
-  { "IgnoreAllDefaultLibraries", "NODEFAULTLIB", "", "true", 0 },
-  { "TreatLibWarningAsErrors", "WX:NO", "", "false", 0 },
-  { "TreatLibWarningAsErrors", "WX", "", "true", 0 },
-  { "Verbose", "VERBOSE", "", "true", 0 },
-  { "LinkTimeCodeGeneration", "LTCG", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  // Skip [AdditionalDependencies] - no command line Switch.
-  { "AdditionalLibraryDirectories",
-    "LIBPATH:", "Additional Library Directories", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IgnoreSpecificDefaultLibraries",
-    "NODEFAULTLIB:", "Ignore Specific Default Libraries", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "ExportNamedFunctions", "EXPORT:", "Export Named Functions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "RemoveObjects", "REMOVE:", "Remove Objects", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-
-  // String Properties
-  { "OutputFile", "OUT:", "Output File", "", cmVS7FlagTable::UserValue },
-  { "ModuleDefinitionFile", "DEF:", "Module Definition File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "ForceSymbolReferences", "INCLUDE:", "Force Symbol References", "",
-    cmVS7FlagTable::UserValue },
-  { "DisplayLibrary", "LIST:", "Display Library to standard output", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [MinimumRequiredVersion] - no command line Switch.
-  { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
-  // Skip [AdditionalOptions] - no command line Switch.
-  // Skip [TrackerLogDirectory] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS14MASMFlagTable.h b/Source/cmVS14MASMFlagTable.h
deleted file mode 100644
index 8af1ef6..0000000
--- a/Source/cmVS14MASMFlagTable.h
+++ /dev/null
@@ -1,76 +0,0 @@
-static cmVS7FlagTable cmVS14MASMFlagTable[] = {
-
-  // Enum Properties
-  { "PreserveIdentifierCase", "", "Default", "0", 0 },
-  { "PreserveIdentifierCase", "Cp", "Preserves Identifier Case (/Cp)", "1",
-    0 },
-  { "PreserveIdentifierCase", "Cu",
-    "Maps all identifiers to upper case. (/Cu)", "2", 0 },
-  { "PreserveIdentifierCase", "Cx",
-    "Preserves case in public and extern symbols. (/Cx)", "3", 0 },
-
-  { "WarningLevel", "W0", "Warning Level 0 (/W0)", "0", 0 },
-  { "WarningLevel", "W1", "Warning Level 1 (/W1)", "1", 0 },
-  { "WarningLevel", "W2", "Warning Level 2 (/W2)", "2", 0 },
-  { "WarningLevel", "W3", "Warning Level 3 (/W3)", "3", 0 },
-
-  { "PackAlignmentBoundary", "", "Default", "0", 0 },
-  { "PackAlignmentBoundary", "Zp1", "One Byte Boundary (/Zp1)", "1", 0 },
-  { "PackAlignmentBoundary", "Zp2", "Two Byte Boundary (/Zp2)", "2", 0 },
-  { "PackAlignmentBoundary", "Zp4", "Four Byte Boundary (/Zp4)", "3", 0 },
-  { "PackAlignmentBoundary", "Zp8", "Eight Byte Boundary (/Zp8)", "4", 0 },
-  { "PackAlignmentBoundary", "Zp16", "Sixteen Byte Boundary (/Zp16)", "5", 0 },
-
-  { "CallingConvention", "", "Default", "0", 0 },
-  { "CallingConvention", "Gd", "Use C-style Calling Convention (/Gd)", "1",
-    0 },
-  { "CallingConvention", "Gz", "Use stdcall Calling Convention (/Gz)", "2",
-    0 },
-  { "CallingConvention", "Gc", "Use Pascal Calling Convention (/Gc)", "3", 0 },
-
-  { "ErrorReporting", "errorReport:prompt",
-    "Prompt to send report immediately (/errorReport:prompt)", "0", 0 },
-  { "ErrorReporting", "errorReport:queue",
-    "Prompt to send report at the next logon (/errorReport:queue)", "1", 0 },
-  { "ErrorReporting", "errorReport:send",
-    "Automatically send report (/errorReport:send)", "2", 0 },
-  { "ErrorReporting", "errorReport:none",
-    "Do not send report (/errorReport:none)", "3", 0 },
-
-  // Bool Properties
-  { "NoLogo", "nologo", "", "true", 0 },
-  { "GeneratePreprocessedSourceListing", "EP", "", "true", 0 },
-  { "ListAllAvailableInformation", "Sa", "", "true", 0 },
-  { "UseSafeExceptionHandlers", "safeseh", "", "true", 0 },
-  { "AddFirstPassListing", "Sf", "", "true", 0 },
-  { "EnableAssemblyGeneratedCodeListing", "Sg", "", "true", 0 },
-  { "DisableSymbolTable", "Sn", "", "true", 0 },
-  { "EnableFalseConditionalsInListing", "Sx", "", "true", 0 },
-  { "TreatWarningsAsErrors", "WX", "", "true", 0 },
-  { "MakeAllSymbolsPublic", "Zf", "", "true", 0 },
-  { "GenerateDebugInformation", "Zi", "", "true", 0 },
-  { "EnableMASM51Compatibility", "Zm", "", "true", 0 },
-  { "PerformSyntaxCheckOnly", "Zs", "", "true", 0 },
-
-  // Bool Properties With Argument
-
-  // String List Properties
-  { "PreprocessorDefinitions", "D", "Preprocessor Definitions", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "IncludePaths", "I", "Include Paths", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  { "BrowseFile", "FR", "Generate Browse Information File", "",
-    cmVS7FlagTable::UserValue | cmVS7FlagTable::SemicolonAppendable },
-  // Skip [AdditionalDependencies] - no command line Switch.
-
-  // String Properties
-  // Skip [Inputs] - no command line Switch.
-  { "ObjectFileName", "Fo", "Object File Name", "",
-    cmVS7FlagTable::UserValue },
-  { "AssembledCodeListingFile", "Fl", "Assembled Code Listing File", "",
-    cmVS7FlagTable::UserValue },
-  // Skip [CommandLineTemplate] - no command line Switch.
-  // Skip [ExecutionDescription] - no command line Switch.
-  // Skip [AdditionalOptions] - no command line Switch.
-  { "", "", "", "", 0 }
-};
diff --git a/Source/cmVS14RCFlagTable.h b/Source/cmVS14RCFlagTable.h
deleted file mode 100644
index 1720276..0000000
--- a/Source/cmVS14RCFlagTable.h
+++ /dev/null
@@ -1,7 +0,0 @@
-static cmVS7FlagTable cmVS14RCFlagTable[] = {
-  // Bool Properties
-  { "NullTerminateStrings", "n", "", "true", 0 },
-  { "SuppressStartupBanner", "nologo", "", "true", 0 },
-
-  { "", "", "", "", 0 }
-};

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d855fbf442d1ab3b209ac9b46f97ad8e567df41
commit 6d855fbf442d1ab3b209ac9b46f97ad8e567df41
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 28 07:32:14 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:31 2018 -0800

    Replace header flag tables with json reading
    
    Stop loading flag tables from header files and instead load the flag table
    information from json files in Templates/MSBuild/FlagTables.

diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx
index 82fcaad..c9c6938 100644
--- a/Source/cmGlobalVisualStudio10Generator.cxx
+++ b/Source/cmGlobalVisualStudio10Generator.cxx
@@ -8,19 +8,11 @@
 #include "cmLocalVisualStudio10Generator.h"
 #include "cmMakefile.h"
 #include "cmSourceFile.h"
-#include "cmVS10CLFlagTable.h"
-#include "cmVS10CSharpFlagTable.h"
-#include "cmVS10CudaFlagTable.h"
-#include "cmVS10CudaHostFlagTable.h"
-#include "cmVS10LibFlagTable.h"
-#include "cmVS10LinkFlagTable.h"
-#include "cmVS10MASMFlagTable.h"
-#include "cmVS10NASMFlagTable.h"
-#include "cmVS10RCFlagTable.h"
 #include "cmVersion.h"
 #include "cmVisualStudioSlnData.h"
 #include "cmVisualStudioSlnParser.h"
 #include "cmXMLWriter.h"
+#include "cm_jsoncpp_reader.h"
 #include "cmake.h"
 
 #include "cmsys/FStream.hxx"
@@ -30,6 +22,7 @@
 #include <algorithm>
 
 static const char vs10generatorName[] = "Visual Studio 10 2010";
+static std::map<std::string, std::vector<cmIDEFlagTable>> loadedFlagJsonFiles;
 
 // Map generator name without year to name with year.
 static const char* cmVS10GenName(const std::string& name, std::string& genName)
@@ -120,15 +113,16 @@ cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator(
       this->DefaultPlatformToolset = "v100";
     }
   }
-  this->DefaultClFlagTable = cmVS10CLFlagTable;
-  this->DefaultCSharpFlagTable = cmVS10CSharpFlagTable;
-  this->DefaultLibFlagTable = cmVS10LibFlagTable;
-  this->DefaultLinkFlagTable = cmVS10LinkFlagTable;
-  this->DefaultCudaFlagTable = cmVS10CudaFlagTable;
-  this->DefaultCudaHostFlagTable = cmVS10CudaHostFlagTable;
-  this->DefaultMasmFlagTable = cmVS10MASMFlagTable;
-  this->DefaultNasmFlagTable = cmVS10NASMFlagTable;
-  this->DefaultRcFlagTable = cmVS10RCFlagTable;
+  this->DefaultCLFlagTableName = "v10";
+  this->DefaultCSharpFlagTableName = "v10";
+  this->DefaultLibFlagTableName = "v10";
+  this->DefaultLinkFlagTableName = "v10";
+  this->DefaultCudaFlagTableName = "v10";
+  this->DefaultCudaHostFlagTableName = "v10";
+  this->DefaultMasmFlagTableName = "v10";
+  this->DefaultNasmFlagTableName = "v10";
+  this->DefaultRCFlagTableName = "v10";
+
   this->Version = VS10;
   this->PlatformToolsetNeedsDebugEnum = false;
 }
@@ -1050,67 +1044,174 @@ std::string cmGlobalVisualStudio10Generator::GetInstalledNsightTegraVersion()
   return version;
 }
 
+static std::string cmLoadFlagTableString(Json::Value entry, const char* field)
+{
+  if (entry.isMember(field)) {
+    auto string = entry[field];
+    if (string.isConvertibleTo(Json::ValueType::stringValue)) {
+      return string.asString();
+    }
+  }
+  return "";
+}
+
+static unsigned int cmLoadFlagTableSpecial(Json::Value entry,
+                                           const char* field)
+{
+  unsigned int value = 0;
+  if (entry.isMember(field)) {
+    auto specials = entry[field];
+    if (specials.isArray()) {
+      for (auto const& special : specials) {
+        std::string s = special.asString();
+        if (s == "UserValue") {
+          value |= cmIDEFlagTable::UserValue;
+        } else if (s == "UserIgnored") {
+          value |= cmIDEFlagTable::UserIgnored;
+        } else if (s == "UserRequired") {
+          value |= cmIDEFlagTable::UserRequired;
+        } else if (s == "Continue") {
+          value |= cmIDEFlagTable::Continue;
+        } else if (s == "SemicolonAppendable") {
+          value |= cmIDEFlagTable::SemicolonAppendable;
+        } else if (s == "UserFollowing") {
+          value |= cmIDEFlagTable::UserFollowing;
+        } else if (s == "CaseInsensitive") {
+          value |= cmIDEFlagTable::CaseInsensitive;
+        } else if (s == "SpaceAppendable") {
+          value |= cmIDEFlagTable::SpaceAppendable;
+        }
+      }
+    }
+  }
+  return value;
+}
+
+static cmIDEFlagTable const* cmLoadFlagTableJson(
+  std::string const& flagJsonPath)
+{
+  cmIDEFlagTable* ret = nullptr;
+  auto savedFlagIterator = loadedFlagJsonFiles.find(flagJsonPath);
+  if (savedFlagIterator != loadedFlagJsonFiles.end()) {
+    ret = savedFlagIterator->second.data();
+  } else {
+    Json::Reader reader;
+    cmsys::ifstream stream;
+
+    stream.open(flagJsonPath.c_str(), std::ios_base::in);
+    if (stream) {
+      Json::Value flags;
+      if (reader.parse(stream, flags, false) && flags.isArray()) {
+        std::vector<cmIDEFlagTable> flagTable;
+        for (auto const& flag : flags) {
+          cmIDEFlagTable flagEntry;
+          flagEntry.IDEName = cmLoadFlagTableString(flag, "name");
+          flagEntry.commandFlag = cmLoadFlagTableString(flag, "switch");
+          flagEntry.comment = cmLoadFlagTableString(flag, "comment");
+          flagEntry.value = cmLoadFlagTableString(flag, "value");
+          flagEntry.special = cmLoadFlagTableSpecial(flag, "flags");
+          flagTable.push_back(flagEntry);
+        }
+        cmIDEFlagTable endFlag{ "", "", "", "", 0 };
+        flagTable.push_back(endFlag);
+
+        loadedFlagJsonFiles[flagJsonPath] = flagTable;
+        ret = loadedFlagJsonFiles[flagJsonPath].data();
+      }
+    }
+  }
+  return ret;
+}
+
+cmIDEFlagTable const* cmGlobalVisualStudio10Generator::LoadFlagTable(
+  std::string const& flagTableName, std::string const& table) const
+{
+  cmIDEFlagTable const* ret = nullptr;
+
+  std::string filename = cmSystemTools::GetCMakeRoot() +
+    "/Templates/MSBuild/FlagTables/" + flagTableName + "_" + table + ".json";
+  ret = cmLoadFlagTableJson(filename);
+
+  if (!ret) {
+    cmMakefile* mf = this->GetCurrentMakefile();
+
+    std::ostringstream e;
+    /* clang-format off */
+    e << "JSON flag table \"" << filename <<
+      "\" could not be loaded.\n";
+    /* clang-format on */
+    mf->IssueMessage(cmake::FATAL_ERROR, e.str().c_str());
+  }
+  return ret;
+}
+
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetClFlagTable() const
 {
-  cmIDEFlagTable const* table = this->ToolsetOptions.GetClFlagTable(
-    this->GetPlatformName(), this->GetPlatformToolsetString());
+  std::string flagTableName = this->ToolsetOptions.GetClFlagTableName(
+    this->GetPlatformName(), this->GetPlatformToolsetString(),
+    this->DefaultCLFlagTableName);
 
-  return (table != nullptr) ? table : this->DefaultClFlagTable;
+  return LoadFlagTable(flagTableName, "CL");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetCSharpFlagTable()
   const
 {
-  cmIDEFlagTable const* table = this->ToolsetOptions.GetCSharpFlagTable(
-    this->GetPlatformName(), this->GetPlatformToolsetString());
+  std::string flagTableName = this->ToolsetOptions.GetCSharpFlagTableName(
+    this->GetPlatformName(), this->GetPlatformToolsetString(),
+    this->DefaultCSharpFlagTableName);
 
-  return (table != nullptr) ? table : this->DefaultCSharpFlagTable;
+  return LoadFlagTable(flagTableName, "CSharp");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetRcFlagTable() const
 {
-  cmIDEFlagTable const* table = this->ToolsetOptions.GetRcFlagTable(
-    this->GetPlatformName(), this->GetPlatformToolsetString());
+  std::string flagTableName = this->ToolsetOptions.GetRcFlagTableName(
+    this->GetPlatformName(), this->GetPlatformToolsetString(),
+    this->DefaultRCFlagTableName);
 
-  return (table != nullptr) ? table : this->DefaultRcFlagTable;
+  return LoadFlagTable(flagTableName, "RC");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetLibFlagTable() const
 {
-  cmIDEFlagTable const* table = this->ToolsetOptions.GetLibFlagTable(
-    this->GetPlatformName(), this->GetPlatformToolsetString());
+  std::string flagTableName = this->ToolsetOptions.GetLibFlagTableName(
+    this->GetPlatformName(), this->GetPlatformToolsetString(),
+    this->DefaultLibFlagTableName);
 
-  return (table != nullptr) ? table : this->DefaultLibFlagTable;
+  return LoadFlagTable(flagTableName, "LIB");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetLinkFlagTable() const
 {
-  cmIDEFlagTable const* table = this->ToolsetOptions.GetLinkFlagTable(
-    this->GetPlatformName(), this->GetPlatformToolsetString());
+  std::string flagTableName = this->ToolsetOptions.GetLinkFlagTableName(
+    this->GetPlatformName(), this->GetPlatformToolsetString(),
+    this->DefaultLinkFlagTableName);
 
-  return (table != nullptr) ? table : this->DefaultLinkFlagTable;
+  return LoadFlagTable(flagTableName, "Link");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetCudaFlagTable() const
 {
-  return this->DefaultCudaFlagTable;
+  return LoadFlagTable(this->DefaultCudaFlagTableName, "Cuda");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetCudaHostFlagTable()
   const
 {
-  return this->DefaultCudaHostFlagTable;
+  return LoadFlagTable(this->DefaultCudaHostFlagTableName, "CudaHost");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetMasmFlagTable() const
 {
-  cmIDEFlagTable const* table = this->ToolsetOptions.GetMasmFlagTable(
-    this->GetPlatformName(), this->GetPlatformToolsetString());
+  std::string flagTableName = this->ToolsetOptions.GetMasmFlagTableName(
+    this->GetPlatformName(), this->GetPlatformToolsetString(),
+    this->DefaultMasmFlagTableName);
 
-  return (table != nullptr) ? table : this->DefaultMasmFlagTable;
+  return LoadFlagTable(flagTableName, "MASM");
 }
 
 cmIDEFlagTable const* cmGlobalVisualStudio10Generator::GetNasmFlagTable() const
 {
-  return this->DefaultNasmFlagTable;
+  return LoadFlagTable(this->DefaultNasmFlagTableName, "NASM");
 }
diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h
index 63e6903..6c4a9e6 100644
--- a/Source/cmGlobalVisualStudio10Generator.h
+++ b/Source/cmGlobalVisualStudio10Generator.h
@@ -144,6 +144,9 @@ protected:
 
   std::string const& GetMSBuildCommand();
 
+  cmIDEFlagTable const* LoadFlagTable(std::string const& flagTableName,
+                                      std::string const& table) const;
+
   std::string GeneratorToolset;
   std::string GeneratorToolsetVersion;
   std::string GeneratorToolsetHostArchitecture;
@@ -153,15 +156,15 @@ protected:
   std::string SystemName;
   std::string SystemVersion;
   std::string NsightTegraVersion;
-  cmIDEFlagTable const* DefaultClFlagTable;
-  cmIDEFlagTable const* DefaultCSharpFlagTable;
-  cmIDEFlagTable const* DefaultLibFlagTable;
-  cmIDEFlagTable const* DefaultLinkFlagTable;
-  cmIDEFlagTable const* DefaultCudaFlagTable;
-  cmIDEFlagTable const* DefaultCudaHostFlagTable;
-  cmIDEFlagTable const* DefaultMasmFlagTable;
-  cmIDEFlagTable const* DefaultNasmFlagTable;
-  cmIDEFlagTable const* DefaultRcFlagTable;
+  std::string DefaultCLFlagTableName;
+  std::string DefaultCSharpFlagTableName;
+  std::string DefaultLibFlagTableName;
+  std::string DefaultLinkFlagTableName;
+  std::string DefaultCudaFlagTableName;
+  std::string DefaultCudaHostFlagTableName;
+  std::string DefaultMasmFlagTableName;
+  std::string DefaultNasmFlagTableName;
+  std::string DefaultRCFlagTableName;
   bool SystemIsWindowsCE;
   bool SystemIsWindowsPhone;
   bool SystemIsWindowsStore;
diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx
index f1d5a8c..e40023d 100644
--- a/Source/cmGlobalVisualStudio11Generator.cxx
+++ b/Source/cmGlobalVisualStudio11Generator.cxx
@@ -6,12 +6,6 @@
 #include "cmDocumentationEntry.h"
 #include "cmLocalVisualStudio10Generator.h"
 #include "cmMakefile.h"
-#include "cmVS11CLFlagTable.h"
-#include "cmVS11CSharpFlagTable.h"
-#include "cmVS11LibFlagTable.h"
-#include "cmVS11LinkFlagTable.h"
-#include "cmVS11MASMFlagTable.h"
-#include "cmVS11RCFlagTable.h"
 
 static const char vs11generatorName[] = "Visual Studio 11 2012";
 
@@ -107,12 +101,12 @@ cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator(
     "ProductDir",
     vc11Express, cmSystemTools::KeyWOW64_32);
   this->DefaultPlatformToolset = "v110";
-  this->DefaultClFlagTable = cmVS11CLFlagTable;
-  this->DefaultCSharpFlagTable = cmVS11CSharpFlagTable;
-  this->DefaultLibFlagTable = cmVS11LibFlagTable;
-  this->DefaultLinkFlagTable = cmVS11LinkFlagTable;
-  this->DefaultMasmFlagTable = cmVS11MASMFlagTable;
-  this->DefaultRcFlagTable = cmVS11RCFlagTable;
+  this->DefaultCLFlagTableName = "v11";
+  this->DefaultCSharpFlagTableName = "v11";
+  this->DefaultLibFlagTableName = "v11";
+  this->DefaultLinkFlagTableName = "v11";
+  this->DefaultMasmFlagTableName = "v11";
+  this->DefaultRCFlagTableName = "v11";
   this->Version = VS11;
 }
 
diff --git a/Source/cmGlobalVisualStudio12Generator.cxx b/Source/cmGlobalVisualStudio12Generator.cxx
index e05ae70..3be7d24 100644
--- a/Source/cmGlobalVisualStudio12Generator.cxx
+++ b/Source/cmGlobalVisualStudio12Generator.cxx
@@ -6,12 +6,6 @@
 #include "cmDocumentationEntry.h"
 #include "cmLocalVisualStudio10Generator.h"
 #include "cmMakefile.h"
-#include "cmVS12CLFlagTable.h"
-#include "cmVS12CSharpFlagTable.h"
-#include "cmVS12LibFlagTable.h"
-#include "cmVS12LinkFlagTable.h"
-#include "cmVS12MASMFlagTable.h"
-#include "cmVS12RCFlagTable.h"
 
 static const char vs12generatorName[] = "Visual Studio 12 2013";
 
@@ -90,12 +84,12 @@ cmGlobalVisualStudio12Generator::cmGlobalVisualStudio12Generator(
     "ProductDir",
     vc12Express, cmSystemTools::KeyWOW64_32);
   this->DefaultPlatformToolset = "v120";
-  this->DefaultClFlagTable = cmVS12CLFlagTable;
-  this->DefaultCSharpFlagTable = cmVS12CSharpFlagTable;
-  this->DefaultLibFlagTable = cmVS12LibFlagTable;
-  this->DefaultLinkFlagTable = cmVS12LinkFlagTable;
-  this->DefaultMasmFlagTable = cmVS12MASMFlagTable;
-  this->DefaultRcFlagTable = cmVS12RCFlagTable;
+  this->DefaultCLFlagTableName = "v12";
+  this->DefaultCSharpFlagTableName = "v12";
+  this->DefaultLibFlagTableName = "v12";
+  this->DefaultLinkFlagTableName = "v12";
+  this->DefaultMasmFlagTableName = "v12";
+  this->DefaultRCFlagTableName = "v12";
   this->Version = VS12;
 }
 
diff --git a/Source/cmGlobalVisualStudio14Generator.cxx b/Source/cmGlobalVisualStudio14Generator.cxx
index c3ddb3e..9647f78 100644
--- a/Source/cmGlobalVisualStudio14Generator.cxx
+++ b/Source/cmGlobalVisualStudio14Generator.cxx
@@ -6,12 +6,6 @@
 #include "cmDocumentationEntry.h"
 #include "cmLocalVisualStudio10Generator.h"
 #include "cmMakefile.h"
-#include "cmVS140CLFlagTable.h"
-#include "cmVS140CSharpFlagTable.h"
-#include "cmVS140LinkFlagTable.h"
-#include "cmVS14LibFlagTable.h"
-#include "cmVS14MASMFlagTable.h"
-#include "cmVS14RCFlagTable.h"
 
 static const char vs14generatorName[] = "Visual Studio 14 2015";
 
@@ -90,12 +84,12 @@ cmGlobalVisualStudio14Generator::cmGlobalVisualStudio14Generator(
     "ProductDir",
     vc14Express, cmSystemTools::KeyWOW64_32);
   this->DefaultPlatformToolset = "v140";
-  this->DefaultClFlagTable = cmVS140CLFlagTable;
-  this->DefaultCSharpFlagTable = cmVS140CSharpFlagTable;
-  this->DefaultLibFlagTable = cmVS14LibFlagTable;
-  this->DefaultLinkFlagTable = cmVS140LinkFlagTable;
-  this->DefaultMasmFlagTable = cmVS14MASMFlagTable;
-  this->DefaultRcFlagTable = cmVS14RCFlagTable;
+  this->DefaultCLFlagTableName = "v140";
+  this->DefaultCSharpFlagTableName = "v140";
+  this->DefaultLibFlagTableName = "v14";
+  this->DefaultLinkFlagTableName = "v140";
+  this->DefaultMasmFlagTableName = "v14";
+  this->DefaultRCFlagTableName = "v14";
   this->Version = VS14;
 }
 
diff --git a/Source/cmGlobalVisualStudio15Generator.cxx b/Source/cmGlobalVisualStudio15Generator.cxx
index 23fd2d5..2853283 100644
--- a/Source/cmGlobalVisualStudio15Generator.cxx
+++ b/Source/cmGlobalVisualStudio15Generator.cxx
@@ -6,9 +6,6 @@
 #include "cmDocumentationEntry.h"
 #include "cmLocalVisualStudio10Generator.h"
 #include "cmMakefile.h"
-#include "cmVS141CLFlagTable.h"
-#include "cmVS141CSharpFlagTable.h"
-#include "cmVS141LinkFlagTable.h"
 #include "cmVSSetupHelper.h"
 
 static const char vs15generatorName[] = "Visual Studio 15 2017";
@@ -84,9 +81,9 @@ cmGlobalVisualStudio15Generator::cmGlobalVisualStudio15Generator(
 {
   this->ExpressEdition = false;
   this->DefaultPlatformToolset = "v141";
-  this->DefaultClFlagTable = cmVS141CLFlagTable;
-  this->DefaultCSharpFlagTable = cmVS141CSharpFlagTable;
-  this->DefaultLinkFlagTable = cmVS141LinkFlagTable;
+  this->DefaultCLFlagTableName = "v141";
+  this->DefaultCSharpFlagTableName = "v141";
+  this->DefaultLinkFlagTableName = "v141";
   this->Version = VS15;
 }
 
diff --git a/Source/cmVisualStudio10ToolsetOptions.cxx b/Source/cmVisualStudio10ToolsetOptions.cxx
index 9a1d950..f71b8b7 100644
--- a/Source/cmVisualStudio10ToolsetOptions.cxx
+++ b/Source/cmVisualStudio10ToolsetOptions.cxx
@@ -6,145 +6,123 @@
 #include "cmIDEFlagTable.h"
 #include "cmVisualStudioGeneratorOptions.h"
 
-#include "cmVS10CLFlagTable.h"
-#include "cmVS10CSharpFlagTable.h"
-#include "cmVS10LibFlagTable.h"
-#include "cmVS10LinkFlagTable.h"
-#include "cmVS10MASMFlagTable.h"
-#include "cmVS10RCFlagTable.h"
-#include "cmVS11CLFlagTable.h"
-#include "cmVS11CSharpFlagTable.h"
-#include "cmVS11LibFlagTable.h"
-#include "cmVS11LinkFlagTable.h"
-#include "cmVS11MASMFlagTable.h"
-#include "cmVS11RCFlagTable.h"
-#include "cmVS12CLFlagTable.h"
-#include "cmVS12CSharpFlagTable.h"
-#include "cmVS12LibFlagTable.h"
-#include "cmVS12LinkFlagTable.h"
-#include "cmVS12MASMFlagTable.h"
-#include "cmVS12RCFlagTable.h"
-#include "cmVS140CLFlagTable.h"
-#include "cmVS140CSharpFlagTable.h"
-#include "cmVS140LinkFlagTable.h"
-#include "cmVS141CLFlagTable.h"
-#include "cmVS141CSharpFlagTable.h"
-#include "cmVS141LinkFlagTable.h"
-#include "cmVS14LibFlagTable.h"
-#include "cmVS14MASMFlagTable.h"
-#include "cmVS14RCFlagTable.h"
-
-cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetClFlagTable(
-  std::string const& name, std::string const& toolset) const
+std::string cmVisualStudio10ToolsetOptions::GetClFlagTableName(
+  std::string const& name, std::string const& toolset,
+  std::string const& defaultToolset) const
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
   if (toolset == "v141") {
-    return cmVS141CLFlagTable;
+    return "v141";
   } else if (useToolset == "v140") {
-    return cmVS140CLFlagTable;
+    return "v140";
   } else if (useToolset == "v120") {
-    return cmVS12CLFlagTable;
+    return "v12";
   } else if (useToolset == "v110") {
-    return cmVS11CLFlagTable;
+    return "v11";
   } else if (useToolset == "v100") {
-    return cmVS10CLFlagTable;
+    return "v10";
   } else {
-    return 0;
+    return this->GetToolsetName(name, defaultToolset);
   }
 }
 
-cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetCSharpFlagTable(
-  std::string const& name, std::string const& toolset) const
+std::string cmVisualStudio10ToolsetOptions::GetCSharpFlagTableName(
+  std::string const& name, std::string const& toolset,
+  std::string const& defaultToolset) const
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
   if ((useToolset == "v141")) {
-    return cmVS141CSharpFlagTable;
+    return "v141";
   } else if (useToolset == "v140") {
-    return cmVS140CSharpFlagTable;
+    return "v140";
   } else if (useToolset == "v120") {
-    return cmVS12CSharpFlagTable;
+    return "v12";
   } else if (useToolset == "v110") {
-    return cmVS11CSharpFlagTable;
+    return "v11";
   } else if (useToolset == "v100") {
-    return cmVS10CSharpFlagTable;
+    return "v10";
   } else {
-    return 0;
+    return this->GetToolsetName(name, defaultToolset);
   }
 }
 
-cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetRcFlagTable(
-  std::string const& name, std::string const& toolset) const
+std::string cmVisualStudio10ToolsetOptions::GetRcFlagTableName(
+  std::string const& name, std::string const& toolset,
+  std::string const& defaultToolset) const
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
   if ((useToolset == "v140") || (useToolset == "v141")) {
-    return cmVS14RCFlagTable;
+    return "v14";
   } else if (useToolset == "v120") {
-    return cmVS12RCFlagTable;
+    return "v12";
   } else if (useToolset == "v110") {
-    return cmVS11RCFlagTable;
+    return "v11";
   } else if (useToolset == "v100") {
-    return cmVS10RCFlagTable;
+    return "v10";
   } else {
-    return 0;
+    return this->GetToolsetName(name, defaultToolset);
   }
 }
 
-cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLibFlagTable(
-  std::string const& name, std::string const& toolset) const
+std::string cmVisualStudio10ToolsetOptions::GetLibFlagTableName(
+  std::string const& name, std::string const& toolset,
+  std::string const& defaultToolset) const
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
   if ((useToolset == "v140") || (useToolset == "v141")) {
-    return cmVS14LibFlagTable;
+    return "v14";
   } else if (useToolset == "v120") {
-    return cmVS12LibFlagTable;
+    return "v12";
   } else if (useToolset == "v110") {
-    return cmVS11LibFlagTable;
+    return "v11";
   } else if (useToolset == "v100") {
-    return cmVS10LibFlagTable;
+    return "v10";
   } else {
-    return 0;
+    return this->GetToolsetName(name, defaultToolset);
   }
 }
 
-cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetLinkFlagTable(
-  std::string const& name, std::string const& toolset) const
+std::string cmVisualStudio10ToolsetOptions::GetLinkFlagTableName(
+  std::string const& name, std::string const& toolset,
+  std::string const& defaultToolset) const
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
   if (useToolset == "v141") {
-    return cmVS141LinkFlagTable;
+    return "v141";
   } else if (useToolset == "v140") {
-    return cmVS140LinkFlagTable;
+    return "v140";
   } else if (useToolset == "v120") {
-    return cmVS12LinkFlagTable;
+    return "v12";
   } else if (useToolset == "v110") {
-    return cmVS11LinkFlagTable;
+    return "v11";
   } else if (useToolset == "v100") {
-    return cmVS10LinkFlagTable;
+    return "v10";
   } else {
-    return 0;
+    return this->GetToolsetName(name, defaultToolset);
   }
 }
 
-cmIDEFlagTable const* cmVisualStudio10ToolsetOptions::GetMasmFlagTable(
-  std::string const& name, std::string const& toolset) const
+std::string cmVisualStudio10ToolsetOptions::GetMasmFlagTableName(
+  std::string const& name, std::string const& toolset,
+  std::string const& defaultToolset) const
 {
   std::string const useToolset = this->GetToolsetName(name, toolset);
 
   if ((useToolset == "v140") || (useToolset == "v141")) {
-    return cmVS14MASMFlagTable;
+    return "v14";
   } else if (useToolset == "v120") {
-    return cmVS12MASMFlagTable;
+    return "v12";
   } else if (useToolset == "v110") {
-    return cmVS11MASMFlagTable;
+    return "v11";
   } else if (useToolset == "v100") {
-    return cmVS10MASMFlagTable;
+    return "v10";
   } else {
-    return 0;
+    return this->GetToolsetName(name, defaultToolset);
   }
 }
 
diff --git a/Source/cmVisualStudio10ToolsetOptions.h b/Source/cmVisualStudio10ToolsetOptions.h
index c736a49..43946f0 100644
--- a/Source/cmVisualStudio10ToolsetOptions.h
+++ b/Source/cmVisualStudio10ToolsetOptions.h
@@ -7,8 +7,6 @@
 
 #include <string>
 
-struct cmIDEFlagTable;
-
 /** \class cmVisualStudio10ToolsetOptions
  * \brief Retrieves toolset options for MSBuild.
  *
@@ -17,18 +15,24 @@ struct cmIDEFlagTable;
 class cmVisualStudio10ToolsetOptions
 {
 public:
-  cmIDEFlagTable const* GetClFlagTable(std::string const& name,
-                                       std::string const& toolset) const;
-  cmIDEFlagTable const* GetCSharpFlagTable(std::string const& name,
-                                           std::string const& toolset) const;
-  cmIDEFlagTable const* GetRcFlagTable(std::string const& name,
-                                       std::string const& toolset) const;
-  cmIDEFlagTable const* GetLibFlagTable(std::string const& name,
-                                        std::string const& toolset) const;
-  cmIDEFlagTable const* GetLinkFlagTable(std::string const& name,
-                                         std::string const& toolset) const;
-  cmIDEFlagTable const* GetMasmFlagTable(std::string const& name,
-                                         std::string const& toolset) const;
+  std::string GetClFlagTableName(std::string const& name,
+                                 std::string const& toolset,
+                                 std::string const& defaultToolset) const;
+  std::string GetCSharpFlagTableName(std::string const& name,
+                                     std::string const& toolset,
+                                     std::string const& defaultToolset) const;
+  std::string GetRcFlagTableName(std::string const& name,
+                                 std::string const& toolset,
+                                 std::string const& defaultToolset) const;
+  std::string GetLibFlagTableName(std::string const& name,
+                                  std::string const& toolset,
+                                  std::string const& defaultToolset) const;
+  std::string GetLinkFlagTableName(std::string const& name,
+                                   std::string const& toolset,
+                                   std::string const& defaultToolset) const;
+  std::string GetMasmFlagTableName(std::string const& name,
+                                   std::string const& toolset,
+                                   std::string const& defaultToolset) const;
 
 private:
   std::string GetToolsetName(std::string const& name,

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9c60ae5f1105d6d793f2693630bf09abb7d66935
commit 9c60ae5f1105d6d793f2693630bf09abb7d66935
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 10:46:38 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:30 2018 -0800

    VS: Add flag table entry for -JMC
    
    Original header commit 516c6fc38c0bdfd7905edb169a4ebfef689cf116
    
    Add support for mapping Just My Code compiler flag

diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index 419b336..d566526 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -1243,5 +1243,19 @@
     "comment": "C++14 (GNU Dialect)",
     "value": "gnu++1y",
     "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SupportJustMyCode",
+    "switch": "JMC",
+    "comment": "",
+    "value": "true",
+    "flags": []
   }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=584ad067ba28924861eeab06cc73d49fdf6f9f89
commit 584ad067ba28924861eeab06cc73d49fdf6f9f89
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 10:43:17 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:30 2018 -0800

    VS: Fix flag table entry for -Qspectre
    
    The Qspectre option was generated by the script (as opposed to
    being added by commit v3.13.0-rc1~4^2 (VS: Add flag table entry for
    -Qspectre, 2018-10-08), however the comment was not useful and
    there was a separate off option generated that was not in the
    old table.

diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index 7493ed8..419b336 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -422,18 +422,11 @@
   {
     "name": "SpectreMitigation",
     "switch": "Qspectre",
-    "comment": "Enabled",
+    "comment": "Spectre mitigations",
     "value": "Spectre",
     "flags": []
   },
   {
-    "name": "SpectreMitigation",
-    "switch": "",
-    "comment": "Disabled",
-    "value": "false",
-    "flags": []
-  },
-  {
     "name": "LanguageStandard",
     "switch": "std:c++14",
     "comment": "ISO C++14 Standard",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8df25f9400bef5dd374f74725a72e818c2424f4e
commit 8df25f9400bef5dd374f74725a72e818c2424f4e
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 09:18:10 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:30 2018 -0800

    VS: connect /Y- compiler option with "Not Using Precompiled Headers"
    
    Original header commit v3.10.0-rc1~423^2
    
    The change allows to selectively disable PrecompiledHeaders.
    Despite the `$(VCTargetsPath)/1033/cl.xml` contains an empty value for switch,
    for effectively turn off setting need to use /Y- option as described on msdn:
    https://msdn.microsoft.com/en-us/library/1hy7a92h.aspx

diff --git a/Templates/MSBuild/FlagTables/v10_CL.json b/Templates/MSBuild/FlagTables/v10_CL.json
index 928e541..06158be 100644
--- a/Templates/MSBuild/FlagTables/v10_CL.json
+++ b/Templates/MSBuild/FlagTables/v10_CL.json
@@ -366,7 +366,7 @@
   },
   {
     "name": "PrecompiledHeader",
-    "switch": "",
+    "switch": "Y-",
     "comment": "Not Using Precompiled Headers",
     "value": "NotUsing",
     "flags": []
diff --git a/Templates/MSBuild/FlagTables/v11_CL.json b/Templates/MSBuild/FlagTables/v11_CL.json
index ffbf274..b47ab2e 100644
--- a/Templates/MSBuild/FlagTables/v11_CL.json
+++ b/Templates/MSBuild/FlagTables/v11_CL.json
@@ -387,7 +387,7 @@
   },
   {
     "name": "PrecompiledHeader",
-    "switch": "",
+    "switch": "Y-",
     "comment": "Not Using Precompiled Headers",
     "value": "NotUsing",
     "flags": []
diff --git a/Templates/MSBuild/FlagTables/v12_CL.json b/Templates/MSBuild/FlagTables/v12_CL.json
index 72618e2..771a555 100644
--- a/Templates/MSBuild/FlagTables/v12_CL.json
+++ b/Templates/MSBuild/FlagTables/v12_CL.json
@@ -415,7 +415,7 @@
   },
   {
     "name": "PrecompiledHeader",
-    "switch": "",
+    "switch": "Y-",
     "comment": "Not Using Precompiled Headers",
     "value": "NotUsing",
     "flags": []
diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index 853df07..3dc9f35 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -422,7 +422,7 @@
   },
   {
     "name": "PrecompiledHeader",
-    "switch": "",
+    "switch": "Y-",
     "comment": "Not Using Precompiled Headers",
     "value": "NotUsing",
     "flags": []
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index 124e45d..7493ed8 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -478,7 +478,7 @@
   },
   {
     "name": "PrecompiledHeader",
-    "switch": "",
+    "switch": "Y-",
     "comment": "Not Using Precompiled Headers",
     "value": "NotUsing",
     "flags": []

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f1223e34c653e4ed6a5f86fe17ae72e7d7a89e9a
commit f1223e34c653e4ed6a5f86fe17ae72e7d7a89e9a
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 09:15:27 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:30 2018 -0800

    VS: Add v140 flag table entries for `-Zc:inline[-]`
    
    Note: Zc:inline was added by generator, but not the - version.
    
    Original header commit v3.7.2~8^2
    
    The documentation of this option [1] claims that the default is off, but
    VS seems to use `-Zc:inline` by default if `RemoveUnreferencedCodeData`
    does not appear in the `.vcxproj` file.  Add the flag table entry to
    allow use of the flag to be configured.
    
    [1] https://msdn.microsoft.com/en-us/library/dn642448.aspx

diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index f75cff5..853df07 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -790,6 +790,13 @@
   },
   {
     "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline-",
+    "comment": "Remove unreferenced code and data",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
     "switch": "Zc:inline",
     "comment": "Remove unreferenced code and data",
     "value": "true",
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index db4380e..124e45d 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -853,6 +853,13 @@
   },
   {
     "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline-",
+    "comment": "Remove unreferenced code and data",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
     "switch": "Zc:inline",
     "comment": "Remove unreferenced code and data",
     "value": "true",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=efc90eed7768e1263c60b299e24c6293df274708
commit efc90eed7768e1263c60b299e24c6293df274708
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 09:11:27 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:30 2018 -0800

    VS: Fix regressed mapping for the cl `/Os` compiler flag
    
    Original header commit v3.6.0-rc3~8^2
    
    In commit v3.6.0-rc1~279^2~10 (VS: in Clang/C2 toolset, setup correct
    compiler settings, 2016-02-18) a flag mapping was added for the clang
    `-Os` flag.  However, this collides with a mapping we already had for
    the MSVC flag of the same name.  This is a symptom of a larger problem
    in that the VS generators need a per-toolset flag map (issue #16153).
    
    For now, simply drop the new mapping and drop `-Os` from clang compiler
    flags in the MinSizeRel configuration.

diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index 4c2be74..f75cff5 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -113,13 +113,6 @@
   },
   {
     "name": "Optimization",
-    "switch": "Os",
-    "comment": "Minimize Size",
-    "value": "MinSize",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
     "switch": "O1",
     "comment": "Minimize Size",
     "value": "MinSpace",
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index a3e0f54..db4380e 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -134,13 +134,6 @@
   },
   {
     "name": "Optimization",
-    "switch": "Os",
-    "comment": "Minimize Size",
-    "value": "MinSize",
-    "flags": []
-  },
-  {
-    "name": "Optimization",
     "switch": "O1",
     "comment": "Maximum Optimization (Favor Size)",
     "value": "MinSpace",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=36b7fc7db6a64b4537bea38640e324c9f283a168
commit 36b7fc7db6a64b4537bea38640e324c9f283a168
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 09:09:23 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:30 2018 -0800

    VS 14: Add flag map for -std= to CppLanguageStandard tag in project files
    
    Original header commit v3.6.0-rc1~279^2~8
    
    This is used by the Clang/C2 toolset.

diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index 0bf6063..4c2be74 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -1117,5 +1117,68 @@
       "UserValue",
       "UserRequired"
     ]
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++98",
+    "comment": "C++03",
+    "value": "c++98",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++11",
+    "comment": "C++11",
+    "value": "c++11",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++1y",
+    "comment": "C++14",
+    "value": "c++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++14",
+    "comment": "C++14",
+    "value": "c++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++98",
+    "comment": "C++03 (GNU Dialect)",
+    "value": "gnu++98",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++11",
+    "comment": "C++11 (GNU Dialect)",
+    "value": "gnu++11",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++1y",
+    "comment": "C++14 (GNU Dialect)",
+    "value": "gnu++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++14",
+    "comment": "C++14 (GNU Dialect)",
+    "value": "gnu++1y",
+    "flags": []
   }
 ]
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index 773f84e..a3e0f54 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -1187,5 +1187,68 @@
       "UserValue",
       "UserRequired"
     ]
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++98",
+    "comment": "C++03",
+    "value": "c++98",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++11",
+    "comment": "C++11",
+    "value": "c++11",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++1y",
+    "comment": "C++14",
+    "value": "c++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=c++14",
+    "comment": "C++14",
+    "value": "c++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++98",
+    "comment": "C++03 (GNU Dialect)",
+    "value": "gnu++98",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++11",
+    "comment": "C++11 (GNU Dialect)",
+    "value": "gnu++11",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++1y",
+    "comment": "C++14 (GNU Dialect)",
+    "value": "gnu++1y",
+    "flags": []
+  },
+  {
+    "name": "CppLanguageStandard",
+    "switch": "std=gnu++14",
+    "comment": "C++14 (GNU Dialect)",
+    "value": "gnu++1y",
+    "flags": []
   }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=21d26a9ecde5a23d6deb6432153c2aede533aead
commit 21d26a9ecde5a23d6deb6432153c2aede533aead
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 08:51:14 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:29 2018 -0800

    VS: in Clang/C2 toolset, setup correct compiler settings
    
    Original header commit v3.6.0-rc1~279^2~10

diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index 49ad625..0bf6063 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -113,6 +113,13 @@
   },
   {
     "name": "Optimization",
+    "switch": "Os",
+    "comment": "Minimize Size",
+    "value": "MinSize",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
     "switch": "O1",
     "comment": "Minimize Size",
     "value": "MinSpace",
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index 2da38aa..773f84e 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -134,6 +134,13 @@
   },
   {
     "name": "Optimization",
+    "switch": "Os",
+    "comment": "Minimize Size",
+    "value": "MinSize",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
     "switch": "O1",
     "comment": "Maximum Optimization (Favor Size)",
     "value": "MinSpace",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44dc9fc48af8171423b4d5e996a8415dfd5f96c0
commit 44dc9fc48af8171423b4d5e996a8415dfd5f96c0
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 08:43:39 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:29 2018 -0800

    VS: Fix /analyze:log flag mapping (#14858)
    
    Original header commits:
     v11/v12 commit v3.1.0-rc1~695^2
     v140/v141 commit v3.1.0-rc1~358^2~3
    
    Fix the VS 11 and VS 12 flag table entries for this flag.  It requires
    a value in the following argument.  Also drop the general "/analyze:"
    flag table entry so that such flags will be passed through as plain
    additional options.  This is necessary because some such options have
    following values and some do not but not all have .vcxproj elements
    to hold the values.

diff --git a/Templates/MSBuild/FlagTables/v11_CL.json b/Templates/MSBuild/FlagTables/v11_CL.json
index e1c3871..ffbf274 100644
--- a/Templates/MSBuild/FlagTables/v11_CL.json
+++ b/Templates/MSBuild/FlagTables/v11_CL.json
@@ -937,13 +937,12 @@
     ]
   },
   {
-    "name": "PREfastAdditionalOptions",
-    "switch": "analyze:",
-    "comment": "Additional Code Analysis Native options",
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
     "value": "",
     "flags": [
-      "UserValue",
-      "SemicolonAppendable"
+      "UserFollowing"
     ]
   },
   {
@@ -1052,15 +1051,6 @@
     ]
   },
   {
-    "name": "PREfastLog",
-    "switch": "analyze:log",
-    "comment": "Code Analysis Log",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
     "name": "ProcessorNumber",
     "switch": "MP",
     "comment": "Number of processors",
diff --git a/Templates/MSBuild/FlagTables/v12_CL.json b/Templates/MSBuild/FlagTables/v12_CL.json
index 39d08a3..72618e2 100644
--- a/Templates/MSBuild/FlagTables/v12_CL.json
+++ b/Templates/MSBuild/FlagTables/v12_CL.json
@@ -951,13 +951,12 @@
     ]
   },
   {
-    "name": "PREfastAdditionalOptions",
-    "switch": "analyze:",
-    "comment": "Additional Code Analysis Native options",
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
     "value": "",
     "flags": [
-      "UserValue",
-      "SemicolonAppendable"
+      "UserFollowing"
     ]
   },
   {
@@ -1066,15 +1065,6 @@
     ]
   },
   {
-    "name": "PREfastLog",
-    "switch": "analyze:log",
-    "comment": "Code Analysis Log",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
     "name": "ProcessorNumber",
     "switch": "MP",
     "comment": "Number of processors",
diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
index 1a81098..49ad625 100644
--- a/Templates/MSBuild/FlagTables/v140_CL.json
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -979,13 +979,12 @@
     ]
   },
   {
-    "name": "PREfastAdditionalOptions",
-    "switch": "analyze:",
-    "comment": "Additional Code Analysis Native options",
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
     "value": "",
     "flags": [
-      "UserValue",
-      "SemicolonAppendable"
+      "UserFollowing"
     ]
   },
   {
@@ -1103,15 +1102,6 @@
     ]
   },
   {
-    "name": "PREfastLog",
-    "switch": "analyze:log",
-    "comment": "Code Analysis Log",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
     "name": "ProcessorNumber",
     "switch": "MP",
     "comment": "Number of processors",
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
index c624603..2da38aa 100644
--- a/Templates/MSBuild/FlagTables/v141_CL.json
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -1049,13 +1049,12 @@
     ]
   },
   {
-    "name": "PREfastAdditionalOptions",
-    "switch": "analyze:",
-    "comment": "Additional Code Analysis Native options",
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
     "value": "",
     "flags": [
-      "UserValue",
-      "SemicolonAppendable"
+      "UserFollowing"
     ]
   },
   {
@@ -1173,15 +1172,6 @@
     ]
   },
   {
-    "name": "PREfastLog",
-    "switch": "analyze:log",
-    "comment": "Code Analysis Log",
-    "value": "",
-    "flags": [
-      "UserValue"
-    ]
-  },
-  {
     "name": "ProcessorNumber",
     "switch": "MP",
     "comment": "Number of processors",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aba364d190fca77d86412f25968a597edf3d725f
commit aba364d190fca77d86412f25968a597edf3d725f
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 08:01:48 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:29 2018 -0800

    VS: Fix CSharp support for win32res: and win32icon: flags
    
    Original header commit v3.13.0-rc2~6^2
    
    Add a missing `:` to these entries in the flag table.  The user
    value is always required and must come after the `:`.

diff --git a/Templates/MSBuild/FlagTables/v10_CSharp.json b/Templates/MSBuild/FlagTables/v10_CSharp.json
index 7d1815d..a0780a4 100644
--- a/Templates/MSBuild/FlagTables/v10_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v10_CSharp.json
@@ -114,7 +114,7 @@
   },
   {
     "name":  "Win32Resource",
-    "switch": "win32res",
+    "switch": "win32res:",
     "comment": "",
     "value": "",
     "flags": [
@@ -124,7 +124,7 @@
   },
   {
     "name":  "ApplicationIcon",
-    "switch": "win32icon",
+    "switch": "win32icon:",
     "comment": "",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v11_CSharp.json b/Templates/MSBuild/FlagTables/v11_CSharp.json
index 7d1815d..a0780a4 100644
--- a/Templates/MSBuild/FlagTables/v11_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v11_CSharp.json
@@ -114,7 +114,7 @@
   },
   {
     "name":  "Win32Resource",
-    "switch": "win32res",
+    "switch": "win32res:",
     "comment": "",
     "value": "",
     "flags": [
@@ -124,7 +124,7 @@
   },
   {
     "name":  "ApplicationIcon",
-    "switch": "win32icon",
+    "switch": "win32icon:",
     "comment": "",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v12_CSharp.json b/Templates/MSBuild/FlagTables/v12_CSharp.json
index 7d1815d..a0780a4 100644
--- a/Templates/MSBuild/FlagTables/v12_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v12_CSharp.json
@@ -114,7 +114,7 @@
   },
   {
     "name":  "Win32Resource",
-    "switch": "win32res",
+    "switch": "win32res:",
     "comment": "",
     "value": "",
     "flags": [
@@ -124,7 +124,7 @@
   },
   {
     "name":  "ApplicationIcon",
-    "switch": "win32icon",
+    "switch": "win32icon:",
     "comment": "",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v140_CSharp.json b/Templates/MSBuild/FlagTables/v140_CSharp.json
index 7d1815d..a0780a4 100644
--- a/Templates/MSBuild/FlagTables/v140_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v140_CSharp.json
@@ -114,7 +114,7 @@
   },
   {
     "name":  "Win32Resource",
-    "switch": "win32res",
+    "switch": "win32res:",
     "comment": "",
     "value": "",
     "flags": [
@@ -124,7 +124,7 @@
   },
   {
     "name":  "ApplicationIcon",
-    "switch": "win32icon",
+    "switch": "win32icon:",
     "comment": "",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v141_CSharp.json b/Templates/MSBuild/FlagTables/v141_CSharp.json
index 7d1815d..a0780a4 100644
--- a/Templates/MSBuild/FlagTables/v141_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v141_CSharp.json
@@ -114,7 +114,7 @@
   },
   {
     "name":  "Win32Resource",
-    "switch": "win32res",
+    "switch": "win32res:",
     "comment": "",
     "value": "",
     "flags": [
@@ -124,7 +124,7 @@
   },
   {
     "name":  "ApplicationIcon",
-    "switch": "win32icon",
+    "switch": "win32icon:",
     "comment": "",
     "value": "",
     "flags": [

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b9fe2785f2df089c731a64c4939a364d49009333
commit b9fe2785f2df089c731a64c4939a364d49009333
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 07:55:48 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:29 2018 -0800

    Vs: remove /nowin32manifest from C# flags to enable default VS behavior
    
    Original header commit v3.10.0-rc1~494^2
    
    if /nowin32manifest is specified, it will be preferred over any
    occurring /win32manifest:<file> parameter

diff --git a/Templates/MSBuild/FlagTables/v10_CSharp.json b/Templates/MSBuild/FlagTables/v10_CSharp.json
index fa483bf..7d1815d 100644
--- a/Templates/MSBuild/FlagTables/v10_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v10_CSharp.json
@@ -133,11 +133,14 @@
     ]
   },
   {
-    "name":  "Win32Manifest",
+    "name":  "ApplicationManifest",
     "switch": "win32manifest:",
     "comment": "",
-    "value": "true",
-    "flags": []
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
   },
   {
     "name":  "NoWin32Manifest",
diff --git a/Templates/MSBuild/FlagTables/v11_CSharp.json b/Templates/MSBuild/FlagTables/v11_CSharp.json
index fa483bf..7d1815d 100644
--- a/Templates/MSBuild/FlagTables/v11_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v11_CSharp.json
@@ -133,11 +133,14 @@
     ]
   },
   {
-    "name":  "Win32Manifest",
+    "name":  "ApplicationManifest",
     "switch": "win32manifest:",
     "comment": "",
-    "value": "true",
-    "flags": []
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
   },
   {
     "name":  "NoWin32Manifest",
diff --git a/Templates/MSBuild/FlagTables/v12_CSharp.json b/Templates/MSBuild/FlagTables/v12_CSharp.json
index fa483bf..7d1815d 100644
--- a/Templates/MSBuild/FlagTables/v12_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v12_CSharp.json
@@ -133,11 +133,14 @@
     ]
   },
   {
-    "name":  "Win32Manifest",
+    "name":  "ApplicationManifest",
     "switch": "win32manifest:",
     "comment": "",
-    "value": "true",
-    "flags": []
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
   },
   {
     "name":  "NoWin32Manifest",
diff --git a/Templates/MSBuild/FlagTables/v140_CSharp.json b/Templates/MSBuild/FlagTables/v140_CSharp.json
index fa483bf..7d1815d 100644
--- a/Templates/MSBuild/FlagTables/v140_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v140_CSharp.json
@@ -133,11 +133,14 @@
     ]
   },
   {
-    "name":  "Win32Manifest",
+    "name":  "ApplicationManifest",
     "switch": "win32manifest:",
     "comment": "",
-    "value": "true",
-    "flags": []
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
   },
   {
     "name":  "NoWin32Manifest",
diff --git a/Templates/MSBuild/FlagTables/v141_CSharp.json b/Templates/MSBuild/FlagTables/v141_CSharp.json
index fa483bf..7d1815d 100644
--- a/Templates/MSBuild/FlagTables/v141_CSharp.json
+++ b/Templates/MSBuild/FlagTables/v141_CSharp.json
@@ -133,11 +133,14 @@
     ]
   },
   {
-    "name":  "Win32Manifest",
+    "name":  "ApplicationManifest",
     "switch": "win32manifest:",
     "comment": "",
-    "value": "true",
-    "flags": []
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
   },
   {
     "name":  "NoWin32Manifest",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6c6c13297c67a7838ff8e05fde1bfedb41401b1d
commit 6c6c13297c67a7838ff8e05fde1bfedb41401b1d
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Mon Nov 26 07:50:53 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:29 2018 -0800

    MSVC: Add support for ARM64 architecture
    
    The v141_Link.json already appeared to have the option included, so
    onlyh adding the change to v14_LIB.json.
    
    Original header commit v3.10.0-rc1~132^2
    
    Visual Studio 15.4 adds support for this architecture.

diff --git a/Templates/MSBuild/FlagTables/v14_LIB.json b/Templates/MSBuild/FlagTables/v14_LIB.json
index 58a238c..5990ed1 100644
--- a/Templates/MSBuild/FlagTables/v14_LIB.json
+++ b/Templates/MSBuild/FlagTables/v14_LIB.json
@@ -36,6 +36,13 @@
   },
   {
     "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
     "switch": "MACHINE:EBC",
     "comment": "MachineEBC",
     "value": "MachineEBC",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=454b47ba0bd16a98b15896c732f9a4b91863b581
commit 454b47ba0bd16a98b15896c732f9a4b91863b581
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 13:32:54 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:29 2018 -0800

    VS: Fix MANIFESTUAC link flag map to .vcxproj elements
    
    Original header commit v3.10.0-rc1~97^2
    
    Add special parsing of the flags given in `/MANIFESTUAC:"..."` in order
    to map them correctly to `.vcxproj` elements.
    
    Keep the old incorrect flag table entries for `uiAccess` and `level`
    flags for compatibility even though they do not really exist.
    
    Fixes: #16563

diff --git a/Templates/MSBuild/FlagTables/v10_Link.json b/Templates/MSBuild/FlagTables/v10_Link.json
index 27003f8..ac5b8b1 100644
--- a/Templates/MSBuild/FlagTables/v10_Link.json
+++ b/Templates/MSBuild/FlagTables/v10_Link.json
@@ -533,20 +533,13 @@
   },
   {
     "name": "EnableUAC",
-    "switch": "MANIFESTUAC:NO",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
     "switch": "MANIFESTUAC:",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "true",
+    "comment": "",
+    "value": "",
     "flags": [
       "UserValue",
-      "UserIgnored",
-      "Continue"
+      "UserRequired",
+      "SpaceAppendable"
     ]
   },
   {
@@ -561,16 +554,6 @@
   },
   {
     "name": "UACUIAccess",
-    "switch": "MANIFESTUAC:",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
     "switch": "uiAccess='false'",
     "comment": "UAC Bypass UI Protection",
     "value": "false",
diff --git a/Templates/MSBuild/FlagTables/v11_Link.json b/Templates/MSBuild/FlagTables/v11_Link.json
index 75b9b19..5d5c13f 100644
--- a/Templates/MSBuild/FlagTables/v11_Link.json
+++ b/Templates/MSBuild/FlagTables/v11_Link.json
@@ -596,20 +596,13 @@
   },
   {
     "name": "EnableUAC",
-    "switch": "MANIFESTUAC:NO",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
     "switch": "MANIFESTUAC:",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "true",
+    "comment": "",
+    "value": "",
     "flags": [
       "UserValue",
-      "UserIgnored",
-      "Continue"
+      "UserRequired",
+      "SpaceAppendable"
     ]
   },
   {
@@ -624,16 +617,6 @@
   },
   {
     "name": "UACUIAccess",
-    "switch": "MANIFESTUAC:",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
     "switch": "uiAccess='false'",
     "comment": "UAC Bypass UI Protection",
     "value": "false",
diff --git a/Templates/MSBuild/FlagTables/v12_Link.json b/Templates/MSBuild/FlagTables/v12_Link.json
index 75b9b19..5d5c13f 100644
--- a/Templates/MSBuild/FlagTables/v12_Link.json
+++ b/Templates/MSBuild/FlagTables/v12_Link.json
@@ -596,20 +596,13 @@
   },
   {
     "name": "EnableUAC",
-    "switch": "MANIFESTUAC:NO",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
     "switch": "MANIFESTUAC:",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "true",
+    "comment": "",
+    "value": "",
     "flags": [
       "UserValue",
-      "UserIgnored",
-      "Continue"
+      "UserRequired",
+      "SpaceAppendable"
     ]
   },
   {
@@ -624,16 +617,6 @@
   },
   {
     "name": "UACUIAccess",
-    "switch": "MANIFESTUAC:",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
     "switch": "uiAccess='false'",
     "comment": "UAC Bypass UI Protection",
     "value": "false",
diff --git a/Templates/MSBuild/FlagTables/v140_Link.json b/Templates/MSBuild/FlagTables/v140_Link.json
index c2a18ef..3fb072c 100644
--- a/Templates/MSBuild/FlagTables/v140_Link.json
+++ b/Templates/MSBuild/FlagTables/v140_Link.json
@@ -639,20 +639,13 @@
   },
   {
     "name": "EnableUAC",
-    "switch": "MANIFESTUAC:NO",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
     "switch": "MANIFESTUAC:",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "true",
+    "comment": "",
+    "value": "",
     "flags": [
       "UserValue",
-      "UserIgnored",
-      "Continue"
+      "UserRequired",
+      "SpaceAppendable"
     ]
   },
   {
@@ -667,16 +660,6 @@
   },
   {
     "name": "UACUIAccess",
-    "switch": "MANIFESTUAC:",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
     "switch": "uiAccess='false'",
     "comment": "UAC Bypass UI Protection",
     "value": "false",
diff --git a/Templates/MSBuild/FlagTables/v141_Link.json b/Templates/MSBuild/FlagTables/v141_Link.json
index d5144c8..66ee76f 100644
--- a/Templates/MSBuild/FlagTables/v141_Link.json
+++ b/Templates/MSBuild/FlagTables/v141_Link.json
@@ -646,20 +646,13 @@
   },
   {
     "name": "EnableUAC",
-    "switch": "MANIFESTUAC:NO",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "EnableUAC",
     "switch": "MANIFESTUAC:",
-    "comment": "Enable User Account Control (UAC)",
-    "value": "true",
+    "comment": "",
+    "value": "",
     "flags": [
       "UserValue",
-      "UserIgnored",
-      "Continue"
+      "UserRequired",
+      "SpaceAppendable"
     ]
   },
   {
@@ -674,16 +667,6 @@
   },
   {
     "name": "UACUIAccess",
-    "switch": "MANIFESTUAC:",
-    "comment": "UAC Bypass UI Protection",
-    "value": "true",
-    "flags": [
-      "UserValue",
-      "UserRequired"
-    ]
-  },
-  {
-    "name": "UACUIAccess",
     "switch": "uiAccess='false'",
     "comment": "UAC Bypass UI Protection",
     "value": "false",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=57a78b55260616053ae0f733d2cecfffc9e7455f
commit 57a78b55260616053ae0f733d2cecfffc9e7455f
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 13:25:15 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:28 2018 -0800

    VS: Fix support for '/guard:cf' linker flag
    
    Original header commit v3.9.0-rc6~12^2
    
    Although `$(VCTargetsPath)/1033/link.xml` for v140 and v141 toolsets
    contains an entry for `LinkControlFlowGuard`, it does not work when used
    in a `.vcxproj` file.  Drop our link flag table entries for these
    toolsets so that the flag will be passed via `AdditionalOptions`.

diff --git a/Templates/MSBuild/FlagTables/v140_Link.json b/Templates/MSBuild/FlagTables/v140_Link.json
index cb69124..c2a18ef 100644
--- a/Templates/MSBuild/FlagTables/v140_Link.json
+++ b/Templates/MSBuild/FlagTables/v140_Link.json
@@ -540,13 +540,6 @@
     "flags": []
   },
   {
-    "name": "LinkControlFlowGuard",
-    "switch": "guard:cf",
-    "comment": "Enable Security Check with Guard",
-    "value": "Guard",
-    "flags": []
-  },
-  {
     "name": "LinkIncremental",
     "switch": "INCREMENTAL:NO",
     "comment": "Enable Incremental Linking",
diff --git a/Templates/MSBuild/FlagTables/v141_Link.json b/Templates/MSBuild/FlagTables/v141_Link.json
index c4fd8e3..d5144c8 100644
--- a/Templates/MSBuild/FlagTables/v141_Link.json
+++ b/Templates/MSBuild/FlagTables/v141_Link.json
@@ -547,13 +547,6 @@
     "flags": []
   },
   {
-    "name": "LinkControlFlowGuard",
-    "switch": "guard:cf",
-    "comment": "Enable Security Check with Guard",
-    "value": "Guard",
-    "flags": []
-  },
-  {
     "name": "LinkIncremental",
     "switch": "INCREMENTAL:NO",
     "comment": "Enable Incremental Linking",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f77320c12aaf74b7d22463965242a3e01d36d882
commit f77320c12aaf74b7d22463965242a3e01d36d882
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 13:23:22 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:28 2018 -0800

    VS: Add v140 and v141 flag table entries for /DEBUG:NONE and /DEBUG:FULL
    
    DEBUG:FULL was already added for v141 from the generation.
    
    Original header commit v3.9.0-rc6~15^2

diff --git a/Templates/MSBuild/FlagTables/v140_Link.json b/Templates/MSBuild/FlagTables/v140_Link.json
index 6f932e0..cb69124 100644
--- a/Templates/MSBuild/FlagTables/v140_Link.json
+++ b/Templates/MSBuild/FlagTables/v140_Link.json
@@ -137,6 +137,24 @@
     ]
   },
   {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Optimize for debugging",
+    "value": "true",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:NONE",
+    "comment": "Produces no debugging information",
+    "value": "false",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
     "name": "SubSystem",
     "switch": "",
     "comment": "Not Set",
diff --git a/Templates/MSBuild/FlagTables/v141_Link.json b/Templates/MSBuild/FlagTables/v141_Link.json
index 1033dfe..c4fd8e3 100644
--- a/Templates/MSBuild/FlagTables/v141_Link.json
+++ b/Templates/MSBuild/FlagTables/v141_Link.json
@@ -146,6 +146,15 @@
     ]
   },
   {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:NONE",
+    "comment": "Produces no debugging information",
+    "value": "false",
+    "flags": [
+      "CaseInsensitive"
+    ]
+  },
+  {
     "name": "SubSystem",
     "switch": "",
     "comment": "Not Set",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a5d9aa506350291cfe7ca3e144a97edba74959b1
commit a5d9aa506350291cfe7ca3e144a97edba74959b1
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 13:13:44 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:28 2018 -0800

    VS: Map the link `/debug` to its IDE property
    
    Fix issues with "GenerateDebugInformation". These
    are mostly from the following commits, but also
    include a related fix to the v140/v141 file.
    
    Original header commits:
     v10-v14 commit v3.5.0-rc1~71^2
     v140/v141 commit v3.9.0-rc6~15^2~1

diff --git a/Templates/MSBuild/FlagTables/v10_Link.json b/Templates/MSBuild/FlagTables/v10_Link.json
index dd07234..27003f8 100644
--- a/Templates/MSBuild/FlagTables/v10_Link.json
+++ b/Templates/MSBuild/FlagTables/v10_Link.json
@@ -588,7 +588,9 @@
     "switch": "DEBUG",
     "comment": "Generate Debug Info",
     "value": "true",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "GenerateMapFile",
diff --git a/Templates/MSBuild/FlagTables/v11_Link.json b/Templates/MSBuild/FlagTables/v11_Link.json
index 858526c..75b9b19 100644
--- a/Templates/MSBuild/FlagTables/v11_Link.json
+++ b/Templates/MSBuild/FlagTables/v11_Link.json
@@ -658,7 +658,9 @@
     "switch": "DEBUG",
     "comment": "Generate Debug Info",
     "value": "true",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "GenerateMapFile",
diff --git a/Templates/MSBuild/FlagTables/v12_Link.json b/Templates/MSBuild/FlagTables/v12_Link.json
index 858526c..75b9b19 100644
--- a/Templates/MSBuild/FlagTables/v12_Link.json
+++ b/Templates/MSBuild/FlagTables/v12_Link.json
@@ -658,7 +658,9 @@
     "switch": "DEBUG",
     "comment": "Generate Debug Info",
     "value": "true",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "GenerateMapFile",
diff --git a/Templates/MSBuild/FlagTables/v140_Link.json b/Templates/MSBuild/FlagTables/v140_Link.json
index 134f907..6f932e0 100644
--- a/Templates/MSBuild/FlagTables/v140_Link.json
+++ b/Templates/MSBuild/FlagTables/v140_Link.json
@@ -120,24 +120,21 @@
   },
   {
     "name": "GenerateDebugInformation",
-    "switch": "",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
     "switch": "DEBUG",
     "comment": "Optimize for debugging",
     "value": "true",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "GenerateDebugInformation",
     "switch": "DEBUG:FASTLINK",
     "comment": "Optimize for faster linking",
     "value": "DebugFastLink",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "SubSystem",
diff --git a/Templates/MSBuild/FlagTables/v141_Link.json b/Templates/MSBuild/FlagTables/v141_Link.json
index 481468e..1033dfe 100644
--- a/Templates/MSBuild/FlagTables/v141_Link.json
+++ b/Templates/MSBuild/FlagTables/v141_Link.json
@@ -120,31 +120,30 @@
   },
   {
     "name": "GenerateDebugInformation",
-    "switch": "",
-    "comment": "No",
-    "value": "false",
-    "flags": []
-  },
-  {
-    "name": "GenerateDebugInformation",
     "switch": "DEBUG",
     "comment": "Generate Debug Information",
     "value": "true",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "GenerateDebugInformation",
     "switch": "DEBUG:FASTLINK",
     "comment": "Generate Debug Information optimized for faster links",
     "value": "DebugFastLink",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "GenerateDebugInformation",
     "switch": "DEBUG:FULL",
     "comment": "Generate Debug Information optimized for sharing and publishing",
     "value": "DebugFull",
-    "flags": []
+    "flags": [
+      "CaseInsensitive"
+    ]
   },
   {
     "name": "SubSystem",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1d00fd7702d9cf9c1f2d7a1c17bc9a80f345c39b
commit 1d00fd7702d9cf9c1f2d7a1c17bc9a80f345c39b
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 12:49:03 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:28 2018 -0800

    VS: Fix /MANIFESTUAC:NO linker option mapping
    
    Original header commits:
     v10/v11/v12 commit v3.0.0-rc5~3^2
     v140 commit v3.1.0-rc1~358^2~3
    
    There are no versions of /MANIFESTUAC:NO where addition values are
    appended.  Remove both of the MANIFESTUAC:NO entries from our flag
    tables and replace them with one which would set EnableUAC to false and
    immediately stop processing the /MANIFESTUAC:NO option.

diff --git a/Templates/MSBuild/FlagTables/v10_Link.json b/Templates/MSBuild/FlagTables/v10_Link.json
index b4f6d9f..dd07234 100644
--- a/Templates/MSBuild/FlagTables/v10_Link.json
+++ b/Templates/MSBuild/FlagTables/v10_Link.json
@@ -536,11 +536,7 @@
     "switch": "MANIFESTUAC:NO",
     "comment": "Enable User Account Control (UAC)",
     "value": "false",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
+    "flags": []
   },
   {
     "name": "EnableUAC",
diff --git a/Templates/MSBuild/FlagTables/v11_Link.json b/Templates/MSBuild/FlagTables/v11_Link.json
index 6829abb..858526c 100644
--- a/Templates/MSBuild/FlagTables/v11_Link.json
+++ b/Templates/MSBuild/FlagTables/v11_Link.json
@@ -599,11 +599,7 @@
     "switch": "MANIFESTUAC:NO",
     "comment": "Enable User Account Control (UAC)",
     "value": "false",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
+    "flags": []
   },
   {
     "name": "EnableUAC",
diff --git a/Templates/MSBuild/FlagTables/v12_Link.json b/Templates/MSBuild/FlagTables/v12_Link.json
index 6829abb..858526c 100644
--- a/Templates/MSBuild/FlagTables/v12_Link.json
+++ b/Templates/MSBuild/FlagTables/v12_Link.json
@@ -599,11 +599,7 @@
     "switch": "MANIFESTUAC:NO",
     "comment": "Enable User Account Control (UAC)",
     "value": "false",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
+    "flags": []
   },
   {
     "name": "EnableUAC",
diff --git a/Templates/MSBuild/FlagTables/v140_Link.json b/Templates/MSBuild/FlagTables/v140_Link.json
index 7ccc41b..134f907 100644
--- a/Templates/MSBuild/FlagTables/v140_Link.json
+++ b/Templates/MSBuild/FlagTables/v140_Link.json
@@ -634,11 +634,7 @@
     "switch": "MANIFESTUAC:NO",
     "comment": "Enable User Account Control (UAC)",
     "value": "false",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
+    "flags": []
   },
   {
     "name": "EnableUAC",
diff --git a/Templates/MSBuild/FlagTables/v141_Link.json b/Templates/MSBuild/FlagTables/v141_Link.json
index acdb5ac..481468e 100644
--- a/Templates/MSBuild/FlagTables/v141_Link.json
+++ b/Templates/MSBuild/FlagTables/v141_Link.json
@@ -648,11 +648,7 @@
     "switch": "MANIFESTUAC:NO",
     "comment": "Enable User Account Control (UAC)",
     "value": "false",
-    "flags": [
-      "UserValue",
-      "UserIgnored",
-      "Continue"
-    ]
+    "flags": []
   },
   {
     "name": "EnableUAC",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3133fa50948d3f2369a9e5b598ff6537ff7506df
commit 3133fa50948d3f2369a9e5b598ff6537ff7506df
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 11:17:45 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:28 2018 -0800

    VS: Manually fix MASM flag table entries
    
    Original header commit v3.1.0-rc1~154^2~5
    
    Drop '"[value]"' placeholders.

diff --git a/Templates/MSBuild/FlagTables/v10_MASM.json b/Templates/MSBuild/FlagTables/v10_MASM.json
index 51a48c8..4634306 100644
--- a/Templates/MSBuild/FlagTables/v10_MASM.json
+++ b/Templates/MSBuild/FlagTables/v10_MASM.json
@@ -246,7 +246,7 @@
   },
   {
     "name": "PreprocessorDefinitions",
-    "switch": "D\"[value]\"",
+    "switch": "D",
     "comment": "Preprocessor Definitions",
     "value": "",
     "flags": [
@@ -256,7 +256,7 @@
   },
   {
     "name": "IncludePaths",
-    "switch": "I \"[value]\"",
+    "switch": "I",
     "comment": "Include Paths",
     "value": "",
     "flags": [
@@ -266,7 +266,7 @@
   },
   {
     "name": "BrowseFile",
-    "switch": "FR\"[value]\"",
+    "switch": "FR",
     "comment": "Generate Browse Information File",
     "value": "",
     "flags": [
@@ -276,7 +276,7 @@
   },
   {
     "name": "ObjectFileName",
-    "switch": "Fo\"[value]\"",
+    "switch": "Fo",
     "comment": "Object File Name",
     "value": "",
     "flags": [
@@ -285,7 +285,7 @@
   },
   {
     "name": "AssembledCodeListingFile",
-    "switch": "Fl\"[value]\"",
+    "switch": "Fl",
     "comment": "Assembled Code Listing File",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v11_MASM.json b/Templates/MSBuild/FlagTables/v11_MASM.json
index 51a48c8..4634306 100644
--- a/Templates/MSBuild/FlagTables/v11_MASM.json
+++ b/Templates/MSBuild/FlagTables/v11_MASM.json
@@ -246,7 +246,7 @@
   },
   {
     "name": "PreprocessorDefinitions",
-    "switch": "D\"[value]\"",
+    "switch": "D",
     "comment": "Preprocessor Definitions",
     "value": "",
     "flags": [
@@ -256,7 +256,7 @@
   },
   {
     "name": "IncludePaths",
-    "switch": "I \"[value]\"",
+    "switch": "I",
     "comment": "Include Paths",
     "value": "",
     "flags": [
@@ -266,7 +266,7 @@
   },
   {
     "name": "BrowseFile",
-    "switch": "FR\"[value]\"",
+    "switch": "FR",
     "comment": "Generate Browse Information File",
     "value": "",
     "flags": [
@@ -276,7 +276,7 @@
   },
   {
     "name": "ObjectFileName",
-    "switch": "Fo\"[value]\"",
+    "switch": "Fo",
     "comment": "Object File Name",
     "value": "",
     "flags": [
@@ -285,7 +285,7 @@
   },
   {
     "name": "AssembledCodeListingFile",
-    "switch": "Fl\"[value]\"",
+    "switch": "Fl",
     "comment": "Assembled Code Listing File",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v12_MASM.json b/Templates/MSBuild/FlagTables/v12_MASM.json
index 51a48c8..4634306 100644
--- a/Templates/MSBuild/FlagTables/v12_MASM.json
+++ b/Templates/MSBuild/FlagTables/v12_MASM.json
@@ -246,7 +246,7 @@
   },
   {
     "name": "PreprocessorDefinitions",
-    "switch": "D\"[value]\"",
+    "switch": "D",
     "comment": "Preprocessor Definitions",
     "value": "",
     "flags": [
@@ -256,7 +256,7 @@
   },
   {
     "name": "IncludePaths",
-    "switch": "I \"[value]\"",
+    "switch": "I",
     "comment": "Include Paths",
     "value": "",
     "flags": [
@@ -266,7 +266,7 @@
   },
   {
     "name": "BrowseFile",
-    "switch": "FR\"[value]\"",
+    "switch": "FR",
     "comment": "Generate Browse Information File",
     "value": "",
     "flags": [
@@ -276,7 +276,7 @@
   },
   {
     "name": "ObjectFileName",
-    "switch": "Fo\"[value]\"",
+    "switch": "Fo",
     "comment": "Object File Name",
     "value": "",
     "flags": [
@@ -285,7 +285,7 @@
   },
   {
     "name": "AssembledCodeListingFile",
-    "switch": "Fl\"[value]\"",
+    "switch": "Fl",
     "comment": "Assembled Code Listing File",
     "value": "",
     "flags": [
diff --git a/Templates/MSBuild/FlagTables/v14_MASM.json b/Templates/MSBuild/FlagTables/v14_MASM.json
index 51a48c8..4634306 100644
--- a/Templates/MSBuild/FlagTables/v14_MASM.json
+++ b/Templates/MSBuild/FlagTables/v14_MASM.json
@@ -246,7 +246,7 @@
   },
   {
     "name": "PreprocessorDefinitions",
-    "switch": "D\"[value]\"",
+    "switch": "D",
     "comment": "Preprocessor Definitions",
     "value": "",
     "flags": [
@@ -256,7 +256,7 @@
   },
   {
     "name": "IncludePaths",
-    "switch": "I \"[value]\"",
+    "switch": "I",
     "comment": "Include Paths",
     "value": "",
     "flags": [
@@ -266,7 +266,7 @@
   },
   {
     "name": "BrowseFile",
-    "switch": "FR\"[value]\"",
+    "switch": "FR",
     "comment": "Generate Browse Information File",
     "value": "",
     "flags": [
@@ -276,7 +276,7 @@
   },
   {
     "name": "ObjectFileName",
-    "switch": "Fo\"[value]\"",
+    "switch": "Fo",
     "comment": "Object File Name",
     "value": "",
     "flags": [
@@ -285,7 +285,7 @@
   },
   {
     "name": "AssembledCodeListingFile",
-    "switch": "Fl\"[value]\"",
+    "switch": "Fl",
     "comment": "Assembled Code Listing File",
     "value": "",
     "flags": [

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=66704e4271f3bd3b869c86bcd9aef9be87f831ea
commit 66704e4271f3bd3b869c86bcd9aef9be87f831ea
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 11:03:33 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:27 2018 -0800

    VS: Add NASM fwin/felf switches
    
    The generated NASM file from the xml does not contain the fwin/felf
    switches that don't seem to directly exist in the xml file.

diff --git a/Templates/MSBuild/FlagTables/v10_NASM.json b/Templates/MSBuild/FlagTables/v10_NASM.json
index 8c18eb2..434cd63 100644
--- a/Templates/MSBuild/FlagTables/v10_NASM.json
+++ b/Templates/MSBuild/FlagTables/v10_NASM.json
@@ -1,6 +1,13 @@
 [
   {
     "name": "Outputswitch",
+    "switch": "fwin",
+    "comment": "Object File win32",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "Outputswitch",
     "switch": "fwin32",
     "comment": "Object File win32",
     "value": "0",
@@ -15,6 +22,13 @@
   },
   {
     "name": "Outputswitch",
+    "switch": "felf",
+    "comment": "ELF32 (i386) object files (e.g. Linux)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "Outputswitch",
     "switch": "felf32",
     "comment": "ELF32 (i386) object files (e.g. Linux)",
     "value": "2",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fc58a40e763cd65053acf774c3cf4e4c743004f1
commit fc58a40e763cd65053acf774c3cf4e4c743004f1
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 11:07:27 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:27 2018 -0800

    VS: Manually fix generated NASM flag table
    
    Drop '"[value]"' placeholders.

diff --git a/Templates/MSBuild/FlagTables/v10_NASM.json b/Templates/MSBuild/FlagTables/v10_NASM.json
index eb85edf..8c18eb2 100644
--- a/Templates/MSBuild/FlagTables/v10_NASM.json
+++ b/Templates/MSBuild/FlagTables/v10_NASM.json
@@ -127,7 +127,7 @@
   },
   {
     "name": "AssembledCodeListingFile",
-    "switch": "l \"[value]\"",
+    "switch": "l",
     "comment": "Assembled Code Listing File",
     "value": "",
     "flags": [
@@ -137,7 +137,7 @@
   },
   {
     "name": "ErrorReporting",
-    "switch": "Z \"[value]\"",
+    "switch": "Z",
     "comment": "Redirect Error Messages to File",
     "value": "",
     "flags": [
@@ -147,7 +147,7 @@
   },
   {
     "name": "IncludePaths",
-    "switch": "I\"[value]\"",
+    "switch": "I",
     "comment": "Include Paths",
     "value": "",
     "flags": [
@@ -157,7 +157,7 @@
   },
   {
     "name": "PreprocessorDefinitions",
-    "switch": "D\"[value]\"",
+    "switch": "D",
     "comment": "Preprocessor Definitions",
     "value": "",
     "flags": [
@@ -167,7 +167,7 @@
   },
   {
     "name": "UndefinePreprocessorDefinitions",
-    "switch": "U\"[value]\"",
+    "switch": "U",
     "comment": "Undefine Preprocessor Definitions",
     "value": "",
     "flags": [
@@ -177,7 +177,7 @@
   },
   {
     "name": "OutputFormat",
-    "switch": "o \"[value]\"",
+    "switch": "o",
     "comment": "Output File Name",
     "value": "",
     "flags": [

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7fd339b1e5a23d8e04fe3b4607be260bf26a3ec4
commit 7fd339b1e5a23d8e04fe3b4607be260bf26a3ec4
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 10:11:24 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:27 2018 -0800

    VS: Add CUDA flag table entry for -maxrregcount
    
    Original header commit v3.12.0-rc2~10^2

diff --git a/Templates/MSBuild/FlagTables/v10_Cuda.json b/Templates/MSBuild/FlagTables/v10_Cuda.json
index 1a01f8d..1831b8a 100644
--- a/Templates/MSBuild/FlagTables/v10_Cuda.json
+++ b/Templates/MSBuild/FlagTables/v10_Cuda.json
@@ -202,5 +202,23 @@
     "comment": "",
     "value": "true",
     "flags": []
+  },
+  {
+    "name":  "MaxRegCount",
+    "switch": "maxrregcount=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "MaxRegCount",
+    "switch": "maxrregcount",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
   }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f61e0975540504c00c7dc6f763a83e8c74fe7d83
commit f61e0975540504c00c7dc6f763a83e8c74fe7d83
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 10:09:52 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:27 2018 -0800

    VS: Add more CUDA flag table entries
    
    Original header commit v3.9.0-rc1~431^2~2

diff --git a/Templates/MSBuild/FlagTables/v10_Cuda.json b/Templates/MSBuild/FlagTables/v10_Cuda.json
index ac853af..1a01f8d 100644
--- a/Templates/MSBuild/FlagTables/v10_Cuda.json
+++ b/Templates/MSBuild/FlagTables/v10_Cuda.json
@@ -160,5 +160,47 @@
     "flags": [
       "UserFollowing"
     ]
+  },
+  {
+    "name":  "FastMath",
+    "switch": "use_fast_math",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FastMath",
+    "switch": "-use_fast_math",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "GPUDebugInfo",
+    "switch": "G",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "GPUDebugInfo",
+    "switch": "-device-debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "HostDebugInfo",
+    "switch": "g",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "HostDebugInfo",
+    "switch": "-debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
   }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c17809bcd7014bf64cd9f95d9e38d5198abc4588
commit c17809bcd7014bf64cd9f95d9e38d5198abc4588
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 10:07:35 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:27 2018 -0800

    VS: Select CUDA code generation architectures
    
    Original header commit v3.9.0-rc1~431^2~4
    
    Parse the `-gencode=`, `-arch`, and `-code` flags and generate a
    `CodeGeneration` field in the project file.

diff --git a/Templates/MSBuild/FlagTables/v10_Cuda.json b/Templates/MSBuild/FlagTables/v10_Cuda.json
index 5f6b0da..ac853af 100644
--- a/Templates/MSBuild/FlagTables/v10_Cuda.json
+++ b/Templates/MSBuild/FlagTables/v10_Cuda.json
@@ -48,5 +48,117 @@
     "flags": [
       "UserFollowing"
     ]
+  },
+  {
+    "name":  "cmake-temp-gencode",
+    "switch": "gencode=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "cmake-temp-gencode",
+    "switch": "gencode",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "cmake-temp-gencode",
+    "switch": "-generate-code=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "cmake-temp-gencode",
+    "switch": "-generate-code",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "cmake-temp-code",
+    "switch": "code=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "cmake-temp-code",
+    "switch": "code",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name":  "cmake-temp-code",
+    "switch": "-gpu-code=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "cmake-temp-code",
+    "switch": "-gpu-code",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name":  "cmake-temp-arch",
+    "switch": "arch=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "cmake-temp-arch",
+    "switch": "arch",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
+  },
+  {
+    "name":  "cmake-temp-arch",
+    "switch": "-gpu-architecture=",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "cmake-temp-arch",
+    "switch": "-gpu-architecture",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
   }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=73ce99cbfe5712b0f35644baf619ddc0ca754de9
commit 73ce99cbfe5712b0f35644baf619ddc0ca754de9
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 10:04:30 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:26 2018 -0800

    VS: Select the CUDA runtime library
    
    Original header commit v3.9.0-rc1~431^2~5
    
    Parse the `-cudart=` option and add a corresponding `CudaRuntime`
    field to the generated project file.  Also add a matching `.lib`
    to the list of libraries linked.

diff --git a/Templates/MSBuild/FlagTables/v10_Cuda.json b/Templates/MSBuild/FlagTables/v10_Cuda.json
index ab63367..5f6b0da 100644
--- a/Templates/MSBuild/FlagTables/v10_Cuda.json
+++ b/Templates/MSBuild/FlagTables/v10_Cuda.json
@@ -18,5 +18,35 @@
       "UserFollowing",
       "SpaceAppendable"
     ]
+  },
+  {
+    "name":  "CudaRuntime",
+    "switch": "cudart=none",
+    "comment": "No CUDA runtime library",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name":  "CudaRuntime",
+    "switch": "cudart=shared",
+    "comment": "Shared/dynamic CUDA runtime library",
+    "value": "Shared",
+    "flags": []
+  },
+  {
+    "name":  "CudaRuntime",
+    "switch": "cudart=static",
+    "comment": "Static CUDA runtime library",
+    "value": "Static",
+    "flags": []
+  },
+  {
+    "name":  "CudaRuntime",
+    "switch": "cudart",
+    "comment": "CUDA runtime library",
+    "value": "",
+    "flags": [
+      "UserFollowing"
+    ]
   }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f044bbbf08575cb06f468f30680108162d7288d0
commit f044bbbf08575cb06f468f30680108162d7288d0
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 09:53:55 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:26 2018 -0800

    VS: Place CUDA host compiler options in proper project file fields
    
    Original header commit v3.9.0-rc1~431^2~6
    
    The CUDA Toolkit's VS integration provides abstractions for host
    compiler options for `nvcc` to pass through `-Xcompiler` to the host
    MSVC.  Populate our secondary flag table and use it to remove flags from
    the `AdditionalCompilerOptions` in favor of their abstractions.
    
    Unfortunately a bug in the CUDA 8.0 VS integration prevents us from
    passing anything in `AdditionalCompilerOptions` reliably.  After taking
    out the flags that have dedicated abstractions, drop the rest.

diff --git a/Templates/MSBuild/FlagTables/v10_Cuda.json b/Templates/MSBuild/FlagTables/v10_Cuda.json
index 0d4f101..ab63367 100644
--- a/Templates/MSBuild/FlagTables/v10_Cuda.json
+++ b/Templates/MSBuild/FlagTables/v10_Cuda.json
@@ -1,2 +1,22 @@
 [
+  {
+    "name":  "AdditionalCompilerOptions",
+    "switch": "Xcompiler=",
+    "comment": "Host compiler options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SpaceAppendable"
+    ]
+  },
+  {
+    "name":  "AdditionalCompilerOptions",
+    "switch": "Xcompiler",
+    "comment": "Host compiler options",
+    "value": "",
+    "flags": [
+      "UserFollowing",
+      "SpaceAppendable"
+    ]
+  }
 ]
diff --git a/Templates/MSBuild/FlagTables/v10_CudaHost.json b/Templates/MSBuild/FlagTables/v10_CudaHost.json
index 0d4f101..2593ff1 100644
--- a/Templates/MSBuild/FlagTables/v10_CudaHost.json
+++ b/Templates/MSBuild/FlagTables/v10_CudaHost.json
@@ -1,2 +1,149 @@
 [
+  {
+    "name":  "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Od",
+    "flags": []
+  },
+  {
+    "name":  "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "O1",
+    "flags": []
+  },
+  {
+    "name":  "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "O2",
+    "flags": []
+  },
+  {
+    "name":  "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "O3",
+    "flags": []
+  },
+  {
+    "name":  "Runtime",
+    "switch": "MT",
+    "comment": "Multi-Threaded",
+    "value": "MT",
+    "flags": []
+  },
+  {
+    "name":  "Runtime",
+    "switch": "MTd",
+    "comment": "Multi-Threaded Debug",
+    "value": "MTd",
+    "flags": []
+  },
+  {
+    "name":  "Runtime",
+    "switch": "MD",
+    "comment": "Multi-Threaded DLL",
+    "value": "MD",
+    "flags": []
+  },
+  {
+    "name":  "Runtime",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MDd",
+    "flags": []
+  },
+  {
+    "name":  "Runtime",
+    "switch": "ML",
+    "comment": "Single-Threaded",
+    "value": "ML",
+    "flags": []
+  },
+  {
+    "name":  "Runtime",
+    "switch": "MLd",
+    "comment": "Single-Threaded Debug",
+    "value": "MLd",
+    "flags": []
+  },
+  {
+    "name":  "RuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "RTCs",
+    "flags": []
+  },
+  {
+    "name":  "RuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized Variables",
+    "value": "RTCu",
+    "flags": []
+  },
+  {
+    "name":  "RuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both",
+    "value": "RTC1",
+    "flags": []
+  },
+  {
+    "name":  "TypeInfo",
+    "switch": "GR",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TypeInfo",
+    "switch": "GR-",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Warning",
+    "switch": "W0",
+    "comment": "Off: Turn Off All Warnings",
+    "value": "W0",
+    "flags": []
+  },
+  {
+    "name":  "Warning",
+    "switch": "W1",
+    "comment": "Level 1",
+    "value": "W1",
+    "flags": []
+  },
+  {
+    "name":  "Warning",
+    "switch": "W2",
+    "comment": "Level 2",
+    "value": "W2",
+    "flags": []
+  },
+  {
+    "name":  "Warning",
+    "switch": "W3",
+    "comment": "Level 3",
+    "value": "W3",
+    "flags": []
+  },
+  {
+    "name":  "Warning",
+    "switch": "W4",
+    "comment": "Level 4",
+    "value": "W4",
+    "flags": []
+  },
+  {
+    "name":  "Warning",
+    "switch": "Wall",
+    "comment": "Enable All Warnings",
+    "value": "Wall",
+    "flags": []
+  }
 ]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7faa4d59a858ef0d7eef77c2ae8e8194c2d87385
commit 7faa4d59a858ef0d7eef77c2ae8e8194c2d87385
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 09:31:00 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:26 2018 -0800

    Add placeholder CUDA json flag tables
    
    Generate json flag tables from initial placeholder headers
    
    Original header commit v3.9.0-rc1~431^2~10
    
    The CUDA Toolkit's VS integration defines abstractions for both options
    to `nvcc` and options to pass through `-Xcompiler` to the host MSVC.
    We need a separate flag table to parse each set of flags into the
    corresponding abstractions.  Add empty placeholders for these tables.

diff --git a/Templates/MSBuild/FlagTables/v10_Cuda.json b/Templates/MSBuild/FlagTables/v10_Cuda.json
new file mode 100644
index 0000000..0d4f101
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_Cuda.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/Templates/MSBuild/FlagTables/v10_CudaHost.json b/Templates/MSBuild/FlagTables/v10_CudaHost.json
new file mode 100644
index 0000000..0d4f101
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_CudaHost.json
@@ -0,0 +1,2 @@
+[
+]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e947179a84cb790616aa038e9bf127e306ad746
commit 6e947179a84cb790616aa038e9bf127e306ad746
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 09:19:03 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:26 2018 -0800

    Add json flag tables for C#
    
    Generate initial json flag tables for C# based on the initial
    headers.
    
    Original header commit v3.8.0-rc1~230^2
    
    Add these (currently unused) tables in preparation for `.csproj`
    generation support.  Populate the tables for every version with a set of
    initial values that work well for me with VS 12 and VS 14.  Later we may
    need to generate them more thoroughly from MSBuild `.xml` files.

diff --git a/Templates/MSBuild/FlagTables/v10_CSharp.json b/Templates/MSBuild/FlagTables/v10_CSharp.json
new file mode 100644
index 0000000..fa483bf
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_CSharp.json
@@ -0,0 +1,567 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Win32Manifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "DisabledWarnings",
+    "switch": "nowarn",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-1",
+    "comment": "",
+    "value": "ISO-1",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-2",
+    "comment": "",
+    "value": "ISO-2",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:5",
+    "comment": "",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:6",
+    "comment": "",
+    "value": "6",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:default",
+    "comment": "",
+    "value": "default",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v11_CSharp.json b/Templates/MSBuild/FlagTables/v11_CSharp.json
new file mode 100644
index 0000000..fa483bf
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v11_CSharp.json
@@ -0,0 +1,567 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Win32Manifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "DisabledWarnings",
+    "switch": "nowarn",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-1",
+    "comment": "",
+    "value": "ISO-1",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-2",
+    "comment": "",
+    "value": "ISO-2",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:5",
+    "comment": "",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:6",
+    "comment": "",
+    "value": "6",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:default",
+    "comment": "",
+    "value": "default",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v12_CSharp.json b/Templates/MSBuild/FlagTables/v12_CSharp.json
new file mode 100644
index 0000000..fa483bf
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v12_CSharp.json
@@ -0,0 +1,567 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Win32Manifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "DisabledWarnings",
+    "switch": "nowarn",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-1",
+    "comment": "",
+    "value": "ISO-1",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-2",
+    "comment": "",
+    "value": "ISO-2",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:5",
+    "comment": "",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:6",
+    "comment": "",
+    "value": "6",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:default",
+    "comment": "",
+    "value": "default",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v140_CSharp.json b/Templates/MSBuild/FlagTables/v140_CSharp.json
new file mode 100644
index 0000000..fa483bf
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v140_CSharp.json
@@ -0,0 +1,567 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Win32Manifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "DisabledWarnings",
+    "switch": "nowarn",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-1",
+    "comment": "",
+    "value": "ISO-1",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-2",
+    "comment": "",
+    "value": "ISO-2",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:5",
+    "comment": "",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:6",
+    "comment": "",
+    "value": "6",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:default",
+    "comment": "",
+    "value": "default",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v141_CSharp.json b/Templates/MSBuild/FlagTables/v141_CSharp.json
new file mode 100644
index 0000000..fa483bf
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v141_CSharp.json
@@ -0,0 +1,567 @@
+[
+  {
+    "name":  "ProjectName",
+    "switch": "out:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:exe",
+    "comment": "",
+    "value": "Exe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:winexe",
+    "comment": "",
+    "value": "Winexe",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:library",
+    "comment": "",
+    "value": "Library",
+    "flags": []
+  },
+  {
+    "name":  "OutputType",
+    "switch": "target:module",
+    "comment": "",
+    "value": "Module",
+    "flags": []
+  },
+  {
+    "name":  "DocumentationFile",
+    "switch": "doc",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x86",
+    "comment": "",
+    "value": "x86",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:Itanium",
+    "comment": "",
+    "value": "Itanium",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:x64",
+    "comment": "",
+    "value": "x64",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:arm",
+    "comment": "",
+    "value": "arm",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu32bitpreferred",
+    "comment": "",
+    "value": "anycpu32bitpreferred",
+    "flags": []
+  },
+  {
+    "name":  "Platform",
+    "switch": "platform:anycpu",
+    "comment": "",
+    "value": "anycpu",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "mit alias",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "References",
+    "switch": "reference:",
+    "comment": "dateiliste",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AddModules",
+    "switch": "addmodule:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name":  "Win32Resource",
+    "switch": "win32res",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "ApplicationIcon",
+    "switch": "win32icon",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name":  "Win32Manifest",
+    "switch": "win32manifest:",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoWin32Manifest",
+    "switch": "nowin32manifest",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineDebug",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": [
+      "Continue"
+    ]
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DebugSymbols",
+    "switch": "debug+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:none",
+    "comment": "",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:full",
+    "comment": "",
+    "value": "full",
+    "flags": []
+  },
+  {
+    "name":  "DebugType",
+    "switch": "debug:pdbonly",
+    "comment": "",
+    "value": "pdbonly",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "Optimize",
+    "switch": "optimize+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "TreatWarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror-",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningsAsErrors",
+    "switch": "warnaserror+",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:0",
+    "comment": "",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:1",
+    "comment": "",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:2",
+    "comment": "",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "WarningLevel",
+    "switch": "warn:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "DisabledWarnings",
+    "switch": "nowarn",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "CheckForOverflowUnderflow",
+    "switch": "checked+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "AllowUnsafeBlocks",
+    "switch": "unsafe+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DefineConstants",
+    "switch": "define:",
+    "comment": "",
+    "value": "",
+    "flags": [
+      "SemicolonAppendable",
+      "UserValue"
+    ]
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-1",
+    "comment": "",
+    "value": "ISO-1",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:ISO-2",
+    "comment": "",
+    "value": "ISO-2",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:3",
+    "comment": "",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:4",
+    "comment": "",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:5",
+    "comment": "",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:6",
+    "comment": "",
+    "value": "6",
+    "flags": []
+  },
+  {
+    "name":  "LangVersion",
+    "switch": "langversion:default",
+    "comment": "",
+    "value": "default",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "DelaySign",
+    "switch": "delaysign+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "AssemblyOriginatorKeyFile",
+    "switch": "keyfile",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "KeyContainerName",
+    "switch": "keycontainer",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoLogo",
+    "switch": "nologo",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoConfig",
+    "switch": "noconfig",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "BaseAddress",
+    "switch": "baseaddress:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "CodePage",
+    "switch": "codepage",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "Utf8Output",
+    "switch": "utf8output",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "MainEntryPoint",
+    "switch": "main:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "GenerateFullPaths",
+    "switch": "fullpaths",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "FileAlignment",
+    "switch": "filealign",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "PdbFile",
+    "switch": "pdb:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib-",
+    "comment": "",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name":  "NoStandardLib",
+    "switch": "nostdlib+",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name":  "SubsystemVersion",
+    "switch": "subsystemversion",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "AdditionalLibPaths",
+    "switch": "lib:",
+    "comment": "",
+    "value": "",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:none",
+    "comment": "Do Not Send Report",
+    "value": "none",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "prompt",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:queue",
+    "comment": "Queue For Next Login",
+    "value": "queue",
+    "flags": []
+  },
+  {
+    "name":  "ErrorReport",
+    "switch": "errorreport:send",
+    "comment": "Send Automatically",
+    "value": "send",
+    "flags": []
+  }
+]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2f37ce5e8656dabab304453b15684d60e7a2338c
commit 2f37ce5e8656dabab304453b15684d60e7a2338c
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 21 08:40:55 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:26 2018 -0800

    Add initial NASM flag table json
    
    Generated from the nasm.xml provided by CMake.
    
    python cmConvertMSBuildXMLToJSON.py -t v10 ...\Templates\MSBuild\nasm.xml

diff --git a/Templates/MSBuild/FlagTables/v10_NASM.json b/Templates/MSBuild/FlagTables/v10_NASM.json
new file mode 100644
index 0000000..eb85edf
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_NASM.json
@@ -0,0 +1,187 @@
+[
+  {
+    "name": "Outputswitch",
+    "switch": "fwin32",
+    "comment": "Object File win32",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "Outputswitch",
+    "switch": "fwin64",
+    "comment": "Object File win64",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "Outputswitch",
+    "switch": "felf32",
+    "comment": "ELF32 (i386) object files (e.g. Linux)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "Outputswitch",
+    "switch": "felf64",
+    "comment": "ELF64 (x86_64) object files (e.g. Linux)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReportingFormat",
+    "switch": "Xgnu",
+    "comment": "-Xgnu GNU format: Default format",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReportingFormat",
+    "switch": "Xvc",
+    "comment": "-Xvc Style used by Microsoft Visual C++",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "tasmmode",
+    "switch": "t",
+    "comment": "SciTech TASM compatible mode",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "g",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "Werror",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "floatunderflow",
+    "switch": "w+float-underflow",
+    "comment": "float-underflow",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "macrodefaults",
+    "switch": "w-macro-defaults",
+    "comment": "Disable macro-defaults",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "user",
+    "switch": "w-user",
+    "comment": "Disable user",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "floatoverflow",
+    "switch": "w-float-overflow",
+    "comment": "Disable float-overflow",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "floatdenorm",
+    "switch": "w+float-denorm",
+    "comment": "float-denorm",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "numberoverflow",
+    "switch": "w-number-overflow",
+    "comment": "Disable number-overflow",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "macroselfref",
+    "switch": "w+macro-selfref",
+    "comment": "macro-selfref",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "floattoolong",
+    "switch": "w-float-toolong",
+    "comment": "Disable float-toolong",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "orphanlabels",
+    "switch": "w-orphan-labels",
+    "comment": "Disable orphan-labels",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "l \"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "Z \"[value]\"",
+    "comment": "Redirect Error Messages to File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I\"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U\"[value]\"",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFormat",
+    "switch": "o \"[value]\"",
+    "comment": "Output File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a84461160c927279de0435223c35c539e6e22f0e
commit a84461160c927279de0435223c35c539e6e22f0e
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Tue Nov 20 17:09:37 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:25 2018 -0800

    Add CL, LIB, Link, MASM, RC flag json
    
    Adding flag json files generated from MSVC xml files.
    
    python cmConvertMSBuildXMLToJSON.py -t v10 "...\MSBuild\Microsoft.Cpp\v4.0\1033\cl.xml"
    python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\1033\cl.xml"
    python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\1033\cl.xml"
    python cmConvertMSBuildXMLToJSON.py -t v140 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\1033\cl.xml"
    python cmConvertMSBuildXMLToJSON.py -t v141 "C:\...\Common7\IDE\VC\VCTargets"\1033\cl.xml"
    
    python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\rc.xml
    python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v110\1033\rc.xml
    python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v120\1033\rc.xml
    python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v140\1033\rc.xml
    
    python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\lib.xml
    python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v110\1033\lib.xml
    python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v120\1033\lib.xml
    python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\v140\1033\lib.xml
    
    python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\1033\link.xml"
    python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\1033\link.xml"
    python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\1033\link.xml"
    python cmConvertMSBuildXMLToJSON.py -t v140 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\1033\link.xml"
    python cmConvertMSBuildXMLToJSON.py -t v141 "C:\...\Common7\IDE\VC\VCTargets"\1033\link.xml"
    
    python cmConvertMSBuildXMLToJSON.py -t v10 "c:\...\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\masm.xml"
    python cmConvertMSBuildXMLToJSON.py -t v11 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\masm.xml"
    python cmConvertMSBuildXMLToJSON.py -t v12 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\masm.xml"
    python cmConvertMSBuildXMLToJSON.py -t v14 "c:\...\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\masm.xml"

diff --git a/Templates/MSBuild/FlagTables/v10_CL.json b/Templates/MSBuild/FlagTables/v10_CL.json
new file mode 100644
index 0000000..928e541
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_CL.json
@@ -0,0 +1,981 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:oldSyntax",
+    "comment": "Common Language RunTime Support, Old Syntax",
+    "value": "OldSyntax",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions (/arch:SSE)",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2 (/arch:SSE2)",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo-",
+    "comment": "Suppress Startup Banner",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Buffer Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Buffer Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Resolve #using References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v10_LIB.json b/Templates/MSBuild/FlagTables/v10_LIB.json
new file mode 100644
index 0000000..58a238c
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_LIB.json
@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v10_Link.json b/Templates/MSBuild/FlagTables/v10_Link.json
new file mode 100644
index 0000000..b4f6d9f
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_Link.json
@@ -0,0 +1,1156 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v10_MASM.json b/Templates/MSBuild/FlagTables/v10_MASM.json
new file mode 100644
index 0000000..51a48c8
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_MASM.json
@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v10_RC.json b/Templates/MSBuild/FlagTables/v10_RC.json
new file mode 100644
index 0000000..b8c0127
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v10_RC.json
@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v11_CL.json b/Templates/MSBuild/FlagTables/v11_CL.json
new file mode 100644
index 0000000..e1c3871
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v11_CL.json
@@ -0,0 +1,1073 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:oldSyntax",
+    "comment": "Common Language RunTime Support, Old Syntax",
+    "value": "OldSyntax",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo-",
+    "comment": "Suppress Startup Banner",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v11_LIB.json b/Templates/MSBuild/FlagTables/v11_LIB.json
new file mode 100644
index 0000000..58a238c
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v11_LIB.json
@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v11_Link.json b/Templates/MSBuild/FlagTables/v11_Link.json
new file mode 100644
index 0000000..6829abb
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v11_Link.json
@@ -0,0 +1,1291 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v11_MASM.json b/Templates/MSBuild/FlagTables/v11_MASM.json
new file mode 100644
index 0000000..51a48c8
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v11_MASM.json
@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v11_RC.json b/Templates/MSBuild/FlagTables/v11_RC.json
new file mode 100644
index 0000000..b8c0127
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v11_RC.json
@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v12_CL.json b/Templates/MSBuild/FlagTables/v12_CL.json
new file mode 100644
index 0000000..39d08a3
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v12_CL.json
@@ -0,0 +1,1087 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:oldSyntax",
+    "comment": "Common Language RunTime Support, Old Syntax",
+    "value": "OldSyntax",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v12_LIB.json b/Templates/MSBuild/FlagTables/v12_LIB.json
new file mode 100644
index 0000000..58a238c
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v12_LIB.json
@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v12_Link.json b/Templates/MSBuild/FlagTables/v12_Link.json
new file mode 100644
index 0000000..6829abb
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v12_Link.json
@@ -0,0 +1,1291 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Info",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v12_MASM.json b/Templates/MSBuild/FlagTables/v12_MASM.json
new file mode 100644
index 0000000..51a48c8
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v12_MASM.json
@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v12_RC.json b/Templates/MSBuild/FlagTables/v12_RC.json
new file mode 100644
index 0000000..b8c0127
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v12_RC.json
@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v140_CL.json b/Templates/MSBuild/FlagTables/v140_CL.json
new file mode 100644
index 0000000..1a81098
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v140_CL.json
@@ -0,0 +1,1124 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Minimize Size",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximize Speed",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Full Optimization",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v140_Link.json b/Templates/MSBuild/FlagTables/v140_Link.json
new file mode 100644
index 0000000..7ccc41b
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v140_Link.json
@@ -0,0 +1,1329 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Optimize for debugging",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Optimize for faster linking",
+    "value": "DebugFastLink",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Enable Security Check with Guard",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v141_CL.json b/Templates/MSBuild/FlagTables/v141_CL.json
new file mode 100644
index 0000000..c624603
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v141_CL.json
@@ -0,0 +1,1194 @@
+[
+  {
+    "name": "DebugInformationFormat",
+    "switch": "",
+    "comment": "None",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Z7",
+    "comment": "C7 compatible",
+    "value": "OldStyle",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "Zi",
+    "comment": "Program Database",
+    "value": "ProgramDatabase",
+    "flags": []
+  },
+  {
+    "name": "DebugInformationFormat",
+    "switch": "ZI",
+    "comment": "Program Database for Edit And Continue",
+    "value": "EditAndContinue",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "",
+    "comment": "No Common Language RunTime Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr",
+    "comment": "Common Language RunTime Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:pure",
+    "comment": "Pure MSIL Common Language RunTime Support",
+    "value": "Pure",
+    "flags": []
+  },
+  {
+    "name": "CompileAsManaged",
+    "switch": "clr:safe",
+    "comment": "Safe MSIL Common Language RunTime Support",
+    "value": "Safe",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Turn Off All Warnings",
+    "value": "TurnOffAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Level1",
+    "value": "Level1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Level2",
+    "value": "Level2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Level3",
+    "value": "Level3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W4",
+    "comment": "Level4",
+    "value": "Level4",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "Wall",
+    "comment": "EnableAllWarnings",
+    "value": "EnableAllWarnings",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:caret",
+    "comment": "Caret",
+    "value": "Caret",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:column",
+    "comment": "Column Info",
+    "value": "Column",
+    "flags": []
+  },
+  {
+    "name": "DiagnosticsFormat",
+    "switch": "diagnostics:classic",
+    "comment": "Classic",
+    "value": "Classic",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "",
+    "comment": "Custom",
+    "value": "Custom",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Od",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O1",
+    "comment": "Maximum Optimization (Favor Size)",
+    "value": "MinSpace",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "O2",
+    "comment": "Maximum Optimization (Favor Speed)",
+    "value": "MaxSpeed",
+    "flags": []
+  },
+  {
+    "name": "Optimization",
+    "switch": "Ox",
+    "comment": "Optimizations (Favor Speed)",
+    "value": "Full",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob0",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob1",
+    "comment": "Only __inline",
+    "value": "OnlyExplicitInline",
+    "flags": []
+  },
+  {
+    "name": "InlineFunctionExpansion",
+    "switch": "Ob2",
+    "comment": "Any Suitable",
+    "value": "AnySuitable",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Os",
+    "comment": "Favor small code",
+    "value": "Size",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "Ot",
+    "comment": "Favor fast code",
+    "value": "Speed",
+    "flags": []
+  },
+  {
+    "name": "FavorSizeOrSpeed",
+    "switch": "",
+    "comment": "Neither",
+    "value": "Neither",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHa",
+    "comment": "Yes with SEH Exceptions",
+    "value": "Async",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHsc",
+    "comment": "Yes",
+    "value": "Sync",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "EHs",
+    "comment": "Yes with Extern C functions",
+    "value": "SyncCThrow",
+    "flags": []
+  },
+  {
+    "name": "ExceptionHandling",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCs",
+    "comment": "Stack Frames",
+    "value": "StackFrameRuntimeCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTCu",
+    "comment": "Uninitialized variables",
+    "value": "UninitializedLocalUsageCheck",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "RTC1",
+    "comment": "Both (/RTC1, equiv. to /RTCsu)",
+    "value": "EnableFastChecks",
+    "flags": []
+  },
+  {
+    "name": "BasicRuntimeChecks",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MT",
+    "comment": "Multi-threaded",
+    "value": "MultiThreaded",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MTd",
+    "comment": "Multi-threaded Debug",
+    "value": "MultiThreadedDebug",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MD",
+    "comment": "Multi-threaded DLL",
+    "value": "MultiThreadedDLL",
+    "flags": []
+  },
+  {
+    "name": "RuntimeLibrary",
+    "switch": "MDd",
+    "comment": "Multi-threaded Debug DLL",
+    "value": "MultiThreadedDebugDLL",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp1",
+    "comment": "1 Byte",
+    "value": "1Byte",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp2",
+    "comment": "2 Bytes",
+    "value": "2Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp4",
+    "comment": "4 Byte",
+    "value": "4Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp8",
+    "comment": "8 Bytes",
+    "value": "8Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "Zp16",
+    "comment": "16 Bytes",
+    "value": "16Bytes",
+    "flags": []
+  },
+  {
+    "name": "StructMemberAlignment",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS-",
+    "comment": "Disable Security Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "BufferSecurityCheck",
+    "switch": "GS",
+    "comment": "Enable Security Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Yes",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "ControlFlowGuard",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE",
+    "comment": "Streaming SIMD Extensions",
+    "value": "StreamingSIMDExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:SSE2",
+    "comment": "Streaming SIMD Extensions 2",
+    "value": "StreamingSIMDExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX",
+    "comment": "Advanced Vector Extensions",
+    "value": "AdvancedVectorExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:AVX2",
+    "comment": "Advanced Vector Extensions 2",
+    "value": "AdvancedVectorExtensions2",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "arch:IA32",
+    "comment": "No Enhanced Instructions",
+    "value": "NoExtensions",
+    "flags": []
+  },
+  {
+    "name": "EnableEnhancedInstructionSet",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:precise",
+    "comment": "Precise",
+    "value": "Precise",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:strict",
+    "comment": "Strict",
+    "value": "Strict",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointModel",
+    "switch": "fp:fast",
+    "comment": "Fast",
+    "value": "Fast",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "Qspectre",
+    "comment": "Enabled",
+    "value": "Spectre",
+    "flags": []
+  },
+  {
+    "name": "SpectreMitigation",
+    "switch": "",
+    "comment": "Disabled",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++14",
+    "comment": "ISO C++14 Standard",
+    "value": "stdcpp14",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++17",
+    "comment": "ISO C++17 Standard",
+    "value": "stdcpp17",
+    "flags": []
+  },
+  {
+    "name": "LanguageStandard",
+    "switch": "std:c++latest",
+    "comment": "ISO C++ Latest Draft Standard",
+    "value": "stdcpplatest",
+    "flags": []
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yc",
+    "comment": "Create",
+    "value": "Create",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "Yu",
+    "comment": "Use",
+    "value": "Use",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeader",
+    "switch": "",
+    "comment": "Not Using Precompiled Headers",
+    "value": "NotUsing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "",
+    "comment": "No Listing",
+    "value": "NoListing",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FA",
+    "comment": "Assembly-Only Listing",
+    "value": "AssemblyCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAc",
+    "comment": "Assembly With Machine Code",
+    "value": "AssemblyAndMachineCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAs",
+    "comment": "Assembly With Source Code",
+    "value": "AssemblyAndSourceCode",
+    "flags": []
+  },
+  {
+    "name": "AssemblerOutput",
+    "switch": "FAcs",
+    "comment": "Assembly, Machine Code and Source",
+    "value": "All",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "__cdecl",
+    "value": "Cdecl",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gr",
+    "comment": "__fastcall",
+    "value": "FastCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "__stdcall",
+    "value": "StdCall",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gv",
+    "comment": "__vectorcall",
+    "value": "VectorCall",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TC",
+    "comment": "Compile as C Code",
+    "value": "CompileAsC",
+    "flags": []
+  },
+  {
+    "name": "CompileAs",
+    "switch": "TP",
+    "comment": "Compile as C++ Code",
+    "value": "CompileAsCpp",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do Not Send Report",
+    "value": "None",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt Immediately",
+    "value": "Prompt",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Queue For Next Login",
+    "value": "Queue",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Send Automatically",
+    "value": "Send",
+    "flags": []
+  },
+  {
+    "name": "CompileAsWinRT",
+    "switch": "ZW",
+    "comment": "Consume Windows Runtime Extension",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WinRTNoStdLib",
+    "switch": "ZW:nostdlib",
+    "comment": "No Standard WinRT Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX-",
+    "comment": "Treat Warnings As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningAsError",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl-",
+    "comment": "SDL checks",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "SDLCheck",
+    "switch": "sdl",
+    "comment": "SDL checks",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MultiProcessorCompilation",
+    "switch": "MP",
+    "comment": "Multi-processor Compilation",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "IntrinsicFunctions",
+    "switch": "Oi",
+    "comment": "Enable Intrinsic Functions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy-",
+    "comment": "Omit Frame Pointers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OmitFramePointers",
+    "switch": "Oy",
+    "comment": "Omit Frame Pointers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFiberSafeOptimizations",
+    "switch": "GT",
+    "comment": "Enable Fiber-Safe Optimizations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WholeProgramOptimization",
+    "switch": "GL",
+    "comment": "Whole Program Optimization",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UndefineAllPreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine All Preprocessor Definitions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessToFile",
+    "switch": "P",
+    "comment": "Preprocess to a File",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessSuppressLineNumbers",
+    "switch": "EP",
+    "comment": "Preprocess Suppress Line Numbers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessKeepComments",
+    "switch": "C",
+    "comment": "Keep Comments",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF-",
+    "comment": "Enable String Pooling",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "StringPooling",
+    "switch": "GF",
+    "comment": "Enable String Pooling",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm-",
+    "comment": "Enable Minimal Rebuild",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "MinimalRebuild",
+    "switch": "Gm",
+    "comment": "Enable Minimal Rebuild",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SmallerTypeCheck",
+    "switch": "RTCc",
+    "comment": "Smaller Type Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy-",
+    "comment": "Enable Function-Level Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FunctionLevelLinking",
+    "switch": "Gy",
+    "comment": "Enable Function-Level Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar-",
+    "comment": "Enable Parallel Code Generation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableParallelCodeGeneration",
+    "switch": "Qpar",
+    "comment": "Enable Parallel Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except-",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FloatingPointExceptions",
+    "switch": "fp:except",
+    "comment": "Enable Floating Point Exceptions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CreateHotpatchableImage",
+    "switch": "hotpatch",
+    "comment": "Create Hotpatchable Image",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableLanguageExtensions",
+    "switch": "Za",
+    "comment": "Disable Language Extensions",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ConformanceMode",
+    "switch": "permissive-",
+    "comment": "Conformance mode",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t-",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatWChar_tAsBuiltInType",
+    "switch": "Zc:wchar_t",
+    "comment": "Treat WChar_t As Built in Type",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope-",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ForceConformanceInForLoopScope",
+    "switch": "Zc:forScope",
+    "comment": "Force Conformance in For Loop Scope",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RemoveUnreferencedCodeData",
+    "switch": "Zc:inline",
+    "comment": "Remove unreferenced code and data",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast-",
+    "comment": "Enforce type conversion rules",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnforceTypeConversionRules",
+    "switch": "Zc:rvalueCast",
+    "comment": "Enforce type conversion rules",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR-",
+    "comment": "Enable Run-Time Type Information",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RuntimeTypeInfo",
+    "switch": "GR",
+    "comment": "Enable Run-Time Type Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp-",
+    "comment": "Open MP Support",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OpenMPSupport",
+    "switch": "openmp",
+    "comment": "Open MP Support",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableModules",
+    "switch": "experimental:module",
+    "comment": "Enable C++ Modules (experimental)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ExpandAttributedSource",
+    "switch": "Fx",
+    "comment": "Expand Attributed Source",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseUnicodeForAssemblerListing",
+    "switch": "FAu",
+    "comment": "Use Unicode For Assembler Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateXMLDocumentationFiles",
+    "switch": "doc",
+    "comment": "Generate XML Documentation Files",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "BrowseInformation",
+    "switch": "FR",
+    "comment": "Enable Browse Information",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "ShowIncludes",
+    "switch": "showIncludes",
+    "comment": "Show Includes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze-",
+    "comment": "Enable Code Analysis",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnablePREfast",
+    "switch": "analyze",
+    "comment": "Enable Code Analysis",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseFullPaths",
+    "switch": "FC",
+    "comment": "Use Full Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OmitDefaultLibName",
+    "switch": "Zl",
+    "comment": "Omit Default Library Name",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalUsingDirectories",
+    "switch": "AI",
+    "comment": "Additional #using Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "U",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DisableSpecificWarnings",
+    "switch": "wd",
+    "comment": "Disable Specific Warnings",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedIncludeFiles",
+    "switch": "FI",
+    "comment": "Forced Include File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForcedUsingFiles",
+    "switch": "FU",
+    "comment": "Forced #using File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalOptions",
+    "switch": "analyze:",
+    "comment": "Additional Code Analysis Native options",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "PREfastAdditionalPlugins",
+    "switch": "analyze:plugin",
+    "comment": "Additional Code Analysis Native plugins",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "TreatSpecificWarningsAsErrors",
+    "switch": "we",
+    "comment": "Treat Specific Warnings As Errors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "WarningVersion",
+    "switch": "Wv:",
+    "comment": "Warning Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PreprocessOutputPath",
+    "switch": "Fi",
+    "comment": "Preprocess Output Path",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yu",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderFile",
+    "switch": "Yc",
+    "comment": "Precompiled Header File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PrecompiledHeaderOutputFile",
+    "switch": "Fp",
+    "comment": "Precompiled Header Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssemblerListingLocation",
+    "switch": "Fa",
+    "comment": "ASM List Location",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDataBaseFileName",
+    "switch": "Fd",
+    "comment": "Program Database File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "XMLDocumentationFileName",
+    "switch": "doc",
+    "comment": "XML Documentation File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "BrowseInformationFile",
+    "switch": "FR",
+    "comment": "Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "PREfastLog",
+    "switch": "analyze:log",
+    "comment": "Code Analysis Log",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProcessorNumber",
+    "switch": "MP",
+    "comment": "Number of processors",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v141_Link.json b/Templates/MSBuild/FlagTables/v141_Link.json
new file mode 100644
index 0000000..acdb5ac
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v141_Link.json
@@ -0,0 +1,1343 @@
+[
+  {
+    "name": "ShowProgress",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE",
+    "comment": "Display all progress messages",
+    "value": "LinkVerbose",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:Lib",
+    "comment": "For Libraries Searched",
+    "value": "LinkVerboseLib",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:ICF",
+    "comment": "About COMDAT folding during optimized linking",
+    "value": "LinkVerboseICF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:REF",
+    "comment": "About data removed during optimized linking",
+    "value": "LinkVerboseREF",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:SAFESEH",
+    "comment": "About Modules incompatible with SEH",
+    "value": "LinkVerboseSAFESEH",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "VERBOSE:CLR",
+    "comment": "About linker activity related to managed code",
+    "value": "LinkVerboseCLR",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:MULTIPLE",
+    "comment": "Multiply Defined Symbol Only",
+    "value": "MultiplyDefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "ForceFileOutput",
+    "switch": "FORCE:UNRESOLVED",
+    "comment": "Undefined Symbol Only",
+    "value": "UndefinedSymbolOnly",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:5",
+    "comment": "X86 Image Only",
+    "value": "X86Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:6",
+    "comment": "X64 Image Only",
+    "value": "X64Image",
+    "flags": []
+  },
+  {
+    "name": "CreateHotPatchableImage",
+    "switch": "FUNCTIONPADMIN:16",
+    "comment": "Itanium Image Only",
+    "value": "ItaniumImage",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='asInvoker'",
+    "comment": "asInvoker",
+    "value": "AsInvoker",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='highestAvailable'",
+    "comment": "highestAvailable",
+    "value": "HighestAvailable",
+    "flags": []
+  },
+  {
+    "name": "UACExecutionLevel",
+    "switch": "level='requireAdministrator'",
+    "comment": "requireAdministrator",
+    "value": "RequireAdministrator",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FASTLINK",
+    "comment": "Generate Debug Information optimized for faster links",
+    "value": "DebugFastLink",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "DEBUG:FULL",
+    "comment": "Generate Debug Information optimized for sharing and publishing",
+    "value": "DebugFull",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "Driver",
+    "comment": "Driver",
+    "value": "Driver",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:UPONLY",
+    "comment": "UP Only",
+    "value": "UpOnly",
+    "flags": []
+  },
+  {
+    "name": "Driver",
+    "switch": "DRIVER:WDM",
+    "comment": "WDM",
+    "value": "WDM",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "",
+    "comment": "Default",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:incremental",
+    "comment": "Use Fast Link Time Code Generation",
+    "value": "UseFastLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Use Link Time Code Generation",
+    "value": "UseLinkTimeCodeGeneration",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGInstrument",
+    "comment": "Profile Guided Optimization - Instrument",
+    "value": "PGInstrument",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGOptimize",
+    "comment": "Profile Guided Optimization - Optimization",
+    "value": "PGOptimization",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG:PGUpdate",
+    "comment": "Profile Guided Optimization - Update",
+    "value": "PGUpdate",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD",
+    "comment": "Yes",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateWindowsMetadata",
+    "switch": "WINMD:NO",
+    "comment": "No",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataSignHash",
+    "switch": "WINMDSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "",
+    "comment": "Not Set",
+    "value": "NotSet",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM64",
+    "comment": "MachineARM64",
+    "value": "MachineARM64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:MTA",
+    "comment": "MTA threading attribute",
+    "value": "MTAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:STA",
+    "comment": "STA threading attribute",
+    "value": "STAThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRThreadAttribute",
+    "switch": "CLRTHREADATTRIBUTE:NONE",
+    "comment": "Default threading attribute",
+    "value": "DefaultThreadingAttribute",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:IJW",
+    "comment": "Force IJW image",
+    "value": "ForceIJWImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:PURE",
+    "comment": "Force Pure IL Image",
+    "value": "ForcePureILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "CLRIMAGETYPE:SAFE",
+    "comment": "Force Safe IL Image",
+    "value": "ForceSafeILImage",
+    "flags": []
+  },
+  {
+    "name": "CLRImageType",
+    "switch": "",
+    "comment": "Default image type",
+    "value": "Default",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA1",
+    "comment": "SHA1",
+    "value": "SHA1",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA256",
+    "comment": "SHA256",
+    "value": "SHA256",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA384",
+    "comment": "SHA384",
+    "value": "SHA384",
+    "flags": []
+  },
+  {
+    "name": "SignHash",
+    "switch": "CLRSIGNHASH:SHA512",
+    "comment": "SHA512",
+    "value": "SHA512",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "LinkErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError",
+    "comment": "Enabled",
+    "value": "Enabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:NO",
+    "comment": "Disabled",
+    "value": "Disabled",
+    "flags": []
+  },
+  {
+    "name": "CLRSupportLastError",
+    "switch": "CLRSupportLastError:SYSTEMDLL",
+    "comment": "System Dlls Only",
+    "value": "SystemDlls",
+    "flags": []
+  },
+  {
+    "name": "LinkControlFlowGuard",
+    "switch": "guard:cf",
+    "comment": "Enable Security Check with Guard",
+    "value": "Guard",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL:NO",
+    "comment": "Enable Incremental Linking",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkIncremental",
+    "switch": "INCREMENTAL",
+    "comment": "Enable Incremental Linking",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:NOSTATUS",
+    "comment": "Link Status",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkStatus",
+    "switch": "LTCG:STATUS",
+    "comment": "Link Status",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND:NO",
+    "comment": "Prevent Dll Binding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "PreventDllBinding",
+    "switch": "ALLOWBIND",
+    "comment": "Prevent Dll Binding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLinkerWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Linker Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST:NO",
+    "comment": "Generate Manifest",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "GenerateManifest",
+    "switch": "MANIFEST",
+    "comment": "Generate Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "ALLOWISOLATION:NO",
+    "comment": "Allow Isolation",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AllowIsolation",
+    "switch": "",
+    "comment": "Allow Isolation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:NO",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "EnableUAC",
+    "switch": "MANIFESTUAC:",
+    "comment": "Enable User Account Control (UAC)",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "MANIFESTUAC:",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='false'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "UACUIAccess",
+    "switch": "uiAccess='true'",
+    "comment": "UAC Bypass UI Protection",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ManifestEmbed",
+    "switch": "manifest:embed",
+    "comment": "Embed Manifest",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateMapFile",
+    "switch": "MAP",
+    "comment": "Generate Map File",
+    "value": "true",
+    "flags": [
+      "UserValue",
+      "UserIgnored",
+      "Continue"
+    ]
+  },
+  {
+    "name": "MapExports",
+    "switch": "MAPINFO:EXPORTS",
+    "comment": "Map Exports",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG:DISABLE",
+    "comment": "Debuggable Assembly",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "AssemblyDebug",
+    "switch": "ASSEMBLYDEBUG",
+    "comment": "Debuggable Assembly",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE:NO",
+    "comment": "Enable Large Addresses",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LargeAddressAware",
+    "switch": "LARGEADDRESSAWARE",
+    "comment": "Enable Large Addresses",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE:NO",
+    "comment": "Terminal Server",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TerminalServerAware",
+    "switch": "TSAWARE",
+    "comment": "Terminal Server",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromCD",
+    "switch": "SWAPRUN:CD",
+    "comment": "Swap Run From CD",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SwapRunFromNET",
+    "switch": "SWAPRUN:NET",
+    "comment": "Swap Run From Network",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:NOREF",
+    "comment": "References",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "OptimizeReferences",
+    "switch": "OPT:REF",
+    "comment": "References",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:NOICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "EnableCOMDATFolding",
+    "switch": "OPT:ICF",
+    "comment": "Enable COMDAT Folding",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreEmbeddedIDL",
+    "switch": "IGNOREIDL",
+    "comment": "Ignore Embedded IDL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AppContainer",
+    "switch": "APPCONTAINER",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN:NO",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "WindowsMetadataLinkDelaySign",
+    "switch": "WINMDDELAYSIGN",
+    "comment": "Windows Metadata Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NoEntryPoint",
+    "switch": "NOENTRY",
+    "comment": "No Entry Point",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SetChecksum",
+    "switch": "RELEASE",
+    "comment": "Set Checksum",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE:NO",
+    "comment": "Randomized Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "RandomizedBaseAddress",
+    "switch": "DYNAMICBASE",
+    "comment": "Randomized Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED:NO",
+    "comment": "Fixed Base Address",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "FixedBaseAddress",
+    "switch": "FIXED",
+    "comment": "Fixed Base Address",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT:NO",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "DataExecutionPrevention",
+    "switch": "NXCOMPAT",
+    "comment": "Data Execution Prevention (DEP)",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TurnOffAssemblyGeneration",
+    "switch": "NOASSEMBLY",
+    "comment": "Turn Off Assembly Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportUnloadOfDelayLoadedDLL",
+    "switch": "DELAY:UNLOAD",
+    "comment": "Unload delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SupportNobindOfDelayLoadedDLL",
+    "switch": "DELAY:NOBIND",
+    "comment": "Nobind delay loaded DLL",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Profile",
+    "switch": "PROFILE",
+    "comment": "Profile",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN:NO",
+    "comment": "Delay Sign",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "LinkDelaySign",
+    "switch": "DELAYSIGN",
+    "comment": "Delay Sign",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK:NO",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "CLRUnmanagedCodeCheck",
+    "switch": "CLRUNMANAGEDCODECHECK",
+    "comment": "CLR Unmanaged Code Check",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DetectOneDefinitionRule",
+    "switch": "ODR",
+    "comment": "Detect One Definition Rule violations",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH:NO",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "ImageHasSafeExceptionHandlers",
+    "switch": "SAFESEH",
+    "comment": "Image Has Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkDLL",
+    "switch": "DLL",
+    "comment": "",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "Natvis",
+    "switch": "NATVIS:",
+    "comment": "Natvis files",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AddModuleNamesToAssembly",
+    "switch": "ASSEMBLYMODULE:",
+    "comment": "Add Module to Assembly",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "EmbedManagedResourceFile",
+    "switch": "ASSEMBLYRESOURCE:",
+    "comment": "Embed Managed Resource File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "DelayLoadDLLs",
+    "switch": "DELAYLOAD:",
+    "comment": "Delay Loaded Dlls",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AssemblyLinkResource",
+    "switch": "ASSEMBLYLINKRESOURCE:",
+    "comment": "Assembly Link Resource",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalManifestDependencies",
+    "switch": "MANIFESTDEPENDENCY:",
+    "comment": "Additional Manifest Dependencies",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ManifestInput",
+    "switch": "manifestinput:",
+    "comment": "Manifest Input",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Version",
+    "switch": "VERSION:",
+    "comment": "Version",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SpecifySectionAttributes",
+    "switch": "SECTION:",
+    "comment": "Specify Section Attributes",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MSDOSStubFileName",
+    "switch": "STUB:",
+    "comment": "MS-DOS Stub File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ManifestFile",
+    "switch": "ManifestFile:",
+    "comment": "Manifest File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProgramDatabaseFile",
+    "switch": "PDB:",
+    "comment": "Generate Program Database File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StripPrivateSymbols",
+    "switch": "PDBSTRIPPED:",
+    "comment": "Strip Private Symbols",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MapFileName",
+    "switch": "MAP:",
+    "comment": "Map File Name",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "HeapReserveSize",
+    "switch": "HEAP:",
+    "comment": "Heap Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "HeapCommitSize",
+    "switch": "HEAP",
+    "comment": "Heap Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "StackReserveSize",
+    "switch": "STACK:",
+    "comment": "Stack Reserve Size",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "StackCommitSize",
+    "switch": "STACK",
+    "comment": "Stack Commit Size",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "UserRequired"
+    ]
+  },
+  {
+    "name": "FunctionOrder",
+    "switch": "ORDER:@",
+    "comment": "Function Order",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ProfileGuidedDatabase",
+    "switch": "PGD:",
+    "comment": "Profile Guided Database",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MidlCommandFile",
+    "switch": "MIDL:@",
+    "comment": "MIDL Commands",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergedIDLBaseFileName",
+    "switch": "IDLOUT:",
+    "comment": "Merged IDL Base File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryFile",
+    "switch": "TLBOUT:",
+    "comment": "Type Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataFile",
+    "switch": "WINMDFILE:",
+    "comment": "Windows Metadata File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataLinkKeyFile",
+    "switch": "WINMDKEYFILE:",
+    "comment": "Windows Metadata Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "WindowsMetadataKeyContainer",
+    "switch": "WINMDKEYCONTAINER:",
+    "comment": "Windows Metadata Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "EntryPointSymbol",
+    "switch": "ENTRY:",
+    "comment": "Entry Point",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "BaseAddress",
+    "switch": "BASE:",
+    "comment": "Base Address",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ImportLibrary",
+    "switch": "IMPLIB:",
+    "comment": "Import Library",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "MergeSections",
+    "switch": "MERGE:",
+    "comment": "Merge Sections",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "LinkKeyFile",
+    "switch": "KEYFILE:",
+    "comment": "Key File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "KeyContainer",
+    "switch": "KEYCONTAINER:",
+    "comment": "Key Container",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "TypeLibraryResourceID",
+    "switch": "TLBID:",
+    "comment": "TypeLib Resource ID",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "SectionAlignment",
+    "switch": "ALIGN:",
+    "comment": "SectionAlignment",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v14_LIB.json b/Templates/MSBuild/FlagTables/v14_LIB.json
new file mode 100644
index 0000000..58a238c
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v14_LIB.json
@@ -0,0 +1,297 @@
+[
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:PROMPT",
+    "comment": "PromptImmediately",
+    "value": "PromptImmediately",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:QUEUE",
+    "comment": "Queue For Next Login",
+    "value": "QueueForNextLogin",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:SEND",
+    "comment": "Send Error Report",
+    "value": "SendErrorReport",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "ERRORREPORT:NONE",
+    "comment": "No Error Report",
+    "value": "NoErrorReport",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:ARM",
+    "comment": "MachineARM",
+    "value": "MachineARM",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:EBC",
+    "comment": "MachineEBC",
+    "value": "MachineEBC",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:IA64",
+    "comment": "MachineIA64",
+    "value": "MachineIA64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS",
+    "comment": "MachineMIPS",
+    "value": "MachineMIPS",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPS16",
+    "comment": "MachineMIPS16",
+    "value": "MachineMIPS16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU",
+    "comment": "MachineMIPSFPU",
+    "value": "MachineMIPSFPU",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:MIPSFPU16",
+    "comment": "MachineMIPSFPU16",
+    "value": "MachineMIPSFPU16",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:SH4",
+    "comment": "MachineSH4",
+    "value": "MachineSH4",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:THUMB",
+    "comment": "MachineTHUMB",
+    "value": "MachineTHUMB",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X64",
+    "comment": "MachineX64",
+    "value": "MachineX64",
+    "flags": []
+  },
+  {
+    "name": "TargetMachine",
+    "switch": "MACHINE:X86",
+    "comment": "MachineX86",
+    "value": "MachineX86",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:CONSOLE",
+    "comment": "Console",
+    "value": "Console",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWS",
+    "comment": "Windows",
+    "value": "Windows",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:NATIVE",
+    "comment": "Native",
+    "value": "Native",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_APPLICATION",
+    "comment": "EFI Application",
+    "value": "EFI Application",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER",
+    "comment": "EFI Boot Service Driver",
+    "value": "EFI Boot Service Driver",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_ROM",
+    "comment": "EFI ROM",
+    "value": "EFI ROM",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:EFI_RUNTIME_DRIVER",
+    "comment": "EFI Runtime",
+    "value": "EFI Runtime",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:WINDOWSCE",
+    "comment": "WindowsCE",
+    "value": "WindowsCE",
+    "flags": []
+  },
+  {
+    "name": "SubSystem",
+    "switch": "SUBSYSTEM:POSIX",
+    "comment": "POSIX",
+    "value": "POSIX",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "NOLOGO",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "IgnoreAllDefaultLibraries",
+    "switch": "NODEFAULTLIB",
+    "comment": "Ignore All Default Libraries",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX:NO",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "false",
+    "flags": []
+  },
+  {
+    "name": "TreatLibWarningAsErrors",
+    "switch": "WX",
+    "comment": "Treat Lib Warning As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "Verbose",
+    "switch": "VERBOSE",
+    "comment": "Verbose",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "LinkTimeCodeGeneration",
+    "switch": "LTCG",
+    "comment": "Link Time Code Generation",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AdditionalLibraryDirectories",
+    "switch": "LIBPATH:",
+    "comment": "Additional Library Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IgnoreSpecificDefaultLibraries",
+    "switch": "NODEFAULTLIB:",
+    "comment": "Ignore Specific Default Libraries",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ExportNamedFunctions",
+    "switch": "EXPORT:",
+    "comment": "Export Named Functions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "RemoveObjects",
+    "switch": "REMOVE:",
+    "comment": "Remove Objects",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "OutputFile",
+    "switch": "OUT:",
+    "comment": "Output File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ModuleDefinitionFile",
+    "switch": "DEF:",
+    "comment": "Module Definition File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "ForceSymbolReferences",
+    "switch": "INCLUDE:",
+    "comment": "Force Symbol References",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "DisplayLibrary",
+    "switch": "LIST:",
+    "comment": "Display Library to standard output",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "Name",
+    "switch": "NAME:",
+    "comment": "Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v14_MASM.json b/Templates/MSBuild/FlagTables/v14_MASM.json
new file mode 100644
index 0000000..51a48c8
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v14_MASM.json
@@ -0,0 +1,295 @@
+[
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cp",
+    "comment": "Preserves Identifier Case (/Cp)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cu",
+    "comment": "Maps all identifiers to upper case. (/Cu)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PreserveIdentifierCase",
+    "switch": "Cx",
+    "comment": "Preserves case in public and extern symbols. (/Cx)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W0",
+    "comment": "Warning Level 0 (/W0)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W1",
+    "comment": "Warning Level 1 (/W1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W2",
+    "comment": "Warning Level 2 (/W2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "WarningLevel",
+    "switch": "W3",
+    "comment": "Warning Level 3 (/W3)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp1",
+    "comment": "One Byte Boundary (/Zp1)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp2",
+    "comment": "Two Byte Boundary (/Zp2)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp4",
+    "comment": "Four Byte Boundary (/Zp4)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp8",
+    "comment": "Eight Byte Boundary (/Zp8)",
+    "value": "4",
+    "flags": []
+  },
+  {
+    "name": "PackAlignmentBoundary",
+    "switch": "Zp16",
+    "comment": "Sixteen Byte Boundary (/Zp16)",
+    "value": "5",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "",
+    "comment": "Default",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gd",
+    "comment": "Use C-style Calling Convention (/Gd)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gz",
+    "comment": "Use stdcall Calling Convention (/Gz)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "CallingConvention",
+    "switch": "Gc",
+    "comment": "Use Pascal Calling Convention (/Gc)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:prompt",
+    "comment": "Prompt to send report immediately (/errorReport:prompt)",
+    "value": "0",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:queue",
+    "comment": "Prompt to send report at the next logon (/errorReport:queue)",
+    "value": "1",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:send",
+    "comment": "Automatically send report (/errorReport:send)",
+    "value": "2",
+    "flags": []
+  },
+  {
+    "name": "ErrorReporting",
+    "switch": "errorReport:none",
+    "comment": "Do not send report (/errorReport:none)",
+    "value": "3",
+    "flags": []
+  },
+  {
+    "name": "NoLogo",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GeneratePreprocessedSourceListing",
+    "switch": "EP",
+    "comment": "Generate Preprocessed Source Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ListAllAvailableInformation",
+    "switch": "Sa",
+    "comment": "List All Available Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "UseSafeExceptionHandlers",
+    "switch": "safeseh",
+    "comment": "Use Safe Exception Handlers",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "AddFirstPassListing",
+    "switch": "Sf",
+    "comment": "Add First Pass Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableAssemblyGeneratedCodeListing",
+    "switch": "Sg",
+    "comment": "Enable Assembly Generated Code Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "DisableSymbolTable",
+    "switch": "Sn",
+    "comment": "Disable Symbol Table",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableFalseConditionalsInListing",
+    "switch": "Sx",
+    "comment": "Enable False Conditionals In Listing",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "TreatWarningsAsErrors",
+    "switch": "WX",
+    "comment": "Treat Warnings As Errors",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "MakeAllSymbolsPublic",
+    "switch": "Zf",
+    "comment": "Make All Symbols Public",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "GenerateDebugInformation",
+    "switch": "Zi",
+    "comment": "Generate Debug Information",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "EnableMASM51Compatibility",
+    "switch": "Zm",
+    "comment": "Enable MASM 5.1 Compatibility",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PerformSyntaxCheckOnly",
+    "switch": "Zs",
+    "comment": "Perform Syntax Check Only",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D\"[value]\"",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "IncludePaths",
+    "switch": "I \"[value]\"",
+    "comment": "Include Paths",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "BrowseFile",
+    "switch": "FR\"[value]\"",
+    "comment": "Generate Browse Information File",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ObjectFileName",
+    "switch": "Fo\"[value]\"",
+    "comment": "Object File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  },
+  {
+    "name": "AssembledCodeListingFile",
+    "switch": "Fl\"[value]\"",
+    "comment": "Assembled Code Listing File",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]
diff --git a/Templates/MSBuild/FlagTables/v14_RC.json b/Templates/MSBuild/FlagTables/v14_RC.json
new file mode 100644
index 0000000..b8c0127
--- /dev/null
+++ b/Templates/MSBuild/FlagTables/v14_RC.json
@@ -0,0 +1,69 @@
+[
+  {
+    "name": "IgnoreStandardIncludePath",
+    "switch": "X",
+    "comment": "Ignore Standard Include Paths",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "ShowProgress",
+    "switch": "v",
+    "comment": "Show Progress",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "SuppressStartupBanner",
+    "switch": "nologo",
+    "comment": "Suppress Startup Banner",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "NullTerminateStrings",
+    "switch": "n",
+    "comment": "Null Terminate Strings",
+    "value": "true",
+    "flags": []
+  },
+  {
+    "name": "PreprocessorDefinitions",
+    "switch": "D",
+    "comment": "Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "UndefinePreprocessorDefinitions",
+    "switch": "u",
+    "comment": "Undefine Preprocessor Definitions",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "AdditionalIncludeDirectories",
+    "switch": "I",
+    "comment": "Additional Include Directories",
+    "value": "",
+    "flags": [
+      "UserValue",
+      "SemicolonAppendable"
+    ]
+  },
+  {
+    "name": "ResourceOutputFileName",
+    "switch": "fo",
+    "comment": "Resource File Name",
+    "value": "",
+    "flags": [
+      "UserValue"
+    ]
+  }
+]

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8279302110ee6eb09a16e33b3bf8f8ad4ee13b73
commit 8279302110ee6eb09a16e33b3bf8f8ad4ee13b73
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Tue Nov 20 10:09:57 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:25 2018 -0800

    Convert cmIDEFlagTable to use owned strings
    
    Convert from char* to std::string in flag tables.
    Change termination condition from nullptr to empty string in command flag.
    Update tables to store empty strings.

diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 21121f2..0b6c149 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -37,7 +37,7 @@ static cmVS7FlagTable cmVS7ExtraFlagTable[] = {
   // and have EHa passed on the command line by leaving out the table
   // entry.
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
 
 cmGlobalVisualStudio7Generator::cmGlobalVisualStudio7Generator(
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx
index b155d9c..097d7e2 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -362,7 +362,7 @@ static cmVS7FlagTable cmVS8ExtraFlagTable[] = {
   { "TreatWChar_tAsBuiltInType", "Zc:wchar_t-",
     "wchar_t is not a built-in type", "false", 0 },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
 cmIDEFlagTable const* cmGlobalVisualStudio8Generator::GetExtraFlagTableVS8()
 {
diff --git a/Source/cmIDEFlagTable.h b/Source/cmIDEFlagTable.h
index 152e293..28d5d53 100644
--- a/Source/cmIDEFlagTable.h
+++ b/Source/cmIDEFlagTable.h
@@ -3,13 +3,15 @@
 #ifndef cmIDEFlagTable_h
 #define cmIDEFlagTable_h
 
+#include <string>
+
 // This is a table mapping XML tag IDE names to command line options
 struct cmIDEFlagTable
 {
-  const char* IDEName;     // name used in the IDE xml file
-  const char* commandFlag; // command line flag
-  const char* comment;     // comment
-  const char* value;       // string value
+  std::string IDEName;     // name used in the IDE xml file
+  std::string commandFlag; // command line flag
+  std::string comment;     // comment
+  std::string value;       // string value
   unsigned int special;    // flags for special handling requests
   enum
   {
diff --git a/Source/cmIDEOptions.cxx b/Source/cmIDEOptions.cxx
index f996788..ee0c782 100644
--- a/Source/cmIDEOptions.cxx
+++ b/Source/cmIDEOptions.cxx
@@ -97,24 +97,24 @@ bool cmIDEOptions::CheckFlagTable(cmIDEFlagTable const* table,
 {
   const char* pf = flag.c_str() + 1;
   // Look for an entry in the flag table matching this flag.
-  for (cmIDEFlagTable const* entry = table; entry->IDEName; ++entry) {
+  for (cmIDEFlagTable const* entry = table; !entry->IDEName.empty(); ++entry) {
     bool entry_found = false;
     if (entry->special & cmIDEFlagTable::UserValue) {
       // This flag table entry accepts a user-specified value.  If
       // the entry specifies UserRequired we must match only if a
       // non-empty value is given.
-      int n = static_cast<int>(strlen(entry->commandFlag));
-      if ((strncmp(pf, entry->commandFlag, n) == 0 ||
+      int n = static_cast<int>(entry->commandFlag.length());
+      if ((strncmp(pf, entry->commandFlag.c_str(), n) == 0 ||
            (entry->special & cmIDEFlagTable::CaseInsensitive &&
-            cmsysString_strncasecmp(pf, entry->commandFlag, n))) &&
+            cmsysString_strncasecmp(pf, entry->commandFlag.c_str(), n))) &&
           (!(entry->special & cmIDEFlagTable::UserRequired) ||
            static_cast<int>(strlen(pf)) > n)) {
         this->FlagMapUpdate(entry, std::string(pf + n));
         entry_found = true;
       }
-    } else if (strcmp(pf, entry->commandFlag) == 0 ||
+    } else if (strcmp(pf, entry->commandFlag.c_str()) == 0 ||
                (entry->special & cmIDEFlagTable::CaseInsensitive &&
-                cmsysString_strcasecmp(pf, entry->commandFlag) == 0)) {
+                cmsysString_strcasecmp(pf, entry->commandFlag.c_str()) == 0)) {
       if (entry->special & cmIDEFlagTable::UserFollowing) {
         // This flag expects a value in the following argument.
         this->DoingFollowing = entry;
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index 7630691..fee9dd6 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -362,7 +362,7 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorFortranFlagTable[] = {
   { "EnableRecursion", "recursive", "", "true", 0 },
   { "ReentrantCode", "reentrancy", "", "true", 0 },
   // done up to Language
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
 // fill the table here currently the comment field is not used for
 // anything other than documentation NOTE: Make sure the longer
@@ -472,7 +472,7 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorFlagTable[] = {
   { "WarnAsError", "WX", "Treat warnings as errors", "true", 0 },
   { "BrowseInformation", "FR", "Generate browse information", "1", 0 },
   { "StringPooling", "GF", "Enable StringPooling", "true", 0 },
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
 
 cmVS7FlagTable cmLocalVisualStudio7GeneratorLinkFlagTable[] = {
@@ -537,7 +537,7 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorLinkFlagTable[] = {
   { "ModuleDefinitionFile", "DEF:", "add an export def file", "",
     cmVS7FlagTable::UserValue },
   { "GenerateMapFile", "MAP", "enable generation of map file", "true", 0 },
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
 
 cmVS7FlagTable cmLocalVisualStudio7GeneratorFortranLinkFlagTable[] = {
@@ -545,7 +545,7 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorFortranLinkFlagTable[] = {
     "linkIncrementalNo", 0 },
   { "LinkIncremental", "INCREMENTAL:YES", "link incremental",
     "linkIncrementalYes", 0 },
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
 
 // Helper class to write build event <Tool .../> elements.
diff --git a/Source/cmVS10CLFlagTable.h b/Source/cmVS10CLFlagTable.h
index df4d58c..f707afc 100644
--- a/Source/cmVS10CLFlagTable.h
+++ b/Source/cmVS10CLFlagTable.h
@@ -201,5 +201,5 @@ static cmVS7FlagTable cmVS10CLFlagTable[] = {
   // Skip [XMLDocumentationFileName] - no command line Switch.
   // Skip [BrowseInformationFile] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10CSharpFlagTable.h b/Source/cmVS10CSharpFlagTable.h
index 6ac7a76..40c21e8 100644
--- a/Source/cmVS10CSharpFlagTable.h
+++ b/Source/cmVS10CSharpFlagTable.h
@@ -117,5 +117,5 @@ static cmVS7FlagTable cmVS10CSharpFlagTable[] = {
   { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
   { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
 
-  { 0, 0, 0, 0, 0 },
+  { "", "", "", "", 0 },
 };
diff --git a/Source/cmVS10CudaFlagTable.h b/Source/cmVS10CudaFlagTable.h
index 2b57e08..858b97b 100644
--- a/Source/cmVS10CudaFlagTable.h
+++ b/Source/cmVS10CudaFlagTable.h
@@ -50,5 +50,5 @@ static cmVS7FlagTable cmVS10CudaFlagTable[] = {
   { "MaxRegCount", "maxrregcount=", "", "", cmVS7FlagTable::UserValue },
   { "MaxRegCount", "maxrregcount", "", "", cmVS7FlagTable::UserFollowing },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10CudaHostFlagTable.h b/Source/cmVS10CudaHostFlagTable.h
index 5b61066..b4b73c7 100644
--- a/Source/cmVS10CudaHostFlagTable.h
+++ b/Source/cmVS10CudaHostFlagTable.h
@@ -31,5 +31,5 @@ static cmVS7FlagTable cmVS10CudaHostFlagTable[] = {
   { "Warning", "W4", "Level 4", "W4", 0 },
   { "Warning", "Wall", "Enable All Warnings", "Wall", 0 },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10LibFlagTable.h b/Source/cmVS10LibFlagTable.h
index be4f475..bb08a1c 100644
--- a/Source/cmVS10LibFlagTable.h
+++ b/Source/cmVS10LibFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS10LibFlagTable[] = {
   { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
   // Skip [TrackerLogDirectory] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10LinkFlagTable.h b/Source/cmVS10LinkFlagTable.h
index 8f5b59b..5ae93d9 100644
--- a/Source/cmVS10LinkFlagTable.h
+++ b/Source/cmVS10LinkFlagTable.h
@@ -243,5 +243,5 @@ static cmVS7FlagTable cmVS10LinkFlagTable[] = {
   { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
     cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10MASMFlagTable.h b/Source/cmVS10MASMFlagTable.h
index 0a45245..3a72a78 100644
--- a/Source/cmVS10MASMFlagTable.h
+++ b/Source/cmVS10MASMFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS10MASMFlagTable[] = {
   // Skip [CommandLineTemplate] - no command line Switch.
   // Skip [ExecutionDescription] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10NASMFlagTable.h b/Source/cmVS10NASMFlagTable.h
index b91af92..b5f3f6f 100644
--- a/Source/cmVS10NASMFlagTable.h
+++ b/Source/cmVS10NASMFlagTable.h
@@ -46,5 +46,5 @@ static cmVS7FlagTable cmVS10NASMFlagTable[] = {
   // Skip [CommandLineTemplate] - no command line Switch.
   // Skip [ExecutionDescription] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS10RCFlagTable.h b/Source/cmVS10RCFlagTable.h
index 6e2b834..347fdab 100644
--- a/Source/cmVS10RCFlagTable.h
+++ b/Source/cmVS10RCFlagTable.h
@@ -3,5 +3,5 @@ static cmVS7FlagTable cmVS10RCFlagTable[] = {
   { "NullTerminateStrings", "n", "", "true", 0 },
   { "SuppressStartupBanner", "nologo", "", "true", 0 },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS11CLFlagTable.h b/Source/cmVS11CLFlagTable.h
index d156938..10f901d 100644
--- a/Source/cmVS11CLFlagTable.h
+++ b/Source/cmVS11CLFlagTable.h
@@ -216,5 +216,5 @@ static cmVS7FlagTable cmVS11CLFlagTable[] = {
   // Skip [XMLDocumentationFileName] - no command line Switch.
   // Skip [BrowseInformationFile] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS11CSharpFlagTable.h b/Source/cmVS11CSharpFlagTable.h
index 18b804a..1b10e7d 100644
--- a/Source/cmVS11CSharpFlagTable.h
+++ b/Source/cmVS11CSharpFlagTable.h
@@ -117,5 +117,5 @@ static cmVS7FlagTable cmVS11CSharpFlagTable[] = {
   { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
   { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
 
-  { 0, 0, 0, 0, 0 },
+  { "", "", "", "", 0 },
 };
diff --git a/Source/cmVS11LibFlagTable.h b/Source/cmVS11LibFlagTable.h
index 15c8ddd..afadf37 100644
--- a/Source/cmVS11LibFlagTable.h
+++ b/Source/cmVS11LibFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS11LibFlagTable[] = {
   { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
   // Skip [TrackerLogDirectory] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS11LinkFlagTable.h b/Source/cmVS11LinkFlagTable.h
index 53f1139..4dea670 100644
--- a/Source/cmVS11LinkFlagTable.h
+++ b/Source/cmVS11LinkFlagTable.h
@@ -268,5 +268,5 @@ static cmVS7FlagTable cmVS11LinkFlagTable[] = {
   { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
     cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS11MASMFlagTable.h b/Source/cmVS11MASMFlagTable.h
index fdf8239..fc0443c 100644
--- a/Source/cmVS11MASMFlagTable.h
+++ b/Source/cmVS11MASMFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS11MASMFlagTable[] = {
   // Skip [CommandLineTemplate] - no command line Switch.
   // Skip [ExecutionDescription] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS11RCFlagTable.h b/Source/cmVS11RCFlagTable.h
index 4997fe1..f71604c 100644
--- a/Source/cmVS11RCFlagTable.h
+++ b/Source/cmVS11RCFlagTable.h
@@ -3,5 +3,5 @@ static cmVS7FlagTable cmVS11RCFlagTable[] = {
   { "NullTerminateStrings", "n", "", "true", 0 },
   { "SuppressStartupBanner", "nologo", "", "true", 0 },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS12CLFlagTable.h b/Source/cmVS12CLFlagTable.h
index a4f2518..5cac77c 100644
--- a/Source/cmVS12CLFlagTable.h
+++ b/Source/cmVS12CLFlagTable.h
@@ -218,5 +218,5 @@ static cmVS7FlagTable cmVS12CLFlagTable[] = {
   // Skip [XMLDocumentationFileName] - no command line Switch.
   // Skip [BrowseInformationFile] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS12CSharpFlagTable.h b/Source/cmVS12CSharpFlagTable.h
index 0370499..d407696 100644
--- a/Source/cmVS12CSharpFlagTable.h
+++ b/Source/cmVS12CSharpFlagTable.h
@@ -117,5 +117,5 @@ static cmVS7FlagTable cmVS12CSharpFlagTable[] = {
   { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
   { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
 
-  { 0, 0, 0, 0, 0 },
+  { "", "", "", "", 0 },
 };
diff --git a/Source/cmVS12LibFlagTable.h b/Source/cmVS12LibFlagTable.h
index 2229b97..d40eb5c 100644
--- a/Source/cmVS12LibFlagTable.h
+++ b/Source/cmVS12LibFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS12LibFlagTable[] = {
   { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
   // Skip [TrackerLogDirectory] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS12LinkFlagTable.h b/Source/cmVS12LinkFlagTable.h
index ddc3ea1..7656e51 100644
--- a/Source/cmVS12LinkFlagTable.h
+++ b/Source/cmVS12LinkFlagTable.h
@@ -268,5 +268,5 @@ static cmVS7FlagTable cmVS12LinkFlagTable[] = {
   { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
     cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS12MASMFlagTable.h b/Source/cmVS12MASMFlagTable.h
index acc0d48..6c3ff90 100644
--- a/Source/cmVS12MASMFlagTable.h
+++ b/Source/cmVS12MASMFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS12MASMFlagTable[] = {
   // Skip [CommandLineTemplate] - no command line Switch.
   // Skip [ExecutionDescription] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS12RCFlagTable.h b/Source/cmVS12RCFlagTable.h
index a650f85..5931431 100644
--- a/Source/cmVS12RCFlagTable.h
+++ b/Source/cmVS12RCFlagTable.h
@@ -3,5 +3,5 @@ static cmVS7FlagTable cmVS12RCFlagTable[] = {
   { "NullTerminateStrings", "n", "", "true", 0 },
   { "SuppressStartupBanner", "nologo", "", "true", 0 },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS140CLFlagTable.h b/Source/cmVS140CLFlagTable.h
index 2b89042..25ac14b 100644
--- a/Source/cmVS140CLFlagTable.h
+++ b/Source/cmVS140CLFlagTable.h
@@ -236,5 +236,5 @@ static cmVS7FlagTable cmVS140CLFlagTable[] = {
   // Skip [XMLDocumentationFileName] - no command line Switch.
   // Skip [BrowseInformationFile] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS140CSharpFlagTable.h b/Source/cmVS140CSharpFlagTable.h
index f695f45..c651d67 100644
--- a/Source/cmVS140CSharpFlagTable.h
+++ b/Source/cmVS140CSharpFlagTable.h
@@ -117,5 +117,5 @@ static cmVS7FlagTable cmVS140CSharpFlagTable[] = {
   { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
   { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
 
-  { 0, 0, 0, 0, 0 },
+  { "", "", "", "", 0 },
 };
diff --git a/Source/cmVS140LinkFlagTable.h b/Source/cmVS140LinkFlagTable.h
index fe03153..bf1ee7a 100644
--- a/Source/cmVS140LinkFlagTable.h
+++ b/Source/cmVS140LinkFlagTable.h
@@ -281,5 +281,5 @@ static cmVS7FlagTable cmVS140LinkFlagTable[] = {
   { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
     cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS141CLFlagTable.h b/Source/cmVS141CLFlagTable.h
index 7d219be..1f564f8 100644
--- a/Source/cmVS141CLFlagTable.h
+++ b/Source/cmVS141CLFlagTable.h
@@ -256,5 +256,5 @@ static cmVS7FlagTable cmVS141CLFlagTable[] = {
   // Skip [XMLDocumentationFileName] - no command line Switch.
   // Skip [BrowseInformationFile] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS141CSharpFlagTable.h b/Source/cmVS141CSharpFlagTable.h
index 1f84097..7688dba 100644
--- a/Source/cmVS141CSharpFlagTable.h
+++ b/Source/cmVS141CSharpFlagTable.h
@@ -122,5 +122,5 @@ static cmVS7FlagTable cmVS141CSharpFlagTable[] = {
   { "ErrorReport", "errorreport:queue", "Queue For Next Login", "queue", 0 },
   { "ErrorReport", "errorreport:send", "Send Automatically", "send", 0 },
 
-  { 0, 0, 0, 0, 0 },
+  { "", "", "", "", 0 },
 };
diff --git a/Source/cmVS141LinkFlagTable.h b/Source/cmVS141LinkFlagTable.h
index 7e56c8e..9ee3334 100644
--- a/Source/cmVS141LinkFlagTable.h
+++ b/Source/cmVS141LinkFlagTable.h
@@ -283,5 +283,5 @@ static cmVS7FlagTable cmVS141LinkFlagTable[] = {
   { "KeyContainer", "KEYCONTAINER:", "Key Container", "",
     cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS14LibFlagTable.h b/Source/cmVS14LibFlagTable.h
index adce075..0cac898 100644
--- a/Source/cmVS14LibFlagTable.h
+++ b/Source/cmVS14LibFlagTable.h
@@ -73,5 +73,5 @@ static cmVS7FlagTable cmVS14LibFlagTable[] = {
   { "Name", "NAME:", "Name", "", cmVS7FlagTable::UserValue },
   // Skip [AdditionalOptions] - no command line Switch.
   // Skip [TrackerLogDirectory] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS14MASMFlagTable.h b/Source/cmVS14MASMFlagTable.h
index 82ec9f1..8af1ef6 100644
--- a/Source/cmVS14MASMFlagTable.h
+++ b/Source/cmVS14MASMFlagTable.h
@@ -72,5 +72,5 @@ static cmVS7FlagTable cmVS14MASMFlagTable[] = {
   // Skip [CommandLineTemplate] - no command line Switch.
   // Skip [ExecutionDescription] - no command line Switch.
   // Skip [AdditionalOptions] - no command line Switch.
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };
diff --git a/Source/cmVS14RCFlagTable.h b/Source/cmVS14RCFlagTable.h
index 5dc8d5a..1720276 100644
--- a/Source/cmVS14RCFlagTable.h
+++ b/Source/cmVS14RCFlagTable.h
@@ -3,5 +3,5 @@ static cmVS7FlagTable cmVS14RCFlagTable[] = {
   { "NullTerminateStrings", "n", "", "true", 0 },
   { "SuppressStartupBanner", "nologo", "", "true", 0 },
 
-  { 0, 0, 0, 0, 0 }
+  { "", "", "", "", 0 }
 };

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=139b39985f26d4517072d49715c3dfd50a0d7001
commit 139b39985f26d4517072d49715c3dfd50a0d7001
Author:     Stephan Szabo <stephan.szabo at sony.com>
AuthorDate: Wed Nov 28 07:31:16 2018 -0800
Commit:     Stephan Szabo <stephan.szabo at sony.com>
CommitDate: Wed Nov 28 07:43:24 2018 -0800

    Update XML->JSON generation script
    
    Update generation script to write a newline to generated json.
    Update generation script to remove / or - at start of switches in xml
    Update generation script to put separators on switch as in headers

diff --git a/Source/cmConvertMSBuildXMLToJSON.py b/Source/cmConvertMSBuildXMLToJSON.py
index 92569e7..02074ba 100644
--- a/Source/cmConvertMSBuildXMLToJSON.py
+++ b/Source/cmConvertMSBuildXMLToJSON.py
@@ -96,7 +96,6 @@ def read_msbuild_json(path, values=[]):
 
     return values
 
-
 def main():
     """Script entrypoint."""
     # Parse the arguments
@@ -213,6 +212,14 @@ def __find_and_remove_value(list, compare):
     return found
 
 
+def __normalize_switch(switch, separator):
+    new = switch
+    if switch.startswith("/") or switch.startswith("-"):
+      new = switch[1:]
+    if new and separator:
+      new = new + separator
+    return new
+
 ###########################################################################################
 # private xml functions
 def __convert(root, tag, values, func):
@@ -257,6 +264,8 @@ def __convert_bool(node):
     reverse_switch = __get_attribute(node, 'ReverseSwitch')
 
     if reverse_switch:
+        __with_argument(node, converted)
+
         converted_reverse = copy.deepcopy(converted)
 
         converted_reverse['switch'] = reverse_switch
@@ -303,7 +312,11 @@ def __convert_node(node, default_value='', default_flags=vsflags()):
 
     converted = {}
     converted['name'] = name
-    converted['switch'] = __get_attribute(node, 'Switch')
+
+    switch = __get_attribute(node, 'Switch')
+    separator = __get_attribute(node, 'Separator')
+    converted['switch'] = __normalize_switch(switch, separator)
+
     converted['comment'] = __get_attribute(node, 'DisplayName')
     converted['value'] = default_value
 
@@ -435,7 +448,7 @@ def __write_json_file(path, values):
 
     with open(path, 'w') as f:
         json.dump(sorted_values, f, indent=2, separators=(',', ': '))
-
+        f.write("\n")
 
 ###########################################################################################
 # private list helpers

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

Summary of changes:
 CMakeLists.txt                                     |   26 +-
 Copyright.txt                                      |    2 +
 Help/manual/cmake-modules.7.rst                    |    1 +
 Help/manual/ctest.1.rst                            |   17 +-
 Help/module/FindOctave.rst                         |    1 +
 Help/release/dev/FindOctave.rst                    |    4 +
 Help/release/dev/submit-method.rst                 |    6 +
 Help/variable/CTEST_SCP_COMMAND.rst                |    3 +-
 Help/variable/CTEST_TRIGGER_SITE.rst               |    3 +-
 Modules/CTest.cmake                                |    3 -
 Modules/DartConfiguration.tcl.in                   |    5 -
 Modules/FindOctave.cmake                           |  167 +++
 Source/CMakeLists.txt                              |    3 +-
 Source/CPack/cmCPackFreeBSDGenerator.cxx           |   45 +-
 Source/CTest/cmCTestHandlerCommand.cxx             |   13 +-
 Source/CTest/cmCTestSubmitCommand.cxx              |   15 -
 Source/CTest/cmCTestSubmitHandler.cxx              |  726 +----------
 Source/CTest/cmCTestSubmitHandler.h                |   23 -
 Source/cmCTest.cxx                                 |   16 -
 Source/cmCTest.h                                   |    7 -
 Source/cmConvertMSBuildXMLToJSON.py                |   19 +-
 Source/cmCurl.cxx                                  |    2 -
 Source/cmGlobalVisualStudio10Generator.cxx         |  179 ++-
 Source/cmGlobalVisualStudio10Generator.h           |   21 +-
 Source/cmGlobalVisualStudio11Generator.cxx         |   18 +-
 Source/cmGlobalVisualStudio12Generator.cxx         |   18 +-
 Source/cmGlobalVisualStudio14Generator.cxx         |   18 +-
 Source/cmGlobalVisualStudio15Generator.cxx         |    9 +-
 Source/cmGlobalVisualStudio7Generator.cxx          |    2 +-
 Source/cmGlobalVisualStudio8Generator.cxx          |    2 +-
 Source/cmIDEFlagTable.h                            |   10 +-
 Source/cmIDEOptions.cxx                            |   12 +-
 Source/cmLocalVisualStudio7Generator.cxx           |    8 +-
 Source/cmVS10CLFlagTable.h                         |  205 ---
 Source/cmVS10CSharpFlagTable.h                     |  121 --
 Source/cmVS10CudaFlagTable.h                       |   54 -
 Source/cmVS10CudaHostFlagTable.h                   |   35 -
 Source/cmVS10LibFlagTable.h                        |   76 --
 Source/cmVS10LinkFlagTable.h                       |  247 ----
 Source/cmVS10MASMFlagTable.h                       |   76 --
 Source/cmVS10NASMFlagTable.h                       |   50 -
 Source/cmVS10RCFlagTable.h                         |    7 -
 Source/cmVS11CLFlagTable.h                         |  220 ----
 Source/cmVS11CSharpFlagTable.h                     |  121 --
 Source/cmVS11LibFlagTable.h                        |   76 --
 Source/cmVS11LinkFlagTable.h                       |  272 ----
 Source/cmVS11MASMFlagTable.h                       |   76 --
 Source/cmVS11RCFlagTable.h                         |    7 -
 Source/cmVS12CLFlagTable.h                         |  222 ----
 Source/cmVS12CSharpFlagTable.h                     |  121 --
 Source/cmVS12LibFlagTable.h                        |   76 --
 Source/cmVS12LinkFlagTable.h                       |  272 ----
 Source/cmVS12MASMFlagTable.h                       |   76 --
 Source/cmVS12RCFlagTable.h                         |    7 -
 Source/cmVS140CLFlagTable.h                        |  240 ----
 Source/cmVS140CSharpFlagTable.h                    |  121 --
 Source/cmVS140LinkFlagTable.h                      |  285 -----
 Source/cmVS141CLFlagTable.h                        |  260 ----
 Source/cmVS141CSharpFlagTable.h                    |  126 --
 Source/cmVS141LinkFlagTable.h                      |  287 -----
 Source/cmVS14LibFlagTable.h                        |   77 --
 Source/cmVS14MASMFlagTable.h                       |   76 --
 Source/cmVS14RCFlagTable.h                         |    7 -
 Source/cmVisualStudio10ToolsetOptions.cxx          |  124 +-
 Source/cmVisualStudio10ToolsetOptions.h            |   32 +-
 Templates/MSBuild/FlagTables/v10_CL.json           |  981 +++++++++++++++
 Templates/MSBuild/FlagTables/v10_CSharp.json       |  570 +++++++++
 Templates/MSBuild/FlagTables/v10_Cuda.json         |  224 ++++
 Templates/MSBuild/FlagTables/v10_CudaHost.json     |  149 +++
 Templates/MSBuild/FlagTables/v10_LIB.json          |  297 +++++
 Templates/MSBuild/FlagTables/v10_Link.json         | 1137 +++++++++++++++++
 Templates/MSBuild/FlagTables/v10_MASM.json         |  295 +++++
 Templates/MSBuild/FlagTables/v10_NASM.json         |  201 +++
 Templates/MSBuild/FlagTables/v10_RC.json           |   69 +
 Templates/MSBuild/FlagTables/v11_CL.json           | 1063 ++++++++++++++++
 Templates/MSBuild/FlagTables/v11_CSharp.json       |  570 +++++++++
 Templates/MSBuild/FlagTables/v11_LIB.json          |  297 +++++
 Templates/MSBuild/FlagTables/v11_Link.json         | 1272 +++++++++++++++++++
 Templates/MSBuild/FlagTables/v11_MASM.json         |  295 +++++
 Templates/MSBuild/FlagTables/v11_RC.json           |   69 +
 Templates/MSBuild/FlagTables/v12_CL.json           | 1077 ++++++++++++++++
 Templates/MSBuild/FlagTables/v12_CSharp.json       |  570 +++++++++
 Templates/MSBuild/FlagTables/v12_LIB.json          |  297 +++++
 Templates/MSBuild/FlagTables/v12_Link.json         | 1272 +++++++++++++++++++
 Templates/MSBuild/FlagTables/v12_MASM.json         |  295 +++++
 Templates/MSBuild/FlagTables/v12_RC.json           |   69 +
 Templates/MSBuild/FlagTables/v140_CL.json          | 1184 ++++++++++++++++++
 Templates/MSBuild/FlagTables/v140_CSharp.json      |  570 +++++++++
 Templates/MSBuild/FlagTables/v140_Link.json        | 1316 +++++++++++++++++++
 Templates/MSBuild/FlagTables/v141_CL.json          | 1261 +++++++++++++++++++
 Templates/MSBuild/FlagTables/v141_CSharp.json      |  570 +++++++++
 Templates/MSBuild/FlagTables/v141_Link.json        | 1323 ++++++++++++++++++++
 Templates/MSBuild/FlagTables/v14_LIB.json          |  304 +++++
 Templates/MSBuild/FlagTables/v14_MASM.json         |  295 +++++
 Templates/MSBuild/FlagTables/v14_RC.json           |   69 +
 Tests/CMakeLists.txt                               |    4 +
 Tests/CTestTestBadExe/CTestConfig.cmake            |    2 -
 Tests/CTestTestBadGenerator/CTestConfig.cmake      |    2 -
 Tests/CTestTestCostSerial/CTestConfig.cmake        |    2 -
 Tests/CTestTestCrash/CTestConfig.cmake             |    2 -
 Tests/CTestTestCycle/CTestConfig.cmake             |    2 -
 Tests/CTestTestDepends/CTestConfig.cmake           |    2 -
 Tests/CTestTestFailure/CTestConfig.cmake           |    2 -
 .../CTestConfig.cmake                              |    2 -
 .../CTestConfig.cmake                              |    2 -
 .../launcher_linker_test_project/CTestConfig.cmake |    2 -
 Tests/CTestTestParallel/CTestConfig.cmake          |    2 -
 Tests/CTestTestResourceLock/CTestConfig.cmake      |    2 -
 Tests/CTestTestScheduler/CTestConfig.cmake         |    2 -
 Tests/CTestTestSkipReturnCode/CTestConfig.cmake    |    2 -
 Tests/CTestTestStopTime/CTestConfig.cmake          |    2 -
 Tests/CTestTestSubdir/CTestConfig.cmake            |    2 -
 Tests/CTestTestTimeout/CTestConfig.cmake           |    2 -
 Tests/CTestTestUpload/CTestConfig.cmake            |    2 -
 Tests/CTestTestVerboseOutput/CTestConfig.cmake     |    2 -
 Tests/CTestTestZeroTimeout/CTestConfig.cmake       |    2 -
 Tests/FindOctave/CMakeLists.txt                    |   10 +
 Tests/FindOctave/Test/CMakeLists.txt               |   20 +
 Tests/FindOctave/Test/main.cpp                     |   18 +
 Tests/FindOctave/Test/testtrue.m                   |    1 +
 Tests/RunCMake/ctest_memcheck/CTestConfig.cmake.in |    2 -
 Tests/RunCMake/ctest_submit/FailDrop-cp-result.txt |    1 -
 Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt |    3 -
 Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt |    1 -
 .../RunCMake/ctest_submit/FailDrop-ftp-result.txt  |    1 -
 .../RunCMake/ctest_submit/FailDrop-ftp-stderr.txt  |    2 -
 .../RunCMake/ctest_submit/FailDrop-ftp-stdout.txt  |    3 -
 .../RunCMake/ctest_submit/FailDrop-scp-result.txt  |    1 -
 .../RunCMake/ctest_submit/FailDrop-scp-stderr.txt  |    1 -
 .../RunCMake/ctest_submit/FailDrop-scp-stdout.txt  |    1 -
 .../ctest_submit/FailDrop-xmlrpc-result.txt        |    1 -
 .../ctest_submit/FailDrop-xmlrpc-stderr.txt        |    1 -
 .../ctest_submit/FailDrop-xmlrpc-stdout.txt        |    1 -
 Tests/RunCMake/ctest_submit/RunCMakeTest.cmake     |    4 -
 Utilities/IWYU/mapping.imp                         |    3 -
 Utilities/cmThirdParty.h.in                        |    1 -
 Utilities/cm_xmlrpc.h                              |   13 -
 137 files changed, 18509 insertions(+), 5041 deletions(-)
 create mode 100644 Help/module/FindOctave.rst
 create mode 100644 Help/release/dev/FindOctave.rst
 create mode 100644 Help/release/dev/submit-method.rst
 create mode 100644 Modules/FindOctave.cmake
 delete mode 100644 Source/cmVS10CLFlagTable.h
 delete mode 100644 Source/cmVS10CSharpFlagTable.h
 delete mode 100644 Source/cmVS10CudaFlagTable.h
 delete mode 100644 Source/cmVS10CudaHostFlagTable.h
 delete mode 100644 Source/cmVS10LibFlagTable.h
 delete mode 100644 Source/cmVS10LinkFlagTable.h
 delete mode 100644 Source/cmVS10MASMFlagTable.h
 delete mode 100644 Source/cmVS10NASMFlagTable.h
 delete mode 100644 Source/cmVS10RCFlagTable.h
 delete mode 100644 Source/cmVS11CLFlagTable.h
 delete mode 100644 Source/cmVS11CSharpFlagTable.h
 delete mode 100644 Source/cmVS11LibFlagTable.h
 delete mode 100644 Source/cmVS11LinkFlagTable.h
 delete mode 100644 Source/cmVS11MASMFlagTable.h
 delete mode 100644 Source/cmVS11RCFlagTable.h
 delete mode 100644 Source/cmVS12CLFlagTable.h
 delete mode 100644 Source/cmVS12CSharpFlagTable.h
 delete mode 100644 Source/cmVS12LibFlagTable.h
 delete mode 100644 Source/cmVS12LinkFlagTable.h
 delete mode 100644 Source/cmVS12MASMFlagTable.h
 delete mode 100644 Source/cmVS12RCFlagTable.h
 delete mode 100644 Source/cmVS140CLFlagTable.h
 delete mode 100644 Source/cmVS140CSharpFlagTable.h
 delete mode 100644 Source/cmVS140LinkFlagTable.h
 delete mode 100644 Source/cmVS141CLFlagTable.h
 delete mode 100644 Source/cmVS141CSharpFlagTable.h
 delete mode 100644 Source/cmVS141LinkFlagTable.h
 delete mode 100644 Source/cmVS14LibFlagTable.h
 delete mode 100644 Source/cmVS14MASMFlagTable.h
 delete mode 100644 Source/cmVS14RCFlagTable.h
 create mode 100644 Templates/MSBuild/FlagTables/v10_CL.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_CSharp.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_Cuda.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_CudaHost.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_LIB.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_Link.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_MASM.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_NASM.json
 create mode 100644 Templates/MSBuild/FlagTables/v10_RC.json
 create mode 100644 Templates/MSBuild/FlagTables/v11_CL.json
 create mode 100644 Templates/MSBuild/FlagTables/v11_CSharp.json
 create mode 100644 Templates/MSBuild/FlagTables/v11_LIB.json
 create mode 100644 Templates/MSBuild/FlagTables/v11_Link.json
 create mode 100644 Templates/MSBuild/FlagTables/v11_MASM.json
 create mode 100644 Templates/MSBuild/FlagTables/v11_RC.json
 create mode 100644 Templates/MSBuild/FlagTables/v12_CL.json
 create mode 100644 Templates/MSBuild/FlagTables/v12_CSharp.json
 create mode 100644 Templates/MSBuild/FlagTables/v12_LIB.json
 create mode 100644 Templates/MSBuild/FlagTables/v12_Link.json
 create mode 100644 Templates/MSBuild/FlagTables/v12_MASM.json
 create mode 100644 Templates/MSBuild/FlagTables/v12_RC.json
 create mode 100644 Templates/MSBuild/FlagTables/v140_CL.json
 create mode 100644 Templates/MSBuild/FlagTables/v140_CSharp.json
 create mode 100644 Templates/MSBuild/FlagTables/v140_Link.json
 create mode 100644 Templates/MSBuild/FlagTables/v141_CL.json
 create mode 100644 Templates/MSBuild/FlagTables/v141_CSharp.json
 create mode 100644 Templates/MSBuild/FlagTables/v141_Link.json
 create mode 100644 Templates/MSBuild/FlagTables/v14_LIB.json
 create mode 100644 Templates/MSBuild/FlagTables/v14_MASM.json
 create mode 100644 Templates/MSBuild/FlagTables/v14_RC.json
 create mode 100644 Tests/FindOctave/CMakeLists.txt
 create mode 100644 Tests/FindOctave/Test/CMakeLists.txt
 create mode 100644 Tests/FindOctave/Test/main.cpp
 create mode 100644 Tests/FindOctave/Test/testtrue.m
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-cp-result.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-cp-stderr.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-cp-stdout.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-ftp-result.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-ftp-stderr.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-ftp-stdout.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-scp-result.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-scp-stderr.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-scp-stdout.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-result.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stderr.txt
 delete mode 100644 Tests/RunCMake/ctest_submit/FailDrop-xmlrpc-stdout.txt
 delete mode 100644 Utilities/cm_xmlrpc.h


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list