# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "demikernel"
version = "1.5.13"
authors = ["Microsoft Corporation"]
build = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Kernel-Bypass LibOS Architecture"
homepage = "https://aka.ms/demikernel"
readme = "README.md"
license-file = "LICENSE.txt"
repository = "https://github.com/demikernel/demikernel"

[profile.dev]
opt-level = 0
lto = "off"
codegen-units = 256
debug = 2
debug-assertions = true
rpath = false
panic = "unwind"
overflow-checks = true
incremental = true

[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
debug = 0
debug-assertions = false
rpath = false
panic = "abort"
overflow-checks = false
incremental = false

[lib]
name = "demikernel"
crate-type = [
    "cdylib",
    "rlib",
]
path = "src/rust/lib.rs"

[[example]]
name = "pipe-open"
path = "examples/pipe-open/main.rs"

[[example]]
name = "pipe-ping-pong"
path = "examples/rust/pipe-ping-pong.rs"

[[example]]
name = "pipe-push-pop"
path = "examples/rust/pipe-push-pop.rs"

[[example]]
name = "tcp-close"
path = "examples/tcp-close/main.rs"

[[example]]
name = "tcp-dump"
path = "examples/rust/tcp-dump.rs"

[[example]]
name = "tcp-echo"
path = "examples/tcp-echo/main.rs"

[[example]]
name = "tcp-ping-pong"
path = "examples/rust/tcp-ping-pong.rs"

[[example]]
name = "tcp-pktgen"
path = "examples/rust/tcp-pktgen.rs"

[[example]]
name = "tcp-push-pop"
path = "examples/rust/tcp-push-pop.rs"

[[example]]
name = "tcp-wait"
path = "examples/tcp-wait/main.rs"

[[example]]
name = "udp-dump"
path = "examples/rust/udp-dump.rs"

[[example]]
name = "udp-echo"
path = "examples/rust/udp-echo.rs"

[[example]]
name = "udp-ping-pong"
path = "examples/rust/udp-ping-pong.rs"

[[example]]
name = "udp-pktgen"
path = "examples/rust/udp-pktgen.rs"

[[example]]
name = "udp-push-pop"
path = "examples/rust/udp-push-pop.rs"

[[example]]
name = "udp-relay"
path = "examples/rust/udp-relay.rs"

[[test]]
name = "pipe-test"
path = "tests/rust/pipe-test/main.rs"
harness = false

[[test]]
name = "sga"
path = "tests/rust/sga.rs"

[[test]]
name = "tcp"
path = "tests/rust/tcp.rs"

[[test]]
name = "tcp-test"
path = "tests/rust/tcp-test/main.rs"
harness = false

[[test]]
name = "udp"
path = "tests/rust/udp.rs"

[dependencies.anyhow]
version = "1.0.86"

[dependencies.arrayvec]
version = "0.7.4"

[dependencies.async-trait]
version = "0.1.81"

[dependencies.bit-iter]
version = "1.2.0"

[dependencies.cfg-if]
version = "1.0.0"

[dependencies.clap]
version = "4.5.15"

[dependencies.crc]
version = "3.2.1"

[dependencies.crossbeam-channel]
version = "0.5.13"

[dependencies.demikernel-dpdk-bindings]
version = "1.1.6"
optional = true

[dependencies.demikernel-network-simulator]
version = "0.1.0"

[dependencies.eui48]
version = "1.1.0"

[dependencies.flexi_logger]
version = "0.28.5"

[dependencies.futures]
version = "0.3.30"

[dependencies.histogram]
version = "0.11.0"

[dependencies.libc]
version = "0.2.155"

[dependencies.log]
version = "0.4.22"

[dependencies.mimalloc]
version = "0.1.43"
default-features = false

[dependencies.rand]
version = "0.8.5"
features = ["small_rng"]

[dependencies.slab]
version = "0.4.9"

[dependencies.socket2]
version = "0.5.7"

[dependencies.x86]
version = "0.52.0"

[dependencies.yaml-rust]
version = "0.4.5"

[features]
auto-calibrate = []
catloop-libos = ["catmem-libos"]
catmem-libos = []
catnap-libos = []
catnip-libos = ["libdpdk"]
catpowder-libos = []
default = ["catnap-libos"]
libdpdk = ["demikernel-dpdk-bindings"]
libxdp = ["demikernel-xdp-bindings"]
mlx4 = ["demikernel-dpdk-bindings/mlx4"]
mlx5 = ["demikernel-dpdk-bindings/mlx5"]
profiler = []

[target."cfg(windows)".dependencies.demikernel-xdp-bindings]
version = "1.0.0"
optional = true

[target."cfg(windows)".dependencies.windows]
version = "0.57.0"
features = [
    "Win32_Foundation",
    "Win32_Networking_WinSock",
    "Win32_Security",
    "Win32_Storage_FileSystem",
    "Win32_System_IO",
    "Win32_System_Pipes",
    "Win32_System_Threading",
]

[target."cfg(windows)".dependencies.windows-sys]
version = "0.52.0"
features = ["Win32_Networking_WinSock"]