summaryrefslogtreecommitdiff
path: root/openssl-sys
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2020-12-23 15:54:17 -0500
committerGitHub <noreply@github.com>2020-12-23 15:54:17 -0500
commitbc657d1c4e01d27246bda15c8bb5ce738c7e27ab (patch)
treede422a46e77cf0f23c54502da2063d0160ba7b15 /openssl-sys
parent475193943be96d3568d721340398980f8841d3d1 (diff)
parent85c9fc99ce02667719c1dbee2a5a1615b1da809b (diff)
downloadrust-openssl-bc657d1c4e01d27246bda15c8bb5ce738c7e27ab.zip
Merge pull request #1388 from Byron/master
Find brew openssl in correct place on Apple Silicon/aarch64
Diffstat (limited to 'openssl-sys')
-rw-r--r--openssl-sys/build/find_normal.rs65
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();
}
}
}