[package] name = "crosvm" version = "0.1.0" authors = ["The Chromium OS Authors"] edition = "2021" default-run = "crosvm" # b:223855233 resolver = "1" [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 # Reproduces the options used when building crosvm for Chrome OS. [profile.chromeos] inherits = "release" opt-level = "s" # Enables LTO to further reduce the size of the binary. [profile.lto] inherits = "chromeos" lto = 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 = [ "aarch64", "acpi_tables", "arch", "base", "bit_field", "cros_async", "crosvm-fuzz", "crosvm_control", "crosvm_plugin", "devices", "disk", "fuse", "gpu_display", "hypervisor", "integration_tests", "io_uring", "kernel_cmdline", "kernel_loader", "kvm", "kvm_sys", "libcras_stub", "libvda", "linux_input_sys", "net_sys", "net_util", "power_monitor", "protos", "qcow_utils", "resources", "rutabaga_gfx", "system_api_stub", "tpm2", "tpm2-sys", "usb_sys", "usb_util", "vfio_sys", "vhost", "virtio_sys", "vm_control", "vm_memory", "x86_64", "third_party/vmm_vhost", ] exclude = [ "common/assertions", "common/audio_streams", "common/balloon_control", "common/cros-fuzz", "common/cros_async", "common/cros_asyncv2", "common/data_model", "common/io_uring", "common/p9", "common/sync", "common/sys_util", "common/sys_util_core", "common/win_sys_util", "common/win_util", ] [features] all-linux = [ # TODO(b/203105868): Enable remaining features on linux builds. "composite-disk", "default", "gdb", "tpm", "virgl_renderer_next", "virgl_renderer", "x", ] audio = ["devices/audio"] audio_cras = ["devices/audio_cras"] chromeos = ["base/chromeos", "audio_cras", "devices/chromeos"] composite-disk = ["protos/composite-disk", "protobuf", "disk/composite-disk"] default = ["audio", "gpu", "usb"] default-no-sandbox = [] direct = ["devices/direct", "arch/direct", "x86_64/direct"] gdb = ["gdbstub", "gdbstub_arch", "arch/gdb", "vm_control/gdb", "x86_64/gdb"] gfxstream = ["devices/gfxstream"] gpu = ["devices/gpu"] libvda = ["devices/libvda"] linux-armhf = [ "composite-disk", "default", "gdb", "tpm", ] linux-x86_64 = ["all-linux", "plugin"] linux-aarch64 = ["all-linux"] 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] anyhow = "1.0.32" arch = { path = "arch" } assertions = { path = "common/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 = "0.1.0" 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" } scudo = { version = "0.1", optional = true } serde_json = "*" sync = { path = "common/sync" } tempfile = "3" thiserror = { version = "1.0.20" } 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 = "common/assertions" } audio_streams = { path = "common/audio_streams" } base = { path = "base" } sys_util_core = { path = "common/sys_util_core" } cros_async = { path = "cros_async" } cros_fuzz = { path = "common/cros-fuzz" } # ignored by ebuild data_model = { path = "common/data_model" } libcras = { path = "libcras_stub" } # ignored by ebuild p9 = { path = "common/p9" } # ignored by ebuild sync = { path = "common/sync" } sys_util = { path = "common/sys_util" } system_api = { path = "system_api_stub" } # ignored by ebuild wire_format_derive = { path = "common/p9/wire_format_derive" } # ignored by ebuild minijail = { path = "third_party/minijail/rust/minijail" } # ignored by ebuild