xref: /aosp_15_r20/external/pigweed/pw_toolchain/arm_gcc/BUILD.bazel (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2022 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerload("@rules_cc//cc/toolchains:args.bzl", "cc_args")
16*61c4878aSAndroid Build Coastguard Workerload("@rules_cc//cc/toolchains:toolchain.bzl", "cc_toolchain")
17*61c4878aSAndroid Build Coastguard Worker
18*61c4878aSAndroid Build Coastguard Workerlicenses(["notice"])
19*61c4878aSAndroid Build Coastguard Worker
20*61c4878aSAndroid Build Coastguard Workercc_library(
21*61c4878aSAndroid Build Coastguard Worker    name = "newlib_os_interface_stubs",
22*61c4878aSAndroid Build Coastguard Worker    srcs = ["newlib_os_interface_stubs.cc"],
23*61c4878aSAndroid Build Coastguard Worker    linkopts = [
24*61c4878aSAndroid Build Coastguard Worker        "-Wl,--wrap=__sread",
25*61c4878aSAndroid Build Coastguard Worker        "-Wl,--wrap=__swrite",
26*61c4878aSAndroid Build Coastguard Worker        "-Wl,--wrap=__sseek",
27*61c4878aSAndroid Build Coastguard Worker        "-Wl,--wrap=__sclose",
28*61c4878aSAndroid Build Coastguard Worker    ],
29*61c4878aSAndroid Build Coastguard Worker    # Only built as part of the ARM GCC toolchain.
30*61c4878aSAndroid Build Coastguard Worker    tags = ["manual"],
31*61c4878aSAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
32*61c4878aSAndroid Build Coastguard Worker    deps = ["//pw_assert"],
33*61c4878aSAndroid Build Coastguard Worker    alwayslink = 1,
34*61c4878aSAndroid Build Coastguard Worker)
35*61c4878aSAndroid Build Coastguard Worker
36*61c4878aSAndroid Build Coastguard Workercc_library(
37*61c4878aSAndroid Build Coastguard Worker    name = "arm_none_eabi_gcc_support",
38*61c4878aSAndroid Build Coastguard Worker    # Only built as part of the ARM GCC toolchain.
39*61c4878aSAndroid Build Coastguard Worker    tags = ["manual"],
40*61c4878aSAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
41*61c4878aSAndroid Build Coastguard Worker    deps = [
42*61c4878aSAndroid Build Coastguard Worker        ":newlib_os_interface_stubs",
43*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain:wrap_abort",
44*61c4878aSAndroid Build Coastguard Worker    ],
45*61c4878aSAndroid Build Coastguard Worker)
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Worker# Additional arm_gcc specific warning flags
48*61c4878aSAndroid Build Coastguard Workercc_args(
49*61c4878aSAndroid Build Coastguard Worker    name = "warnings",
50*61c4878aSAndroid Build Coastguard Worker    actions = [
51*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
52*61c4878aSAndroid Build Coastguard Worker    ],
53*61c4878aSAndroid Build Coastguard Worker    args = [
54*61c4878aSAndroid Build Coastguard Worker        # This can't be in common, because proto headers in host builds trigger
55*61c4878aSAndroid Build Coastguard Worker        "-Wundef",
56*61c4878aSAndroid Build Coastguard Worker        # Silence the really verbose ARM warnings.
57*61c4878aSAndroid Build Coastguard Worker        "-Wno-psabi",
58*61c4878aSAndroid Build Coastguard Worker    ],
59*61c4878aSAndroid Build Coastguard Worker)
60*61c4878aSAndroid Build Coastguard Worker
61*61c4878aSAndroid Build Coastguard Workercc_args(
62*61c4878aSAndroid Build Coastguard Worker    name = "thumb_abi",
63*61c4878aSAndroid Build Coastguard Worker    actions = [
64*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
65*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
66*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
67*61c4878aSAndroid Build Coastguard Worker    ],
68*61c4878aSAndroid Build Coastguard Worker    args = [
69*61c4878aSAndroid Build Coastguard Worker        "-mabi=aapcs",
70*61c4878aSAndroid Build Coastguard Worker        "-mthumb",
71*61c4878aSAndroid Build Coastguard Worker    ],
72*61c4878aSAndroid Build Coastguard Worker)
73*61c4878aSAndroid Build Coastguard Worker
74*61c4878aSAndroid Build Coastguard Workercc_args(
75*61c4878aSAndroid Build Coastguard Worker    name = "unified_asm_syntax",
76*61c4878aSAndroid Build Coastguard Worker    actions = [
77*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
78*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
79*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
80*61c4878aSAndroid Build Coastguard Worker    ],
81*61c4878aSAndroid Build Coastguard Worker    args = [
82*61c4878aSAndroid Build Coastguard Worker        "-masm-syntax-unified",
83*61c4878aSAndroid Build Coastguard Worker    ],
84*61c4878aSAndroid Build Coastguard Worker)
85*61c4878aSAndroid Build Coastguard Worker
86*61c4878aSAndroid Build Coastguard Worker# This flag prevents Arm GCC from printing the resolved paths of symlinks,
87*61c4878aSAndroid Build Coastguard Worker# which prevents compilation actions from being hermetic. See
88*61c4878aSAndroid Build Coastguard Worker# https://github.com/bazelbuild/bazel/issues/21981 and
89*61c4878aSAndroid Build Coastguard Worker# https://pwbug.dev/319665090.
90*61c4878aSAndroid Build Coastguard Workercc_args(
91*61c4878aSAndroid Build Coastguard Worker    name = "no_canonical_system_headers",
92*61c4878aSAndroid Build Coastguard Worker    actions = [
93*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
94*61c4878aSAndroid Build Coastguard Worker    ],
95*61c4878aSAndroid Build Coastguard Worker    args = [
96*61c4878aSAndroid Build Coastguard Worker        "-fno-canonical-system-headers",
97*61c4878aSAndroid Build Coastguard Worker    ],
98*61c4878aSAndroid Build Coastguard Worker)
99*61c4878aSAndroid Build Coastguard Worker
100*61c4878aSAndroid Build Coastguard Workercc_args(
101*61c4878aSAndroid Build Coastguard Worker    name = "cortex_common",
102*61c4878aSAndroid Build Coastguard Worker    actions = [
103*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
104*61c4878aSAndroid Build Coastguard Worker    ],
105*61c4878aSAndroid Build Coastguard Worker    args = [
106*61c4878aSAndroid Build Coastguard Worker        "-ffreestanding",
107*61c4878aSAndroid Build Coastguard Worker        "-specs=nano.specs",
108*61c4878aSAndroid Build Coastguard Worker        "-specs=nosys.specs",
109*61c4878aSAndroid Build Coastguard Worker    ],
110*61c4878aSAndroid Build Coastguard Worker)
111*61c4878aSAndroid Build Coastguard Worker
112*61c4878aSAndroid Build Coastguard Workercc_args(
113*61c4878aSAndroid Build Coastguard Worker    name = "cortex_common_link",
114*61c4878aSAndroid Build Coastguard Worker    actions = ["@rules_cc//cc/toolchains/actions:link_actions"],
115*61c4878aSAndroid Build Coastguard Worker    args = [
116*61c4878aSAndroid Build Coastguard Worker        "-Wl,--gc-sections",
117*61c4878aSAndroid Build Coastguard Worker        "-specs=nano.specs",
118*61c4878aSAndroid Build Coastguard Worker        "-specs=nosys.specs",
119*61c4878aSAndroid Build Coastguard Worker        "-lstdc++",
120*61c4878aSAndroid Build Coastguard Worker        "-lnosys",
121*61c4878aSAndroid Build Coastguard Worker        "-lc",
122*61c4878aSAndroid Build Coastguard Worker        "-lm",
123*61c4878aSAndroid Build Coastguard Worker        "-Wl,--no-warn-rwx-segment",
124*61c4878aSAndroid Build Coastguard Worker    ],
125*61c4878aSAndroid Build Coastguard Worker)
126*61c4878aSAndroid Build Coastguard Worker
127*61c4878aSAndroid Build Coastguard Workercc_args(
128*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m0",
129*61c4878aSAndroid Build Coastguard Worker    actions = [
130*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
131*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
132*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
133*61c4878aSAndroid Build Coastguard Worker    ],
134*61c4878aSAndroid Build Coastguard Worker    args = [
135*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m0",
136*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=soft",
137*61c4878aSAndroid Build Coastguard Worker    ],
138*61c4878aSAndroid Build Coastguard Worker)
139*61c4878aSAndroid Build Coastguard Worker
140*61c4878aSAndroid Build Coastguard Workercc_args(
141*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m0plus",
142*61c4878aSAndroid Build Coastguard Worker    actions = [
143*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
144*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
145*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
146*61c4878aSAndroid Build Coastguard Worker    ],
147*61c4878aSAndroid Build Coastguard Worker    args = [
148*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m0plus",
149*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=soft",
150*61c4878aSAndroid Build Coastguard Worker    ],
151*61c4878aSAndroid Build Coastguard Worker)
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Workercc_args(
154*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m3",
155*61c4878aSAndroid Build Coastguard Worker    actions = [
156*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
157*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
158*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
159*61c4878aSAndroid Build Coastguard Worker    ],
160*61c4878aSAndroid Build Coastguard Worker    args = [
161*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m3",
162*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=soft",
163*61c4878aSAndroid Build Coastguard Worker    ],
164*61c4878aSAndroid Build Coastguard Worker)
165*61c4878aSAndroid Build Coastguard Worker
166*61c4878aSAndroid Build Coastguard Workercc_args(
167*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m4",
168*61c4878aSAndroid Build Coastguard Worker    actions = [
169*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
170*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
171*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
172*61c4878aSAndroid Build Coastguard Worker    ],
173*61c4878aSAndroid Build Coastguard Worker    args = [
174*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m4",
175*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=hard",
176*61c4878aSAndroid Build Coastguard Worker        "-mfpu=fpv4-sp-d16",
177*61c4878aSAndroid Build Coastguard Worker        # Used by some pigweed tests/targets to correctly handle hardware FPU
178*61c4878aSAndroid Build Coastguard Worker        # behavior.
179*61c4878aSAndroid Build Coastguard Worker        "-DPW_ARMV7M_ENABLE_FPU=1",
180*61c4878aSAndroid Build Coastguard Worker    ],
181*61c4878aSAndroid Build Coastguard Worker)
182*61c4878aSAndroid Build Coastguard Worker
183*61c4878aSAndroid Build Coastguard Workercc_args(
184*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m4+nofp",
185*61c4878aSAndroid Build Coastguard Worker    actions = [
186*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
187*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
188*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
189*61c4878aSAndroid Build Coastguard Worker    ],
190*61c4878aSAndroid Build Coastguard Worker    args = [
191*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m4+nofp",
192*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=soft",
193*61c4878aSAndroid Build Coastguard Worker    ],
194*61c4878aSAndroid Build Coastguard Worker)
195*61c4878aSAndroid Build Coastguard Worker
196*61c4878aSAndroid Build Coastguard Workercc_args(
197*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m7",
198*61c4878aSAndroid Build Coastguard Worker    actions = [
199*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
200*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
201*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
202*61c4878aSAndroid Build Coastguard Worker    ],
203*61c4878aSAndroid Build Coastguard Worker    args = [
204*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m7",
205*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=hard",
206*61c4878aSAndroid Build Coastguard Worker        "-mfpu=fpv5-d16",
207*61c4878aSAndroid Build Coastguard Worker        # Used by some pigweed tests/targets to correctly handle hardware FPU
208*61c4878aSAndroid Build Coastguard Worker        # behavior.
209*61c4878aSAndroid Build Coastguard Worker        "-DPW_ARMV7M_ENABLE_FPU=1",
210*61c4878aSAndroid Build Coastguard Worker    ],
211*61c4878aSAndroid Build Coastguard Worker)
212*61c4878aSAndroid Build Coastguard Worker
213*61c4878aSAndroid Build Coastguard Workercc_args(
214*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m33",
215*61c4878aSAndroid Build Coastguard Worker    actions = [
216*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
217*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
218*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
219*61c4878aSAndroid Build Coastguard Worker    ],
220*61c4878aSAndroid Build Coastguard Worker    args = [
221*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m33",
222*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=hard",
223*61c4878aSAndroid Build Coastguard Worker        "-mfpu=fpv5-sp-d16",
224*61c4878aSAndroid Build Coastguard Worker        # Used by some pigweed tests/targets to correctly handle hardware FPU
225*61c4878aSAndroid Build Coastguard Worker        # behavior.
226*61c4878aSAndroid Build Coastguard Worker        "-DPW_ARMV7M_ENABLE_FPU=1",
227*61c4878aSAndroid Build Coastguard Worker    ],
228*61c4878aSAndroid Build Coastguard Worker)
229*61c4878aSAndroid Build Coastguard Worker
230*61c4878aSAndroid Build Coastguard Workercc_args(
231*61c4878aSAndroid Build Coastguard Worker    name = "cortex-m33+nofp",
232*61c4878aSAndroid Build Coastguard Worker    actions = [
233*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:assembly_actions",
234*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:compile_actions",
235*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/actions:link_actions",
236*61c4878aSAndroid Build Coastguard Worker    ],
237*61c4878aSAndroid Build Coastguard Worker    args = [
238*61c4878aSAndroid Build Coastguard Worker        "-mcpu=cortex-m33+nofp",
239*61c4878aSAndroid Build Coastguard Worker        "-mfloat-abi=soft",
240*61c4878aSAndroid Build Coastguard Worker    ],
241*61c4878aSAndroid Build Coastguard Worker)
242*61c4878aSAndroid Build Coastguard Worker
243*61c4878aSAndroid Build Coastguard Workercc_toolchain(
244*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_toolchain_cortex-m",
245*61c4878aSAndroid Build Coastguard Worker    args = [
246*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:oz",
247*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:debugging",
248*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:reduced_size",
249*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:no_canonical_prefixes",
250*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:no_rtti",
251*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:wno_register",
252*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:wnon_virtual_dtor",
253*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:common_warnings",
254*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:color_diagnostics",
255*61c4878aSAndroid Build Coastguard Worker    ] + select({
256*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m0": [":cortex-m0"],
257*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m0plus": [":cortex-m0plus"],
258*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m3": [":cortex-m3"],
259*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m33": [":cortex-m33"],
260*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m33+nofp": [":cortex-m33+nofp"],
261*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m4": [":cortex-m4"],
262*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m4+nofp": [":cortex-m4+nofp"],
263*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m7": [":cortex-m7"],
264*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:none": [],
265*61c4878aSAndroid Build Coastguard Worker    }) + [
266*61c4878aSAndroid Build Coastguard Worker        ":thumb_abi",
267*61c4878aSAndroid Build Coastguard Worker        # TODO(b/353576440): Enable unified assembly syntax.
268*61c4878aSAndroid Build Coastguard Worker        # ":unified_asm_syntax",
269*61c4878aSAndroid Build Coastguard Worker        ":cortex_common",
270*61c4878aSAndroid Build Coastguard Worker        ":cortex_common_link",
271*61c4878aSAndroid Build Coastguard Worker        ":no_canonical_system_headers",
272*61c4878aSAndroid Build Coastguard Worker        ":warnings",
273*61c4878aSAndroid Build Coastguard Worker    ],
274*61c4878aSAndroid Build Coastguard Worker    enabled_features = [
275*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/args:experimental_replace_legacy_action_config_features",
276*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/capability:compiler_is_gcc",
277*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/capability:linker_is_gcc",
278*61c4878aSAndroid Build Coastguard Worker    ] + select({
279*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc:c++17_enabled": ["//pw_toolchain/cc/args:c++17_feature"],
280*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
281*61c4878aSAndroid Build Coastguard Worker    }) + select({
282*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc:c++20_enabled": ["//pw_toolchain/cc/args:c++20_feature"],
283*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
284*61c4878aSAndroid Build Coastguard Worker    }),
285*61c4878aSAndroid Build Coastguard Worker    known_features = [
286*61c4878aSAndroid Build Coastguard Worker        "@rules_cc//cc/toolchains/args:experimental_replace_legacy_action_config_features",
287*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:c++17_feature",
288*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/args:c++20_feature",
289*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/capability:compiler_is_gcc",
290*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain/cc/capability:linker_is_gcc",
291*61c4878aSAndroid Build Coastguard Worker    ],
292*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = select({
293*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m0": [],
294*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m0plus": [],
295*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m3": [],
296*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m33": [],
297*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m33+nofp": [],
298*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m4": [],
299*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m4+nofp": [],
300*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m7": [],
301*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:none": ["@platforms//:incompatible"],
302*61c4878aSAndroid Build Coastguard Worker    }),
303*61c4878aSAndroid Build Coastguard Worker    tool_map = "@gcc_arm_none_eabi_toolchain//:all_tools",
304*61c4878aSAndroid Build Coastguard Worker    visibility = ["//pw_toolchain:__pkg__"],
305*61c4878aSAndroid Build Coastguard Worker)
306*61c4878aSAndroid Build Coastguard Worker
307*61c4878aSAndroid Build Coastguard Workertoolchain(
308*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m0",
309*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
310*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m0",
311*61c4878aSAndroid Build Coastguard Worker    ],
312*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
313*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
314*61c4878aSAndroid Build Coastguard Worker)
315*61c4878aSAndroid Build Coastguard Worker
316*61c4878aSAndroid Build Coastguard Workertoolchain(
317*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m0plus",
318*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
319*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m0plus",
320*61c4878aSAndroid Build Coastguard Worker    ],
321*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
322*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
323*61c4878aSAndroid Build Coastguard Worker)
324*61c4878aSAndroid Build Coastguard Worker
325*61c4878aSAndroid Build Coastguard Workertoolchain(
326*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m3",
327*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
328*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m3",
329*61c4878aSAndroid Build Coastguard Worker    ],
330*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
331*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
332*61c4878aSAndroid Build Coastguard Worker)
333*61c4878aSAndroid Build Coastguard Worker
334*61c4878aSAndroid Build Coastguard Workertoolchain(
335*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m4",
336*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
337*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m4",
338*61c4878aSAndroid Build Coastguard Worker    ],
339*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
340*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
341*61c4878aSAndroid Build Coastguard Worker)
342*61c4878aSAndroid Build Coastguard Worker
343*61c4878aSAndroid Build Coastguard Workertoolchain(
344*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m4+nofp",
345*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
346*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m4+nofp",
347*61c4878aSAndroid Build Coastguard Worker    ],
348*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
349*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
350*61c4878aSAndroid Build Coastguard Worker)
351*61c4878aSAndroid Build Coastguard Worker
352*61c4878aSAndroid Build Coastguard Workertoolchain(
353*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m7",
354*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
355*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m7",
356*61c4878aSAndroid Build Coastguard Worker    ],
357*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
358*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
359*61c4878aSAndroid Build Coastguard Worker)
360*61c4878aSAndroid Build Coastguard Worker
361*61c4878aSAndroid Build Coastguard Workertoolchain(
362*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m33",
363*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
364*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m33",
365*61c4878aSAndroid Build Coastguard Worker    ],
366*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
367*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
368*61c4878aSAndroid Build Coastguard Worker)
369*61c4878aSAndroid Build Coastguard Worker
370*61c4878aSAndroid Build Coastguard Workertoolchain(
371*61c4878aSAndroid Build Coastguard Worker    name = "arm_gcc_cc_toolchain_cortex-m33+nofp",
372*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
373*61c4878aSAndroid Build Coastguard Worker        "@pw_toolchain//constraints/arm_mcpu:cortex-m33+nofp",
374*61c4878aSAndroid Build Coastguard Worker    ],
375*61c4878aSAndroid Build Coastguard Worker    toolchain = ":arm_gcc_toolchain_cortex-m",
376*61c4878aSAndroid Build Coastguard Worker    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
377*61c4878aSAndroid Build Coastguard Worker)
378