• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     // This lint is renamed but we run CI for old stable rustc so should be here.
11     redundant_semicolon,
12     redundant_semicolons,
13     unused_macros,
14     unused_macro_rules,
15 )]
16 #![cfg_attr(libc_deny_warnings, deny(warnings))]
17 // Attributes needed when building as part of the standard library
18 #![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))]
19 #![cfg_attr(libc_thread_local, feature(thread_local))]
20 // Enable extra lints:
21 #![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))]
22 #![deny(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 #![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
26 
27 // ANDROID: Use std to allow building as a dylib.
28 #[cfg(android_dylib)]
29 extern crate std;
30 
31 #[macro_use]
32 mod macros;
33 
34 cfg_if! {
35     if #[cfg(feature = "rustc-dep-of-std")] {
36         extern crate rustc_std_workspace_core as core;
37         #[allow(unused_imports)]
38         use core::iter;
39         #[allow(unused_imports)]
40         use core::ops;
41         #[allow(unused_imports)]
42         use core::option;
43     }
44 }
45 
46 cfg_if! {
47     if #[cfg(libc_priv_mod_use)] {
48         #[cfg(libc_core_cvoid)]
49         #[allow(unused_imports)]
50         use core::ffi;
51         #[allow(unused_imports)]
52         use core::fmt;
53         #[allow(unused_imports)]
54         use core::hash;
55         #[allow(unused_imports)]
56         use core::num;
57         #[allow(unused_imports)]
58         use core::mem;
59         #[doc(hidden)]
60         #[allow(unused_imports)]
61         use core::clone::Clone;
62         #[doc(hidden)]
63         #[allow(unused_imports)]
64         use core::marker::{Copy, Send, Sync};
65         #[doc(hidden)]
66         #[allow(unused_imports)]
67         use core::option::Option;
68     } else {
69         #[doc(hidden)]
70         #[allow(unused_imports)]
71         pub use core::fmt;
72         #[doc(hidden)]
73         #[allow(unused_imports)]
74         pub use core::hash;
75         #[doc(hidden)]
76         #[allow(unused_imports)]
77         pub use core::num;
78         #[doc(hidden)]
79         #[allow(unused_imports)]
80         pub use core::mem;
81         #[doc(hidden)]
82         #[allow(unused_imports)]
83         pub use core::clone::Clone;
84         #[doc(hidden)]
85         #[allow(unused_imports)]
86         pub use core::marker::{Copy, Send, Sync};
87         #[doc(hidden)]
88         #[allow(unused_imports)]
89         pub use core::option::Option;
90     }
91 }
92 
93 cfg_if! {
94     if #[cfg(windows)] {
95         mod fixed_width_ints;
96         pub use fixed_width_ints::*;
97 
98         mod windows;
99         pub use windows::*;
100     } else if #[cfg(target_os = "fuchsia")] {
101         mod fixed_width_ints;
102         pub use fixed_width_ints::*;
103 
104         mod fuchsia;
105         pub use fuchsia::*;
106     } else if #[cfg(target_os = "switch")] {
107         mod fixed_width_ints;
108         pub use fixed_width_ints::*;
109 
110         mod switch;
111         pub use switch::*;
112     } else if #[cfg(target_os = "psp")] {
113         mod fixed_width_ints;
114         pub use fixed_width_ints::*;
115 
116         mod psp;
117         pub use psp::*;
118     } else if #[cfg(target_os = "vxworks")] {
119         mod fixed_width_ints;
120         pub use fixed_width_ints::*;
121 
122         mod vxworks;
123         pub use vxworks::*;
124     } else if #[cfg(target_os = "solid_asp3")] {
125         mod fixed_width_ints;
126         pub use fixed_width_ints::*;
127 
128         mod solid;
129         pub use solid::*;
130     } else if #[cfg(unix)] {
131         mod fixed_width_ints;
132         pub use fixed_width_ints::*;
133 
134         mod unix;
135         pub use unix::*;
136     } else if #[cfg(target_os = "hermit")] {
137         mod fixed_width_ints;
138         pub use fixed_width_ints::*;
139 
140         mod hermit;
141         pub use hermit::*;
142     } else if #[cfg(target_os = "teeos")] {
143         mod fixed_width_ints;
144         pub use fixed_width_ints::*;
145 
146         mod teeos;
147         pub use teeos::*;
148     } else if #[cfg(target_os = "trusty")] {
149         mod fixed_width_ints;
150         pub use fixed_width_ints::*;
151 
152         mod trusty;
153         pub use trusty::*;
154     } else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] {
155         mod fixed_width_ints;
156         pub use fixed_width_ints::*;
157 
158         mod sgx;
159         pub use sgx::*;
160     } else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] {
161         mod fixed_width_ints;
162         pub use fixed_width_ints::*;
163 
164         mod wasi;
165         pub use wasi::*;
166     } else if #[cfg(target_os = "xous")] {
167         mod fixed_width_ints;
168         pub use fixed_width_ints::*;
169 
170         mod xous;
171         pub use xous::*;
172     } else {
173         // non-supported targets: empty...
174     }
175 }
176