diff options
author | bors <bors@rust-lang.org> | 2018-11-21 23:28:21 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2018-11-21 23:28:21 +0000 |
commit | 03310f8ad668eb66b21db91ccb0b93e3ac4c5207 (patch) | |
tree | c1611c5eae5b1756b46f7306d0259a6db45fed0d | |
parent | 5b403753da9ec8ff501adf34cb6d63b319b4a3ae (diff) | |
parent | 91bd079e23b6a2128ef605de316465068ba355d8 (diff) | |
download | rust-libc-03310f8ad668eb66b21db91ccb0b93e3ac4c5207.tar.gz |
Auto merge of #1134 - alexcrichton:rustc-test, r=gnzlbg
Prepare for being included via crates.io into std
This commit prepares the `libc` crate to be included directly into the
standard library via crates.io. More details about this can be found on
rust-lang/rust#56092, but the main idea is that this crate now depends
on core/compiler-builtins explicitly (but off-by-default).
The main caveat here is that this activates `no_core` when building as
part of libstd, which means that it needs to explicitly have an `iter`
and `option` module for the expansion of `for` loops to work.
-rw-r--r-- | Cargo.toml | 7 | ||||
-rw-r--r-- | libc-test/build.rs | 2 | ||||
-rw-r--r-- | src/lib.rs | 21 | ||||
-rw-r--r-- | src/unix/bsd/apple/mod.rs | 4 | ||||
-rw-r--r-- | src/unix/mod.rs | 7 | ||||
-rw-r--r-- | src/windows.rs | 2 |
6 files changed, 29 insertions, 14 deletions
diff --git a/Cargo.toml b/Cargo.toml index 719470d383..f3e57f83ad 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 5fc9aeb7e2..ca0b7a2e00 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 54f67895a6..42471d178e 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 ee8108de92..38f211eb05 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 2d25690b22..b920189703 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 4fc2c16a61..9ed89925ce 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 {} |