[package]
name = "cloud-hypervisor"
version = "38.0.0"
authors = ["The Cloud Hypervisor Authors"]
edition = "2021"
default-run = "cloud-hypervisor"
build = "build.rs"
license = "LICENSE-APACHE & LICENSE-BSD-3-Clause"
description = "Open source Virtual Machine Monitor (VMM) that runs on top of KVM"
homepage = "https://github.com/cloud-hypervisor/cloud-hypervisor"
# Minimum buildable version:
# Keep in sync with version in .github/workflows/build.yaml
# Policy on MSRV (see #4318):
# Can only be bumped by:
# a.) A dependency requires it,
# b.) If we want to use a new feature and that MSRV is at least 6 months old,
# c.) There is a security issue that is addressed by the toolchain update.
rust-version = "1.70"

[profile.release]
lto = true
codegen-units = 1
opt-level = "s"
strip = true

[profile.profiling]
inherits = "release"
strip = false
debug = true

[dependencies]
anyhow = "1.0.79"
api_client = { path = "api_client" }
clap = { version = "4.4.7", features = ["string"] }
dhat = { version = "0.3.3", optional = true }
epoll = "4.3.3"
event_monitor = { path = "event_monitor" }
hypervisor = { path = "hypervisor" }
libc = "0.2.153"
log = { version = "0.4.20", features = ["std"] }
option_parser = { path = "option_parser" }
seccompiler = "0.4.0"
serde_json = "1.0.109"
signal-hook = "0.3.17"
thiserror = "1.0.52"
tpm = { path = "tpm"}
tracer = { path = "tracer" }
vmm = { path = "vmm" }
vmm-sys-util = "0.12.1"
vm-memory = "0.14.0"
zbus = { version = "3.11.1", optional = true }

# List of patched crates
[patch.crates-io]
kvm-bindings = { git = "https://github.com/cloud-hypervisor/kvm-bindings", branch = "ch-v0.7.0" }
versionize_derive = { git = "https://github.com/cloud-hypervisor/versionize_derive", branch = "ch-0.1.6" }

[dev-dependencies]
dirs = "5.0.0"
net_util = { path = "net_util" }
once_cell = "1.19.0"
serde_json = "1.0.109"
test_infra = { path = "test_infra" }
wait-timeout = "0.2.0"

# Please adjust `vmm::feature_list()` accordingly when changing the
# feature list below
[features]
default = ["kvm", "io_uring"]
dbus_api = ["zbus", "vmm/dbus_api"]
dhat-heap = ["dhat"] # For heap profiling
guest_debug = ["vmm/guest_debug"]
igvm = ["vmm/igvm", "mshv"]
io_uring = ["vmm/io_uring"]
kvm = ["vmm/kvm"]
mshv = ["vmm/mshv"]
sev_snp = ["igvm", "vmm/sev_snp", "mshv"]
tdx = ["vmm/tdx"]
tracing = ["vmm/tracing", "tracer/tracing"]

[workspace]
members = [
    "api_client",
    "arch",
    "block",
    "devices",
    "event_monitor",
    "hypervisor",
    "net_gen",
    "net_util",
    "option_parser",
    "pci",
    "performance-metrics",
    "rate_limiter",
    "serial_buffer",
    "test_infra",
    "tracer",
    "vhost_user_block",
    "vhost_user_net",
    "virtio-devices",
    "vmm",
    "vm-allocator",
    "vm-device",
    "vm-migration",
    "vm-virtio"
]
