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 5fc9aeb7e2fb4..ca0b7a2e001b4 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -441,7 +441,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 54f67895a6cc9..42471d178e2ad 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -150,22 +150,33 @@ ) )] // 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 = "rustc-dep-of-std", allow(warnings))] #![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)] #[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..38f211eb05c0c 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 = "rustc-dep-of-std", 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 = "rustc-dep-of-std", 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 2d25690b22ab1..b9201897036c8 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -318,17 +318,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 4fc2c16a611ad..9ed89925ceb0f 100644 --- a/src/windows.rs +++ b/src/windows.rs @@ -190,7 +190,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 {}