[package]
name = "foundry-compilers"
description = "Compiler abstraction and Foundry project implementation"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
exclude.workspace = true
[lints]
workspace = true
[dependencies]
foundry-compilers-artifacts = { workspace = true, features = [
"checksum",
"walkdir",
"rayon",
] }
foundry-compilers-core = { workspace = true, features = ["hasher", "regex"] }
serde.workspace = true
semver.workspace = true
alloy-primitives.workspace = true
serde_json.workspace = true
tracing.workspace = true
alloy-json-abi.workspace = true
rayon.workspace = true
thiserror.workspace = true
path-slash.workspace = true
yansi.workspace = true
solar.workspace = true
futures-util = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
auto_impl = "1"
winnow = "0.7"
dyn-clone = "1"
derive_more = { version = "2", features = ["debug"] }
itertools = ">=0.13, <=0.14"
tempfile = { version = "3.20", optional = true }
fs_extra = { version = "1.3", optional = true }
rand = { version = "0.9", optional = true }
svm = { workspace = true, optional = true }
svm-builds = { package = "svm-rs-builds", version = "0.5", default-features = false, optional = true }
sha2 = { version = "0.10", default-features = false, optional = true }
[dev-dependencies]
tracing-subscriber = { version = "0.3", default-features = false, features = [
"env-filter",
"fmt",
] }
similar-asserts.workspace = true
fd-lock = "4.0.4"
tokio = { version = "1.47", features = ["rt-multi-thread", "macros"] }
reqwest = "0.12"
tempfile = "3.20"
snapbox.workspace = true
foundry-compilers-core = { workspace = true, features = ["test-utils"] }
[features]
default = ["rustls"]
test-utils = []
full = ["async", "svm-solc"]
async = [
"dep:futures-util",
"dep:tokio",
"tokio/fs",
"tokio/process",
"tokio/io-util",
"foundry-compilers-artifacts/async",
]
svm-solc = [
"dep:svm",
"dep:svm-builds",
"dep:sha2",
"foundry-compilers-core/svm-solc",
]
project-util = [
"dep:tempfile",
"dep:fs_extra",
"dep:rand",
"svm-solc",
"foundry-compilers-core/project-util",
]
rustls = ["svm?/rustls"]
openssl = ["svm?/openssl"]
[[test]]
name = "project"
path = "tests/project.rs"
required-features = ["full", "project-util", "test-utils"]
[[test]]
name = "mocked"
path = "tests/mocked.rs"
required-features = ["full", "project-util"]