The cargo documentation environment-variables.md says
RUSTFLAGS - A space-separated list of custom flags to pass to all compiler invocations that Cargo performs. In contrast with cargo rustc, this is useful for passing a flag to all compiler instances.
This is wrong, unfortunately. The flag is not passed to all compiler instances: When cross-compiling (i.e., when --target is set), the flag is not passed to build scripts. It seems there is currently no way to pass anything to build scripts when --target is set, which clearly is a feature gap. Cargo should provide a way to set flags for build scripts even when cross-compiling.
One may be tempted to set CARGO_TARGET_<target>_RUSTFLAGS or target.<target>.rustflags, but that does not work either.
Also see #9453, #9452.
The cargo documentation
environment-variables.mdsaysThis is wrong, unfortunately. The flag is not passed to all compiler instances: When cross-compiling (i.e., when
--targetis set), the flag is not passed to build scripts. It seems there is currently no way to pass anything to build scripts when--targetis set, which clearly is a feature gap. Cargo should provide a way to set flags for build scripts even when cross-compiling.One may be tempted to set
CARGO_TARGET_<target>_RUSTFLAGSortarget.<target>.rustflags, but that does not work either.Also see #9453, #9452.