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.
Add this to your Cargo.toml
:
[build-dependencies]
autocfg = "0.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(file!());
}
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.
-
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_std
probing to a warning instead of an error. - Improve
rustc
bootstrap 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
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.
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.