Files
carbon-lang/bazel/cc_toolchains/clang_toolchain.BUILD
T
ethangandJon Ross-Perkins 2f3ff12704 Adding Windows support for building Carbon with Bazel. (#1754)
This PR fixes issue #298. I am attempting to build Carbon using Bazel on Windows, without the need to go through WSL. This is still a work in progress, below is a list of issues I have discovered and my fixes for them.

- Windows does not support Homebrew; however, I was able to properly install all of the required packages through [Chocolatey](https://chocolatey.org/). This was my first time using the Chocolatey package manager, yet it was fairly easy to use. I believe there are other options as well for Windows.
- As is mentioned in issue #298, your Windows installation must be running in [Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development). This will allow unprivileged users to create symlinks during the build process.
- As it currently stands in trunk, clang_configuration.bzl will fail when attempting to run the method `_compute_clang_cpp_include_search_paths` on Windows. I have discovered that this is because Clang++.exe fails to execute if you provide it with an input file that does not exist. Thus, I have the build script generate an empty temp file in the Bazel repo for Clang to use when running the above method. 
- A cc toolchain specifically for Windows was created in clang_toolchain.BUILD. I simply mimicked what was done for other platforms, I apologize if this is incorrect since I am fairly new to Bazel.

As I understand it, the next step is to configure clang_cc_toolchain_config.bzl to support the new Windows toolchain. I intend to continue working on this, however as I stated I am quite new so help is seriously appreciated!

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
2022-08-23 13:28:47 -07:00

109 lines
2.6 KiB
INI

# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# This file is symlinked into a configured Clang toolchain repository as the
# root `BUILD` file for that repository.
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_toolchain", "cc_toolchain_suite")
load(":cc_toolchain_config.bzl", "cc_toolchain_config")
cc_library(
name = "malloc",
)
filegroup(
name = "empty",
srcs = [],
)
cc_toolchain_suite(
name = "bazel_cc_toolchain",
toolchains = {
"darwin": ":cc-compiler-darwin",
"darwin_arm64": ":cc-compiler-darwin-arm64",
"k8": ":cc-compiler-k8",
"x64_windows": ":cc-compiler-x64-windows",
},
)
cc_toolchain(
name = "cc-compiler-k8",
all_files = ":empty",
ar_files = ":empty",
as_files = ":empty",
compiler_files = ":empty",
dwp_files = ":empty",
linker_files = ":empty",
objcopy_files = ":empty",
strip_files = ":empty",
supports_param_files = 1,
toolchain_config = ":local-k8",
toolchain_identifier = "local-k8",
)
cc_toolchain_config(
name = "local-k8",
target_cpu = "k8",
)
cc_toolchain(
name = "cc-compiler-darwin",
all_files = ":empty",
ar_files = ":empty",
as_files = ":empty",
compiler_files = ":empty",
dwp_files = ":empty",
linker_files = ":empty",
objcopy_files = ":empty",
strip_files = ":empty",
supports_param_files = 1,
toolchain_config = ":local-darwin",
toolchain_identifier = "local-darwin",
)
cc_toolchain_config(
name = "local-darwin",
target_cpu = "darwin",
)
cc_toolchain(
name = "cc-compiler-darwin-arm64",
all_files = ":empty",
ar_files = ":empty",
as_files = ":empty",
compiler_files = ":empty",
dwp_files = ":empty",
linker_files = ":empty",
objcopy_files = ":empty",
strip_files = ":empty",
supports_param_files = 1,
toolchain_config = ":local-darwin-arm64",
toolchain_identifier = "local-darwin-arm64",
)
cc_toolchain_config(
name = "local-darwin-arm64",
target_cpu = "darwin_arm64",
)
cc_toolchain(
name = "cc-compiler-x64-windows",
all_files = ":empty",
ar_files = ":empty",
as_files = ":empty",
compiler_files = ":empty",
dwp_files = ":empty",
linker_files = ":empty",
objcopy_files = ":empty",
strip_files = ":empty",
supports_param_files = 1,
toolchain_config = ":local-x64-windows",
toolchain_identifier = "local-x64-windows",
)
cc_toolchain_config(
name = "local-x64-windows",
target_cpu = "x64_windows",
)