Skip to content

Commit b840ff0

Browse files
committed
Use the given ABI in link!
1 parent 068989a commit b840ff0

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

crates/libs/link/src/lib.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
#[cfg(all(windows, target_arch = "x86"))]
66
#[macro_export]
77
macro_rules! link {
8+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
9+
$crate::link!($library "C" $($link_name)? fn $($function)*);
10+
);
811
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
912
#[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim", import_name_type = "undecorated")]
1013
extern $abi {
@@ -18,9 +21,12 @@ macro_rules! link {
1821
#[cfg(all(windows, not(target_arch = "x86")))]
1922
#[macro_export]
2023
macro_rules! link {
24+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
25+
$crate::link!($library "C" $($link_name)? fn $($function)*);
26+
);
2127
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
2228
#[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim")]
23-
extern "C" {
29+
extern $abi {
2430
$(#[link_name=$link_name])?
2531
pub fn $($function)*;
2632
}
@@ -31,8 +37,11 @@ macro_rules! link {
3137
#[cfg(not(windows))]
3238
#[macro_export]
3339
macro_rules! link {
40+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
41+
$crate::link!($library "C" $($link_name)? fn $($function)*);
42+
);
3443
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
35-
extern "C" {
44+
extern $abi {
3645
pub fn $($function)*;
3746
}
3847
)

crates/libs/targets/src/lib.rs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
#[cfg(all(windows_raw_dylib, target_arch = "x86"))]
66
#[macro_export]
77
macro_rules! link {
8+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
9+
$crate::link!($library "C" $($link_name)? fn $($function)*);
10+
);
811
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
912
#[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim", import_name_type = "undecorated")]
1013
extern $abi {
@@ -18,21 +21,11 @@ macro_rules! link {
1821
#[cfg(all(windows_raw_dylib, not(target_arch = "x86")))]
1922
#[macro_export]
2023
macro_rules! link {
24+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
25+
$crate::link!($library "C" $($link_name)? fn $($function)*);
26+
);
2127
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
2228
#[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim")]
23-
extern "C" {
24-
$(#[link_name=$link_name])?
25-
pub fn $($function)*;
26-
}
27-
)
28-
}
29-
30-
/// Defines an external function to import.
31-
#[cfg(all(windows, not(windows_raw_dylib), target_arch = "x86"))]
32-
#[macro_export]
33-
macro_rules! link {
34-
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
35-
#[link(name = "windows.0.53.0")]
3629
extern $abi {
3730
$(#[link_name=$link_name])?
3831
pub fn $($function)*;
@@ -41,12 +34,15 @@ macro_rules! link {
4134
}
4235

4336
/// Defines an external function to import.
44-
#[cfg(all(windows, not(windows_raw_dylib), not(target_arch = "x86")))]
37+
#[cfg(all(windows, not(windows_raw_dylib)))]
4538
#[macro_export]
4639
macro_rules! link {
40+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
41+
$crate::link!($library "C" $($link_name)? fn $($function)*);
42+
);
4743
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
4844
#[link(name = "windows.0.53.0")]
49-
extern "C" {
45+
extern $abi {
5046
$(#[link_name=$link_name])?
5147
pub fn $($function)*;
5248
}
@@ -57,8 +53,11 @@ macro_rules! link {
5753
#[cfg(all(not(windows), not(windows_raw_dylib)))]
5854
#[macro_export]
5955
macro_rules! link {
56+
($library:literal "cdecl" $($link_name:literal)? fn $($function:tt)*) => (
57+
$crate::link!($library "C" $($link_name)? fn $($function)*);
58+
);
6059
($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
61-
extern "C" {
60+
extern $abi {
6261
pub fn $($function)*;
6362
}
6463
)

0 commit comments

Comments
 (0)