don't try to find target tools on certain commands

For commands like check/clean there is no need to check for target tools.
Avoiding this check can also speed up the process.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
onur-ozkan 2024-08-09 12:30:36 +03:00
parent 9a29081b49
commit 94fbe14155

View File

@ -87,15 +87,29 @@ fn new_cc_build(build: &Build, target: TargetSelection) -> cc::Build {
} }
pub fn find(build: &Build) { pub fn find(build: &Build) {
// For all targets we're going to need a C compiler for building some shims let targets: HashSet<_> = match build.config.cmd {
// and such as well as for being a linker for Rust code. // We don't need to check cross targets for these commands.
let targets = build crate::Subcommand::Clean { .. }
.targets | crate::Subcommand::Check { .. }
.iter() | crate::Subcommand::Suggest { .. }
.chain(&build.hosts) | crate::Subcommand::Format { .. }
.cloned() | crate::Subcommand::Setup { .. } => {
.chain(iter::once(build.build)) build.hosts.iter().cloned().chain(iter::once(build.build)).collect()
.collect::<HashSet<_>>(); }
_ => {
// For all targets we're going to need a C compiler for building some shims
// and such as well as for being a linker for Rust code.
build
.targets
.iter()
.chain(&build.hosts)
.cloned()
.chain(iter::once(build.build))
.collect()
}
};
for target in targets.into_iter() { for target in targets.into_iter() {
find_target(build, target); find_target(build, target);
} }