blob: ea25dd19c4a67f6bf863a2e5efcbdfaccc0ab231 [file] [log] [blame]
Austin Schuhda9d0602019-09-15 17:29:38 -07001load(":toolchain_config.bzl", "cc_toolchain_config")
2
Philipp Schrader9b1790e2018-03-10 20:21:30 -08003package(default_visibility = ["//visibility:public"])
Brian Silverman12b3fc52015-10-11 19:38:33 -04004
Austin Schuhc4788d12021-01-23 17:23:37 -08005cc_toolchain_suite(
6 name = "toolchain",
7 toolchains = {
8 "k8": ":cc-compiler-k8",
9 "armhf-debian": ":cc-compiler-armhf-debian",
10 "roborio": ":cc-compiler-roborio",
11 "cortex-m4f": ":cc-compiler-cortex-m4f",
12 },
13 visibility = ["//visibility:public"],
14)
15
Philipp Schraderdada1072020-11-24 11:34:46 -080016[
17 cc_toolchain_config(
18 name = "{}_toolchain_config".format(cpu),
19 cpu = cpu,
20 )
21 for cpu in [
22 "armeabi-v7a",
23 "armhf-debian",
24 "cortex-m4f",
25 "cortex-m4f-k22",
26 "k8",
27 "roborio",
28 ]
Austin Schuhda9d0602019-09-15 17:29:38 -070029]
30
Brian Silverman12b3fc52015-10-11 19:38:33 -040031cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080032 name = "empty_main",
33 srcs = ["empty_main.c"],
Philipp Schraderdada1072020-11-24 11:34:46 -080034 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman63889f92015-11-27 01:33:56 -050035)
36
37cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080038 name = "malloc",
39 deps = select({
40 "//tools:has_asan": [],
41 "//tools:has_tsan": [],
42 "//tools:cpu_cortex_m4f": [],
Philipp Schraderdada1072020-11-24 11:34:46 -080043 # TODO(phil): Support this properly.
44 #"//tools:cpu_cortex_m4f_k22": [],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080045 "//conditions:default": ["//third_party/gperftools:tcmalloc"],
46 }),
Brian Silverman12b3fc52015-10-11 19:38:33 -040047)
48
49cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080050 name = "stl",
Philipp Schraderdada1072020-11-24 11:34:46 -080051 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman12b3fc52015-10-11 19:38:33 -040052)
53
54filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080055 name = "empty",
56 srcs = [],
Brian Silverman12b3fc52015-10-11 19:38:33 -040057)
58
Brian Silvermanb466eef2015-11-28 20:33:44 -050059# Compiler inputs given by --copt etc in //tools:bazel.rc.
60filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080061 name = "flags_compiler_inputs",
62 srcs = select({
63 "//tools:has_asan": [
64 "asan-blacklist",
65 ],
66 "//tools:has_ubsan": [
67 "ubsan-blacklist",
68 ],
69 "//conditions:default": [],
70 }),
71)
72
73filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -080074 name = "clang_6p0_all_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080075 srcs = [
76 ":flags_compiler_inputs",
James Kuszmaul3ae42262019-11-08 12:33:41 -080077 "//tools/cpp/clang_6p0:as",
78 "//tools/cpp/clang_6p0:tool-wrappers",
79 "@clang_6p0_repo//:compiler_pieces",
Brian Silverman0d57fc82016-01-24 21:02:53 -050080 ],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080081)
82
83filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -070084 name = "clang_6p0_ar_files",
85 srcs = [
86 "//tools/cpp/clang_6p0:ar",
87 "@clang_6p0_repo//:compiler_pieces",
88 ],
89)
90
91filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -080092 name = "clang_6p0_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080093 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -080094 "//tools/cpp/clang_6p0:ar",
95 "//tools/cpp/clang_6p0:clang",
96 "//tools/cpp/clang_6p0:clang-symlinks",
97 "//tools/cpp/clang_6p0:ld",
98 "@clang_6p0_repo//:compiler_pieces",
Brian Silverman0d57fc82016-01-24 21:02:53 -050099 ],
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800100)
101
102filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -0800103 name = "clang_6p0_strip_files",
Brian Silverman5c00e232018-08-12 02:08:32 -0700104 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800105 "//tools/cpp/clang_6p0:strip",
106 "@clang_6p0_repo//:compiler_pieces",
Brian Silverman5c00e232018-08-12 02:08:32 -0700107 ],
108)
109
110filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -0800111 name = "clang_6p0_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800112 srcs = [
Brian Silverman7b8899e2018-06-30 19:19:24 -0700113 "flags_compiler_inputs",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800114 "//tools/cpp/clang_6p0:clang",
115 "//tools/cpp/clang_6p0:ld",
116 "@clang_6p0_repo//:compiler_components",
117 "@clang_6p0_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800118 ],
Brian Silverman12b3fc52015-10-11 19:38:33 -0400119)
120
121cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800122 name = "cc-compiler-k8",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800123 all_files = ":clang_6p0_all_files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800124 ar_files = ":clang_6p0_ar_files",
125 as_files = ":clang_6p0_compiler_files",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800126 compiler_files = ":clang_6p0_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800127 dwp_files = ":empty",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800128 linker_files = ":clang_6p0_linker_files",
129 objcopy_files = "//tools/cpp/clang_6p0:objcopy",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800130 strip_files = ":clang_6p0_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800131 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700132 toolchain_config = ":k8_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800133 toolchain_identifier = "k8_linux",
134)
135
136toolchain(
137 name = "cc-toolchain-k8",
138 exec_compatible_with = [
139 "@platforms//os:linux",
140 "@platforms//cpu:x86_64",
141 ],
142 target_compatible_with = [
143 "@platforms//os:linux",
144 "@platforms//cpu:x86_64",
145 ],
146 toolchain = ":cc-compiler-k8",
147 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman12b3fc52015-10-11 19:38:33 -0400148)
Austin Schuh23da18b2015-10-11 20:52:49 -0700149
Austin Schuh55139fe2015-10-14 23:55:24 -0700150filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800151 name = "roborio-compiler-files",
152 srcs = [
153 ":flags_compiler_inputs",
154 "//tools/cpp/arm-frc-linux-gnueabi:as",
155 "//tools/cpp/arm-frc-linux-gnueabi:tool-wrappers",
156 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
157 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700158)
159
160filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800161 name = "roborio_linker_files",
162 srcs = [
163 "//tools/cpp/arm-frc-linux-gnueabi:ar",
164 "//tools/cpp/arm-frc-linux-gnueabi:gcc",
165 "//tools/cpp/arm-frc-linux-gnueabi:ld",
166 "//tools/cpp/arm-frc-linux-gnueabi:libs",
167 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
168 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700169)
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800170
Austin Schuh55139fe2015-10-14 23:55:24 -0700171filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -0700172 name = "roborio_ar_files",
173 srcs = [
174 "//tools/cpp/arm-frc-linux-gnueabi:ar",
175 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
176 ],
177)
178
179filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800180 name = "roborio_compiler_files",
181 srcs = [
182 "//tools/cpp/arm-frc-linux-gnueabi:gcc",
183 "//tools/cpp/arm-frc-linux-gnueabi:ld",
184 "@arm_frc_linux_gnueabi_repo//:compiler_components",
185 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
186 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700187)
188
Brian Silverman50b9ac02018-08-12 13:24:10 -0700189filegroup(
190 name = "roborio_strip_files",
191 srcs = [
192 "//tools/cpp/arm-frc-linux-gnueabi:strip",
193 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
194 ],
195)
196
Austin Schuh23da18b2015-10-11 20:52:49 -0700197cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800198 name = "cc-compiler-roborio",
199 all_files = ":roborio-compiler-files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800200 ar_files = ":roborio_ar_files",
201 as_files = ":roborio_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800202 compiler_files = ":roborio_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800203 dwp_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800204 linker_files = ":roborio_linker_files",
205 objcopy_files = "//tools/cpp/arm-frc-linux-gnueabi:objcopy",
Brian Silverman50b9ac02018-08-12 13:24:10 -0700206 strip_files = ":roborio_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800207 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700208 toolchain_config = ":roborio_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800209 toolchain_identifier = "roborio_linux",
210)
211
212toolchain(
213 name = "cc-toolchain-roborio",
214 exec_compatible_with = [
215 "@platforms//os:linux",
216 "@platforms//cpu:x86_64",
217 ],
218 target_compatible_with = [
219 "@platforms//os:linux",
220 "//tools/platforms/hardware:roborio",
221 ],
222 toolchain = ":cc-compiler-roborio",
223 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Austin Schuh23da18b2015-10-11 20:52:49 -0700224)
Brian Silverman0d57fc82016-01-24 21:02:53 -0500225
226filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800227 name = "linaro-gcc-files",
228 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800229 ":clang_6p0_all_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800230 "//tools/cpp/linaro_linux_gcc:clang-symlinks",
231 "//tools/cpp/linaro_linux_gcc:tool-wrappers",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800232 "@linaro_linux_gcc_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800233 ],
Brian Silverman0d57fc82016-01-24 21:02:53 -0500234)
235
236filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800237 name = "linaro_linux_linker_files",
238 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800239 ":clang_6p0_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800240 "//tools/cpp/linaro_linux_gcc:ar",
241 "//tools/cpp/linaro_linux_gcc:clang",
242 "//tools/cpp/linaro_linux_gcc:clang-ld",
243 "//tools/cpp/linaro_linux_gcc:clang-symlinks",
244 "//tools/cpp/linaro_linux_gcc:gcc",
245 "//tools/cpp/linaro_linux_gcc:ld",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800246 "@linaro_linux_gcc_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800247 ],
Brian Silverman0d57fc82016-01-24 21:02:53 -0500248)
249
250filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -0700251 name = "linaro_linux_ar_files",
252 srcs = [
253 "//tools/cpp/linaro_linux_gcc:ar",
254 "@linaro_linux_gcc_repo//:compiler_pieces",
255 ],
256)
257
258filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800259 name = "linaro_linux_compiler_files",
260 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800261 ":clang_6p0_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800262 "//tools/cpp/linaro_linux_gcc:as",
263 "//tools/cpp/linaro_linux_gcc:clang",
264 "//tools/cpp/linaro_linux_gcc:gcc",
265 "//tools/cpp/linaro_linux_gcc:ld",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800266 "@linaro_linux_gcc_repo//:compiler_pieces",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700267 ],
268)
269
270filegroup(
271 name = "linaro_linux_strip_files",
272 srcs = [
273 "//tools/cpp/linaro_linux_gcc:strip",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800274 "@linaro_linux_gcc_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800275 ],
Brian Silverman0d57fc82016-01-24 21:02:53 -0500276)
277
278cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800279 name = "cc-compiler-armhf-debian",
280 all_files = ":linaro-gcc-files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800281 ar_files = "linaro_linux_ar_files",
282 as_files = "linaro_linux_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800283 compiler_files = ":linaro_linux_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800284 dwp_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800285 linker_files = ":linaro_linux_linker_files",
286 objcopy_files = "//tools/cpp/linaro_linux_gcc:objcopy",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700287 strip_files = ":linaro_linux_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800288 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700289 toolchain_config = ":armhf-debian_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800290 toolchain_identifier = "clang_linux_armhf",
291)
292
293toolchain(
294 name = "cc-toolchain-armhf-debian",
295 exec_compatible_with = [
296 "@platforms//os:linux",
297 "@platforms//cpu:x86_64",
298 ],
299 target_compatible_with = [
300 "@platforms//os:linux",
301 "//tools/platforms/hardware:raspberry_pi",
302 ],
303 toolchain = ":cc-compiler-armhf-debian",
304 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman0d57fc82016-01-24 21:02:53 -0500305)
Brian Silverman8b638692017-06-26 23:10:26 -0700306
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700307filegroup(
308 name = "gcc_arm_none_eabi_none_files",
309 srcs = [
310 "//tools/cpp/gcc_arm_none_eabi:tool-wrappers",
311 "@gcc_arm_none_eabi//:compiler_pieces",
312 ],
313)
314
315filegroup(
316 name = "gcc_arm_none_eabi_compiler_files",
317 srcs = [
318 "//tools/cpp/gcc_arm_none_eabi:as",
319 "//tools/cpp/gcc_arm_none_eabi:gcc",
320 "//tools/cpp/gcc_arm_none_eabi:ld",
Austin Schuhda9d0602019-09-15 17:29:38 -0700321 "@gcc_arm_none_eabi//:compiler_pieces",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700322 ],
323)
324
325filegroup(
326 name = "gcc_arm_none_eabi_linker_files",
327 srcs = [
328 "//motors/core:linkerscripts",
329 "//tools/cpp/gcc_arm_none_eabi:ar",
330 "//tools/cpp/gcc_arm_none_eabi:gcc",
331 "//tools/cpp/gcc_arm_none_eabi:ld",
332 "@gcc_arm_none_eabi//:compiler_pieces",
333 ],
334)
335
Austin Schuhda9d0602019-09-15 17:29:38 -0700336filegroup(
337 name = "gcc_arm_none_eabi_ar_files",
338 srcs = [
339 "//tools/cpp/gcc_arm_none_eabi:ar",
340 "@gcc_arm_none_eabi//:compiler_pieces",
341 ],
342)
343
Brian Silverman8b638692017-06-26 23:10:26 -0700344cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800345 name = "cc-compiler-cortex-m4f",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700346 all_files = ":gcc_arm_none_eabi_none_files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800347 ar_files = ":gcc_arm_none_eabi_ar_files",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700348 compiler_files = ":gcc_arm_none_eabi_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800349 dwp_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700350 linker_files = ":gcc_arm_none_eabi_linker_files",
351 objcopy_files = "//tools/cpp/gcc_arm_none_eabi:objcopy",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700352 strip_files = "//tools/cpp/gcc_arm_none_eabi:strip",
353 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700354 toolchain_config = ":cortex-m4f_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800355 toolchain_identifier = "cortex-m4f",
356)
357
358toolchain(
359 name = "cc-toolchain-cortex-m4f",
360 exec_compatible_with = [
361 "@platforms//os:linux",
362 "@platforms//cpu:x86_64",
363 ],
364 target_compatible_with = [
365 "@platforms//os:none",
366 "//tools/platforms/hardware:cortex_m4f",
367 ],
368 toolchain = ":cc-compiler-cortex-m4f",
369 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700370)
371
372cc_toolchain(
373 name = "cc-compiler-cortex-m4f-k22",
374 all_files = ":gcc_arm_none_eabi_none_files",
375 compiler_files = ":gcc_arm_none_eabi_compiler_files",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700376 dwp_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700377 linker_files = ":gcc_arm_none_eabi_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800378 objcopy_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800379 strip_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700380 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700381 toolchain_config = ":cortex-m4f-k22_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800382 toolchain_identifier = "cortex-m4f-k22",
383)
384
385toolchain(
386 name = "cc-toolchain-cortex-m4f-k22",
387 exec_compatible_with = [
388 "@platforms//os:linux",
389 "@platforms//cpu:x86_64",
390 ],
391 target_compatible_with = [
392 "@platforms//os:none",
393 "//tools/platforms/hardware:cortex_m4f",
394 ],
395 toolchain = ":cc-compiler-cortex-m4f-k22",
396 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman7b8899e2018-06-30 19:19:24 -0700397)