From 6159ead404e5ae5ea58120f3e6692d4c6f7f973b Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 11 Dec 2022 15:51:17 -0800 Subject: [PATCH] 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. --- serde/build.rs | 5 ++--- serde/src/de/impls.rs | 10 +++++----- serde/src/lib.rs | 16 ++++++++-------- serde/src/ser/impls.rs | 10 +++++----- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/serde/build.rs b/serde/build.rs index 4d4c7f6c5..1559dfdb1 100644 --- a/serde/build.rs +++ b/serde/build.rs @@ -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") diff --git a/serde/src/de/impls.rs b/serde/src/de/impls.rs index 2503243fe..1b93f6381 100644 --- a/serde/src/de/impls.rs +++ b/serde/src/de/impls.rs @@ -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", diff --git a/serde/src/lib.rs b/serde/src/lib.rs index 25fb213d0..938f21651 100644 --- a/serde/src/lib.rs +++ b/serde/src/lib.rs @@ -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)))] diff --git a/serde/src/ser/impls.rs b/serde/src/ser/impls.rs index f703a425b..e3434460f 100644 --- a/serde/src/ser/impls.rs +++ b/serde/src/ser/impls.rs @@ -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",