target-spec

target-spec on crates.io Documentation (latest release) Documentation (master) 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(true)); asserteq!(eval(cfgtarget, "i686-unknown-linux-gnu"), Ok(false)); asserteq!(eval(cfgtarget, "x86_64-pc-windows-msvc"), Ok(false));

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

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.