[package]
name = "external_storage_export"
version = "0.0.1"
edition = "2018"
publish = false

[[bin]]
name = "tikv-cloud-storage"
path = "src/bin/tikv-cloud-storage.rs"
required-features = ["cloud-storage-grpc"]

[lib]
name = "external_storage_export"
# Experimental feature to load the cloud storage code dynamically
# crate-type = ["lib", "cdylib"]

[features]
default = ["cloud-gcp", "cloud-aws", "cloud-azure"]
cloud-aws = ["aws"]
cloud-gcp = ["gcp"]
cloud-azure = ["azure"]
cloud-storage-dylib = [
  "external_storage/cloud-storage-dylib",
  "ffi-support",
  "file_system",
  "futures",
  "libloading",
  "lazy_static",
  "once_cell",
  "protobuf",
  "slog",
  "slog-global",
  "tokio",
  "tokio-util",
]
cloud-storage-grpc = [
  "external_storage/cloud-storage-grpc",
  "grpcio",
  "file_system",
  "futures",
  "futures-executor",
  "libc",
  "signal-hook",
  "slog",
  "slog-global",
  "slog-term",
  "tokio",
  "tokio-util",
]

[dependencies]
async-compression = { workspace = true }
async-trait = { workspace = true }
aws = { workspace = true, optional = true }
azure = { workspace = true, optional = true }
cloud = { workspace = true }
encryption = { workspace = true }
engine_traits = { workspace = true }
external_storage = { workspace = true }
ffi-support = { workspace = true, optional = true }
file_system = { workspace = true, optional = true }
futures = { workspace = true, optional = true }
futures-executor = { workspace = true, optional = true }
futures-io = { workspace = true }
futures-util = { workspace = true }
gcp = { workspace = true, optional = true }
grpcio = { workspace = true, optional = true }
kvproto = { workspace = true }
lazy_static = { workspace = true, optional = true }
libloading = { workspace = true, optional = true }
once_cell = { workspace = true, optional = true }
protobuf = { workspace = true, optional = true }
slog-global = { workspace = true, optional = true }
tikv_util = { workspace = true }
tokio = { workspace = true, optional = true }
tokio-util = { workspace = true, optional = true }
url = { workspace = true }
workspace-hack = { version = "0.1", path = "../../../workspace-hack" }

[dev-dependencies]
futures-util = { workspace = true }
matches = { workspace = true }
rust-ini = { workspace = true }
structopt = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true }

[[example]]
name = "scli"
path = "examples/scli.rs"

[target.'cfg(unix)'.dependencies]
nix = { workspace = true, optional = true }
signal-hook = { optional = true, version = "0.3" }
libc = { workspace = true, optional = true }
slog = { workspace = true, optional = true }
slog-term = { workspace = true, optional = true }
