1load("@rules_testing//lib:util.bzl", "util") 2load("//cc/toolchains:args.bzl", "cc_args") 3load("//cc/toolchains:feature.bzl", "cc_feature") 4load("//cc/toolchains:feature_constraint.bzl", "cc_feature_constraint") 5load("//cc/toolchains:feature_set.bzl", "cc_feature_set") 6load("//cc/toolchains:mutually_exclusive_category.bzl", "cc_mutually_exclusive_category") 7load("//cc/toolchains/impl:external_feature.bzl", "cc_external_feature") 8load("//tests/rule_based_toolchain:analysis_test_suite.bzl", "analysis_test_suite") 9load(":features_test.bzl", "TARGETS", "TESTS") 10 11util.helper_target( 12 cc_args, 13 name = "c_compile_args", 14 actions = ["//tests/rule_based_toolchain/actions:c_compile"], 15 args = ["c"], 16 data = ["//tests/rule_based_toolchain/testdata:file1"], 17) 18 19util.helper_target( 20 cc_feature, 21 name = "simple", 22 args = [":c_compile_args"], 23 feature_name = "feature_name", 24 visibility = ["//tests/rule_based_toolchain:__subpackages__"], 25) 26 27util.helper_target( 28 cc_feature, 29 name = "simple2", 30 args = [":c_compile_args"], 31 feature_name = "simple2", 32) 33 34util.helper_target( 35 cc_feature_set, 36 name = "feature_set", 37 all_of = [ 38 ":simple", 39 ":simple2", 40 ], 41) 42 43util.helper_target( 44 cc_feature, 45 name = "requires", 46 args = [":c_compile_args"], 47 feature_name = "requires", 48 requires_any_of = [":feature_set"], 49) 50 51util.helper_target( 52 cc_feature, 53 name = "implies", 54 args = [":c_compile_args"], 55 feature_name = "implies", 56 implies = [":simple"], 57) 58 59cc_mutually_exclusive_category( 60 name = "category", 61) 62 63util.helper_target( 64 cc_feature, 65 name = "mutual_exclusion_feature", 66 args = [":c_compile_args"], 67 feature_name = "mutual_exclusion", 68 mutually_exclusive = [ 69 ":simple", 70 ":category", 71 ], 72) 73 74util.helper_target( 75 cc_feature_constraint, 76 name = "direct_constraint", 77 all_of = [":simple"], 78 none_of = [":simple2"], 79 visibility = ["//tests/rule_based_toolchain:__subpackages__"], 80) 81 82util.helper_target( 83 cc_feature_constraint, 84 name = "transitive_constraint", 85 all_of = [ 86 ":direct_constraint", 87 ":requires", 88 ], 89 none_of = [":implies"], 90) 91 92util.helper_target( 93 cc_external_feature, 94 name = "builtin_feature", 95 feature_name = "builtin_feature", 96 overridable = True, 97) 98 99util.helper_target( 100 cc_feature, 101 name = "overrides", 102 args = [":c_compile_args"], 103 overrides = ":builtin_feature", 104) 105 106util.helper_target( 107 cc_feature, 108 name = "sentinel_feature", 109 feature_name = "sentinel_feature_name", 110) 111 112util.helper_target( 113 cc_args, 114 name = "args_with_dir", 115 actions = ["//tests/rule_based_toolchain/actions:c_compile"], 116 allowlist_include_directories = ["//tests/rule_based_toolchain/testdata:subdirectory_1"], 117 args = ["--include-builtin-dirs"], 118) 119 120util.helper_target( 121 cc_feature, 122 name = "feature_with_dir", 123 args = [":args_with_dir"], 124 feature_name = "feature_with_dir", 125) 126 127analysis_test_suite( 128 name = "test_suite", 129 targets = TARGETS, 130 tests = TESTS, 131) 132