From 373bbbea5b073d6c43aad8b13324625dcfc5b10b Mon Sep 17 00:00:00 2001 From: 0x676e67 Date: Thu, 4 Sep 2025 16:20:03 +0800 Subject: [PATCH] Reapply "Don't link binaries on docs.rs" (#94) This reverts commit d574ccc37027304897e9b0b5da7358159de23ba9. --- boring-sys/build/config.rs | 2 ++ boring-sys/build/main.rs | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/boring-sys/build/config.rs b/boring-sys/build/config.rs index 7f63b2fa..c40f611d 100644 --- a/boring-sys/build/config.rs +++ b/boring-sys/build/config.rs @@ -36,6 +36,7 @@ pub(crate) struct Env { pub(crate) android_ndk_home: Option, pub(crate) cmake_toolchain_file: Option, pub(crate) cpp_runtime_lib: Option, + pub(crate) docs_rs: bool, } impl Config { @@ -185,6 +186,7 @@ impl Env { android_ndk_home: target_var("ANDROID_NDK_HOME").map(Into::into), cmake_toolchain_file: target_var("CMAKE_TOOLCHAIN_FILE").map(Into::into), cpp_runtime_lib: target_var("BORING_BSSL_RUST_CPPLIB"), + docs_rs: var("DOCS_RS").is_some(), } } } diff --git a/boring-sys/build/main.rs b/boring-sys/build/main.rs index 2c640f62..9c144d0f 100644 --- a/boring-sys/build/main.rs +++ b/boring-sys/build/main.rs @@ -660,8 +660,15 @@ fn get_cpp_runtime_lib(config: &Config) -> Option { fn main() { let config = Config::from_env(); - let bssl_dir = built_boring_source_path(&config); - let build_path = get_boringssl_platform_output_path(&config); + if !config.env.docs_rs { + emit_link_directives(&config); + } + generate_bindings(&config); +} + +fn emit_link_directives(config: &Config) { + let bssl_dir = built_boring_source_path(config); + let build_path = get_boringssl_platform_output_path(config); if config.is_bazel || (config.features.is_fips_like() && config.env.path.is_some()) { println!( @@ -693,10 +700,10 @@ fn main() { } if config.features.fips_link_precompiled { - link_in_precompiled_bcm_o(&config); + link_in_precompiled_bcm_o(config); } - if let Some(cpp_lib) = get_cpp_runtime_lib(&config) { + if let Some(cpp_lib) = get_cpp_runtime_lib(config) { println!("cargo:rustc-link-lib={cpp_lib}"); } println!("cargo:rustc-link-lib=static=crypto"); @@ -706,13 +713,15 @@ fn main() { // Rust 1.87.0 compat - https://github.com/rust-lang/rust/pull/138233 println!("cargo:rustc-link-lib=advapi32"); } +} +fn generate_bindings(config: &Config) { let include_path = config.env.include_path.clone().unwrap_or_else(|| { if let Some(bssl_path) = &config.env.path { return bssl_path.join("include"); } - let src_path = get_boringssl_source_path(&config); + let src_path = get_boringssl_source_path(config); let candidate = src_path.join("include"); if candidate.exists() { @@ -746,7 +755,7 @@ fn main() { .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)) + .clang_args(get_extra_clang_args_for_bindgen(config)) .clang_arg("-I") .clang_arg(include_path.display().to_string());