From ec6f81935c044b83eafef4181029a034849e906c Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Fri, 1 Jul 2022 19:30:31 +1000 Subject: [PATCH 1/3] Refactor: Extract `detect_alternative_targets` Signed-off-by: Jiahao XU --- src/target.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/target.rs b/src/target.rs index fc5292f9..6fe51f0e 100644 --- a/src/target.rs +++ b/src/target.rs @@ -91,9 +91,7 @@ pub async fn detect_targets() -> Vec { } #[cfg(target_os = "windows")] - if v[0].contains("gnu") { - v.push(v[0].replace("gnu", "msvc")); - } + v.extend(windows::detect_alternative_targets(&v[0])); v } else { @@ -221,12 +219,16 @@ mod windows { use super::TARGET; use guess_host_triple::guess_host_triple; + pub(super) fn detect_alternative_targets(target: &str) -> Option { + target + .contains("gnu") + .then(|| target.replace("gnu", "msvc")) + } + pub(super) fn detect_targets_windows() -> Vec { let mut targets = vec![guess_host_triple().unwrap_or(TARGET).to_string()]; - if targets[0].contains("gnu") { - targets.push(targets[0].replace("gnu", "msvc")); - } + targets.extend(windows::detect_alternative_targets(&targets[0])); targets } From 8e58398f5781346c134e488952091aa8145dc470 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Fri, 1 Jul 2022 19:34:52 +1000 Subject: [PATCH 2/3] Fix windows target detection for abi `gnullvm` Signed-off-by: Jiahao XU --- src/target.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/target.rs b/src/target.rs index 6fe51f0e..cfe042a0 100644 --- a/src/target.rs +++ b/src/target.rs @@ -220,9 +220,10 @@ mod windows { use guess_host_triple::guess_host_triple; pub(super) fn detect_alternative_targets(target: &str) -> Option { - target - .contains("gnu") - .then(|| target.replace("gnu", "msvc")) + let (prefix, abi) = target.rsplit_once('-').expect("Invalid target triple"); + + // detect abi in ["gnu", "gnullvm", ...] + (abi != "msvc").then(|| format!("{prefix}-msvc")) } pub(super) fn detect_targets_windows() -> Vec { From 1ec1f972b7d170dee71299dff648bde2b65c85bd Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Fri, 1 Jul 2022 19:46:30 +1000 Subject: [PATCH 3/3] Fix copy-paste error in `detect_targets_windows` Signed-off-by: Jiahao XU --- src/target.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/target.rs b/src/target.rs index cfe042a0..8dfb75b6 100644 --- a/src/target.rs +++ b/src/target.rs @@ -229,7 +229,7 @@ mod windows { pub(super) fn detect_targets_windows() -> Vec { let mut targets = vec![guess_host_triple().unwrap_or(TARGET).to_string()]; - targets.extend(windows::detect_alternative_targets(&targets[0])); + targets.extend(detect_alternative_targets(&targets[0])); targets }