autocfg

Automatic cfg for Rust compiler features

Latest version: 1.4.0 registry icon
Maintenance score
22
Safety score
100
Popularity score
73
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Security
  Vulnerabilities
Version Suggest Low Medium High Critical
1.4.0 0 0 0 0 0
1.3.0 0 0 0 0 0
1.2.0 0 0 0 0 0
1.1.0 0 0 0 0 0
1.0.1 0 0 0 0 0
1.0.0 0 0 0 0 0
0.1.8 0 0 0 0 0
0.1.7 0 0 0 0 0
0.1.6 0 0 0 0 0
0.1.5 0 0 0 0 0
0.1.4 0 0 0 0 0
0.1.3 0 0 0 0 0
0.1.2 0 0 0 0 0
0.1.1 0 0 0 0 0
0.1.0 0 0 0 0 0
0.0.1 0 0 0 0 0

Stability
Latest release:

1.4.0 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform

Licensing

Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

Apache-2.0   -   Apache License 2.0

Not a wildcard

Not proprietary

OSI Compliant


MIT   -   MIT License

Not a wildcard

Not proprietary

OSI Compliant



autocfg

autocfg crate autocfg documentation minimum rustc 1.0 build 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 = "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.4.0 (2024-09-26)

    • Add emit_possibility for Rust 1.80's checked cfgs, and call that automatically for methods that conditionally emit, by @Techcable.
  • 1.3.0 (2024-05-03)

    • Add probe_raw for direct control of the code that will be test-compiled.
    • Use wrappers when querying the rustc version information too.
  • 1.2.0 (2024-03-25)

    • Add no_std and set_no_std to control the use of #![no_std] in probes.
    • Use RUSTC_WRAPPER and RUSTC_WORKSPACE_WRAPPER when they are set.
  • 1.1.0 (2022-02-07)

    • Use CARGO_ENCODED_RUSTFLAGS when it is set.
  • 1.0.1 (2020-08-20)

    • Apply RUSTFLAGS for more --target scenarios, by @adamreichold.
  • 1.0.0 (2020-01-08)

    • 🎉 Release 1.0! 🎉 (no breaking changes)
    • Add probe_expression and emit_expression_cfg to test arbitrary expressions.
    • Add probe_constant and emit_constant_cfg to test arbitrary constant expressions.
  • 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.