1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# //toolchain:clang12_cc_toolchain_config.bzl
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
load(
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
"feature",
"flag_group",
"flag_set",
"tool_path",
)
def _impl(ctx):
tool_paths = [
tool_path(
name = "gcc",
path = "/usr/bin/clang-12",
),
tool_path(
name = "ld",
path = "/usr/bin/ld",
),
tool_path(
name = "ar",
path = "/usr/bin/ar",
),
tool_path(
name = "cpp",
path = "/usr/bin/clang-cpp-12",
),
tool_path(
name = "gcov",
path = "/usr/bin/gcov",
),
tool_path(
name = "nm",
path = "/usr/bin/nm",
),
tool_path(
name = "objdump",
path = "/usr/bin/objdump",
),
tool_path(
name = "strip",
path = "/usr/bin/strip",
),
]
features = [
feature(
# We prefer libc++ to libstdc++
name = "use_libc++_as_stdlib",
enabled = True,
flag_sets = [
flag_set(
actions = [
ACTION_NAMES.cpp_compile,
],
flag_groups = ([
flag_group(
flags = [
"-stdlib=libc++",
],
),
]),
),
flag_set(
actions = [
ACTION_NAMES.cpp_link_executable,
ACTION_NAMES.cpp_link_dynamic_library,
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
],
flag_groups = ([
flag_group(
flags = [
"-lc++",
],
),
]),
),
],
),
]
return cc_common.create_cc_toolchain_config_info(
ctx = ctx,
features = features,
cxx_builtin_include_directories = [
"/usr/lib/llvm-12/include",
# On some machines the include files are in 12.0.0; others 12.0.1...
# we include both to be safe
"/usr/lib/llvm-12/lib/clang/12.0.0/include",
"/usr/lib/llvm-12/lib/clang/12.0.1/include",
"/usr/include",
"/usr/local/include",
],
toolchain_identifier = "clang12-toolchain",
host_system_name = "local",
target_system_name = "local",
target_cpu = "k8",
target_libc = "unknown",
compiler = "clang",
abi_version = "unknown",
abi_libc_version = "unknown",
tool_paths = tool_paths,
)
clang12_cc_toolchain_config = rule(
implementation = _impl,
attrs = {},
provides = [CcToolchainConfigInfo],
)
|