From ffa466f4634ede44a8c36eb57aa8fbcc086849f8 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 23 Mar 2026 11:22:47 -0400 Subject: [PATCH] Rust wrapper: minor build.rs improvements for cross-compiling --- wrapper/rust/wolfssl-wolfcrypt/build.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/wrapper/rust/wolfssl-wolfcrypt/build.rs b/wrapper/rust/wolfssl-wolfcrypt/build.rs index 88f72b6cbd..28c817295a 100644 --- a/wrapper/rust/wolfssl-wolfcrypt/build.rs +++ b/wrapper/rust/wolfssl-wolfcrypt/build.rs @@ -44,10 +44,17 @@ fn wolfssl_repo_lib_dir() -> Result { fn wolfssl_include_dir() -> Result> { if let Ok(prefix) = env::var("WOLFSSL_PREFIX") { Ok(Some(format!("{}/include", prefix))) - } else if Path::new(&wolfssl_repo_base_dir()?).exists() { - Ok(Some(wolfssl_repo_base_dir()?)) } else { - Ok(None) + let base = wolfssl_repo_base_dir()?; + let base_path = Path::new(&base); + // Treat this as an in-tree wolfSSL repo only if the expected layout exists. + let wolfssl_dir = base_path.join("wolfssl"); + let wolfssl_options = wolfssl_dir.join("options.h"); + if wolfssl_options.is_file() { + Ok(Some(base)) + } else { + Ok(None) + } } } @@ -97,6 +104,8 @@ fn rust_target_to_clang_target(rust_target: &str) -> String { // Bare-metal: (os=none, abi=elf) → --elf if os == "none" && abi == "elf" { format!("{}-{}-elf", arch, vendor) + } else if abi.is_empty() { + format!("{}-{}-{}", arch, vendor, os) } else { format!("{}-{}-{}-{}", arch, vendor, os, abi) }