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