autocfg
A Rust library for build scripts to automatically configure code based on
compiler support.  Code snippets are dynamically tested to see if the rustc
will accept them, rather than hard-coding specific version support.
Usage
Add this to your Cargo.toml:
[build-dependencies]
autocfg = "1"
Then use it in your build.rs script to detect compiler features.  For
example, to test for 128-bit integer support, it might look like:
extern crate autocfg;
fn main() {
    let ac = autocfg::new();
    ac.emit_has_type("i128");
    // (optional) We don't need to rerun for anything external.
    autocfg::rerun_path("build.rs");
}
If the type test succeeds, this will write a cargo:rustc-cfg=has_i128 line
for Cargo, which translates to Rust arguments --cfg has_i128.  Then in the
rest of your Rust code, you can add #[cfg(has_i128)] conditions on code that
should only be used when the compiler supports it.
Release Notes
- 
1.1.0 (2022-02-07)
- Use 
CARGO_ENCODED_RUSTFLAGSwhen it is set. 
 - Use 
 - 
1.0.1 (2020-08-20)
- Apply 
RUSTFLAGSfor more--targetscenarios, by @adamreichold. 
 - Apply 
 - 
1.0.0 (2020-01-08)
- 🎉 Release 1.0! 🎉 (no breaking changes)
 - Add 
probe_expressionandemit_expression_cfgto test arbitrary expressions. - Add 
probe_constantandemit_constant_cfgto test arbitrary constant expressions. 
 - 
0.1.7 (2019-10-20)
- Apply 
RUSTFLAGSwhen probing$TARGET != $HOST, mainly for sysroot, by @roblabla. 
 - Apply 
 - 
0.1.6 (2019-08-19)
- Add 
probe/emit_sysroot_crate, by @leo60228. 
 - Add 
 - 
0.1.5 (2019-07-16)
- Mask some warnings from newer rustc.
 
 - 
0.1.4 (2019-05-22)
- Relax 
std/no_stdprobing to a warning instead of an error. - Improve 
rustcbootstrap compatibility. 
 - Relax 
 - 
0.1.3 (2019-05-21)
- Auto-detects if 
#![no_std]is needed for the$TARGET. 
 - Auto-detects if 
 - 
0.1.2 (2019-01-16)
- Add 
rerun_env(ENV)to printcargo:rerun-if-env-changed=ENV. - Add 
rerun_path(PATH)to printcargo:rerun-if-changed=PATH. 
 - Add 
 
Minimum Rust version policy
This crate's minimum supported rustc version is 1.0.0.  Compatibility is
its entire reason for existence, so this crate will be extremely conservative
about raising this requirement.  If this is ever deemed necessary, it will be
treated as a major breaking change for semver purposes.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 - MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
 
at your option.