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
41
#![allow(
non_camel_case_types,
non_snake_case,
non_upper_case_globals,
)]
macro_rules! include_bindings {
($name:literal) => {
include!(concat!(env!("OUT_DIR"), "/", $name, ".rs"));
};
}
include_bindings!("bindings");
include_bindings!("bindings-control-sigs");
pub mod platform {
macro_rules! def_platform {
($mod:tt, $platform:literal, $header:literal, $os:literal $(,)?) => {
#[doc = concat!("Additional features available on ", $platform, " platforms.")]
#[cfg(target_os = $os)]
pub mod $mod {
use crate::*;
include_bindings!($header);
}
};
}
def_platform!(darwin, "Darwin", "bindings-darwin", "macos");
def_platform!(unix, "Unix", "bindings-unix", "linux");
def_platform!(windows, "Windows", "bindings-windows", "windows");
}