diff --git a/Cargo.toml b/Cargo.toml index 020324af..ec02c1d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,3 +42,4 @@ linked_hash_set = "0.1" once_cell = "1.0" tower = "0.4" tower-layer = "0.3" +autocfg = "1.3.0" diff --git a/boring-sys/Cargo.toml b/boring-sys/Cargo.toml index 712f86a4..5178d39d 100644 --- a/boring-sys/Cargo.toml +++ b/boring-sys/Cargo.toml @@ -80,6 +80,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 3bb729b5..d3663db6 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() .derive_copy(true) .derive_debug(true) @@ -700,7 +704,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))