diff --git a/Cargo.lock b/Cargo.lock index 711d0607bf..7b6d6045e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3293,6 +3293,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "embed-manifest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cd446c890d6bed1d8b53acef5f240069ebef91d6fae7c5f52efe61fe8b5eae" + [[package]] name = "emojis" version = "0.6.1" @@ -12506,6 +12512,7 @@ dependencies = [ "db", "diagnostics", "editor", + "embed-manifest", "env_logger", "extension", "extensions_ui", diff --git a/crates/zed/Cargo.toml b/crates/zed/Cargo.toml index 8195a2bf93..fd1e54be80 100644 --- a/crates/zed/Cargo.toml +++ b/crates/zed/Cargo.toml @@ -91,6 +91,7 @@ workspace.workspace = true zed_actions.workspace = true [target.'cfg(target_os = "windows")'.build-dependencies] +embed-manifest = "1.4.0" winresource = "0.1" [dev-dependencies] diff --git a/crates/zed/build.rs b/crates/zed/build.rs index e17cf0bb55..d92796e5d5 100644 --- a/crates/zed/build.rs +++ b/crates/zed/build.rs @@ -46,19 +46,18 @@ fn main() { #[cfg(target_os = "windows")] { - // todo(windows): This is to avoid stack overflow. Remove it when solved. - println!("cargo:rustc-link-arg=/stack:{}", 8 * 1024 * 1024); + if std::env::var("CARGO_CFG_TARGET_ENV").ok() == Some("msvc".to_string()) { + // todo(windows): This is to avoid stack overflow. Remove it when solved. + println!("cargo:rustc-link-arg=/stack:{}", 8 * 1024 * 1024); + } let manifest = std::path::Path::new("resources/windows/manifest.xml"); let icon = std::path::Path::new("resources/windows/app-icon.ico"); println!("cargo:rerun-if-changed={}", manifest.display()); println!("cargo:rerun-if-changed={}", icon.display()); - println!("cargo:rustc-link-arg-bins=/MANIFEST:EMBED"); - println!( - "cargo:rustc-link-arg-bins=/MANIFESTINPUT:{}", - manifest.canonicalize().unwrap().display() - ); + embed_manifest::embed_manifest(embed_manifest::new_manifest(manifest.to_str().unwrap())) + .unwrap(); let mut res = winresource::WindowsResource::new(); res.set_icon(icon.to_str().unwrap());