libc/
lib.rs

1//! libc - Raw FFI bindings to platforms' system libraries
2#![crate_name = "libc"]
3#![crate_type = "rlib"]
4#![allow(
5    renamed_and_removed_lints, // Keep this order.
6    unknown_lints, // Keep this order.
7    bad_style,
8    overflowing_literals,
9    improper_ctypes,
10    unused_macros,
11    unused_macro_rules,
12)]
13#![cfg_attr(libc_deny_warnings, deny(warnings))]
14// Attributes needed when building as part of the standard library
15#![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))]
16#![cfg_attr(libc_thread_local, feature(thread_local))]
17#![cfg_attr(feature = "rustc-dep-of-std", allow(internal_features))]
18// DIFF(1.0): The thread local references that raise this lint were removed in 1.0
19#![cfg_attr(feature = "rustc-dep-of-std", allow(static_mut_refs))]
20// Enable extra lints:
21#![cfg_attr(feature = "extra_traits", warn(missing_debug_implementations))]
22#![warn(missing_copy_implementations, safe_packed_borrows)]
23#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)]
24#![cfg_attr(feature = "rustc-dep-of-std", no_core)]
25
26#[macro_use]
27mod macros;
28
29cfg_if! {
30    if #[cfg(feature = "rustc-dep-of-std")] {
31        extern crate rustc_std_workspace_core as core;
32    }
33}
34
35pub use core::ffi::c_void;
36
37cfg_if! {
38    if #[cfg(windows)] {
39        mod primitives;
40        pub use crate::primitives::*;
41
42        mod windows;
43        pub use crate::windows::*;
44
45        prelude!();
46    } else if #[cfg(target_os = "fuchsia")] {
47        mod primitives;
48        pub use crate::primitives::*;
49
50        mod fuchsia;
51        pub use crate::fuchsia::*;
52
53        prelude!();
54    } else if #[cfg(target_os = "switch")] {
55        mod primitives;
56        pub use primitives::*;
57
58        mod switch;
59        pub use switch::*;
60
61        prelude!();
62    } else if #[cfg(target_os = "psp")] {
63        mod primitives;
64        pub use primitives::*;
65
66        mod psp;
67        pub use crate::psp::*;
68
69        prelude!();
70    } else if #[cfg(target_os = "vxworks")] {
71        mod primitives;
72        pub use crate::primitives::*;
73
74        mod vxworks;
75        pub use crate::vxworks::*;
76
77        prelude!();
78    } else if #[cfg(target_os = "solid_asp3")] {
79        mod primitives;
80        pub use crate::primitives::*;
81
82        mod solid;
83        pub use crate::solid::*;
84
85        prelude!();
86    } else if #[cfg(unix)] {
87        mod primitives;
88        pub use crate::primitives::*;
89
90        mod unix;
91        pub use crate::unix::*;
92
93        prelude!();
94    } else if #[cfg(target_os = "hermit")] {
95        mod primitives;
96        pub use crate::primitives::*;
97
98        mod hermit;
99        pub use crate::hermit::*;
100
101        prelude!();
102    } else if #[cfg(target_os = "teeos")] {
103        mod primitives;
104        pub use primitives::*;
105
106        mod teeos;
107        pub use teeos::*;
108
109        prelude!();
110    } else if #[cfg(target_os = "trusty")] {
111        mod primitives;
112        pub use crate::primitives::*;
113
114        mod trusty;
115        pub use crate::trusty::*;
116
117        prelude!();
118    } else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] {
119        mod primitives;
120        pub use crate::primitives::*;
121
122        mod sgx;
123        pub use crate::sgx::*;
124
125        prelude!();
126    } else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] {
127        mod primitives;
128        pub use crate::primitives::*;
129
130        mod wasi;
131        pub use crate::wasi::*;
132
133        prelude!();
134    } else if #[cfg(target_os = "xous")] {
135        mod primitives;
136        pub use crate::primitives::*;
137
138        mod xous;
139        pub use crate::xous::*;
140
141        prelude!();
142    } else {
143        // non-supported targets: empty...
144    }
145}