blob: 0fe15120a5a031e7aa3c05d1ecb3de18dfcf3aca [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",
Austin Schuh0a96ea32022-01-01 22:29:30 -080012 "rp2040": ":cc-compiler-rp2040",
Austin Schuhc4788d12021-01-23 17:23:37 -080013 },
14 visibility = ["//visibility:public"],
15)
16
Philipp Schraderdada1072020-11-24 11:34:46 -080017[
18 cc_toolchain_config(
19 name = "{}_toolchain_config".format(cpu),
20 cpu = cpu,
21 )
22 for cpu in [
23 "armeabi-v7a",
24 "armhf-debian",
25 "cortex-m4f",
26 "cortex-m4f-k22",
Austin Schuh0a96ea32022-01-01 22:29:30 -080027 "rp2040",
Philipp Schraderdada1072020-11-24 11:34:46 -080028 "k8",
29 "roborio",
30 ]
Austin Schuhda9d0602019-09-15 17:29:38 -070031]
32
Brian Silverman12b3fc52015-10-11 19:38:33 -040033cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080034 name = "empty_main",
35 srcs = ["empty_main.c"],
Philipp Schraderdada1072020-11-24 11:34:46 -080036 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman63889f92015-11-27 01:33:56 -050037)
38
39cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080040 name = "malloc",
41 deps = select({
42 "//tools:has_asan": [],
43 "//tools:has_tsan": [],
44 "//tools:cpu_cortex_m4f": [],
Austin Schuh0a96ea32022-01-01 22:29:30 -080045 "//tools:cpu_cortex_m0plus": [],
Philipp Schraderdada1072020-11-24 11:34:46 -080046 # TODO(phil): Support this properly.
47 #"//tools:cpu_cortex_m4f_k22": [],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080048 "//conditions:default": ["//third_party/gperftools:tcmalloc"],
49 }),
Brian Silverman12b3fc52015-10-11 19:38:33 -040050)
51
52cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080053 name = "stl",
Philipp Schraderdada1072020-11-24 11:34:46 -080054 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman12b3fc52015-10-11 19:38:33 -040055)
56
57filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080058 name = "empty",
59 srcs = [],
Brian Silverman12b3fc52015-10-11 19:38:33 -040060)
61
Brian Silvermanb466eef2015-11-28 20:33:44 -050062# Compiler inputs given by --copt etc in //tools:bazel.rc.
63filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080064 name = "flags_compiler_inputs",
65 srcs = select({
66 "//tools:has_asan": [
67 "asan-blacklist",
68 ],
69 "//tools:has_ubsan": [
70 "ubsan-blacklist",
71 ],
72 "//conditions:default": [],
73 }),
74)
75
76filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -080077 name = "clang_6p0_all_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080078 srcs = [
79 ":flags_compiler_inputs",
James Kuszmaul3ae42262019-11-08 12:33:41 -080080 "//tools/cpp/clang_6p0:as",
81 "//tools/cpp/clang_6p0:tool-wrappers",
82 "@clang_6p0_repo//:compiler_pieces",
Brian Silverman0d57fc82016-01-24 21:02:53 -050083 ],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080084)
85
86filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -070087 name = "clang_6p0_ar_files",
88 srcs = [
89 "//tools/cpp/clang_6p0:ar",
90 "@clang_6p0_repo//:compiler_pieces",
91 ],
92)
93
94filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -080095 name = "clang_6p0_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080096 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -080097 "//tools/cpp/clang_6p0:ar",
98 "//tools/cpp/clang_6p0:clang",
99 "//tools/cpp/clang_6p0:clang-symlinks",
100 "//tools/cpp/clang_6p0:ld",
101 "@clang_6p0_repo//:compiler_pieces",
Brian Silverman0d57fc82016-01-24 21:02:53 -0500102 ],
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800103)
104
105filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -0800106 name = "clang_6p0_strip_files",
Brian Silverman5c00e232018-08-12 02:08:32 -0700107 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800108 "//tools/cpp/clang_6p0:strip",
109 "@clang_6p0_repo//:compiler_pieces",
Brian Silverman5c00e232018-08-12 02:08:32 -0700110 ],
111)
112
113filegroup(
James Kuszmaul3ae42262019-11-08 12:33:41 -0800114 name = "clang_6p0_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800115 srcs = [
Brian Silverman7b8899e2018-06-30 19:19:24 -0700116 "flags_compiler_inputs",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800117 "//tools/cpp/clang_6p0:clang",
118 "//tools/cpp/clang_6p0:ld",
119 "@clang_6p0_repo//:compiler_components",
120 "@clang_6p0_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800121 ],
Brian Silverman12b3fc52015-10-11 19:38:33 -0400122)
123
124cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800125 name = "cc-compiler-k8",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800126 all_files = ":clang_6p0_all_files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800127 ar_files = ":clang_6p0_ar_files",
128 as_files = ":clang_6p0_compiler_files",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800129 compiler_files = ":clang_6p0_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800130 dwp_files = ":empty",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800131 linker_files = ":clang_6p0_linker_files",
132 objcopy_files = "//tools/cpp/clang_6p0:objcopy",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800133 strip_files = ":clang_6p0_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800134 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700135 toolchain_config = ":k8_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800136 toolchain_identifier = "k8_linux",
137)
138
139toolchain(
140 name = "cc-toolchain-k8",
141 exec_compatible_with = [
142 "@platforms//os:linux",
143 "@platforms//cpu:x86_64",
144 ],
145 target_compatible_with = [
146 "@platforms//os:linux",
147 "@platforms//cpu:x86_64",
148 ],
149 toolchain = ":cc-compiler-k8",
150 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman12b3fc52015-10-11 19:38:33 -0400151)
Austin Schuh23da18b2015-10-11 20:52:49 -0700152
Austin Schuh55139fe2015-10-14 23:55:24 -0700153filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800154 name = "roborio-compiler-files",
155 srcs = [
156 ":flags_compiler_inputs",
157 "//tools/cpp/arm-frc-linux-gnueabi:as",
158 "//tools/cpp/arm-frc-linux-gnueabi:tool-wrappers",
159 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
160 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700161)
162
163filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800164 name = "roborio_linker_files",
165 srcs = [
166 "//tools/cpp/arm-frc-linux-gnueabi:ar",
167 "//tools/cpp/arm-frc-linux-gnueabi:gcc",
168 "//tools/cpp/arm-frc-linux-gnueabi:ld",
169 "//tools/cpp/arm-frc-linux-gnueabi:libs",
170 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
171 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700172)
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800173
Austin Schuh55139fe2015-10-14 23:55:24 -0700174filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -0700175 name = "roborio_ar_files",
176 srcs = [
177 "//tools/cpp/arm-frc-linux-gnueabi:ar",
178 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
179 ],
180)
181
182filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800183 name = "roborio_compiler_files",
184 srcs = [
185 "//tools/cpp/arm-frc-linux-gnueabi:gcc",
186 "//tools/cpp/arm-frc-linux-gnueabi:ld",
187 "@arm_frc_linux_gnueabi_repo//:compiler_components",
188 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
189 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700190)
191
Brian Silverman50b9ac02018-08-12 13:24:10 -0700192filegroup(
193 name = "roborio_strip_files",
194 srcs = [
195 "//tools/cpp/arm-frc-linux-gnueabi:strip",
196 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
197 ],
198)
199
Austin Schuh23da18b2015-10-11 20:52:49 -0700200cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800201 name = "cc-compiler-roborio",
202 all_files = ":roborio-compiler-files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800203 ar_files = ":roborio_ar_files",
204 as_files = ":roborio_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800205 compiler_files = ":roborio_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800206 dwp_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800207 linker_files = ":roborio_linker_files",
208 objcopy_files = "//tools/cpp/arm-frc-linux-gnueabi:objcopy",
Brian Silverman50b9ac02018-08-12 13:24:10 -0700209 strip_files = ":roborio_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800210 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700211 toolchain_config = ":roborio_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800212 toolchain_identifier = "roborio_linux",
213)
214
215toolchain(
216 name = "cc-toolchain-roborio",
217 exec_compatible_with = [
218 "@platforms//os:linux",
219 "@platforms//cpu:x86_64",
220 ],
221 target_compatible_with = [
222 "@platforms//os:linux",
223 "//tools/platforms/hardware:roborio",
224 ],
225 toolchain = ":cc-compiler-roborio",
226 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Austin Schuh23da18b2015-10-11 20:52:49 -0700227)
Brian Silverman0d57fc82016-01-24 21:02:53 -0500228
229filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800230 name = "linaro-gcc-files",
231 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800232 ":clang_6p0_all_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800233 "//tools/cpp/linaro_linux_gcc:clang-symlinks",
234 "//tools/cpp/linaro_linux_gcc:tool-wrappers",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800235 "@linaro_linux_gcc_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800236 ],
Brian Silverman0d57fc82016-01-24 21:02:53 -0500237)
238
239filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800240 name = "linaro_linux_linker_files",
241 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800242 ":clang_6p0_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800243 "//tools/cpp/linaro_linux_gcc:ar",
244 "//tools/cpp/linaro_linux_gcc:clang",
245 "//tools/cpp/linaro_linux_gcc:clang-ld",
246 "//tools/cpp/linaro_linux_gcc:clang-symlinks",
247 "//tools/cpp/linaro_linux_gcc:gcc",
248 "//tools/cpp/linaro_linux_gcc:ld",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800249 "@linaro_linux_gcc_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800250 ],
Brian Silverman0d57fc82016-01-24 21:02:53 -0500251)
252
253filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -0700254 name = "linaro_linux_ar_files",
255 srcs = [
256 "//tools/cpp/linaro_linux_gcc:ar",
257 "@linaro_linux_gcc_repo//:compiler_pieces",
258 ],
259)
260
261filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800262 name = "linaro_linux_compiler_files",
263 srcs = [
James Kuszmaul3ae42262019-11-08 12:33:41 -0800264 ":clang_6p0_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800265 "//tools/cpp/linaro_linux_gcc:as",
266 "//tools/cpp/linaro_linux_gcc:clang",
267 "//tools/cpp/linaro_linux_gcc:gcc",
268 "//tools/cpp/linaro_linux_gcc:ld",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800269 "@linaro_linux_gcc_repo//:compiler_pieces",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700270 ],
271)
272
273filegroup(
274 name = "linaro_linux_strip_files",
275 srcs = [
276 "//tools/cpp/linaro_linux_gcc:strip",
James Kuszmaul3ae42262019-11-08 12:33:41 -0800277 "@linaro_linux_gcc_repo//:compiler_pieces",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800278 ],
Brian Silverman0d57fc82016-01-24 21:02:53 -0500279)
280
281cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800282 name = "cc-compiler-armhf-debian",
283 all_files = ":linaro-gcc-files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800284 ar_files = "linaro_linux_ar_files",
285 as_files = "linaro_linux_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800286 compiler_files = ":linaro_linux_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800287 dwp_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800288 linker_files = ":linaro_linux_linker_files",
289 objcopy_files = "//tools/cpp/linaro_linux_gcc:objcopy",
Brian Silverman7a7c24d2018-09-01 17:49:09 -0700290 strip_files = ":linaro_linux_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800291 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700292 toolchain_config = ":armhf-debian_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800293 toolchain_identifier = "clang_linux_armhf",
294)
295
296toolchain(
297 name = "cc-toolchain-armhf-debian",
298 exec_compatible_with = [
299 "@platforms//os:linux",
300 "@platforms//cpu:x86_64",
301 ],
302 target_compatible_with = [
303 "@platforms//os:linux",
304 "//tools/platforms/hardware:raspberry_pi",
305 ],
306 toolchain = ":cc-compiler-armhf-debian",
307 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman0d57fc82016-01-24 21:02:53 -0500308)
Brian Silverman8b638692017-06-26 23:10:26 -0700309
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700310filegroup(
311 name = "gcc_arm_none_eabi_none_files",
312 srcs = [
313 "//tools/cpp/gcc_arm_none_eabi:tool-wrappers",
314 "@gcc_arm_none_eabi//:compiler_pieces",
315 ],
316)
317
318filegroup(
319 name = "gcc_arm_none_eabi_compiler_files",
320 srcs = [
321 "//tools/cpp/gcc_arm_none_eabi:as",
322 "//tools/cpp/gcc_arm_none_eabi:gcc",
323 "//tools/cpp/gcc_arm_none_eabi:ld",
Austin Schuhda9d0602019-09-15 17:29:38 -0700324 "@gcc_arm_none_eabi//:compiler_pieces",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700325 ],
326)
327
328filegroup(
329 name = "gcc_arm_none_eabi_linker_files",
330 srcs = [
331 "//motors/core:linkerscripts",
332 "//tools/cpp/gcc_arm_none_eabi:ar",
333 "//tools/cpp/gcc_arm_none_eabi:gcc",
334 "//tools/cpp/gcc_arm_none_eabi:ld",
335 "@gcc_arm_none_eabi//:compiler_pieces",
336 ],
337)
338
Austin Schuhda9d0602019-09-15 17:29:38 -0700339filegroup(
340 name = "gcc_arm_none_eabi_ar_files",
341 srcs = [
342 "//tools/cpp/gcc_arm_none_eabi:ar",
343 "@gcc_arm_none_eabi//:compiler_pieces",
344 ],
345)
346
Brian Silverman8b638692017-06-26 23:10:26 -0700347cc_toolchain(
Austin Schuh0a96ea32022-01-01 22:29:30 -0800348 name = "cc-compiler-rp2040",
349 all_files = ":gcc_arm_none_eabi_none_files",
350 ar_files = ":gcc_arm_none_eabi_ar_files",
351 compiler_files = ":gcc_arm_none_eabi_compiler_files",
352 dwp_files = ":empty",
353 linker_files = ":gcc_arm_none_eabi_linker_files",
354 objcopy_files = "//tools/cpp/gcc_arm_none_eabi:objcopy",
355 strip_files = "//tools/cpp/gcc_arm_none_eabi:strip",
356 supports_param_files = 1,
357 toolchain_config = ":rp2040_toolchain_config",
358 toolchain_identifier = "rp2040",
359)
360
361toolchain(
362 name = "cc-toolchain-rp2040",
363 exec_compatible_with = [
364 "@platforms//os:linux",
365 "@platforms//cpu:x86_64",
366 ],
367 target_compatible_with = [
368 "@platforms//os:none",
369 "//tools/platforms/hardware:cortex_m0plus",
370 ],
371 toolchain = ":cc-compiler-rp2040",
372 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
373)
374
375cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800376 name = "cc-compiler-cortex-m4f",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700377 all_files = ":gcc_arm_none_eabi_none_files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800378 ar_files = ":gcc_arm_none_eabi_ar_files",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700379 compiler_files = ":gcc_arm_none_eabi_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800380 dwp_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700381 linker_files = ":gcc_arm_none_eabi_linker_files",
382 objcopy_files = "//tools/cpp/gcc_arm_none_eabi:objcopy",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700383 strip_files = "//tools/cpp/gcc_arm_none_eabi:strip",
384 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700385 toolchain_config = ":cortex-m4f_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800386 toolchain_identifier = "cortex-m4f",
387)
388
389toolchain(
390 name = "cc-toolchain-cortex-m4f",
391 exec_compatible_with = [
392 "@platforms//os:linux",
393 "@platforms//cpu:x86_64",
394 ],
395 target_compatible_with = [
396 "@platforms//os:none",
397 "//tools/platforms/hardware:cortex_m4f",
398 ],
399 toolchain = ":cc-compiler-cortex-m4f",
400 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700401)
402
403cc_toolchain(
404 name = "cc-compiler-cortex-m4f-k22",
405 all_files = ":gcc_arm_none_eabi_none_files",
406 compiler_files = ":gcc_arm_none_eabi_compiler_files",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700407 dwp_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700408 linker_files = ":gcc_arm_none_eabi_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800409 objcopy_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800410 strip_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700411 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700412 toolchain_config = ":cortex-m4f-k22_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800413 toolchain_identifier = "cortex-m4f-k22",
414)
415
416toolchain(
417 name = "cc-toolchain-cortex-m4f-k22",
418 exec_compatible_with = [
419 "@platforms//os:linux",
420 "@platforms//cpu:x86_64",
421 ],
422 target_compatible_with = [
423 "@platforms//os:none",
424 "//tools/platforms/hardware:cortex_m4f",
425 ],
426 toolchain = ":cc-compiler-cortex-m4f-k22",
427 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman7b8899e2018-06-30 19:19:24 -0700428)