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