#
# Copyright (c) 2023 ZettaScale Technology
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
#   ZettaScale Zenoh Team, <zenoh@zettascale.tech>
#
[package]
rust-version = { workspace = true }
name = "zenoh"
version = { workspace = true }
repository = { workspace = true }
homepage = { workspace = true }
authors = { workspace = true }
edition = { workspace = true }
license = { workspace = true }
categories = { workspace = true }
description = { workspace = true }
readme = "../README.md"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[badges]
maintenance = { status = "actively-developed" }

[features]
auth_pubkey = ["zenoh-transport/auth_pubkey"]
auth_usrpwd = ["zenoh-transport/auth_usrpwd"]
default = [
  "auth_pubkey",
  "auth_usrpwd",
  "transport_multilink",
  "transport_compression",
  "transport_quic",
  "transport_tcp",
  "transport_tls",
  "transport_udp",
  "transport_unixsock-stream",
  "transport_ws"
]
internal = ["zenoh-keyexpr/internal", "zenoh-config/internal"]
plugins = []
runtime_plugins = ["plugins"]
shared-memory = [
  "zenoh-shm",
  "zenoh-protocol/shared-memory",
  "zenoh-transport/shared-memory",
  "zenoh-buffers/shared-memory",
]
stats = ["zenoh-transport/stats", "zenoh-protocol/stats"]
transport_multilink = ["zenoh-transport/transport_multilink"]
transport_compression = ["zenoh-transport/transport_compression"]
transport_quic = ["zenoh-transport/transport_quic"]
transport_serial = ["zenoh-transport/transport_serial"]
transport_unixpipe = ["zenoh-transport/transport_unixpipe"]
transport_tcp = ["zenoh-transport/transport_tcp", "zenoh-config/transport_tcp"]
transport_tls = ["zenoh-transport/transport_tls"]
transport_udp = ["zenoh-transport/transport_udp"]
transport_unixsock-stream = ["zenoh-transport/transport_unixsock-stream"]
transport_ws = ["zenoh-transport/transport_ws"]
transport_vsock = ["zenoh-transport/transport_vsock"]
unstable = ["internal_config", "zenoh-keyexpr/unstable", "zenoh-config/unstable"]
internal_config = []
tracing-instrument = ["zenoh-task/tracing-instrument", "zenoh-runtime/tracing-instrument"]

[dependencies]
tokio = { workspace = true, features = ["rt", "macros", "time"] }
tokio-util = { workspace = true }
ahash = { workspace = true }
async-trait = { workspace = true }
bytes = { workspace = true }
flume = { workspace = true }
futures = { workspace = true }
git-version = { workspace = true }
itertools = { workspace = true }
json5 = { workspace = true }
lazy_static = { workspace = true }
tracing = { workspace = true }
paste = { workspace = true }
petgraph = { workspace = true }
phf = { workspace = true }
rand = { workspace = true, features = ["default"] }
ref-cast = { workspace = true }
serde = { workspace = true, features = ["default"] }
serde_json = { workspace = true }
socket2 = { workspace = true }
uhlc = { workspace = true, features = ["default"] }
vec_map = { workspace = true }
zenoh-buffers = { workspace = true, features = ["std"] }
zenoh-codec = { workspace = true }
zenoh-collections = { workspace = true, features = ["std"] }
zenoh-config = { workspace = true }
zenoh-core = { workspace = true }
zenoh-keyexpr = { workspace = true }
zenoh-link = { workspace = true }
zenoh-macros = { workspace = true }
zenoh-plugin-trait = { workspace = true }
zenoh-protocol = { workspace = true, features = ["std"] }
zenoh-result = { workspace = true }
zenoh-shm = { workspace = true, optional = true }
zenoh-sync = { workspace = true }
zenoh-transport = { workspace = true }
zenoh-util = { workspace = true }
zenoh-runtime = { workspace = true }
zenoh-task = { workspace = true }
once_cell = { workspace = true }

[dev-dependencies]
tokio = { workspace = true }

[build-dependencies]
rustc_version = { workspace = true }

[lib]
name = "zenoh"

# For doc generation on docs.rs, activate the "unstable" and "shared-memory" feature to generate their documentation
# NOTE: if you change this, also change it in .github/workflows/release.yml in "doc" job.
[package.metadata.docs.rs]
features = ["unstable", "shared-memory"]
rustdoc-args = ["--cfg", "doc_auto_cfg"]

[package.metadata.deb]
name = "zenoh"
maintainer = "zenoh-dev@eclipse.org"
copyright = "2024 ZettaScale Technology"
section = "net"
license-file = ["../LICENSE", "0"]
depends = "zenohd (=1.2.1), zenoh-plugin-rest (=1.2.1), zenoh-plugin-storage-manager (=1.2.1)"
maintainer-scripts = ".deb"
assets = [["../README.md", "README.md", "644"]]

[lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(doc_auto_cfg)'] }