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.