Description
While experimenting with cross compilation using rules_rust
I noticed something odd: it seems like bazel builds crates marked with the proc-macro
type for the target platform instead of the host platform. This breaks procedural macros when cross compiling, especially when the target platform does not have a standard library.
I guess that we would want rules_rust
to convince bazel to compile procedural macro crates and their dependencies for the host platform instead of the target platform, but I do not know enough about Bazel to determine if and how this would be possible.
For now I came up with an ugly but working solution: I added an extra bool field to rust_library
named proc_macro_dep
. If this field is set to true, the --target
argument is omitted from rustc invocations. I can provide the patch in case anyone is interested.