[package]
name = "machine"
version = "2.5.0"
authors = ["Huawei StratoVirt Team"]
edition = "2021"
license = "Mulan PSL v2"
description = "Emulation machines"

[dependencies]
log = "0.4"
libc = "0.2"
serde_json = "1.0"
vmm-sys-util = "0.12.1"
thiserror = "1.0"
anyhow = "1.0"
acpi = { path = "../acpi" }
address_space = { path = "../address_space" }
audio = { path = "../audio", optional = true }
boot_loader = { path = "../boot_loader" }
cpu = { path = "../cpu" }
devices = { path = "../devices" }
hypervisor = { path = "../hypervisor"}
machine_manager = { path = "../machine_manager" }
migration = { path = "../migration" }
migration_derive = { path = "../migration/migration_derive" }
util = { path = "../util" }
virtio = { path = "../virtio" }
vfio = { path = "../vfio" , optional = true }
block_backend = { path = "../block_backend" }
ui = { path = "../ui" }
trace = { path = "../trace" }
clap = { version = "=4.1.4", default-features = false, features = ["std", "derive"] }
serde = { version = "1.0", features = ["derive"] }
hisysevent = { path = "../hisysevent" }

[features]
default = []
boot_time = ["cpu/boot_time", "hypervisor/boot_time"]
scream = ["devices/scream", "machine_manager/scream", "dep:audio"]
scream_alsa = ["scream", "devices/scream_alsa", "machine_manager/scream_alsa"]
scream_pulseaudio = ["scream", "devices/scream_pulseaudio","machine_manager/scream_pulseaudio"]
scream_ohaudio = ["scream", "devices/scream_ohaudio", "machine_manager/scream_ohaudio"]
pvpanic = ["devices/pvpanic"]
demo_device = ["devices/demo_device", "machine_manager/demo_device"]
usb_base = ["devices/usb_base", "machine_manager/usb_base"]
usb_storage = ["usb_base", "devices/usb_storage", "machine_manager/usb_storage"]
usb_host = ["usb_base", "devices/usb_host", "machine_manager/usb_host"]
usb_camera = ["usb_base", "devices/usb_camera", "machine_manager/usb_camera"]
usb_camera_v4l2 = ["usb_camera", "devices/usb_camera_v4l2", "machine_manager/usb_camera_v4l2", "util/usb_camera_v4l2"]
usb_camera_oh = ["usb_camera", "devices/usb_camera_oh", "machine_manager/usb_camera_oh"]
windows_emu_pid = ["ui/console", "machine_manager/windows_emu_pid"]
gtk = ["windows_emu_pid", "ui/gtk", "machine_manager/gtk"]
vnc = ["ui/vnc", "machine_manager/vnc"]
vnc_auth = ["vnc"]
ohui_srv = ["windows_emu_pid", "ui/ohui_srv", "machine_manager/ohui_srv", "virtio/ohui_srv"]
ramfb = ["devices/ramfb", "machine_manager/ramfb"]
virtio_balloon = ["virtio/virtio_balloon"]
virtio_mem = ["virtio/virtio_mem"]
virtio_serial = ["virtio/virtio_serial"]
virtio_input = ["virtio/virtio_input"]
virtio_multitouch = ["virtio/virtio_multitouch"]
virtio_gpu = ["virtio/virtio_gpu", "machine_manager/virtio_gpu"]
vfio_device = ["vfio", "hypervisor/vfio_device"]
usb_uas = ["usb_storage", "devices/usb_uas"]
usb_consumer = ["usb_base", "devices/usb_consumer", "machine_manager/usb_consumer"]
virtio_rng = ["virtio/virtio_rng"]
virtio_scsi = ["virtio/virtio_scsi"]
virtio_pmem = ["virtio/virtio_pmem"]
virtio_snd = ["virtio/virtio_snd"]
vhost_vsock = ["virtio/vhost_vsock"]
vhostuser_fs = ["virtio/vhostuser_fs"]
vhostuser_block = ["virtio/vhostuser_block"]
vhostuser_gpu = ["virtio/vhostuser_gpu"]
vhostuser_net = ["virtio/vhostuser_net"]
vhost_net = ["virtio/vhost_net"]
trace_to_logger = ["trace/trace_to_logger", "devices/trace_to_logger", "machine_manager/trace"]
trace_to_ftrace = ["trace/trace_to_ftrace", "devices/trace_to_ftrace", "machine_manager/trace"]
trace_to_hitrace = ["trace/trace_to_hitrace", "devices/trace_to_hitrace", "machine_manager/trace"]