Crates.io | autocfg |
lib.rs | autocfg |
version | 1.4.0 |
source | src |
created_at | 2018-05-30 18:21:35.379916 |
updated_at | 2024-09-27 01:05:28.096978 |
description | Automatic cfg for Rust compiler features |
homepage | |
repository | https://github.com/cuviper/autocfg |
max_upload_size | |
id | 67825 |
size | 57,635 |
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 = "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.
1.4.0 (2024-09-26)
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)
probe_raw
for direct control of the code that will be test-compiled.rustc
version information too.1.2.0 (2024-03-25)
no_std
and set_no_std
to control the use of #![no_std]
in probes.RUSTC_WRAPPER
and RUSTC_WORKSPACE_WRAPPER
when they are set.1.1.0 (2022-02-07)
CARGO_ENCODED_RUSTFLAGS
when it is set.1.0.1 (2020-08-20)
RUSTFLAGS
for more --target
scenarios, by @adamreichold.1.0.0 (2020-01-08)
probe_expression
and emit_expression_cfg
to test arbitrary expressions.probe_constant
and emit_constant_cfg
to test arbitrary constant expressions.0.1.7 (2019-10-20)
RUSTFLAGS
when probing $TARGET != $HOST
, mainly for sysroot, by @roblabla.0.1.6 (2019-08-19)
probe
/emit_sysroot_crate
, by @leo60228.0.1.5 (2019-07-16)
0.1.4 (2019-05-22)
std
/no_std
probing to a warning instead of an error.rustc
bootstrap compatibility.0.1.3 (2019-05-21)
#![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
.
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
at your option.