target-spec

target-spec on crates.io Documentation (latest release) Documentation (main) Changelog License License

Evaluate Cargo.toml target specifications against platform triples.

Cargo supports platform-specific dependencies. These dependencies can be specified in one of two ways:

```toml

1. As Rust-like #[cfg] syntax.

[target.'cfg(all(unix, targetarch = "x8664"))'.dependencies] native = { path = "native/x86_64" }

2. Listing out the full target triple.

[target.x86_64-pc-windows-gnu.dependencies] winhttp = "0.4.0" ```

target-spec provides the eval API which can be used to figure out whether such a dependency will be included on a particular platform.

```rust use target_spec::eval;

// Evaluate Rust-like #[cfg] syntax. let cfgtarget = "cfg(all(unix, targetarch = \"x8664\"))"; asserteq!(eval(cfgtarget, "x8664-unknown-linux-gnu"), Ok(Some(true))); asserteq!(eval(cfgtarget, "i686-unknown-linux-gnu"), Ok(Some(false))); asserteq!(eval(cfgtarget, "x86_64-pc-windows-msvc"), Ok(Some(false)));

// Evaluate a full target-triple. asserteq!(eval("x8664-unknown-linux-gnu", "x8664-unknown-linux-gnu"), Ok(Some(true))); asserteq!(eval("x8664-unknown-linux-gnu", "x8664-pc-windows-msvc"), Ok(Some(false))); ```

For more advanced usage, see Platform and TargetSpec.

Optional features

Minimum supported Rust version

The minimum supported Rust version (MSRV) is: * For target-spec 1.0.x: Rust 1.54. * For target-spec 1.1.x: Rust 1.56. * For target-spec 1.2.x: Rust 1.58.

Within the 1.x series, MSRV bumps will be accompanied by a minor version update.

Contributing

See the CONTRIBUTING file for how to help out.

License

This project is available under the terms of either the Apache 2.0 license or the MIT license.