[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 foundry-compilers-core.workspace = true 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 md-5.workspace = true thiserror.workspace = true path-slash.workspace = true yansi.workspace = true solang-parser.workspace = true once_cell = { workspace = true, optional = true } futures-util = { workspace = true, optional = true } tokio = { workspace = true, optional = true } auto_impl = "1" winnow = "0.6" dyn-clone = "1" derivative = "2.2" home = "0.5" dirs = "5.0" itertools = "0.13" # project-util tempfile = { version = "3.9", optional = true } fs_extra = { version = "1.3", optional = true } rand = { version = "0.8", optional = true } # svm 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.0" tokio = { version = "1.35", features = ["rt-multi-thread", "macros"] } reqwest = "0.12" tempfile = "3.9" foundry-compilers-core = { workspace = true, features = ["test-utils"] } [features] default = ["rustls"] test-utils = [] full = ["async", "svm-solc"] # Adds extra `async` methods using `tokio` to some types. async = [ "dep:futures-util", "dep:tokio", "tokio/fs", "tokio/process", "tokio/io-util", "foundry-compilers-artifacts/async", ] # Enables `svm` to auto-detect and manage `solc` builds. svm-solc = [ "dep:svm", "dep:svm-builds", "dep:sha2", "foundry-compilers-core/svm-solc", "dep:once_cell", ] # Utilities for creating and testing project workspaces. 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"]