diff options
author | Steven Fackler <sfackler@gmail.com> | 2020-12-23 15:54:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-23 15:54:17 -0500 |
commit | bc657d1c4e01d27246bda15c8bb5ce738c7e27ab (patch) | |
tree | de422a46e77cf0f23c54502da2063d0160ba7b15 | |
parent | 475193943be96d3568d721340398980f8841d3d1 (diff) | |
parent | 85c9fc99ce02667719c1dbee2a5a1615b1da809b (diff) | |
download | rust-openssl-bc657d1c4e01d27246bda15c8bb5ce738c7e27ab.zip |
Merge pull request #1388 from Byron/master
Find brew openssl in correct place on Apple Silicon/aarch64
-rw-r--r-- | openssl-sys/build/find_normal.rs | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/openssl-sys/build/find_normal.rs b/openssl-sys/build/find_normal.rs index 3a09aea3..4e492e7d 100644 --- a/openssl-sys/build/find_normal.rs +++ b/openssl-sys/build/find_normal.rs @@ -21,34 +21,53 @@ pub fn get_openssl(target: &str) -> (PathBuf, PathBuf) { } } -fn find_openssl_dir(target: &str) -> OsString { - let host = env::var("HOST").unwrap(); - - if host == target && target.contains("apple-darwin") { - // Check up default Homebrew installation location first - // for quick resolution if possible. - let homebrew = Path::new("/usr/local/opt/openssl@1.1"); +fn resolve_with_wellknown_homebrew_location(dir: &str) -> Option<PathBuf> { + // Check up default aarch 64 Homebrew installation location first + // for quick resolution if possible. + // `pkg-config` on brew doesn't necessarily contain settings for openssl apparently. + let mut version_dir = dir.to_owned(); + version_dir.push_str("@1.1"); + let homebrew = Path::new(&version_dir); + if homebrew.exists() { + return Some(homebrew.to_path_buf()); + } + let homebrew = Path::new(dir); + if homebrew.exists() { + return Some(homebrew.to_path_buf()); + } + // Calling `brew --prefix <package>` command usually slow and + // takes seconds, and will be used only as a last resort. + let output = execute_command_and_get_output("brew", &["--prefix", "openssl@1.1"]); + if let Some(ref output) = output { + let homebrew = Path::new(&output); if homebrew.exists() { - return homebrew.to_path_buf().into(); + return Some(homebrew.to_path_buf()); } - let homebrew = Path::new("/usr/local/opt/openssl"); + } + + let output = execute_command_and_get_output("brew", &["--prefix", "openssl"]); + if let Some(ref output) = output { + let homebrew = Path::new(&output); if homebrew.exists() { - return homebrew.to_path_buf().into(); + return Some(homebrew.to_path_buf()); } - // Calling `brew --prefix <package>` command usually slow and - // takes seconds, and will be used only as a last resort. - let output = execute_command_and_get_output("brew", &["--prefix", "openssl@1.1"]); - if let Some(ref output) = output { - let homebrew = Path::new(&output); - if homebrew.exists() { - return homebrew.to_path_buf().into(); + } + + None +} + +fn find_openssl_dir(target: &str) -> OsString { + let host = env::var("HOST").unwrap(); + + if host == target { + if target == "aarch64-apple-darwin" { + if let Some(dir) = resolve_with_wellknown_homebrew_location("/opt/homebrew/opt/openssl") + { + return dir.into(); } - } - let output = execute_command_and_get_output("brew", &["--prefix", "openssl"]); - if let Some(ref output) = output { - let homebrew = Path::new(&output); - if homebrew.exists() { - return homebrew.to_path_buf().into(); + } else if target.contains("apple-darwin") { + if let Some(dir) = resolve_with_wellknown_homebrew_location("/usr/local/opt/openssl") { + return dir.into(); } } } |