diff --git a/sdk/clock/Cargo.toml b/sdk/clock/Cargo.toml index 494d3ffeb955bb..726d6781b3a8d8 100644 --- a/sdk/clock/Cargo.toml +++ b/sdk/clock/Cargo.toml @@ -10,12 +10,15 @@ license = { workspace = true } edition = { workspace = true } [dependencies] -serde = { workspace = true } -serde_derive = { workspace = true } +serde = { workspace = true, optional = true } +serde_derive = { workspace = true, optional = true } solana-sdk-macro = { workspace = true } [dev-dependencies] static_assertions = { workspace = true } +[features] +serde = ["dep:serde", "dep:serde_derive"] + [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/sdk/clock/src/lib.rs b/sdk/clock/src/lib.rs index 0653e844e4c0ca..870265f9c18eb9 100644 --- a/sdk/clock/src/lib.rs +++ b/sdk/clock/src/lib.rs @@ -20,10 +20,9 @@ //! //! [oracle]: https://docs.solanalabs.com/implemented-proposals/validator-timestamp-oracle -use { - serde_derive::{Deserialize, Serialize}, - solana_sdk_macro::CloneZeroed, -}; +#[cfg(feature = "serde")] +use serde_derive::{Deserialize, Serialize}; +use solana_sdk_macro::CloneZeroed; /// The default tick rate that the cluster attempts to achieve (160 per second). /// @@ -175,7 +174,8 @@ pub type UnixTimestamp = i64; /// /// All members of `Clock` start from 0 upon network boot. #[repr(C)] -#[derive(Serialize, Deserialize, Debug, CloneZeroed, Default, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[derive(Debug, CloneZeroed, Default, PartialEq, Eq)] pub struct Clock { /// The current `Slot`. pub slot: Slot, diff --git a/sdk/program/Cargo.toml b/sdk/program/Cargo.toml index e950550c93ec93..bc8b95757468ab 100644 --- a/sdk/program/Cargo.toml +++ b/sdk/program/Cargo.toml @@ -32,7 +32,7 @@ serde_derive = { workspace = true } sha2 = { workspace = true } sha3 = { workspace = true } solana-atomic-u64 = { workspace = true } -solana-clock = { workspace = true } +solana-clock = { workspace = true, features = ["serde"] } solana-decode-error = { workspace = true } solana-frozen-abi = { workspace = true, optional = true } solana-frozen-abi-macro = { workspace = true, optional = true }