Skip to content

Commit

Permalink
Merge pull request sfackler#1388 from Byron/master
Browse files Browse the repository at this point in the history
Find brew openssl in correct place on Apple Silicon/aarch64
  • Loading branch information
sfackler authored Dec 23, 2020
2 parents 4751939 + 85c9fc9 commit bc657d1
Showing 1 changed file with 42 additions and 23 deletions.
65 changes: 42 additions & 23 deletions openssl-sys/build/find_normal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]");
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", "[email protected]"]);
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", "[email protected]"]);
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();
}
}
}
Expand Down

0 comments on commit bc657d1

Please sign in to comment.