# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.

[package]
name = "openvmm_resources"
edition.workspace = true
rust-version.workspace = true

[features]
# Enable gdbstub support.
gdb = ["openvmm_core/gdb", "dep:debug_worker"]

# Enable building with TPM device support.
tpm = ["dep:tpm_device"]

# Enable building with /dev/mshv support.
virt_mshv = ["openvmm_core/virt_mshv"]

# Enable building with KVM support.
virt_kvm = ["openvmm_core/virt_kvm"]

# Enable building with WHP support.
virt_whp = ["openvmm_core/virt_whp"]

# Enable building with macOS hypervisor framework support.
virt_hvf = ["openvmm_core/virt_hvf"]

unstable_whp = ["openvmm_core/unstable_whp"]

[dependencies]
mesh_worker.workspace = true
vm_resource.workspace = true

# Serial
serial_core.workspace = true
serial_socket.workspace = true

# Disks
disk_blob = { workspace = true, optional = true }
disk_crypt = { workspace = true, optional = true }
disk_delay.workspace = true
disk_file.workspace = true
disk_layered.workspace = true
disk_prwrap.workspace = true
disk_vhd1.workspace = true
disklayer_ram.workspace = true
disklayer_sqlite = { workspace = true, optional = true }

# Chipset devices
chipset.workspace = true
missing_dev.workspace = true
serial_16550.workspace = true
serial_debugcon.workspace = true
serial_pl011.workspace = true
tpm_device = { workspace = true, optional = true, features = ["tpm"] }

# Non-volatile stores
vmcore.workspace = true
vmgs_broker.workspace = true

# PCI devices
gdma.workspace = true
nvme.workspace = true
nvme_test.workspace = true

# SCSI
scsidisk.workspace = true

# Network backends
net_backend.workspace = true
net_consomme = { workspace = true, optional = true }

# Virtio devices
virtio.workspace = true
virtio_blk.workspace = true
virtio_console.workspace = true
virtiofs.workspace = true
virtio_net.workspace = true
virtio_p9.workspace = true
virtio_pmem.workspace = true
virtio_rng.workspace = true

# Vmbus devices
guest_crash_device.workspace = true
guest_emulation_device.workspace = true
guest_emulation_log.workspace = true
hyperv_ic.workspace = true
netvsp.workspace = true
storvsp.workspace = true
uidevices.workspace = true
vmbfs.workspace = true
vmbus_serial_host.workspace = true

# Workers
debug_worker = { workspace = true, optional = true }
openvmm_core.workspace = true
vnc_worker.workspace = true

[target.'cfg(not(target_os = "macos"))'.dependencies]
# DEVNOTE: don't enable bundled sqlite on macos, to work around missing macos
# runners in CI (and therefore, the need to cross-compile sqlite to macos from
# linux runners). Once this gap is resolved, switch over to use bundled sqlite
# on all platforms, to ensure consist sqlite behavior.
rusqlite = { workspace = true, features = ["bundled"] }

[target.'cfg(target_os = "linux")'.dependencies]
net_tap = { workspace = true, optional = true }

[target.'cfg(windows)'.dependencies]
net_dio.workspace = true

disk_vhdmp.workspace = true

[build-dependencies]
build_rs_guest_arch.workspace = true

[lints]
workspace = true

[package.metadata.xtask.unused-deps]
# see corresponding comment on the dep itself
ignored = ["rusqlite"]
