Since upstream's 029a48176c
we can build both without the necessity of cargo or new rust
dependencies if we only care about the JITs.
Introduce `bcond_without rust`. Parts of Ruby are in Rust, which necessitates
dependencies such as the compiler, macros and so on.
Since both YJIT and ZJIT are in rust but can be built independently of
each other but not independently of present Rust support in the
buildroot, it is better to bring in rust bits when we build ruby `with_rust`.
The %%{build_rustflags} macro lives in different
packages, depending on if we are in EL or Fedora.
RUSTFLAGS could affect too much at the same time and only apply to
cargo.
The approach merged in upstream PR https://github.com/ruby/ruby/pull/15695
is to instead have a specific flag on configure script to instrument the
`rustc` compilation flags specifically when building JITs.
This ensures that we are properly providing the %%{build_rustflags} macro for rustc.
The downcased version in the configure script appends to upstream's
defaults. This way we preserve upstream's flags and overwrite any flags
that differ in Fedora from upstream, since the flag specified later on
the CLI will be taken.
For example if we have:
~~~
$ rustc -C opt-level=3 -C opt-level=2 foo.rs
~~~
Then the latter value is used, so the file is compiled with opt-level=2,
not 3, because it was specified later.
So we should always end up with Distro compliant compiler flags.
Also fixup the doc referring to supported JIT architectures in the links
in the comment near the JIT bconds.