aboutsummaryrefslogtreecommitdiff
path: root/pw_toolchain_bazel/constraints/arm_mcpu/BUILD.bazel
diff options
context:
space:
mode:
Diffstat (limited to 'pw_toolchain_bazel/constraints/arm_mcpu/BUILD.bazel')
-rw-r--r--pw_toolchain_bazel/constraints/arm_mcpu/BUILD.bazel80
1 files changed, 80 insertions, 0 deletions
diff --git a/pw_toolchain_bazel/constraints/arm_mcpu/BUILD.bazel b/pw_toolchain_bazel/constraints/arm_mcpu/BUILD.bazel
new file mode 100644
index 000000000..4983dac9a
--- /dev/null
+++ b/pw_toolchain_bazel/constraints/arm_mcpu/BUILD.bazel
@@ -0,0 +1,80 @@
+# Copyright 2023 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"])
+
+# The target Arm processor.
+#
+# The values of this constraint_setting correspond to valid values of the -mcpu
+# flag for Arm gcc. See
+# https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#index-mcpu-2. These
+# values are intended to be used in `target_compatible_with` attributes of
+# toolchains which specify the corresponding value of -mcpu.
+#
+# The constraint_values are not currently exhaustively enumerated (only a few
+# of the legal -mcpu values have corresponding constraint_values). The intent
+# is for additional values to be added when needed.
+#
+# The intent is to support only (processor type + optional architectural
+# extensions) forms of -mcpu (e.g., cortex-m4 or cortex-m4+nofp), not march
+# values (e.g., armv7e-m). This is because it is recommended to use (processor
+# type + optional architectural extensions) when configuring Arm GCC (see
+# https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/compiler-flags-across-architectures-march-mtune-and-mcpu).
+# In addition, the march values can already be captured using @platforms//cpu.
+constraint_setting(
+ name = "mcpu",
+ default_constraint_value = "none",
+)
+
+constraint_value(
+ name = "none",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m0",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m3",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m4",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m4+nofp",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m7",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m33",
+ constraint_setting = ":mcpu",
+)
+
+constraint_value(
+ name = "cortex-m33+nofp",
+ constraint_setting = ":mcpu",
+)