On Mon, 14 Oct 2024 at 15:36, Paolo Bonzini <pbonz...@redhat.com> wrote: > > A working native Rust compiler is always needed in order to compile Rust > code, even when cross compiling, in order to build the procedural macros > that QEMU uses. > > Right now, the check is done in rust/qemu-api-macros/meson.build, but this > has two disadvantages. First, it makes the build fail when the Meson "rust" > option is set to "auto" (instead, Rust support should be disabled). Second, > add_languages() is one of the few functions that are executed even by > "meson introspect", except that "meson introspect" executes both branches > of "if" statements! Therefore, "meson introspect" tries to look for a > Rust compiler even if the option is disabled---and then fails because > the compiler is required by rust/qemu-api-macros/meson.build. This is > visible for example if the compilation host has a stale > scripts/meson-buildoptions.sh and no rustc installed. > > Both issues can be fixed by moving the check to the main meson.build, > together with the check for the cross compiler. > > Reported-by: Peter Maydell <peter.mayd...@linaro.org> > --- > meson.build | 3 ++- > rust/qemu-api-macros/meson.build | 2 -- > 2 files changed, 2 insertions(+), 3 deletions(-)
Missing Signed-off-by: line ? > > diff --git a/meson.build b/meson.build > index aecc381932d..c85f964bed4 100644 > --- a/meson.build > +++ b/meson.build > @@ -71,7 +71,8 @@ if host_os == 'darwin' and \ > objc = meson.get_compiler('objc') > endif > have_rust = false > -if not get_option('rust').disabled() and add_languages('rust', required: > get_option('rust'), native: false) > +if not get_option('rust').disabled() and add_languages('rust', required: > get_option('rust'), native: false) \ > + and add_languages('rust', required: get_option('rust'), native: true) > rustc = meson.get_compiler('rust') > have_rust = true > if rustc.version().version_compare('<1.80.0') > diff --git a/rust/qemu-api-macros/meson.build > b/rust/qemu-api-macros/meson.build > index 48af91ed389..517b9a4d2d5 100644 > --- a/rust/qemu-api-macros/meson.build > +++ b/rust/qemu-api-macros/meson.build > @@ -1,5 +1,3 @@ > -add_languages('rust', required: true, native: true) > - > quote_dep = dependency('quote-1-rs', native: true) > syn_dep = dependency('syn-2-rs', native: true) > proc_macro2_dep = dependency('proc-macro2-1-rs', native: true) > -- > 2.46. thanks -- PMM