crosvm/Cargo.toml
Dennis Kempin 4c211a4d41 Extract vtpm out of the chromeos feature
And enable it in upstream all-linux builds.
The feature is enabled for chromeos by default, so should
be a no-op for chromeos builds.

We can probably simplify the cfg() attributes further by
only enabling the feature for x86, so we do not need the
extra check each time. But that'll require ebuild changes.

BUG=b:244618505
TEST=presubmit
TEST=cargo build --no-default-features --features=vtpm

Change-Id: Ibb33c04ab5e6486969fefc6f3e57503be4eccdf3
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3924741
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-10-04 21:11:30 +00:00

272 lines
7 KiB
TOML

[package]
name = "crosvm"
version = "0.1.0"
authors = ["The Chromium OS Authors"]
edition = "2021"
default-run = "crosvm"
# b:223855233
resolver = "1"
[[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
[profile.release-test]
inherits = 'release'
panic = 'unwind'
# 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",
"anti_tamper",
"arch",
"argh_helpers",
"base",
"bit_field",
"broker_ipc",
"crash_report",
"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",
"linux_input_sys",
"media/ffmpeg",
"media/libva",
"media/libvda",
"media/vp8",
"net_sys",
"net_util",
"power_monitor",
"prebuilts",
"protos",
"qcow_utils",
"resources",
"rutabaga_gfx",
"serde_keyvalue",
"system_api",
"tpm2",
"tpm2-sys",
"tracing",
"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",
"tube_transporter",
"win_util",
"tools/examples/baremetal",
"tools/audio_streams_conformance_test",
]
[features]
all-linux = [
# TODO(b/203105868): Enable remaining features on linux builds.
"arc_quota",
"audio_cras",
"composite-disk",
"crash-report",
"default",
"gdb",
"power-monitor-powerd",
"slirp",
"tpm",
"vtpm",
"virgl_renderer_next",
"virgl_renderer",
"wl-dmabuf",
"x",
]
win64 = [ "balloon", "crash_report", "haxm", "stats" ]
arc_quota = ["devices/arc_quota"]
audio = ["devices/audio"]
audio_cras = ["devices/audio_cras"]
balloon = ["devices/balloon", "vm_control/balloon"]
chromeos = ["base/chromeos", "audio_cras", "devices/chromeos", "panic-memfd", "arc_quota", "vtpm"]
composite-disk = ["protos/composite-disk", "protobuf", "disk/composite-disk"]
crash-report = ["broker_ipc/crash-report", "crash_report"]
default = ["audio", "balloon", "gpu", "qcow", "usb"]
default-no-sandbox = []
direct = ["balloon", "devices/direct", "arch/direct", "x86_64/direct"]
ffmpeg = ["devices/ffmpeg"]
gdb = [
"aarch64/gdb",
"arch/gdb",
"gdbstub",
"gdbstub_arch",
"vm_control/gdb",
"x86_64/gdb",
]
gfxstream = ["devices/gfxstream"]
gpu = ["devices/gpu", "gpu_display"]
haxm = ["hypervisor/haxm"]
whpx = ["devices/whpx", "hypervisor/whpx"]
vaapi = ["devices/vaapi"]
libvda = ["devices/libvda"]
linux-armhf = [
"composite-disk",
"default",
"gdb",
"tpm",
]
linux-x86_64 = ["all-linux", "plugin"]
linux-aarch64 = ["all-linux"]
panic-memfd = []
plugin = ["protos/plugin", "crosvm_plugin", "kvm", "kvm_sys", "protobuf"]
plugin-render-server = []
power-monitor-powerd = ["arch/power-monitor-powerd"]
qcow = ["disk/qcow"]
slirp = ["devices/slirp"]
stats = ["devices/stats"]
tpm = ["devices/tpm"]
usb = ["devices/usb"]
video-decoder = ["devices/video-decoder"]
video-encoder = ["devices/video-encoder"]
virgl_renderer = ["devices/virgl_renderer"]
virgl_renderer_next = ["devices/virgl_renderer_next", "rutabaga_gfx/virgl_renderer_next"]
vtpm = ["devices/vtpm"]
wl-dmabuf = ["devices/minigbm"]
x = ["devices/x"]
[dependencies]
anyhow = "1.0.32"
arch = { path = "arch" }
argh = "0.1"
argh_helpers = { path = "argh_helpers" }
assertions = { path = "common/assertions" }
audio_streams = "*"
base = "*"
bit_field = { path = "bit_field" }
broker_ipc = { path = "broker_ipc" }
cfg-if = "1.0.0"
crash_report = { path = "crash_report", optional = true }
cros_async = { path = "cros_async" }
crosvm_plugin = { path = "crosvm_plugin", optional = true }
data_model = "*"
devices = { path = "devices" }
disk = { path = "disk" }
enumn = "0.1.0"
gdbstub = { version = "0.6.3", optional = true }
gdbstub_arch = { version = "0.2.4", 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 = "*"
# Compile out trace statements in release builds
log = { version = "0", features = ["release_max_level_debug"]}
metrics = { path = "metrics" }
net_util = { path = "net_util" }
once_cell = "1.7"
protobuf = { version = "2.3", optional = true }
protos = { path = "protos", optional = true }
remain = "*"
resources = { path = "resources" }
scudo = { version = "0.1", optional = true }
serde = "*"
serde_json = "*"
serde_keyvalue = { path = "serde_keyvalue", features = ["argh_derive"] }
sync = { path = "common/sync" }
tempfile = "3"
terminal_size = "0.1.17"
thiserror = { version = "1.0.20" }
uuid = { version = "0.8.2", features = [ "serde" ] }
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" }
[target.'cfg(unix)'.dependencies]
minijail = "*" # provided by ebuild
p9 = "*"
[target.'cfg(windows)'.dependencies]
anti_tamper = { path = "anti_tamper" }
cros_async = { path = "cros_async" }
ctrlc = "*"
futures = "0.3"
gpu_display = { path = "gpu_display", optional = true }
rand = "0.8"
tracing = { path = "tracing" }
tube_transporter = { path = "tube_transporter" }
winapi = "*"
win_util = { path = "win_util"}
[build-dependencies]
cc = "*"
[dev-dependencies]
base = "*"
[patch.crates-io]
assertions = { path = "common/assertions" }
audio_streams = { path = "common/audio_streams" }
base = { path = "base" }
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" }
wire_format_derive = { path = "common/p9/wire_format_derive" } # ignored by ebuild
minijail = { path = "third_party/minijail/rust/minijail" } # ignored by ebuild