| # Standard cpu name constraint_setting and constraint_values |
| licenses(["notice"]) |
| |
| package( |
| default_visibility = ["//visibility:public"], |
| ) |
| |
| filegroup( |
| name = "srcs", |
| srcs = glob(["**"]), |
| ) |
| |
| # To add a new constraint_value see https://github.com/bazelbuild/platforms. |
| constraint_setting(name = "cpu") |
| |
| # New cpu values should refer to specific, highly available CPU implementations, |
| # not broad architectures. It should be possible to select the right compiler |
| # options by just by knowing the cpu. This can be a difficult evaluation for |
| # ARM variations, where there are many possibilities for customization within |
| # an architecture. |
| # |
| # 1. No private names are be allowed. If you build your own custom ARM chips, |
| # then define them locally within your organization. |
| # 2. All CPU values must be clear that they are for a 32 or a 64 bit |
| # implementation. For example, cortex-r52 is a 32 bit processor, and |
| # cortex-r82 is a 64 bit processor, but both are armv8-r architecture. |
| # We use the specific processor names because armv8-r is insufficient to |
| # select proper compiler options. |
| # |
| # Many of the name here are legacy values and probably violate these conditions. |
| # We'll try to clean those up over time. |
| |
| # Special case: Architecture-independent outputs only |
| # |
| # Some builds are expected to only produce architecture-independent data files, |
| # such as configuration files, database seed data, composited images, or even |
| # some kinds of interpreted scripts (Shell, Python, Perl, etc). |
| # |
| # When such a build is being performed, this constraint value may be used to |
| # ensure that architecture-dependent builds cannot be performed (except by way |
| # of another transition). |
| # |
| # As a final example, consider building a package of NIC firmware images for |
| # many different NIC models. The package overall is architecture-independent, |
| # and should be built with `//cpu:all`, then each individual image rule has a |
| # transition to the suitable architecture for that specific NIC model. |
| constraint_value( |
| name = "all", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "aarch32", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "aarch64", |
| constraint_setting = ":cpu", |
| ) |
| |
| alias( |
| name = "arm", |
| actual = ":aarch32", |
| ) |
| |
| # Cortex-M0, Cortex-M0+, Cortex-M1 |
| constraint_value( |
| name = "armv6-m", # Commonly known as thumbv6 |
| constraint_setting = ":cpu", |
| ) |
| |
| # Cortex-M3 |
| constraint_value( |
| name = "armv7-m", |
| constraint_setting = ":cpu", |
| ) |
| |
| # Cortex-M4, Cortex-M7 |
| constraint_value( |
| name = "armv7e-m", |
| constraint_setting = ":cpu", |
| ) |
| |
| # Cortex-M4, Cortex-M7 with fpu |
| constraint_value( |
| name = "armv7e-mf", # armv7e-m with fpu |
| constraint_setting = ":cpu", |
| ) |
| |
| # Cortex-M23, Cortex-M33, Cortex-M35P |
| constraint_value( |
| name = "armv8-m", |
| constraint_setting = ":cpu", |
| ) |
| |
| alias( |
| name = "arm64", |
| actual = ":aarch64", |
| ) |
| |
| constraint_value( |
| name = "arm64_32", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "arm64e", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "armv7", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "armv7k", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "cortex-r52", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "cortex-r82", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "i386", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "ppc", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "ppc32", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "s390x", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "x86_32", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "x86_64", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "wasm32", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "wasm64", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "mips64", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "riscv32", |
| constraint_setting = ":cpu", |
| ) |
| |
| constraint_value( |
| name = "riscv64", |
| constraint_setting = ":cpu", |
| ) |