1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#![allow(
non_camel_case_types,
non_snake_case,
non_upper_case_globals,
)]
macro_rules! include_bindings {
() => {
include_bindings!("", "");
};
($name:literal) => {
include_bindings!("-", $name);
};
($sep:literal, $name:literal) => {
include!(concat!(env!("OUT_DIR"), "/bindings", $sep, $name, ".rs"));
};
}
include_bindings!();
pub mod platform {
macro_rules! def_platform {
($mod_name:tt, $header_name:literal, $feature_name:literal $(,)?) => {
#[cfg(feature = $feature_name)]
pub mod $mod_name {
use crate::*;
include_bindings!($header_name);
}
};
}
def_platform!(darwin, "darwin", "darwin-ext");
def_platform!(unix, "unix", "unix-ext");
def_platform!(windows, "windows", "windows-ext");
}