From 3224f70ff7fd3eba1fd18c208e8013397a48335c Mon Sep 17 00:00:00 2001 From: Jordan Rose Date: Tue, 22 Oct 2024 15:47:21 -0700 Subject: [PATCH] Skip bindgen 0.70's layout tests before Rust 1.77 --- Cargo.toml | 1 + boring-sys/Cargo.toml | 1 + boring-sys/build/main.rs | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index d22c0e5e..7fa0d4d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,3 +49,4 @@ openssl-macros = "0.1.1" tower = "0.4" tower-layer = "0.3" tower-service = "0.3" +autocfg = "1.3.0" diff --git a/boring-sys/Cargo.toml b/boring-sys/Cargo.toml index 5b623181..36327950 100644 --- a/boring-sys/Cargo.toml +++ b/boring-sys/Cargo.toml @@ -77,6 +77,7 @@ pq-experimental = [] underscore-wildcards = [] [build-dependencies] +autocfg = { workspace = true } bindgen = { workspace = true } cmake = { workspace = true } fs_extra = { workspace = true } diff --git a/boring-sys/build/main.rs b/boring-sys/build/main.rs index 7966e215..86075d3c 100644 --- a/boring-sys/build/main.rs +++ b/boring-sys/build/main.rs @@ -687,6 +687,10 @@ fn main() { } }); + // bindgen 0.70 replaced the run-time layout tests with compile-time ones, + // but they depend on std::mem::offset_of, stabilized in 1.77. + let supports_layout_tests = autocfg::new().probe_rustc_version(1, 77); + let mut builder = bindgen::Builder::default() .rust_target(bindgen::RustTarget::Stable_1_68) // bindgen MSRV is 1.70, so this is enough .derive_copy(true) @@ -701,7 +705,7 @@ fn main() { .generate_comments(true) .fit_macro_constants(false) .size_t_is_usize(true) - .layout_tests(true) + .layout_tests(supports_layout_tests) .prepend_enum_name(true) .blocklist_type("max_align_t") // Not supported by bindgen on all targets, not used by BoringSSL .clang_args(get_extra_clang_args_for_bindgen(&config))