xref: /wasmtime-44.0.1/crates/fuzzing/Cargo.toml (revision bda02c19)
1[package]
2authors.workspace = true
3description = "Fuzzing infrastructure for Wasmtime"
4edition.workspace = true
5rust-version.workspace = true
6name = "wasmtime-fuzzing"
7publish = false
8version = "0.0.0"
9license = "Apache-2.0 WITH LLVM-exception"
10
11[lints]
12workspace = true
13
14[build-dependencies]
15wasmtime-test-util = { workspace = true, features = ['wast'] }
16
17[dependencies]
18backtrace = { workspace = true }
19arbitrary = { workspace = true, features = ["derive"] }
20env_logger = { workspace = true }
21log = { workspace = true }
22mutatis = { workspace = true }
23rayon = "1.2.1"
24smallvec = { workspace = true }
25target-lexicon = { workspace = true }
26tempfile = "3.3.0"
27wasmparser = { workspace = true }
28wasmprinter = { workspace = true }
29wasmtime-wast = { workspace = true, features = ['component-model'] }
30wasmtime = { workspace = true, features = ['default', 'winch'] }
31wasmtime-core = { workspace = true, features = ['backtrace'] }
32wasm-encoder = { workspace = true }
33wasm-smith = { workspace = true, features = ['serde'] }
34wasm-mutate = { workspace = true }
35wasm-compose = { workspace = true }
36wasm-spec-interpreter = { path = "./wasm-spec-interpreter", optional = true }
37wasmi = { version = "1.0.8", default-features = false, features = ["std", "simd"] }
38futures = { workspace = true, features = ['async-await'] }
39wasmtime-test-util = { workspace = true, features = ['wast', 'component-fuzz', 'component'] }
40serde_json = { workspace = true }
41serde = { workspace = true }
42test-programs-artifacts = { workspace = true }
43wasmtime-wasi = { workspace = true }
44indexmap = { workspace = true }
45
46[dependencies.wasmtime-cli-flags]
47workspace = true
48features = [
49  'async',
50  'component-model',
51  'component-model-async',
52  'cranelift',
53  'gc',
54  'gc-drc',
55  'gc-null',
56  'memory-protection-keys',
57  'pooling-allocator',
58  'pulley',
59  'threads',
60  'parallel-compilation',
61]
62
63# We rely on precompiled v8 binaries, but rusty-v8 doesn't have a precompiled
64# binary for MinGW which is built on our CI. It does have one for Windows-msvc,
65# though, so we could use that if we wanted. For now though just simplify a bit
66# and don't depend on this on Windows.  The same applies on s390x and riscv.
67[target.'cfg(not(any(windows, target_arch = "s390x", target_arch = "riscv64")))'.dependencies]
68v8 = "139.0.0"
69
70[dev-dependencies]
71wat = { workspace = true }
72rand = { version = "0.8.0", features = ["small_rng"] }
73wasmtime-environ = { workspace = true }
74cranelift-bitset = { workspace = true }
75
76# Only enable the `build-libinterpret` feature when fuzzing is enabled, enabling
77# commands like `cargo test --workspace` or similar to not need an ocaml
78# installation and only fuzzers need it by default.
79[target.'cfg(fuzzing)'.dependencies]
80wasm-spec-interpreter = { path = "./wasm-spec-interpreter", optional = true, features = ['build-libinterpret'] }
81
82[features]
83fuzz-spec-interpreter = ['dep:wasm-spec-interpreter']
84
85# Fuzz proof-carrying code. Off by default.
86fuzz-pcc = []
87