diff --git a/Cargo.toml b/Cargo.toml index 42968b54..556ee462 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,7 @@ zip = { version = "0.6.2", default-features = false, features = [ "deflate", "bz # Enable feature zstdmt to enable multithreading in libzstd. zstd = { version = "0.10.0", features = [ "bindgen", "zstdmt" ], default-features = false } -[target.'cfg(target_os = "macos")'.dependencies] +[target.'cfg(any(target_os = "macos", target_os = "windows"))'.dependencies] guess_host_triple = "0.1.3" [dev-dependencies] diff --git a/src/target.rs b/src/target.rs index ac6b6be9..1ce8d308 100644 --- a/src/target.rs +++ b/src/target.rs @@ -32,6 +32,11 @@ pub async fn detect_targets() -> Vec { v.push(macos::X86.into()); } + #[cfg(target_os = "windows")] + if v[0].contains("gnu") { + v.push(v[0].replace("gnu", "msvc")); + } + v } else { #[cfg(target_os = "linux")] @@ -42,7 +47,11 @@ pub async fn detect_targets() -> Vec { { macos::detect_targets_macos() } - #[cfg(not(any(target_os = "linux", target_os = "macos")))] + #[cfg(target_os = "windows")] + { + windows::detect_targets_windows() + } + #[cfg(not(any(target_os = "linux", target_os = "macos", target_os = "windows")))] { vec![TARGET.into()] } @@ -145,3 +154,19 @@ mod macos { } } } + +#[cfg(target_os = "windows")] +mod windows { + use super::TARGET; + use guess_host_triple::guess_host_triple; + + 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 + } +}