summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Fackler <sfackler@gmail.com>2021-02-10 19:35:29 -0500
committerGitHub <noreply@github.com>2021-02-10 19:35:29 -0500
commit71b6e3f81f9cf0d1772d00577873cc21ee8f86bf (patch)
tree18fe68e51dc32bf5421c0cb635c0550ab053479a
parent838e1b111bbb7336c6cb9658ff0faee266709630 (diff)
parentd7bd9becb73744c4e696395cbd904ee0711228aa (diff)
downloadrust-openssl-71b6e3f81f9cf0d1772d00577873cc21ee8f86bf.zip
Merge pull request #1413 from davidbailey00/improve-openssl-dir-detection
Add support for MacPorts + fix scanning other directories on arm64
-rw-r--r--openssl-sys/build/find_normal.rs59
-rw-r--r--openssl/src/lib.rs8
2 files changed, 31 insertions, 36 deletions
diff --git a/openssl-sys/build/find_normal.rs b/openssl-sys/build/find_normal.rs
index 3e314e15..5e3726c4 100644
--- a/openssl-sys/build/find_normal.rs
+++ b/openssl-sys/build/find_normal.rs
@@ -25,16 +25,11 @@ 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);
+ let homebrew = Path::new(dir).join("opt/openssl@1.1");
if homebrew.exists() {
- return Some(homebrew.to_path_buf());
- }
- let homebrew = Path::new(dir);
- if homebrew.exists() {
- return Some(homebrew.to_path_buf());
+ return Some(homebrew);
}
+
// 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"]);
@@ -45,42 +40,36 @@ fn resolve_with_wellknown_homebrew_location(dir: &str) -> Option<PathBuf> {
}
}
- 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 Some(homebrew.to_path_buf());
- }
- }
-
None
}
-fn resolve_with_wellknown_pkgsrc_location() -> Option<PathBuf> {
- let pkgsrc = Path::new("/opt/pkg");
- let pkgsrc_include_openssl = pkgsrc.join("include/openssl");
- if pkgsrc_include_openssl.exists() {
- return Some(pkgsrc.to_path_buf());
+fn resolve_with_wellknown_location(dir: &str) -> Option<PathBuf> {
+ let root_dir = Path::new(dir);
+ let include_openssl = root_dir.join("include/openssl");
+ if include_openssl.exists() {
+ Some(root_dir.to_path_buf())
+ } else {
+ None
}
-
- 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();
- }
- } else if target.contains("apple-darwin") {
- if let Some(dir) = resolve_with_wellknown_homebrew_location("/usr/local/opt/openssl") {
- return dir.into();
- } else if let Some(dir) = resolve_with_wellknown_pkgsrc_location() {
- return dir.into();
- }
+ if host == target && target.ends_with("-apple-darwin") {
+ let homebrew_dir = match target {
+ "aarch64-apple-darwin" => "/opt/homebrew",
+ _ => "/usr/local",
+ };
+
+ if let Some(dir) = resolve_with_wellknown_homebrew_location(homebrew_dir) {
+ return dir.into();
+ } else if let Some(dir) = resolve_with_wellknown_location("/opt/pkg") {
+ // pkgsrc
+ return dir.into();
+ } else if let Some(dir) = resolve_with_wellknown_location("/opt/local") {
+ // MacPorts
+ return dir.into();
}
}
diff --git a/openssl/src/lib.rs b/openssl/src/lib.rs
index f908f3ab..b08bad6b 100644
--- a/openssl/src/lib.rs
+++ b/openssl/src/lib.rs
@@ -28,9 +28,15 @@
//! Additionally, it will use `pkg-config` on Unix-like systems to find the system installation.
//!
//! ```not_rust
-//! # macOS
+//! # macOS (Homebrew)
//! $ brew install openssl@1.1
//!
+//! # macOS (MacPorts)
+//! $ sudo port install openssl
+//!
+//! # macOS (pkgsrc)
+//! $ sudo pkgin install openssl
+//!
//! # Arch Linux
//! $ sudo pacman -S pkg-config openssl
//!