1#![doc = include_str!("../readme.md")]
2#![no_std]
3
4#[cfg(all(windows_raw_dylib, target_arch = "x86"))]
6#[macro_export]
7macro_rules! link {
8 ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
9 #[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim", import_name_type = "undecorated")]
10 extern $abi {
11 $(#[link_name=$link_name])?
12 pub fn $($function)*;
13 }
14 )
15}
16
17#[cfg(all(windows_raw_dylib, not(target_arch = "x86")))]
19#[macro_export]
20macro_rules! link {
21 ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
22 #[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#[cfg(all(windows, not(windows_raw_dylib)))]
32#[macro_export]
33macro_rules! link {
34 ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
35 #[link(name = "windows.0.53.0")]
36 extern $abi {
37 $(#[link_name=$link_name])?
38 pub fn $($function)*;
39 }
40 )
41}
42
43#[cfg(all(not(windows), not(windows_raw_dylib)))]
45#[macro_export]
46macro_rules! link {
47 ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
48 extern $abi {
49 pub fn $($function)*;
50 }
51 )
52}