Invert use_target_has_atomic cfg
This way, a build system that does not want to run Cargo build scripts can build serde without any cfgs defined, and get the most modern feature set.
This commit is contained in:
parent
692ac99c69
commit
6159ead404
@ -95,9 +95,8 @@ fn main() {
|
||||
// Whitelist of archs that support std::sync::atomic module. Ideally we
|
||||
// would use #[cfg(target_has_atomic = "...")] but it is not stable yet.
|
||||
// Instead this is based on rustc's compiler/rustc_target/src/spec/*.rs.
|
||||
if minor >= 60 {
|
||||
println!("cargo:rustc-cfg=use_target_has_atomic");
|
||||
} else {
|
||||
if minor < 60 {
|
||||
println!("cargo:rustc-cfg=no_target_has_atomic");
|
||||
let has_atomic64 = target.starts_with("x86_64")
|
||||
|| target.starts_with("i686")
|
||||
|| target.starts_with("aarch64")
|
||||
|
@ -2660,7 +2660,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic)))]
|
||||
macro_rules! atomic_impl {
|
||||
($($ty:ident)*) => {
|
||||
$(
|
||||
@ -2676,7 +2676,7 @@ macro_rules! atomic_impl {
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", use_target_has_atomic))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic)))]
|
||||
macro_rules! atomic_impl {
|
||||
($($ty:ident $size:expr),*) => {
|
||||
$(
|
||||
@ -2693,19 +2693,19 @@ macro_rules! atomic_impl {
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic)))]
|
||||
atomic_impl! {
|
||||
AtomicBool
|
||||
AtomicI8 AtomicI16 AtomicI32 AtomicIsize
|
||||
AtomicU8 AtomicU16 AtomicU32 AtomicUsize
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic64)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic64)))]
|
||||
atomic_impl! {
|
||||
AtomicI64 AtomicU64
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", use_target_has_atomic))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic)))]
|
||||
atomic_impl! {
|
||||
AtomicBool "8",
|
||||
AtomicI8 "8",
|
||||
|
@ -236,25 +236,25 @@ mod lib {
|
||||
#[cfg(not(no_range_inclusive))]
|
||||
pub use self::core::ops::RangeInclusive;
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic)))]
|
||||
pub use std::sync::atomic::{
|
||||
AtomicBool, AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, AtomicU8,
|
||||
AtomicUsize, Ordering,
|
||||
};
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic64)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic64)))]
|
||||
pub use std::sync::atomic::{AtomicI64, AtomicU64};
|
||||
|
||||
#[cfg(all(feature = "std", use_target_has_atomic))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic)))]
|
||||
pub use std::sync::atomic::Ordering;
|
||||
#[cfg(all(feature = "std", use_target_has_atomic, target_has_atomic = "8"))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic), target_has_atomic = "8"))]
|
||||
pub use std::sync::atomic::{AtomicBool, AtomicI8, AtomicU8};
|
||||
#[cfg(all(feature = "std", use_target_has_atomic, target_has_atomic = "16"))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic), target_has_atomic = "16"))]
|
||||
pub use std::sync::atomic::{AtomicI16, AtomicU16};
|
||||
#[cfg(all(feature = "std", use_target_has_atomic, target_has_atomic = "32"))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic), target_has_atomic = "32"))]
|
||||
pub use std::sync::atomic::{AtomicI32, AtomicU32};
|
||||
#[cfg(all(feature = "std", use_target_has_atomic, target_has_atomic = "64"))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic), target_has_atomic = "64"))]
|
||||
pub use std::sync::atomic::{AtomicI64, AtomicU64};
|
||||
#[cfg(all(feature = "std", use_target_has_atomic, target_has_atomic = "ptr"))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic), target_has_atomic = "ptr"))]
|
||||
pub use std::sync::atomic::{AtomicIsize, AtomicUsize};
|
||||
|
||||
#[cfg(any(feature = "std", not(no_core_duration)))]
|
||||
|
@ -945,7 +945,7 @@ where
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic)))]
|
||||
macro_rules! atomic_impl {
|
||||
($($ty:ident)*) => {
|
||||
$(
|
||||
@ -962,7 +962,7 @@ macro_rules! atomic_impl {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", use_target_has_atomic))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic)))]
|
||||
macro_rules! atomic_impl {
|
||||
($($ty:ident $size:expr),*) => {
|
||||
$(
|
||||
@ -980,19 +980,19 @@ macro_rules! atomic_impl {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic)))]
|
||||
atomic_impl! {
|
||||
AtomicBool
|
||||
AtomicI8 AtomicI16 AtomicI32 AtomicIsize
|
||||
AtomicU8 AtomicU16 AtomicU32 AtomicUsize
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", not(use_target_has_atomic), not(no_std_atomic64)))]
|
||||
#[cfg(all(feature = "std", no_target_has_atomic, not(no_std_atomic64)))]
|
||||
atomic_impl! {
|
||||
AtomicI64 AtomicU64
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "std", use_target_has_atomic))]
|
||||
#[cfg(all(feature = "std", not(no_target_has_atomic)))]
|
||||
atomic_impl! {
|
||||
AtomicBool "8",
|
||||
AtomicI8 "8",
|
||||
|
Loading…
x
Reference in New Issue
Block a user