@@ -34,46 +34,59 @@ def _impl(ctx):
34
34
if (ctx.attr.cpu == "darwin"):
35
35
toolchain_identifier = "clang-darwin"
36
36
elif (ctx.attr.cpu == "k8"):
37
- toolchain_identifier = "clang-linux"
37
+ toolchain_identifier = "clang-k8-linux"
38
+ elif (ctx.attr.cpu == "aarch64"):
39
+ toolchain_identifier = "clang-aarch64-linux"
38
40
else:
39
41
fail("Unreachable")
40
42
41
43
if (ctx.attr.cpu == "k8"):
42
44
host_system_name = "x86_64"
45
+ elif (ctx.attr.cpu == "aarch64"):
46
+ host_system_name = "aarch64"
43
47
elif (ctx.attr.cpu == "darwin"):
44
48
host_system_name = "x86_64-apple-macosx"
45
49
else:
46
50
fail("Unreachable")
47
51
48
- if (ctx.attr.cpu == "darwin"):
49
- target_system_name = "x86_64-apple-macosx"
50
- elif (ctx.attr.cpu == "k8"):
52
+ if (ctx.attr.cpu == "k8"):
51
53
target_system_name = "x86_64-unknown-linux-gnu"
54
+ elif (ctx.attr.cpu == "aarch64"):
55
+ target_system_name = "aarch64-unknown-linux-gnu"
56
+ elif (ctx.attr.cpu == "darwin"):
57
+ target_system_name = "x86_64-apple-macosx"
52
58
else:
53
59
fail("Unreachable")
54
60
55
61
if (ctx.attr.cpu == "darwin"):
56
62
target_cpu = "darwin"
57
63
elif (ctx.attr.cpu == "k8"):
58
64
target_cpu = "k8"
65
+ elif (ctx.attr.cpu == "aarch64"):
66
+ target_cpu = "aarch64"
59
67
else:
60
68
fail("Unreachable")
61
69
62
70
if (ctx.attr.cpu == "k8"):
63
71
target_libc = "glibc_unknown"
72
+ elif (ctx.attr.cpu == "aarch64"):
73
+ target_libc = "glibc_unknown"
64
74
elif (ctx.attr.cpu == "darwin"):
65
75
target_libc = "macosx"
66
76
else:
67
77
fail("Unreachable")
68
78
69
79
if (ctx.attr.cpu == "darwin" or
80
+ ctx.attr.cpu == "aarch64" or
70
81
ctx.attr.cpu == "k8"):
71
82
compiler = "clang"
72
83
else:
73
84
fail("Unreachable")
74
85
75
86
if (ctx.attr.cpu == "k8"):
76
87
abi_version = "clang"
88
+ elif (ctx.attr.cpu == "aarch64"):
89
+ abi_version = "clang"
77
90
elif (ctx.attr.cpu == "darwin"):
78
91
abi_version = "darwin_x86_64"
79
92
else:
@@ -83,12 +96,15 @@ def _impl(ctx):
83
96
abi_libc_version = "darwin_x86_64"
84
97
elif (ctx.attr.cpu == "k8"):
85
98
abi_libc_version = "glibc_unknown"
99
+ elif (ctx.attr.cpu == "aarch64"):
100
+ abi_libc_version = "glibc_unknown"
86
101
else:
87
102
fail("Unreachable")
88
103
89
104
cc_target_os = None
90
105
91
106
if (ctx.attr.cpu == "darwin" or
107
+ ctx.attr.cpu == "aarch64" or
92
108
ctx.attr.cpu == "k8"):
93
109
builtin_sysroot = "%{ sysroot_path} "
94
110
else:
@@ -144,7 +160,7 @@ def _impl(ctx):
144
160
145
161
action_configs = []
146
162
147
- if ctx.attr.cpu == "k8":
163
+ if ctx.attr.cpu in ( "k8", "aarch64") :
148
164
linker_flags = [
149
165
# Use the lld linker.
150
166
"-fuse-ld=lld",
@@ -228,7 +244,7 @@ def _impl(ctx):
228
244
flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
229
245
with_features = [with_feature_set(features = ["opt"])],
230
246
),
231
- ] if ctx.attr.cpu == "k8" else []),
247
+ ] if ctx.attr.cpu in ( "k8", "aarch64") else []),
232
248
)
233
249
234
250
default_compile_flags_feature = feature(
@@ -503,14 +519,20 @@ def _impl(ctx):
503
519
"%{ toolchain_path_prefix} lib/clang/%{ llvm_version} /include",
504
520
"%{ toolchain_path_prefix} lib64/clang/%{ llvm_version} /include",
505
521
]
506
- if (ctx.attr.cpu == "k8"):
522
+ if (ctx.attr.cpu in [ "k8", "aarch64"] ):
507
523
cxx_builtin_include_directories += [
508
524
"%{ sysroot_prefix} /include",
509
525
"%{ sysroot_prefix} /usr/include",
510
526
"%{ sysroot_prefix} /usr/local/include",
511
- ] + [
527
+ ]
528
+ if ctx.attr.cpu == "k8":
529
+ cxx_builtin_include_directories += [
512
530
%{ k8_additional_cxx_builtin_include_directories}
513
531
]
532
+ elif ctx.attr.cpu == "aarch64":
533
+ cxx_builtin_include_directories += [
534
+ %{ aarch64_additional_cxx_builtin_include_directories}
535
+ ]
514
536
elif (ctx.attr.cpu == "darwin"):
515
537
cxx_builtin_include_directories += [
516
538
"%{ sysroot_prefix} /usr/include",
@@ -531,12 +553,12 @@ def _impl(ctx):
531
553
value = "-Wframe-larger-than=100000000 -Wno-vla",
532
554
),
533
555
]
534
- elif (ctx.attr.cpu == "k8"):
556
+ elif (ctx.attr.cpu in ( "k8", "aarch64") ):
535
557
make_variables = []
536
558
else:
537
559
fail("Unreachable")
538
560
539
- if (ctx.attr.cpu == "k8"):
561
+ if (ctx.attr.cpu in ( "k8", "aarch64") ):
540
562
tool_paths = [
541
563
tool_path(
542
564
name = "ld",
@@ -647,6 +669,7 @@ cc_toolchain_config = rule(
647
669
values = [
648
670
" darwin" ,
649
671
" k8" ,
672
+ " aarch64" ,
650
673
],
651
674
),
652
675
} ,
0 commit comments