On Wed, Oct 9, 2024 at 1:42 PM Alice Ryhl <aliceryhl@xxxxxxxxxx> wrote: > > Fix a few different compiler errors that cause rustc-option to give > wrong results. > > If KBUILD_RUSTFLAGS or the flags being tested contain any -Z flags, then > the error below is generated. The RUSTC_BOOTSTRAP environment variable > is added to fix this error. > > error: the option `Z` is only accepted on the nightly compiler > help: consider switching to a nightly toolchain: `rustup default nightly` > note: selecting a toolchain with `+toolchain` arguments require a rustup proxy; > see <https://rust-lang.github.io/rustup/concepts/index.html> > note: for more information about Rust's stability policy, see > <https://doc.rust-lang.org/book/appendix-07-nightly-rust.html#unstable-features> > error: 1 nightly option were parsed > > Note that RUSTC_BOOTSTRAP is also defined in the top-level Makefile, but > its value is unfortunately *not* inherited from the environment. That > said, this is changing as of commit 98da874c4303 ("[SV 10593] Export > variables to $(shell ...) commands"), which is part of Make 4.4. > > The probe may also fail with the error message below. To fix it, the > /dev/null argument is replaced with a file containing the crate > attribute #![no_core]. The #![no_core] attribute ensures that rustc does > not look for the standard library. It's not possible to instead supply a > standard library to rustc, as we need `rustc-option` before the Rust > standard library is compiled. > > error[E0463]: can't find crate for `std` > | > = note: the `aarch64-unknown-none` target may not be installed > = help: consider downloading the target with `rustup target add aarch64-unknown-none` > = help: consider building the standard library from source with `cargo build -Zbuild-std` > > The -o and --out-dir parameters are altered to fix this warning: > > warning: ignoring --out-dir flag due to -o flag > > The --sysroot flag is provided as we would otherwise require it to be > present in KBUILD_RUSTFLAGS. The --emit=obj flag is used to write the > resulting rlib to /dev/null instead of writing it to a file in > $(TMPOUT). > > I verified that the Kconfig version of rustc-option doesn't have the > same issues. > > Fixes: c42297438aee ("kbuild: rust: Define probing macros for rustc") > Co-developed-by: Miguel Ojeda <ojeda@xxxxxxxxxx> > Signed-off-by: Miguel Ojeda <ojeda@xxxxxxxxxx> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> Applied to `rust-fixes` -- thanks everyone! [ Reworded as discussed in the list. - Miguel ] Cheers, Miguel