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