2024-04-04 23:12:26 +00:00
|
|
|
load("//cc/toolchains/impl:variables.bzl", "cc_variable", "types")
|
|
|
|
load("//tests/rule_based_toolchain:analysis_test_suite.bzl", "analysis_test_suite")
|
|
|
|
load(":nested_args_test.bzl", "TARGETS", "TESTS")
|
|
|
|
|
|
|
|
cc_variable(
|
|
|
|
name = "foo",
|
|
|
|
type = types.string,
|
|
|
|
)
|
|
|
|
|
Add support for select'ing on cc_args(args=...).
This CL is an alternative to unknown commit. I left the other CL seperately, because I wasn't 100% sure that we'd agree to this, since this is an API change.
I did it this way because I believe it's much less hacky, and it also allows us to format things that aren't variables.
BEGIN_PUBLIC
Add support for select'ing on cc_args(args=...).
This is quite tricky because the one parameter was being split into two in a macro, one of type label and the other of type string.
For example, `args = ["--foo", format_arg("--bar=%s", "//path/to:bar")]` was rewritten by the macro to `args = [json.encode(struct(format_type="raw", format="foo")), json.encode(struct(format_type="format_arg", format="--bar=%s", value=0))], variables = ["//path/to:bar"]`.
To allow it to work with selects, we need to ensure that we don't perform post-processing on the inside of the select. To solve this, we:
* Ensure that args only take strings
* Provide a seperate parameter for substitutions.
This new mechanism also has the useful property that we can now format things that are not variables. For example, I can do the following:
```
directory(name = "sysroot", ...)
cc_args(
name = "sysroot_arg",
args = ["--sysroot={sysroot}"],
format = {
":sysroot": "sysroot"
}
)
```
END_PUBLIC
PiperOrigin-RevId: 656211278
Change-Id: If83f1ea5a99090c18f2a561c51ec6d39ce9fe419
2024-07-26 03:13:10 +00:00
|
|
|
cc_variable(
|
|
|
|
name = "my_list",
|
|
|
|
type = types.list(types.string),
|
|
|
|
)
|
|
|
|
|
2024-04-04 23:12:26 +00:00
|
|
|
analysis_test_suite(
|
|
|
|
name = "test_suite",
|
|
|
|
targets = TARGETS,
|
|
|
|
tests = TESTS,
|
|
|
|
)
|