diff --git a/Cargo.toml b/Cargo.toml index 719470d383133..f3e57f83ad1c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,6 @@ [package] - name = "libc" -version = "0.2.43" +version = "0.2.44" authors = ["The Rust Project Developers"] license = "MIT OR Apache-2.0" readme = "README.md" @@ -19,10 +18,14 @@ exclude = ["/ci/*", "/.travis.yml", "/appveyor.yml"] travis-ci = { repository = "rust-lang/libc" } appveyor = { repository = "rust-lang/libc", project_name = "rust-lang-libs/libc" } +[dependencies] +rustc-std-workspace-core = { version = "1.0.0", optional = true } + [features] default = ["use_std"] use_std = [] align = [] +rustc-dep-of-std = ['align', 'rustc-std-workspace-core'] [workspace] members = ["libc-test"] diff --git a/libc-test/build.rs b/libc-test/build.rs index 90c5640ba1f1d..a6709371a4292 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -436,7 +436,7 @@ fn main() { // which is absent in glibc, has to be defined. "__timeval" if linux => true, - // Fixed on stdbuild with repr(packed(4)) + // Fixed on feature=align with repr(packed(4)) // Once repr_packed stabilizes we can fix this unconditionally // and remove this check. "kevent" | "shmid_ds" if apple && x86_64 => true, diff --git a/src/lib.rs b/src/lib.rs index bea110240432f..6839ef07591f4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -108,24 +108,35 @@ doc(html_root_url = "https://rust-lang.github.io/libc/sparc64-unknown-linux-gnu") )] // Attributes needed when building as part of the standard library -#![cfg_attr(feature = "stdbuild", feature(staged_api, cfg_target_vendor))] -#![cfg_attr(feature = "stdbuild", feature(link_cfg, repr_packed))] -#![cfg_attr(feature = "stdbuild", allow(warnings))] +#![cfg_attr(feature = "rustc-dep-of-std", feature(staged_api, cfg_target_vendor))] +#![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, repr_packed))] +#![cfg_attr(feature = "rustc-dep-of-std", feature(no_core))] +#![cfg_attr(feature = "rustc-dep-of-std", no_core)] #![cfg_attr( - feature = "stdbuild", + feature = "rustc-dep-of-std", unstable( feature = "libc", reason = "use `libc` from crates.io", issue = "27783" ) )] -#![cfg_attr(not(feature = "use_std"), no_std)] +#![cfg_attr(not(any(feature = "use_std", feature = "rustc-dep-of-std")), no_std)] + // FIXME: this crate is empty for wasm32-unknown-unknown #![cfg(not(all(target_arch = "wasm32", not(target_os = "emscripten"))))] #[cfg(all(not(cross_platform_docs), feature = "use_std"))] extern crate std as core; +#[cfg(feature = "rustc-dep-of-std")] +extern crate rustc_std_workspace_core as core; +#[cfg(feature = "rustc-dep-of-std")] +#[allow(unused_imports)] +use core::iter; +#[cfg(feature = "rustc-dep-of-std")] +#[allow(unused_imports)] +use core::option; + #[macro_use] mod macros; diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index ee8108de92bc0..f889a24b8467f 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -245,7 +245,7 @@ s! { pub f_reserved: [::uint32_t; 8], } - #[cfg_attr(feature = "stdbuild", repr(packed(4)))] + #[cfg_attr(feature = "align", repr(packed(4)))] pub struct kevent { pub ident: ::uintptr_t, pub filter: ::int16_t, @@ -535,7 +535,7 @@ s! { pub _key: ::key_t, } - #[cfg_attr(feature = "stdbuild", repr(packed(4)))] + #[cfg_attr(feature = "align", repr(packed(4)))] pub struct shmid_ds { pub shm_perm: ipc_perm, pub shm_segsz: ::size_t, diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 06275a699450a..bfd8835c12598 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -287,17 +287,18 @@ cfg_if! { // cargo build, don't pull in anything extra as the libstd dep // already pulls in all libs. } else if #[cfg(target_env = "musl")] { - #[cfg_attr(feature = "stdbuild", + #[cfg_attr(feature = "rustc-dep-of-std", link(name = "c", kind = "static", cfg(target_feature = "crt-static")))] - #[cfg_attr(feature = "stdbuild", + #[cfg_attr(feature = "rustc-dep-of-std", link(name = "c", cfg(not(target_feature = "crt-static"))))] extern {} } else if #[cfg(target_os = "emscripten")] { #[link(name = "c")] extern {} } else if #[cfg(all(target_os = "netbsd", - feature = "stdbuild", target_vendor = "rumprun"))] { + feature = "rustc-dep-of-std", + target_vendor = "rumprun"))] { // Since we don't use -nodefaultlibs on Rumprun, libc is always pulled // in automatically by the linker. We avoid passing it explicitly, as it // causes some versions of binutils to crash with an assertion failure. diff --git a/src/windows.rs b/src/windows.rs index bdb0e02f1b5e3..6ef134a21a1c7 100644 --- a/src/windows.rs +++ b/src/windows.rs @@ -159,7 +159,7 @@ pub const EILSEQ: ::c_int = 42; pub const STRUNCATE: ::c_int = 80; // inline comment below appeases style checker -#[cfg(all(target_env = "msvc", feature = "stdbuild"))] // " if " +#[cfg(all(target_env = "msvc", feature = "rustc-dep-of-std"))] // " if " #[link(name = "msvcrt", cfg(not(target_feature = "crt-static")))] #[link(name = "libcmt", cfg(target_feature = "crt-static"))] extern {}