diff --git a/dev-tools/gen-windows-sys-binding/Cargo.toml b/dev-tools/gen-windows-sys-binding/Cargo.toml index 12d9f2764..15446016a 100644 --- a/dev-tools/gen-windows-sys-binding/Cargo.toml +++ b/dev-tools/gen-windows-sys-binding/Cargo.toml @@ -7,4 +7,3 @@ publish = false [dependencies] windows-bindgen = "0.58" tempfile = "3" -regex = "1" diff --git a/dev-tools/gen-windows-sys-binding/src/main.rs b/dev-tools/gen-windows-sys-binding/src/main.rs index ef7c15f3d..f7d21a52c 100644 --- a/dev-tools/gen-windows-sys-binding/src/main.rs +++ b/dev-tools/gen-windows-sys-binding/src/main.rs @@ -6,8 +6,6 @@ use std::{ io::{BufWriter, Write as _}, }; -use regex::Regex; - /// This is printed to the file before the rest of the contents. const PRELUDE: &str = r#"// This file is autogenerated. // @@ -60,27 +58,6 @@ fn main() { write!(&mut f, "{PRELUDE}\n{bindings}\n").unwrap(); - let mut dll_names: Vec<&str> = Regex::new(r#"link!\("(.*)\.dll""#) - .unwrap() - .captures_iter(&bindings) - .map(|caps| caps.extract().1) - .map(|[dll_name]| dll_name) - .filter(|dll_name| *dll_name != "kernel32") - .collect(); - - if !dll_names.is_empty() { - dll_names.sort_unstable(); - dll_names.dedup(); - - for dll_name in dll_names { - write!(&mut f, r#"#[link(name = "{dll_name}")]"#).unwrap(); - f.write_all("\n".as_bytes()).unwrap(); - } - - f.write_all(r#"extern "C" {}"#.as_bytes()).unwrap(); - f.write_all("\n".as_bytes()).unwrap(); - } - f.write_all(r#"use super::windows_targets;"#.as_bytes()) .unwrap(); f.write_all("\n".as_bytes()).unwrap(); diff --git a/src/windows/windows_sys.rs b/src/windows/windows_sys.rs index fd177e658..9e06a237f 100644 --- a/src/windows/windows_sys.rs +++ b/src/windows/windows_sys.rs @@ -114,8 +114,4 @@ pub const WAIT_OBJECT_0: WAIT_EVENT = 0u32; pub const WAIT_TIMEOUT: WAIT_EVENT = 258u32; pub type WIN32_ERROR = u32; -#[link(name = "advapi32")] -#[link(name = "ole32")] -#[link(name = "oleaut32")] -extern "C" {} use super::windows_targets; diff --git a/src/windows/windows_targets.rs b/src/windows/windows_targets.rs index d08affe00..30ddf643c 100644 --- a/src/windows/windows_targets.rs +++ b/src/windows/windows_targets.rs @@ -9,7 +9,8 @@ macro_rules! link_macro { // have in this repo. So instead we always link kernel32.lib and add the rest of the import // libraries below by using an empty extern block. This works because extern blocks are not // connected to the library given in the #[link] attribute. - #[link(name = "kernel32")] + #[cfg_attr(not(target_arch = "x86"), link(name = $library, kind = "raw-dylib", modifiers = "+verbatim"))] + #[cfg_attr(target_arch = "x86", link(name = $library, kind = "raw-dylib", modifiers = "+verbatim", import_name_type = "undecorated"))] extern $abi { $(#[link_name=$link_name])? pub fn $($function)*;