From c81cfe240ab478b79d6167ebba28eb8fba3cd24c Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 20 Jul 2022 15:47:09 -0400 Subject: [PATCH] cargo-miri: reorder --target to after the user-defined commands --- cargo-miri/bin.rs | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/cargo-miri/bin.rs b/cargo-miri/bin.rs index 4c9f3aabaa..d294bc5b12 100644 --- a/cargo-miri/bin.rs +++ b/cargo-miri/bin.rs @@ -584,27 +584,12 @@ fn phase_cargo_miri(mut args: env::Args) { MiriCommand::Run => "run", MiriCommand::Setup => return, // `cargo miri setup` stops here. }; + let metadata = get_cargo_metadata(); let mut cmd = cargo(); cmd.arg(cargo_cmd); - // Make sure we know the build target, and cargo does, too. - // This is needed to make the `CARGO_TARGET_*_RUNNER` env var do something, - // and it later helps us detect which crates are proc-macro/build-script - // (host crates) and which crates are needed for the program itself. - let host = version_info().host; - let target = get_arg_flag_value("--target"); - let target = if let Some(ref target) = target { - target - } else { - // No target given. Pick default and tell cargo about it. - cmd.arg("--target"); - cmd.arg(&host); - &host - }; - - let mut target_dir = None; - // Forward all arguments before `--` other than `--target-dir` and its value to Cargo. + let mut target_dir = None; for arg in ArgSplitFlagValue::new(&mut args, "--target-dir") { match arg { Ok(value) => { @@ -618,16 +603,27 @@ fn phase_cargo_miri(mut args: env::Args) { } } } - - let metadata = get_cargo_metadata(); - // Detect the target directory if it's not specified via `--target-dir`. let target_dir = target_dir.get_or_insert_with(|| metadata.target_directory.clone()); - // Set `--target-dir` to `miri` inside the original target directory. target_dir.push("miri"); cmd.arg("--target-dir").arg(target_dir); + // Make sure we know the build target, and cargo does, too. + // This is needed to make the `CARGO_TARGET_*_RUNNER` env var do something, + // and it later helps us detect which crates are proc-macro/build-script + // (host crates) and which crates are needed for the program itself. + let host = version_info().host; + let target = get_arg_flag_value("--target"); + let target = if let Some(ref target) = target { + target + } else { + // No target given. Pick default and tell cargo about it. + cmd.arg("--target"); + cmd.arg(&host); + &host + }; + // Forward all further arguments after `--` to cargo. cmd.arg("--").args(args);