From 3446c9fe365c7e333d8173e783b4f7f2c664b7f1 Mon Sep 17 00:00:00 2001 From: butteronarchbtw <152636161+butteronarchbtw@users.noreply.github.com> Date: Mon, 11 May 2026 11:59:27 +0200 Subject: [PATCH] search for botan-{major} in BOTAN_INCLUDE_DIR --- botan-sys/build/main.rs | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/botan-sys/build/main.rs b/botan-sys/build/main.rs index a043634..8d86cc3 100644 --- a/botan-sys/build/main.rs +++ b/botan-sys/build/main.rs @@ -174,11 +174,25 @@ fn find_botan_include_dir() -> std::path::PathBuf { #[cfg(not(feature = "pkg-config"))] { + fn find_in_basedir(basedir: PathBuf) -> Option { + for major_version in [3, 2] { + let dir = PathBuf::from(format!("botan-{major_version}")); + let inc_dir = basedir.join(dir.clone()); + if inc_dir.exists() { + return Some(inc_dir); + } + } + None + } + if let Some(dir) = env_var("BOTAN_INCLUDE_DIR") { - return dir.into(); + let Some(dir) = find_in_basedir(dir.into()) else { + panic!("BOTAN_INCLUDE_DIR does not point to a valid location"); + }; + return dir; } - fn possible_header_locations() -> Vec { + fn possible_header_locations() -> Vec { let dirs = [ "/opt/homebrew/include", "/usr/local/include", @@ -197,13 +211,9 @@ fn find_botan_include_dir() -> std::path::PathBuf { paths } - for major_version in [3, 2] { - let dir = PathBuf::from(format!("botan-{major_version}")); - for basedir in possible_header_locations() { - let inc_dir = basedir.join(dir.clone()); - if inc_dir.exists() { - return inc_dir; - } + for basedir in possible_header_locations() { + if let Some(dir) = find_in_basedir(basedir) { + return dir; } }