[package] name = "crosvm" version = "0.1.0" authors = ["The Chromium OS Authors"] edition = "2018" default-run = "crosvm" [lib] path = "src/crosvm.rs" [[bin]] name = "crosvm" path = "src/main.rs" [[bin]] name = "crosvm-direct" path = "src/main.rs" required-features = [ "direct" ] [profile.release] panic = 'abort' overflow-checks = true # We currently need to exclude some crates from the workspace to allow # these crates to be independently built by portage. These crates will # eventually be moved into separate repositories. # The only workspace members that need to be explicitly specified here are those # that are not dependencies of the crosvm root crate. [workspace] members = [ "fuzz", "qcow_utils", "integration_tests", "libcrosvm_control", "vhost_user_devices", ] exclude = [ "assertions", "base", "common", "cros_async", "data_model", "sync", "sys_util", "tempfile", "vm_memory", "audio_streams", ] [features] audio = ["devices/audio"] audio_cras = ["devices/audio_cras"] chromeos = ["base/chromeos", "audio_cras"] composite-disk = ["protos/composite-disk", "protobuf", "disk/composite-disk"] default = ["audio", "gpu", "usb"] default-no-sandbox = [] direct = ["devices/direct"] gdb = ["gdbstub", "gdbstub_arch", "thiserror", "arch/gdb", "vm_control/gdb", "x86_64/gdb"] gfxstream = ["devices/gfxstream"] gpu = ["devices/gpu"] plugin = ["protos/plugin", "crosvm_plugin", "kvm", "kvm_sys", "protobuf"] power-monitor-powerd = ["arch/power-monitor-powerd"] tpm = ["devices/tpm"] usb = ["devices/usb"] video-decoder = ["devices/video-decoder"] video-encoder = ["devices/video-encoder"] virgl_renderer = ["devices/virgl_renderer"] virgl_renderer_next = ["rutabaga_gfx/virgl_renderer_next"] wl-dmabuf = ["devices/minigbm"] x = ["devices/x"] [dependencies] arch = { path = "arch" } assertions = { path = "assertions" } audio_streams = "*" base = "*" bit_field = { path = "bit_field" } crosvm_plugin = { path = "crosvm_plugin", optional = true } data_model = "*" devices = { path = "devices" } disk = { path = "disk" } enumn = { path = "enumn" } gdbstub = { version = "0.5.0", optional = true } gdbstub_arch = { version = "0.1.0", optional = true } rutabaga_gfx = { path = "rutabaga_gfx"} hypervisor = { path = "hypervisor" } kernel_cmdline = { path = "kernel_cmdline" } kernel_loader = { path = "kernel_loader" } kvm = { path = "kvm", optional = true } kvm_sys = { path = "kvm_sys", optional = true } libc = "0.2.93" libcras = "*" minijail = "*" # provided by ebuild net_util = { path = "net_util" } p9 = "*" protobuf = { version = "2.3", optional = true } protos = { path = "protos", optional = true } remain = "*" resources = { path = "resources" } serde_json = "*" sync = { path = "sync" } tempfile = "*" thiserror = { version = "1.0.20", optional = true } vhost = { path = "vhost" } vm_control = { path = "vm_control" } acpi_tables = { path = "acpi_tables" } vm_memory = { path = "vm_memory" } [target.'cfg(target_arch = "x86_64")'.dependencies] x86_64 = { path = "x86_64" } [target.'cfg(any(target_arch = "aarch64", target_arch = "arm"))'.dependencies] aarch64 = { path = "aarch64" } [dev-dependencies] base = "*" [patch.crates-io] assertions = { path = "assertions" } audio_streams = { path = "audio_streams" } base = { path = "base" } cros_fuzz = { path = "common/cros-fuzz" } # ignored by ebuild data_model = { path = "data_model" } libcras = { path = "libcras_stub" } # ignored by ebuild p9 = { path = "common/p9" } # ignored by ebuild sync = { path = "sync" } sys_util = { path = "sys_util" } tempfile = { path = "tempfile" } wire_format_derive = { path = "common/p9/wire_format_derive" } # ignored by ebuild minijail = { path = "../minijail/rust/minijail" } # ignored by ebuild vmm_vhost = { path = "../rust/vmm_vhost", features = ["vhost-user-master", "vhost-user-slave"] } # ignored by ebuild