Make MSVC CROSSTOOL default on Windows 

The default C++ CROSSTOOL on Windows now becomes MSVC,
--cpu=x64_windows_msvc is still supported

To use MSYS toolcahin, add --cpu=x64_windows_msys and
--host_cpu=x64_windows_msys for host compilation

See https://github.com/bazelbuild/bazel/issues/2627

--
Change-Id: Ie788a39cb5ffbc9fc956ccfd51a3cc816c74543a
Reviewed-on: https://cr.bazel.build/9292
PiperOrigin-RevId: 149530250
MOS_MIGRATED_REVID=149530250
diff --git a/src/main/tools/jdk.BUILD b/src/main/tools/jdk.BUILD
index 97ac6db..3e27344 100644
--- a/src/main/tools/jdk.BUILD
+++ b/src/main/tools/jdk.BUILD
@@ -29,6 +29,8 @@
     name = "java",
     srcs = select({
        ":windows" : ["bin/java.exe"],
+       ":windows_msys" : ["bin/java.exe"],
+       ":windows_msvc" : ["bin/java.exe"],
        "//conditions:default" : ["bin/java"],
     }),
 )
@@ -37,6 +39,8 @@
     name = "jar",
     srcs = select({
        ":windows" : ["bin/jar.exe"],
+       ":windows_msys" : ["bin/jar.exe"],
+       ":windows_msvc" : ["bin/jar.exe"],
        "//conditions:default" : ["bin/jar"],
     }),
 )
@@ -45,6 +49,8 @@
     name = "javac",
     srcs = select({
         ":windows" : ["bin/javac.exe"],
+        ":windows_msys" : ["bin/javac.exe"],
+        ":windows_msvc" : ["bin/javac.exe"],
         "//conditions:default" : ["bin/javac"],
     }),
 )
@@ -91,6 +97,8 @@
         # common antivirus software blocks access to npjp2.dll interfering with Bazel,
         # so do not include it in JRE on Windows.
         ":windows" : glob(["jre/bin/**"], exclude = ["jre/bin/plugin2/**"]),
+        ":windows_msys" : glob(["jre/bin/**"], exclude = ["jre/bin/plugin2/**"]),
+        ":windows_msvc" : glob(["jre/bin/**"], exclude = ["jre/bin/plugin2/**"]),
         "//conditions:default" : glob(["jre/bin/**"])
     }),
 )
@@ -169,3 +177,15 @@
     values = {"cpu": "x64_windows"},
     visibility = ["//visibility:private"],
 )
+
+config_setting(
+    name = "windows_msys",
+    values = {"cpu": "x64_windows_msys"},
+    visibility = ["//visibility:private"],
+)
+
+config_setting(
+    name = "windows_msvc",
+    values = {"cpu": "x64_windows_msvc"},
+    visibility = ["//visibility:private"],
+)
diff --git a/tools/cpp/BUILD.static b/tools/cpp/BUILD.static
index 43bdad8..9ae4950 100644
--- a/tools/cpp/BUILD.static
+++ b/tools/cpp/BUILD.static
@@ -19,8 +19,9 @@
     toolchains = {
         "armeabi-v7a|compiler": ":cc-compiler-armeabi-v7a",
         "freebsd|compiler": ":cc-compiler-freebsd",
-        "x64_windows|windows_msys64": ":cc-compiler-x64_windows",
-        "x64_windows_msvc|cl": ":cc-compiler-x64_windows_msvc",
+        "x64_windows|cl": ":cc-compiler-x64_windows",
+        "x64_windows_msvc|cl": ":cc-compiler-x64_windows",
+        "x64_windows_msys|windows_msys64": ":cc-compiler-x64_windows_msys",
         "ios_x86_64|compiler": ":cc-compiler-ios_x86_64",
     },
 )
@@ -54,7 +55,7 @@
 )
 
 cc_toolchain(
-    name = "cc-compiler-x64_windows",
+    name = "cc-compiler-x64_windows_msys",
     all_files = ":empty",
     compiler_files = ":empty",
     cpu = "local",
@@ -68,7 +69,7 @@
 )
 
 cc_toolchain(
-    name = "cc-compiler-x64_windows_msvc",
+    name = "cc-compiler-x64_windows",
     all_files = ":every-file-x64_windows",
     compiler_files = ":compile-x64_windows",
     cpu = "x64_windows",
diff --git a/tools/cpp/CROSSTOOL.tpl b/tools/cpp/CROSSTOOL.tpl
index 1a18ebe..906c1f5 100644
--- a/tools/cpp/CROSSTOOL.tpl
+++ b/tools/cpp/CROSSTOOL.tpl
@@ -4,7 +4,7 @@
 
 default_toolchain {
   cpu: "%{cpu}"
-  toolchain_identifier: "local"
+  toolchain_identifier: "%{default_toolchain_name}"
 }
 
 default_toolchain {
@@ -14,7 +14,12 @@
 
 default_toolchain {
   cpu: "x64_windows_msvc"
-  toolchain_identifier: "vc_14_0_x64"
+  toolchain_identifier: "msvc_x64"
+}
+
+default_toolchain {
+  cpu: "x64_windows_msys"
+  toolchain_identifier: "msys_x64"
 }
 
 default_toolchain {
@@ -93,7 +98,7 @@
 }
 
 toolchain {
-  toolchain_identifier: "local"
+  toolchain_identifier: "%{toolchain_name}"
 %{content}
 
   compilation_mode_flags {
@@ -110,13 +115,13 @@
 }
 
 toolchain {
-  toolchain_identifier: "vc_14_0_x64"
+  toolchain_identifier: "msvc_x64"
   host_system_name: "local"
   target_system_name: "local"
 
   abi_version: "local"
   abi_libc_version: "local"
-  target_cpu: "x64_windows_msvc"
+  target_cpu: "x64_windows"
   compiler: "cl"
   target_libc: "msvcrt140"
   default_python_version: "python2.7"
diff --git a/tools/cpp/cc_configure.bzl b/tools/cpp/cc_configure.bzl
index 99ae959..744e0ed 100644
--- a/tools/cpp/cc_configure.bzl
+++ b/tools/cpp/cc_configure.bzl
@@ -301,7 +301,7 @@
   }
 
 # TODO(pcloudy): Remove this after MSVC CROSSTOOL becomes default on Windows
-def _get_windows_crosstool_content(repository_ctx):
+def _get_windows_msys_crosstool_content(repository_ctx):
   """Return the content of msys crosstool which is still the default CROSSTOOL on Windows."""
   bazel_sh = _get_env_var(repository_ctx, "BAZEL_SH").replace("\\", "/").lower()
   tokens = bazel_sh.rsplit("/", 1)
@@ -327,7 +327,7 @@
       '   host_system_name: "local"\n' +
       "   needsPic: false\n" +
       '   target_libc: "local"\n' +
-      '   target_cpu: "x64_windows"\n' +
+      '   target_cpu: "x64_windows_msys"\n' +
       '   target_system_name: "local"\n' +
       '   tool_path { name: "ar" path: "%susr/bin/ar" }\n' % msys_root +
       '   tool_path { name: "compat-ld" path: "%susr/bin/ld" }\n' % msys_root +
@@ -718,7 +718,9 @@
         cxx_include_directories.append(("cxx_builtin_include_directory: \"%s\"" % path))
     _tpl(repository_ctx, "CROSSTOOL", {
         "%{cpu}": cpu_value,
-        "%{content}": _get_windows_crosstool_content(repository_ctx),
+        "%{default_toolchain_name}": "msvc_x64",
+        "%{toolchain_name}": "msys_x64",
+        "%{content}": _get_windows_msys_crosstool_content(repository_ctx),
         "%{opt_content}": "",
         "%{dbg_content}": "",
         "%{cxx_builtin_include_directory}": "\n".join(cxx_include_directories),
@@ -743,6 +745,8 @@
         "cc_wrapper.sh")
     _tpl(repository_ctx, "CROSSTOOL", {
         "%{cpu}": cpu_value,
+        "%{default_toolchain_name}": "local",
+        "%{toolchain_name}": "local",
         "%{content}": _build_crosstool(crosstool_content) + "\n" +
                       _build_tool_path(tool_paths),
         "%{opt_content}": _build_crosstool(opt_content, "    "),