xref: /aosp_15_r20/external/bazelbuild-rules_cc/tests/rule_based_toolchain/features/BUILD (revision eed53cd41c5909d05eedc7ad9720bb158fd93452)
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",
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"],
23    enabled = False,
24    feature_name = "feature_name",
25    visibility = ["//tests/rule_based_toolchain:__subpackages__"],
26)
27
28util.helper_target(
29    cc_feature,
30    name = "simple2",
31    args = [":c_compile"],
32    enabled = False,
33    feature_name = "simple2",
34)
35
36util.helper_target(
37    cc_feature_set,
38    name = "feature_set",
39    all_of = [
40        ":simple",
41        ":simple2",
42    ],
43)
44
45util.helper_target(
46    cc_feature,
47    name = "requires",
48    args = [":c_compile"],
49    enabled = True,
50    feature_name = "requires",
51    requires_any_of = [":feature_set"],
52)
53
54util.helper_target(
55    cc_feature,
56    name = "implies",
57    args = [":c_compile"],
58    enabled = True,
59    feature_name = "implies",
60    implies = [":simple"],
61)
62
63cc_mutually_exclusive_category(
64    name = "category",
65)
66
67util.helper_target(
68    cc_feature,
69    name = "mutual_exclusion_feature",
70    args = [":c_compile"],
71    enabled = True,
72    feature_name = "mutual_exclusion",
73    mutually_exclusive = [
74        ":simple",
75        ":category",
76    ],
77)
78
79util.helper_target(
80    cc_feature_constraint,
81    name = "direct_constraint",
82    all_of = [":simple"],
83    none_of = [":simple2"],
84    visibility = ["//tests/rule_based_toolchain:__subpackages__"],
85)
86
87util.helper_target(
88    cc_feature_constraint,
89    name = "transitive_constraint",
90    all_of = [
91        ":direct_constraint",
92        ":requires",
93    ],
94    none_of = [":implies"],
95)
96
97util.helper_target(
98    cc_external_feature,
99    name = "builtin_feature",
100    feature_name = "builtin_feature",
101    overridable = True,
102)
103
104util.helper_target(
105    cc_feature,
106    name = "overrides",
107    args = [":c_compile"],
108    enabled = True,
109    overrides = ":builtin_feature",
110)
111
112analysis_test_suite(
113    name = "test_suite",
114    targets = TARGETS,
115    tests = TESTS,
116)
117