xref: /aosp_15_r20/build/bazel/platforms/arch/variants/BUILD (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1# Cpu/Arch Variants and features
2
3load(":constants.bzl", "arch_variant_to_constraints", "constants", "power_set")
4load(":constants_test.bzl", "power_set_test_suite")
5
6constraint_setting(
7    name = "arch_variant_constraint",
8)
9
10licenses(["notice"])
11
12package(
13    default_visibility = ["//visibility:public"],
14)
15
16[
17    constraint_value(
18        name = arch_variant,
19        constraint_setting = "arch_variant_constraint",
20    )
21    for arch_variant in constants.AvailableArchVariants
22]
23
24[
25    [
26        config_setting(
27            name = variant + "-" + arch,
28            constraint_values = [
29                arch_variant_to_constraints[arch],
30                ":" + variant,
31            ],
32        )
33        for variant in variants
34    ]
35    for arch, variants in constants.ArchToVariants.items()
36]
37
38constraint_setting(
39    name = "cpu_variant_constraint",
40)
41
42[
43    constraint_value(
44        name = cpu_variant,
45        constraint_setting = "cpu_variant_constraint",
46    )
47    for cpu_variant in constants.AvailableCpuVariants
48]
49
50[
51    [
52        config_setting(
53            name = variant + "-" + arch,
54            constraint_values = [
55                arch_variant_to_constraints[arch],
56                ":" + variant,
57            ],
58        )
59        for variant in variants
60    ]
61    for arch, variants in constants.CpuToVariants.items()
62]
63
64[
65    (
66        constraint_setting(
67            name = "arch_feature_constraint_" + arch_feature,
68        ),
69        constraint_value(
70            name = arch_feature,
71            constraint_setting = "arch_feature_constraint_" + arch_feature,
72        ),
73    )
74    for arch_feature in constants.AvailableArchFeatures
75]
76
77[
78    [
79        config_setting(
80            name = arch + "-" + "-".join(sorted(features)),
81            constraint_values = [
82                arch_variant_to_constraints[arch],
83            ] + [":" + feature for feature in features],
84        )
85        for features in power_set(
86            all_features,
87            include_empty = False,
88        )
89    ]
90    for arch, all_features in constants.ArchToFeatures.items()
91]
92
93power_set_test_suite(name = "power_set_tests")
94