]> git.proxmox.com Git - rustc.git/blame - vendor/autocfg/README.md
New upstream version 1.44.1+dfsg1
[rustc.git] / vendor / autocfg / README.md
CommitLineData
e74abb32
XL
1autocfg
2=======
3
4[![autocfg crate](https://img.shields.io/crates/v/autocfg.svg)](https://crates.io/crates/autocfg)
5[![autocfg documentation](https://docs.rs/autocfg/badge.svg)](https://docs.rs/autocfg)
6![minimum rustc 1.0](https://img.shields.io/badge/rustc-1.0+-red.svg)
7[![Travis Status](https://travis-ci.org/cuviper/autocfg.svg?branch=master)](https://travis-ci.org/cuviper/autocfg)
8
9A Rust library for build scripts to automatically configure code based on
10compiler support. Code snippets are dynamically tested to see if the `rustc`
11will accept them, rather than hard-coding specific version support.
12
13
14## Usage
15
16Add this to your `Cargo.toml`:
17
18```toml
19[build-dependencies]
ba9703b0 20autocfg = "1"
e74abb32
XL
21```
22
23Then use it in your `build.rs` script to detect compiler features. For
24example, to test for 128-bit integer support, it might look like:
25
26```rust
27extern crate autocfg;
28
29fn main() {
30 let ac = autocfg::new();
31 ac.emit_has_type("i128");
32
33 // (optional) We don't need to rerun for anything external.
ba9703b0 34 autocfg::rerun_path("build.rs");
e74abb32
XL
35}
36```
37
38If the type test succeeds, this will write a `cargo:rustc-cfg=has_i128` line
39for Cargo, which translates to Rust arguments `--cfg has_i128`. Then in the
40rest of your Rust code, you can add `#[cfg(has_i128)]` conditions on code that
41should only be used when the compiler supports it.
42
43
44## Release Notes
45
ba9703b0
XL
46- 1.0.0 (2020-01-08)
47 - 🎉 Release 1.0! 🎉 (no breaking changes)
48 - Add `probe_expression` and `emit_expression_cfg` to test arbitrary expressions.
49 - Add `probe_constant` and `emit_constant_cfg` to test arbitrary constant expressions.
50
dfeec247
XL
51- 0.1.7 (2019-10-20)
52 - Apply `RUSTFLAGS` when probing `$TARGET != $HOST`, mainly for sysroot, by @roblabla.
53
e74abb32 54- 0.1.6 (2019-08-19)
dfeec247 55 - Add `probe`/`emit_sysroot_crate`, by @leo60228.
e74abb32
XL
56
57- 0.1.5 (2019-07-16)
58 - Mask some warnings from newer rustc.
59
60- 0.1.4 (2019-05-22)
61 - Relax `std`/`no_std` probing to a warning instead of an error.
62 - Improve `rustc` bootstrap compatibility.
63
64- 0.1.3 (2019-05-21)
dfeec247 65 - Auto-detects if `#![no_std]` is needed for the `$TARGET`.
e74abb32
XL
66
67- 0.1.2 (2019-01-16)
dfeec247
XL
68 - Add `rerun_env(ENV)` to print `cargo:rerun-if-env-changed=ENV`.
69 - Add `rerun_path(PATH)` to print `cargo:rerun-if-changed=PATH`.
e74abb32
XL
70
71
72## Minimum Rust version policy
73
74This crate's minimum supported `rustc` version is `1.0.0`. Compatibility is
75its entire reason for existence, so this crate will be extremely conservative
76about raising this requirement. If this is ever deemed necessary, it will be
77treated as a major breaking change for semver purposes.
78
79
80## License
81
82This project is licensed under either of
83
84 * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
85 http://www.apache.org/licenses/LICENSE-2.0)
86 * MIT license ([LICENSE-MIT](LICENSE-MIT) or
87 http://opensource.org/licenses/MIT)
88
89at your option.