On Wed, Oct 9, 2024 at 8: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> > --- > Based on top of: > https://lore.kernel.org/r/20241009102821.2675718-1-masahiroy@xxxxxxxxxx > --- > Changes in v3: > - Use stdin instead of a rust/probe.rs file. > - Fix --out-dir argument. > - Move RUSTC_BOOTSTRAP to __rustc-option. > - Add --sysroot and --emit=obj flags. > - Rebase on top of [PATCH] kbuild: refactor cc-option-yn, cc-disable-warning, rust-option-yn macros > - Link to v2: https://lore.kernel.org/r/20241008-rustc-option-bootstrap-v2-1-e6e155b8f9f3@xxxxxxxxxx V3 looks good to me. Miguel, Will you apply this together with my rustc-option-yn refactoring? Acked-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> -- Best Regards Masahiro Yamada