# 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", )