skia2/toolchain/BUILD.bazel
Jorge Betancourt b894c69abb set up tools for building Skia on Mac semi hermetically
Reviewer notes:
PS1 and PS2 handle everything up to the linking stage of the build
PS6 and PS7 are trivial renamings and rebases, diff between Base->PS5 for a cleaner review

No-Try: true
Change-Id: Ib21ce2e8839ecd4b4dd57280e82f56a98194e476
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/532765
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
2022-05-04 16:56:46 +00:00

94 lines
2.9 KiB
Python

load("//bazel:macros.bzl", "exports_files_legacy")
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
load(":linux_amd64_toolchain_config.bzl", "provide_linux_amd64_toolchain_config")
load(":mac_m1_toolchain_config.bzl", "provide_mac_m1_toolchain_config")
licenses(["notice"])
exports_files_legacy()
package(default_visibility = ["//visibility:public"])
# https://bazel.build/reference/be/c-cpp#cc_toolchain_suite
# cc_toolchain_suite will fetch deps for toolchains it will not use, which
# is why we split up the suites by OS. When attempting to fetch "@clang_linux_amd64//:all_files",
# a script compiled for linux to extract ar archives will break on other platforms.
cc_toolchain_suite(
name = "clang_suite_linux",
toolchains = {
# The key is target_cpu|compiler
# compiler appears to be a string we can choose arbitrarily
# https://bazel.build/reference/command-line-reference?hl=en#flag--compiler
"k8|host_is_linux_amd64": ":linux_amd64_host",
"x86_64|host_is_linux_amd64": ":linux_amd64_host",
"k8": ":linux_amd64_host",
},
)
cc_toolchain_suite(
name = "clang_suite_mac",
toolchains = {
"arm64|host_is_mac_m1": ":mac_m1_host",
"darwin|host_is_mac_m1": ":mac_m1_host",
"darwin_arm64|host_is_mac_m1": ":mac_m1_host",
},
)
filegroup(name = "not_implemented")
filegroup(
name = "all_linux_amd64_files",
srcs = [
"linux_trampolines/IWYU_mapping.imp",
"linux_trampolines/ar_trampoline_linux.sh",
"linux_trampolines/clang_trampoline_linux.sh",
"linux_trampolines/lld_trampoline_linux.sh",
"@clang_linux_amd64//:all_files",
],
)
filegroup(
name = "all_mac_m1_files",
srcs = [
"mac_trampolines/ar_trampoline_mac.sh",
"mac_trampolines/clang_trampoline_mac.sh",
"mac_trampolines/lld_trampoline_mac.sh",
"@clang_mac_m1//:all_files",
],
)
provide_linux_amd64_toolchain_config(
name = "linux_amd64_toolchain_config",
)
provide_mac_m1_toolchain_config(
name = "mac_m1_toolchain_config",
)
# https://bazel.build/reference/be/c-cpp#cc_toolchain
cc_toolchain(
name = "linux_amd64_host",
all_files = ":all_linux_amd64_files",
ar_files = ":all_linux_amd64_files",
compiler_files = ":all_linux_amd64_files",
dwp_files = ":not_implemented",
linker_files = ":all_linux_amd64_files",
objcopy_files = ":not_implemented",
strip_files = ":not_implemented",
supports_param_files = False,
toolchain_config = ":linux_amd64_toolchain_config",
)
cc_toolchain(
name = "mac_m1_host",
all_files = ":all_mac_m1_files",
ar_files = ":all_mac_m1_files",
compiler_files = ":all_mac_m1_files",
dwp_files = ":not_implemented",
linker_files = ":all_mac_m1_files",
objcopy_files = ":not_implemented",
strip_files = ":not_implemented",
supports_param_files = False,
toolchain_config = ":mac_m1_toolchain_config",
)