1 //! libc - Raw FFI bindings to platforms' system libraries 2 //! 3 //! [Documentation for other platforms][pd]. 4 //! 5 //! [pd]: https://rust-lang.github.io/libc/#platform-specific-documentation 6 #![crate_name = "libc"] 7 #![crate_type = "rlib"] 8 #![allow( 9 renamed_and_removed_lints, // Keep this order. 10 unknown_lints, // Keep this order. 11 bad_style, 12 overflowing_literals, 13 improper_ctypes, 14 // This lint is renamed but we run CI for old stable rustc so should be here. 15 redundant_semicolon, 16 redundant_semicolons, 17 unused_macros, 18 unused_macro_rules, 19 )] 20 #![cfg_attr(libc_deny_warnings, deny(warnings))] 21 // Attributes needed when building as part of the standard library 22 #![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))] 23 #![cfg_attr(libc_thread_local, feature(thread_local))] 24 // Enable extra lints: 25 #![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))] 26 #![deny(missing_copy_implementations, safe_packed_borrows)] 27 #![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)] 28 #![cfg_attr(feature = "rustc-dep-of-std", no_core)] 29 #![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))] 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(all(target_env = "sgx", target_vendor = "fortanix"))] { 143 mod fixed_width_ints; 144 pub use fixed_width_ints::*; 145 146 mod sgx; 147 pub use sgx::*; 148 } else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] { 149 mod fixed_width_ints; 150 pub use fixed_width_ints::*; 151 152 mod wasi; 153 pub use wasi::*; 154 } else { 155 // non-supported targets: empty... 156 } 157 } 158