Feature #21929
openAdd configure script options for instrumenting Rust builds
Description
Ruby at this moment optionally includes Rust bits. Right now this touches mostly YJIT and ZJIT.
Rust is a compiled language with various compile flags at various stages and approaches.
My ask is to provide a way to instrument compilation similarly as with C at the moment so that packagers and distributions
can be fully and easily compliant with their guidelines on compilation flags.
Currently, for production build of Ruby, rustc tool is used, which is instrumented differently from cargo in debug builds.
In my PR motivated by the described goal: https://github.com/ruby/ruby/pull/15695
I have focused on providing rustc with our distribution flags, during the PR
it was mentioned that there are flags related to security https://github.com/ruby/ruby/pull/15695#discussion_r2663651764
that should be present even when providing distribution flags.
This is not too different from C, as there are also security flags,
such as configure script enabling the arm64's BTI and PAC when possible.
rustc of version 1.92, at the time of the PR uses the last mention of a flag.
Ideally rustc would know RUSTFLAGS, but as far as I can tell, the enviroment variable only affects cargo.
In Fedora the current guidance recommends using %build_rustflags https://docs.fedoraproject.org/en-US/packaging-guidelines/Rust/#_compiler_flags
which expands to -Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes --cap-lints=warn
The best result is each part of Rust in Ruby would receive the flags defined during configure time.
In cases where complication flags should conflict, in Fedora distribution flags take precedence:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Rust/#_building_with_cargo_internally
No data to display