Make Bazel build with MSVC-default-toolchain Bazel 

After this change, a msys bazel can be built with
a MSVC-default Bazel by adding --cpu=x64_windows_msys --host=x64_windows_msys

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

--
Change-Id: Iaa82bf4dd911c5740b98d3b2739dfccca6203f79
Reviewed-on: https://cr.bazel.build/9293
PiperOrigin-RevId: 149532274
MOS_MIGRATED_REVID=149532274
diff --git a/compile.sh b/compile.sh
index 67223e6..2b5c073 100755
--- a/compile.sh
+++ b/compile.sh
@@ -113,6 +113,12 @@
     xcodebuild -showsdks 2> /dev/null | grep -q '\-sdk iphonesimulator'; then
   EXTRA_BAZEL_ARGS="${EXTRA_BAZEL_ARGS-} --define IPHONE_SDK=1"
 fi
+
+case "${PLATFORM}" in
+msys*|mingw*)
+  EXTRA_BAZEL_ARGS="${EXTRA_BAZEL_ARGS-} --cpu=x64_windows_msys --host_cpu=x64_windows_msys"
+esac
+
 source scripts/bootstrap/bootstrap.sh
 
 if [ $DO_COMPILE ]; then
diff --git a/src/BUILD b/src/BUILD
index 60001d6..d350c6a 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -9,6 +9,7 @@
         ":darwin": ["//src/main/native:libunix.dylib"],
         ":darwin_x86_64": ["//src/main/native:libunix.dylib"],
         ":windows": ["//src/main/native:windows_jni.dll"],
+        ":windows_msys": ["//src/main/native:windows_jni.dll"],
         ":windows_msvc": ["//src/main/native:windows_jni.dll"],
         "//conditions:default": ["//src/main/native:libunix.so"],
     }),
@@ -279,6 +280,12 @@
     visibility = ["//visibility:public"],
 )
 
+config_setting(
+    name = "windows_msys",
+    values = {"cpu": "x64_windows_msys"},
+    visibility = ["//visibility:public"],
+)
+
 filegroup(
     name = "srcs",
     srcs = glob(["**"]) + [
diff --git a/src/main/cpp/BUILD b/src/main/cpp/BUILD
index f174f3f..05a53c5 100644
--- a/src/main/cpp/BUILD
+++ b/src/main/cpp/BUILD
@@ -26,6 +26,9 @@
         "//src:windows": [
             "blaze_util_windows.cc",
         ],
+        "//src:windows_msys": [
+            "blaze_util_windows.cc",
+        ],
         "//src:windows_msvc": [
             "blaze_util_windows.cc",
         ],
@@ -60,6 +63,7 @@
         "//src/main/cpp/util:blaze_exit_code",
     ] + select({
         "//src:windows": ["//src/main/native:windows_jni_lib"],
+        "//src:windows_msys": ["//src/main/native:windows_jni_lib"],
         "//src:windows_msvc": ["//src/main/native:windows_jni_lib"],
         "//conditions:default": [],
     }),
diff --git a/src/main/cpp/util/BUILD b/src/main/cpp/util/BUILD
index 2b821a7..6bd3b444 100644
--- a/src/main/cpp/util/BUILD
+++ b/src/main/cpp/util/BUILD
@@ -35,6 +35,9 @@
         "//src:windows": [
             "file_windows.cc",
         ],
+        "//src:windows_msys": [
+            "file_windows.cc",
+        ],
         "//src:windows_msvc": [
             "file_windows.cc",
         ],
@@ -57,6 +60,7 @@
         ":strings",
     ] + select({
         "//src:windows": ["//src/main/native:windows_jni_lib"],
+        "//src:windows_msys": ["//src/main/native:windows_jni_lib"],
         "//src:windows_msvc": ["//src/main/native:windows_jni_lib"],
         "//conditions:default": [],
     }),
@@ -66,6 +70,7 @@
     name = "errors",
     srcs = ["errors.cc"] + select({
         "//src:windows": ["errors_windows.cc"],
+        "//src:windows_msys": ["errors_windows.cc"],
         "//src:windows_msvc": ["errors_windows.cc"],
         "//conditions:default": ["errors_posix.cc"],
     }),
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 20047b5..604b512 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -70,6 +70,7 @@
     resources = select({
         # todo(dslomov): Get rid of this whole library on Windows.
         "//src:windows": [],
+        "//src:windows_msys": [],
         "//src:windows_msvc": [],
         "//conditions:default": ["//src/main/native:libunix.so"],
     }),
diff --git a/src/main/tools/BUILD b/src/main/tools/BUILD
index d7bb93b..3ddad54 100644
--- a/src/main/tools/BUILD
+++ b/src/main/tools/BUILD
@@ -32,6 +32,7 @@
         "//src:darwin_x86_64": ["dummy-sandbox.c"],
         "//src:freebsd": ["dummy-sandbox.c"],
         "//src:windows": ["dummy-sandbox.c"],
+        "//src:windows_msys": ["dummy-sandbox.c"],
         "//src:windows_msvc": ["dummy-sandbox.c"],
         "//conditions:default": [
             "linux-sandbox.cc",
diff --git a/src/test/cpp/BUILD b/src/test/cpp/BUILD
index 057c721..6278f5b 100644
--- a/src/test/cpp/BUILD
+++ b/src/test/cpp/BUILD
@@ -15,6 +15,10 @@
             "blaze_util_test.cc",
             "blaze_util_windows_test.cc",
         ],
+        "//src:windows_msys": [
+            "blaze_util_test.cc",
+            "blaze_util_windows_test.cc",
+        ],
         "//src:windows_msvc": [
             "blaze_util_windows_test.cc",
         ],
diff --git a/src/test/cpp/util/BUILD b/src/test/cpp/util/BUILD
index 18d5167..46f4e2e 100644
--- a/src/test/cpp/util/BUILD
+++ b/src/test/cpp/util/BUILD
@@ -23,7 +23,9 @@
     size = "small",
     srcs = ["file_test.cc"] + select({
         "//src:windows": [
-            "file_posix_test.cc",
+            "file_windows_test.cc",
+        ],
+        "//src:windows_msys": [
             "file_windows_test.cc",
         ],
         "//src:windows_msvc": [
@@ -43,6 +45,10 @@
             ":windows_test_util",
             "//src/main/native:windows_jni_lib",
         ],
+        "//src:windows_msys": [
+            ":windows_test_util",
+            "//src/main/native:windows_jni_lib",
+        ],
         "//src:windows_msvc": [
             ":windows_test_util",
             "//src/main/native:windows_jni_lib",
@@ -86,11 +92,13 @@
     testonly = 1,
     srcs = select({
         "//src:windows": ["windows_test_util.cc"],
+        "//src:windows_msys": ["windows_test_util.cc"],
         "//src:windows_msvc": ["windows_test_util.cc"],
         "//conditions:default": [],
     }),
     hdrs = select({
         "//src:windows": ["windows_test_util.h"],
+        "//src:windows_msys": ["windows_test_util.h"],
         "//src:windows_msvc": ["windows_test_util.h"],
         "//conditions:default": [],
     }),
@@ -105,6 +113,7 @@
     size = "small",
     srcs = select({
         "//src:windows": ["windows_test_util_test.cc"],
+        "//src:windows_msys": ["windows_test_util_test.cc"],
         "//src:windows_msvc": ["windows_test_util_test.cc"],
         "//conditions:default": ["dummy_test.cc"],
     }),
@@ -113,6 +122,10 @@
             ":windows_test_util",
             "//third_party:gtest",
         ],
+        "//src:windows_msys": [
+            ":windows_test_util",
+            "//third_party:gtest",
+        ],
         "//src:windows_msvc": [
             ":windows_test_util",
             "//third_party:gtest",
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index b1bbf23..2aa95f5 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -23,6 +23,7 @@
 
 JNI_LIB = select({
     "//src:windows": ["//src/main/native:windows_jni.dll"],
+    "//src:windows_msys": ["//src/main/native:windows_jni.dll"],
     "//src:windows_msvc": ["//src/main/native:windows_jni.dll"],
     "//conditions:default": [
         "//src/main/native:libunix.dylib",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD
index 2b281f0..ed24a50 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD
@@ -8,6 +8,7 @@
     name = "RepositoryTests",
     srcs = select({
         "//src:windows": [":RepositoryTests_windows_srcs"],
+        "//src:windows_msys": [":RepositoryTests_windows_srcs"],
         "//src:windows_msvc": [":RepositoryTests_windows_srcs"],
         "//conditions:default": glob(["*.java"]),
     }),
diff --git a/src/test/native/BUILD b/src/test/native/BUILD
index be04c76..4dd916f 100644
--- a/src/test/native/BUILD
+++ b/src/test/native/BUILD
@@ -16,6 +16,10 @@
             "windows_util_test.cc",
             "windows_file_operations_test.cc",
         ],
+        "//src:windows_msys": [
+            "windows_util_test.cc",
+            "windows_file_operations_test.cc",
+        ],
         "//src:windows_msvc": [
             "windows_util_test.cc",
             "windows_file_operations_test.cc",
@@ -28,6 +32,11 @@
             "//src/test/cpp/util:windows_test_util",
             "//third_party:gtest",
         ],
+        "//src:windows_msys": [
+            "//src/main/native:windows_jni_lib",
+            "//src/test/cpp/util:windows_test_util",
+            "//third_party:gtest",
+        ],
         "//src:windows_msvc": [
             "//src/main/native:windows_jni_lib",
             "//src/test/cpp/util:windows_test_util",
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 38029e0..ba16b20 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -146,6 +146,7 @@
         "//src:darwin": [],
         "//src:darwin_x86_64": [],
         "//src:windows": [],
+        "//src:windows_msys": [],
         "//src:windows_msvc": [],
         "//conditions:default": ["//src/test/shell/bazel/testdata:bazel_toolchain_test_project_pkg"],
     }),