Skip to content
Automatic cfg for Rust compiler features
Rust
Branch: master
Clone or download
cuviper Merge pull request #13 from cuviper/rustflags
Apply rustflags when probing rustc
Latest commit 15ea2ca Oct 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Initial working version Oct 12, 2018
src Add a local macro replacing deprecated std::try! Oct 20, 2019
tests Only apply RUSTFLAGS when TARGET != HOST Sep 6, 2019
.gitignore first commit May 30, 2018
.travis.yml Enable full lib tests for no_std Aug 19, 2019
Cargo.toml Release 0.1.7 Oct 20, 2019
LICENSE-APACHE first commit May 30, 2018
LICENSE-MIT first commit May 30, 2018
README.md Use consistent periods on release notes Oct 20, 2019

README.md

autocfg

autocfg crate autocfg documentation minimum rustc 1.0 Travis Status

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 = "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.

Release Notes

  • 0.1.7 (2019-10-20)

    • Apply RUSTFLAGS when probing $TARGET != $HOST, mainly for sysroot, by @roblabla.
  • 0.1.6 (2019-08-19)

    • Add probe/emit_sysroot_crate, by @leo60228.
  • 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.
  • 0.1.3 (2019-05-21)

    • Auto-detects if #![no_std] is needed for the $TARGET.
  • 0.1.2 (2019-01-16)

    • Add rerun_env(ENV) to print cargo:rerun-if-env-changed=ENV.
    • Add rerun_path(PATH) to print cargo:rerun-if-changed=PATH.

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

at your option.

You can’t perform that action at this time.