blob: 426fc3339563cc0229f63392c8b7cebfb6217368 [file] [log] [blame] [edit]
load("@rules_cc//cc/toolchains:action_type_config.bzl", "cc_action_type_config")
load("@rules_cc//cc/toolchains:tool.bzl", "cc_tool")
package(default_visibility = ["//visibility:public"])
cc_tool(
name = "llvm-ar_tool",
src = select({
"@platforms//os:windows": "//:bin/llvm-ar.exe",
"//conditions:default": "//:bin/llvm-ar",
}),
data = select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
cc_action_type_config(
name = "llvm-ar",
action_types = ["@rules_cc//cc/toolchains/actions:ar_actions"],
tools = [":llvm-ar_tool"],
)
cc_tool(
name = "clang_tool",
src = select({
"@platforms//os:windows": "//:bin/clang.exe",
"//conditions:default": "//:bin/clang",
}),
data = glob([
"include/armv*-unknown-none-eabi/**",
"lib/clang/*/include/**",
]) + select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
cc_action_type_config(
name = "clang",
action_types = [
"@rules_cc//cc/toolchains/actions:assembly_actions",
"@rules_cc//cc/toolchains/actions:c_compile",
],
tools = [":clang_tool"],
)
cc_tool(
name = "clang++_tool",
src = select({
"@platforms//os:windows": "//:bin/clang++.exe",
"//conditions:default": "//:bin/clang++",
}),
data = glob([
"include/armv*-unknown-none-eabi/**",
"include/c++/**",
"lib/clang/*/include/**",
]) + select({
# Windows doesn't have llvm.exe.
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
cc_action_type_config(
name = "clang++",
action_types = ["@rules_cc//cc/toolchains/actions:cpp_compile_actions"],
tools = [":clang++_tool"],
)
# This tool is actually just clang++ under the hood, but this specifies a
# different set of data files to pull into the sandbox at runtime.
cc_tool(
name = "lld_tool",
src = select({
"@platforms//os:windows": "//:bin/clang++.exe",
"//conditions:default": "//:bin/clang++",
}),
data = glob([
"lib/armv*-unknown-none-eabi/**",
"lib/clang/*/lib/armv*-unknown-none-eabi/**",
]) + select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
cc_action_type_config(
name = "lld",
action_types = ["@rules_cc//cc/toolchains/actions:link_actions"],
tools = [":lld_tool"],
)
cc_tool(
name = "llvm-objcopy_tool",
src = select({
"@platforms//os:windows": "//:bin/llvm-objcopy.exe",
"//conditions:default": "//:bin/llvm-objcopy",
}),
data = select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
cc_action_type_config(
name = "llvm-objcopy",
action_types = ["@rules_cc//cc/toolchains/actions:objcopy_embed_data"],
tools = [":llvm-objcopy_tool"],
)
cc_tool(
name = "llvm-strip_tool",
src = select({
"@platforms//os:windows": "//:bin/llvm-strip.exe",
"//conditions:default": "//:bin/llvm-strip",
}),
data = select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
cc_action_type_config(
name = "llvm-strip",
action_types = ["@rules_cc//cc/toolchains/actions:strip"],
tools = [":llvm-strip_tool"],
)
cc_tool(
name = "llvm-objdump_tool",
src = select({
"@platforms//os:windows": "//:bin/llvm-objdump.exe",
"//conditions:default": "//:bin/llvm-objdump",
}),
data = select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
# There is not yet a well-known action type for llvm-objdump.
cc_tool(
name = "llvm-profdata_tool",
src = select({
"@platforms//os:windows": "//:bin/llvm-profdata.exe",
"//conditions:default": "//:bin/llvm-profdata",
}),
data = select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
# There is not yet a well-known action type for llvm-profdata.
cc_tool(
name = "llvm-cov_tool",
src = select({
"@platforms//os:windows": "//:bin/llvm-cov.exe",
"//conditions:default": "//:bin/llvm-cov",
}),
data = select({
"@platforms//os:windows": [],
"//conditions:default": ["//:bin/llvm"],
}),
)
# There is not yet a well-known action type for llvm-cov.