blob: 5b43edca136bf12378fc5fc024f1b4720c54769d [file] [log] [blame]
Austin Schuhda9d0602019-09-15 17:29:38 -07001load(":toolchain_config.bzl", "cc_toolchain_config")
Philipp Schrader33b5e802022-02-06 22:17:41 -08002load(":toolchain_make_variables.bzl", "cc_toolchain_make_variables")
Austin Schuhda9d0602019-09-15 17:29:38 -07003
Philipp Schrader9b1790e2018-03-10 20:21:30 -08004package(default_visibility = ["//visibility:public"])
Brian Silverman12b3fc52015-10-11 19:38:33 -04005
Philipp Schrader33b5e802022-02-06 22:17:41 -08006# Use this instead of @bazel_tools//tools/cpp:current_cc_toolchain.
7# This one supports platforms.
8cc_toolchain_make_variables(name = "cc_toolchain_make_variables")
Austin Schuhc4788d12021-01-23 17:23:37 -08009
Philipp Schraderdada1072020-11-24 11:34:46 -080010[
11 cc_toolchain_config(
12 name = "{}_toolchain_config".format(cpu),
13 cpu = cpu,
14 )
15 for cpu in [
Philipp Schraderdada1072020-11-24 11:34:46 -080016 "cortex-m4f",
17 "cortex-m4f-k22",
Austin Schuh0a96ea32022-01-01 22:29:30 -080018 "rp2040",
James Kuszmaul5a728562023-12-28 21:45:01 -080019 "cortex-m4f-imu",
Philipp Schraderdada1072020-11-24 11:34:46 -080020 "roborio",
21 ]
Austin Schuhda9d0602019-09-15 17:29:38 -070022]
23
Brian Silverman12b3fc52015-10-11 19:38:33 -040024cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080025 name = "empty_main",
26 srcs = ["empty_main.c"],
Philipp Schraderdada1072020-11-24 11:34:46 -080027 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman63889f92015-11-27 01:33:56 -050028)
29
30cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080031 name = "malloc",
32 deps = select({
33 "//tools:has_asan": [],
34 "//tools:has_tsan": [],
35 "//tools:cpu_cortex_m4f": [],
James Kuszmaul5a728562023-12-28 21:45:01 -080036 "//tools:cpu_cortex-m4f-imu": [],
Austin Schuh0a96ea32022-01-01 22:29:30 -080037 "//tools:cpu_cortex_m0plus": [],
Philipp Schraderdada1072020-11-24 11:34:46 -080038 # TODO(phil): Support this properly.
39 #"//tools:cpu_cortex_m4f_k22": [],
Philipp Schrader9b1790e2018-03-10 20:21:30 -080040 "//conditions:default": ["//third_party/gperftools:tcmalloc"],
41 }),
Brian Silverman12b3fc52015-10-11 19:38:33 -040042)
43
44cc_library(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080045 name = "stl",
Philipp Schraderdada1072020-11-24 11:34:46 -080046 target_compatible_with = ["@platforms//os:linux"],
Brian Silverman12b3fc52015-10-11 19:38:33 -040047)
48
49filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080050 name = "empty",
51 srcs = [],
Brian Silverman12b3fc52015-10-11 19:38:33 -040052)
53
Brian Silvermanb466eef2015-11-28 20:33:44 -050054# Compiler inputs given by --copt etc in //tools:bazel.rc.
55filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080056 name = "flags_compiler_inputs",
57 srcs = select({
58 "//tools:has_asan": [
59 "asan-blacklist",
60 ],
61 "//tools:has_ubsan": [
62 "ubsan-blacklist",
63 ],
64 "//conditions:default": [],
65 }),
66)
67
68filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080069 name = "roborio-compiler-files",
70 srcs = [
71 ":flags_compiler_inputs",
72 "//tools/cpp/arm-frc-linux-gnueabi:as",
Ravago Jones16809802021-11-18 20:40:03 -080073 "//tools/cpp/arm-frc-linux-gnueabi:libs",
Philipp Schrader9b1790e2018-03-10 20:21:30 -080074 "//tools/cpp/arm-frc-linux-gnueabi:tool-wrappers",
75 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
76 ],
Austin Schuh55139fe2015-10-14 23:55:24 -070077)
78
79filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080080 name = "roborio_linker_files",
81 srcs = [
82 "//tools/cpp/arm-frc-linux-gnueabi:ar",
83 "//tools/cpp/arm-frc-linux-gnueabi:gcc",
84 "//tools/cpp/arm-frc-linux-gnueabi:ld",
85 "//tools/cpp/arm-frc-linux-gnueabi:libs",
86 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
87 ],
Austin Schuh55139fe2015-10-14 23:55:24 -070088)
Philipp Schrader9b1790e2018-03-10 20:21:30 -080089
Austin Schuh55139fe2015-10-14 23:55:24 -070090filegroup(
Austin Schuhda9d0602019-09-15 17:29:38 -070091 name = "roborio_ar_files",
92 srcs = [
93 "//tools/cpp/arm-frc-linux-gnueabi:ar",
94 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
95 ],
96)
97
98filegroup(
Philipp Schrader9b1790e2018-03-10 20:21:30 -080099 name = "roborio_compiler_files",
100 srcs = [
101 "//tools/cpp/arm-frc-linux-gnueabi:gcc",
102 "//tools/cpp/arm-frc-linux-gnueabi:ld",
103 "@arm_frc_linux_gnueabi_repo//:compiler_components",
104 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
105 ],
Austin Schuh55139fe2015-10-14 23:55:24 -0700106)
107
Brian Silverman50b9ac02018-08-12 13:24:10 -0700108filegroup(
109 name = "roborio_strip_files",
110 srcs = [
111 "//tools/cpp/arm-frc-linux-gnueabi:strip",
112 "@arm_frc_linux_gnueabi_repo//:compiler_pieces",
113 ],
114)
115
Austin Schuh23da18b2015-10-11 20:52:49 -0700116cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800117 name = "cc-compiler-roborio",
118 all_files = ":roborio-compiler-files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800119 ar_files = ":roborio_ar_files",
120 as_files = ":roborio_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800121 compiler_files = ":roborio_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800122 dwp_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800123 linker_files = ":roborio_linker_files",
124 objcopy_files = "//tools/cpp/arm-frc-linux-gnueabi:objcopy",
Brian Silverman50b9ac02018-08-12 13:24:10 -0700125 strip_files = ":roborio_strip_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800126 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700127 toolchain_config = ":roborio_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800128 toolchain_identifier = "roborio_linux",
129)
130
131toolchain(
132 name = "cc-toolchain-roborio",
133 exec_compatible_with = [
134 "@platforms//os:linux",
135 "@platforms//cpu:x86_64",
136 ],
137 target_compatible_with = [
138 "@platforms//os:linux",
139 "//tools/platforms/hardware:roborio",
140 ],
141 toolchain = ":cc-compiler-roborio",
142 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Austin Schuh23da18b2015-10-11 20:52:49 -0700143)
Brian Silverman0d57fc82016-01-24 21:02:53 -0500144
145filegroup(
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700146 name = "gcc_arm_none_eabi_none_files",
147 srcs = [
148 "//tools/cpp/gcc_arm_none_eabi:tool-wrappers",
149 "@gcc_arm_none_eabi//:compiler_pieces",
150 ],
151)
152
153filegroup(
154 name = "gcc_arm_none_eabi_compiler_files",
155 srcs = [
156 "//tools/cpp/gcc_arm_none_eabi:as",
157 "//tools/cpp/gcc_arm_none_eabi:gcc",
158 "//tools/cpp/gcc_arm_none_eabi:ld",
Austin Schuhda9d0602019-09-15 17:29:38 -0700159 "@gcc_arm_none_eabi//:compiler_pieces",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700160 ],
161)
162
163filegroup(
164 name = "gcc_arm_none_eabi_linker_files",
165 srcs = [
James Kuszmaul5a728562023-12-28 21:45:01 -0800166 "//frc971/imu_fdcan/Dual_IMU:linker_scripts",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700167 "//motors/core:linkerscripts",
168 "//tools/cpp/gcc_arm_none_eabi:ar",
169 "//tools/cpp/gcc_arm_none_eabi:gcc",
170 "//tools/cpp/gcc_arm_none_eabi:ld",
171 "@gcc_arm_none_eabi//:compiler_pieces",
172 ],
173)
174
Austin Schuhda9d0602019-09-15 17:29:38 -0700175filegroup(
176 name = "gcc_arm_none_eabi_ar_files",
177 srcs = [
178 "//tools/cpp/gcc_arm_none_eabi:ar",
179 "@gcc_arm_none_eabi//:compiler_pieces",
180 ],
181)
182
Brian Silverman8b638692017-06-26 23:10:26 -0700183cc_toolchain(
Austin Schuh0a96ea32022-01-01 22:29:30 -0800184 name = "cc-compiler-rp2040",
185 all_files = ":gcc_arm_none_eabi_none_files",
186 ar_files = ":gcc_arm_none_eabi_ar_files",
187 compiler_files = ":gcc_arm_none_eabi_compiler_files",
188 dwp_files = ":empty",
189 linker_files = ":gcc_arm_none_eabi_linker_files",
190 objcopy_files = "//tools/cpp/gcc_arm_none_eabi:objcopy",
191 strip_files = "//tools/cpp/gcc_arm_none_eabi:strip",
192 supports_param_files = 1,
193 toolchain_config = ":rp2040_toolchain_config",
194 toolchain_identifier = "rp2040",
195)
196
197toolchain(
198 name = "cc-toolchain-rp2040",
199 exec_compatible_with = [
200 "@platforms//os:linux",
201 "@platforms//cpu:x86_64",
202 ],
203 target_compatible_with = [
204 "@platforms//os:none",
205 "//tools/platforms/hardware:cortex_m0plus",
206 ],
207 toolchain = ":cc-compiler-rp2040",
208 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
209)
210
211cc_toolchain(
James Kuszmaul5a728562023-12-28 21:45:01 -0800212 name = "cc-compiler-cortex-m4f-imu",
213 all_files = ":gcc_arm_none_eabi_none_files",
214 ar_files = ":gcc_arm_none_eabi_ar_files",
215 compiler_files = ":gcc_arm_none_eabi_compiler_files",
216 dwp_files = ":empty",
217 linker_files = ":gcc_arm_none_eabi_linker_files",
218 objcopy_files = "//tools/cpp/gcc_arm_none_eabi:objcopy",
219 strip_files = "//tools/cpp/gcc_arm_none_eabi:strip",
220 supports_param_files = 1,
221 toolchain_config = ":cortex-m4f-imu_toolchain_config",
222 toolchain_identifier = "cortex-m4f-imu",
223)
224
225toolchain(
226 name = "cc-toolchain-cortex-m4f-imu",
227 exec_compatible_with = [
228 "@platforms//os:linux",
229 "@platforms//cpu:x86_64",
230 ],
231 target_compatible_with = [
232 "@platforms//os:none",
233 "//tools/platforms/hardware:cortex-m4f-imu",
234 ],
235 toolchain = ":cc-compiler-cortex-m4f-imu",
236 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
237)
238
239cc_toolchain(
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800240 name = "cc-compiler-cortex-m4f",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700241 all_files = ":gcc_arm_none_eabi_none_files",
Philipp Schraderdada1072020-11-24 11:34:46 -0800242 ar_files = ":gcc_arm_none_eabi_ar_files",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700243 compiler_files = ":gcc_arm_none_eabi_compiler_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800244 dwp_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700245 linker_files = ":gcc_arm_none_eabi_linker_files",
246 objcopy_files = "//tools/cpp/gcc_arm_none_eabi:objcopy",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700247 strip_files = "//tools/cpp/gcc_arm_none_eabi:strip",
248 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700249 toolchain_config = ":cortex-m4f_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800250 toolchain_identifier = "cortex-m4f",
251)
252
253toolchain(
254 name = "cc-toolchain-cortex-m4f",
255 exec_compatible_with = [
256 "@platforms//os:linux",
257 "@platforms//cpu:x86_64",
258 ],
259 target_compatible_with = [
260 "@platforms//os:none",
261 "//tools/platforms/hardware:cortex_m4f",
262 ],
263 toolchain = ":cc-compiler-cortex-m4f",
264 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700265)
266
267cc_toolchain(
268 name = "cc-compiler-cortex-m4f-k22",
269 all_files = ":gcc_arm_none_eabi_none_files",
270 compiler_files = ":gcc_arm_none_eabi_compiler_files",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700271 dwp_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700272 linker_files = ":gcc_arm_none_eabi_linker_files",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800273 objcopy_files = ":empty",
Philipp Schrader9b1790e2018-03-10 20:21:30 -0800274 strip_files = ":empty",
Brian Silverman6c8b88b2018-09-03 18:17:02 -0700275 supports_param_files = 1,
Austin Schuhda9d0602019-09-15 17:29:38 -0700276 toolchain_config = ":cortex-m4f-k22_toolchain_config",
Philipp Schraderdada1072020-11-24 11:34:46 -0800277 toolchain_identifier = "cortex-m4f-k22",
278)
279
280toolchain(
281 name = "cc-toolchain-cortex-m4f-k22",
282 exec_compatible_with = [
283 "@platforms//os:linux",
284 "@platforms//cpu:x86_64",
285 ],
286 target_compatible_with = [
287 "@platforms//os:none",
288 "//tools/platforms/hardware:cortex_m4f",
289 ],
290 toolchain = ":cc-compiler-cortex-m4f-k22",
291 toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
Brian Silverman7b8899e2018-06-30 19:19:24 -0700292)