summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuki Okushi <jtitor@2k36.org>2022-06-08 17:40:08 +0900
committerYuki Okushi <jtitor@2k36.org>2022-06-08 17:42:05 +0900
commit576f77814cff61d0ed7e30f2a7d0f0f696001bd5 (patch)
treee59d16110d1a88a04ae4955c8bdd25a8b4a98226
parente534fd88e3b33f45937700b7f50ab02a34fffe2a (diff)
downloadrust-libc-576f77814cff61d0ed7e30f2a7d0f0f696001bd5.tar.gz
Enable `libc_const_extern_fn` implicitly from Rust 1.62
-rw-r--r--README.md4
-rw-r--r--build.rs15
-rw-r--r--src/lib.rs2
3 files changed, 15 insertions, 6 deletions
diff --git a/README.md b/README.md
index a8a3afd9f6..14fa5831c2 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,8 @@ libc = "0.2"
This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`.
* `const-extern-fn`: Changes some `extern fn`s into `const extern fn`s.
- This feature requires a nightly rustc.
+ If you use Rust >= 1.62, this feature is implicitly enabled.
+ Otherwise it requires a nightly rustc.
* **deprecated**: `use_std` is deprecated, and is equivalent to `std`.
@@ -53,6 +54,7 @@ newer Rust features are only available on newer Rust toolchains:
| `core::ffi::c_void` | 1.30.0 |
| `repr(packed(N))` | 1.33.0 |
| `cfg(target_vendor)` | 1.33.0 |
+| `const-extern-fn` | 1.62.0 |
## Platform support
diff --git a/build.rs b/build.rs
index bc7b77f25e..0a43b2a12e 100644
--- a/build.rs
+++ b/build.rs
@@ -97,11 +97,18 @@ fn main() {
println!("cargo:rustc-cfg=libc_thread_local");
}
- if const_extern_fn_cargo_feature {
- if !is_nightly || rustc_minor_ver < 40 {
- panic!("const-extern-fn requires a nightly compiler >= 1.40")
- }
+ // Rust >= 1.62.0 allows to use `const_extern_fn` for "Rust" and "C".
+ if rustc_minor_ver >= 62 {
println!("cargo:rustc-cfg=libc_const_extern_fn");
+ } else {
+ // Rust < 1.62.0 requires a crate feature and feature gate.
+ if const_extern_fn_cargo_feature {
+ if !is_nightly || rustc_minor_ver < 40 {
+ panic!("const-extern-fn requires a nightly compiler >= 1.40");
+ }
+ println!("cargo:rustc-cfg=libc_const_extern_fn_unstable");
+ println!("cargo:rustc-cfg=libc_const_extern_fn");
+ }
}
}
diff --git a/src/lib.rs b/src/lib.rs
index c0ef813283..3ad346a429 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -30,7 +30,7 @@
feature = "rustc-dep-of-std",
feature(native_link_modifiers, native_link_modifiers_bundle)
)]
-#![cfg_attr(libc_const_extern_fn, feature(const_extern_fn))]
+#![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
#[macro_use]
mod macros;