1"""Definitions for support config settings and platform definitions""" 2 3load("@bazel_skylib//lib:selects.bzl", "selects") 4load( 5 ":triple_mappings.bzl", 6 "SUPPORTED_PLATFORM_TRIPLES", 7 "cpu_arch_to_constraints", 8 "system_to_constraints", 9 "triple_to_constraint_set", 10) 11 12_SUPPORTED_CPU_ARCH = [ 13 "aarch64", 14 "arm", 15 "armv7", 16 "i686", 17 "powerpc", 18 "s390x", 19 "x86_64", 20 "riscv32", 21 "riscv64", 22] 23 24_SUPPORTED_SYSTEMS = [ 25 "android", 26 "darwin", 27 "freebsd", 28 "ios", 29 "linux", 30 "windows", 31 "nto", 32] 33 34# buildifier: disable=unnamed-macro 35def declare_config_settings(): 36 """Helper function for declaring `config_setting`s""" 37 for cpu_arch in _SUPPORTED_CPU_ARCH: 38 native.config_setting( 39 name = cpu_arch, 40 constraint_values = cpu_arch_to_constraints(cpu_arch), 41 ) 42 43 for system in _SUPPORTED_SYSTEMS: 44 native.config_setting( 45 name = system, 46 constraint_values = system_to_constraints(system), 47 ) 48 49 # Add alias for OSX to "darwin" to match what users will be expecting. 50 native.alias( 51 name = "osx", 52 actual = ":darwin", 53 ) 54 55 # Add alias for OSX to "macos" to be consistent with the long-term 56 # direction of `@platforms` in using the OS's modern name. 57 native.alias( 58 name = "macos", 59 actual = ":darwin", 60 ) 61 62 all_supported_triples = SUPPORTED_PLATFORM_TRIPLES 63 for triple in all_supported_triples: 64 native.config_setting( 65 name = triple, 66 constraint_values = triple_to_constraint_set(triple), 67 ) 68 69 native.platform( 70 name = "wasm", 71 constraint_values = [ 72 "@platforms//cpu:wasm32", 73 str(Label("//rust/platform/os:unknown")), 74 ], 75 ) 76 77 native.platform( 78 name = "wasi", 79 constraint_values = [ 80 "@platforms//cpu:wasm32", 81 "@platforms//os:wasi", 82 ], 83 ) 84 85 selects.config_setting_group( 86 name = "unix", 87 match_any = [ 88 ":android", 89 ":darwin", 90 ":freebsd", 91 ":linux", 92 ":nto", 93 ], 94 ) 95