mirror of https://github.com/bazelbuild/rules_cc
e1c7ebb858
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 |
||
---|---|---|
.. | ||
BUILD | ||
variables_test.bzl |