• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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