From 1c3442839423ca21846f1900e0d7962a2e8217bc Mon Sep 17 00:00:00 2001 From: Graham Esau Date: Wed, 14 Aug 2024 11:57:28 +0100 Subject: [PATCH] Remove build.rs, use `target_has_atomic` instead `target_has_atomic` has been stable since rust 1.60 --- schemars/Cargo.toml | 1 - schemars/build.rs | 25 ------------------------ schemars/src/json_schema_impls/atomic.rs | 21 ++++++++++++++++++-- 3 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 schemars/build.rs diff --git a/schemars/Cargo.toml b/schemars/Cargo.toml index e8ead19..56982b8 100644 --- a/schemars/Cargo.toml +++ b/schemars/Cargo.toml @@ -10,7 +10,6 @@ license = "MIT" readme = "README.md" keywords = ["rust", "json-schema", "serde"] categories = ["encoding"] -build = "build.rs" rust-version = "1.60" [dependencies] diff --git a/schemars/build.rs b/schemars/build.rs deleted file mode 100644 index 6f704fe..0000000 --- a/schemars/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -use std::env; - -// Based on https://github.com/serde-rs/serde/blob/master/serde/build.rs - -fn main() { - let target = env::var("TARGET").unwrap(); - let emscripten = target == "asmjs-unknown-emscripten" || target == "wasm32-unknown-emscripten"; - - // 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 src/librustc_target/spec/*.rs. - let has_atomic64 = target.starts_with("x86_64") - || target.starts_with("i686") - || target.starts_with("aarch64") - || target.starts_with("powerpc64") - || target.starts_with("sparc64") - || target.starts_with("mips64el"); - let has_atomic32 = has_atomic64 || emscripten; - if has_atomic64 { - println!("cargo:rustc-cfg=std_atomic64"); - } - if has_atomic32 { - println!("cargo:rustc-cfg=std_atomic"); - } -} diff --git a/schemars/src/json_schema_impls/atomic.rs b/schemars/src/json_schema_impls/atomic.rs index 53d55c6..19d681c 100644 --- a/schemars/src/json_schema_impls/atomic.rs +++ b/schemars/src/json_schema_impls/atomic.rs @@ -1,19 +1,36 @@ use std::sync::atomic::*; +#[cfg(target_has_atomic = "8")] forward_impl!(AtomicBool => bool); +#[cfg(target_has_atomic = "8")] forward_impl!(AtomicI8 => i8); + +#[cfg(target_has_atomic = "16")] forward_impl!(AtomicI16 => i16); + +#[cfg(target_has_atomic = "32")] forward_impl!(AtomicI32 => i32); -#[cfg(std_atomic64)] + +#[cfg(target_has_atomic = "64")] forward_impl!(AtomicI64 => i64); + +#[cfg(target_has_atomic = "ptr")] forward_impl!(AtomicIsize => isize); +#[cfg(target_has_atomic = "8")] forward_impl!(AtomicU8 => u8); + +#[cfg(target_has_atomic = "16")] forward_impl!(AtomicU16 => u16); + +#[cfg(target_has_atomic = "32")] forward_impl!(AtomicU32 => u32); -#[cfg(std_atomic64)] + +#[cfg(target_has_atomic = "64")] forward_impl!(AtomicU64 => u64); + +#[cfg(target_has_atomic = "ptr")] forward_impl!(AtomicUsize => usize); #[cfg(test)]