diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/cpp/cc_configure.bzl | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/tools/cpp/cc_configure.bzl b/tools/cpp/cc_configure.bzl index 0ae4483492..f7eb191a7d 100644 --- a/tools/cpp/cc_configure.bzl +++ b/tools/cpp/cc_configure.bzl @@ -298,7 +298,22 @@ def _crosstool_content(repository_ctx, cc, cpu_value, darwin): # TODO(pcloudy): Remove this after MSVC CROSSTOOL becomes default on Windows def _get_windows_crosstool_content(repository_ctx): """Return the content of msys crosstool which is still the default CROSSTOOL on Windows.""" - msys_root = _execute(repository_ctx, ["cygpath", "-m", "/"]) + bazel_sh = _get_env_var(repository_ctx, "BAZEL_SH").replace("\\", "/").lower() + tokens = bazel_sh.rsplit("/", 1) + msys_root = None + # while-loops are not supported in order to avoid Turing-completeness. + # Use a for-loop, we know it'll halt in at most len(tokens[0]) steps. + for _ in range(len(tokens[0])): + if len(tokens) < 2: + break + if tokens[1].startswith("msys"): + msys_root = tokens[0] + "/" + tokens[1] + "/" + break + else: + tokens = tokens[0].rsplit("/", 1) + if not msys_root: + auto_configure_fail( + "Could not determine MSYS root from BAZEL_SH (%s)" % bazel_sh) return ( ' abi_version: "local"\n' + ' abi_libc_version: "local"\n' + |