diff --git a/meson.build b/meson.build index e2de3832ac..3790cf15f5 100644 --- a/meson.build +++ b/meson.build @@ -4352,25 +4352,22 @@ foreach target : target_dirs arch_srcs += target_specific.sources() arch_deps += target_specific.dependencies() + main_rs = [] + crates = [] if have_rust and target_type == 'system' target_rust = rust_devices_ss.apply(config_target, strict: false) - crates = [] + arch_deps += target_rust.dependencies() foreach dep : target_rust.dependencies() crates += dep.get_variable('crate') endforeach if crates.length() > 0 - rlib_rs = custom_target('rust_' + target.underscorify() + '.rs', + main_rs = custom_target('rust_' + target.underscorify() + '.rs', output: 'rust_' + target.underscorify() + '.rs', command: [rust_root_crate, crates], capture: true, build_by_default: true, build_always_stale: true) - rlib = static_library('rust_' + target.underscorify(), - structured_sources([], {'.': rlib_rs}), - dependencies: target_rust.dependencies(), - override_options: ['rust_std=2021', 'build.rust_std=2021'], - rust_abi: 'c') - arch_deps += declare_dependency(link_whole: [rlib]) + main_rs = structured_sources(main_rs) endif endif @@ -4394,14 +4391,14 @@ foreach target : target_dirs execs = [{ 'name': 'qemu-system-' + target_name, 'win_subsystem': 'console', - 'sources': files('system/main.c'), + 'sources': [main_rs, files('system/main.c')], 'dependencies': [sdl] }] if host_os == 'windows' and (sdl.found() or gtk.found()) execs += [{ 'name': 'qemu-system-' + target_name + 'w', 'win_subsystem': 'windows', - 'sources': files('system/main.c'), + 'sources': [main_rs, files('system/main.c')], 'dependencies': [sdl] }] endif @@ -4410,7 +4407,7 @@ foreach target : target_dirs execs += [{ 'name': 'qemu-fuzz-' + target_name, 'win_subsystem': 'console', - 'sources': specific_fuzz.sources(), + 'sources': [main_rs, specific_fuzz.sources()], 'dependencies': specific_fuzz.dependencies(), }] endif diff --git a/scripts/rust/rust_root_crate.sh b/scripts/rust/rust_root_crate.sh index f05b8d0210..13ef7c1be5 100755 --- a/scripts/rust/rust_root_crate.sh +++ b/scripts/rust/rust_root_crate.sh @@ -6,6 +6,7 @@ cat <