xref: /aosp_15_r20/external/bazelbuild-rules_rust/rust/platform/platform.bzl (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
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