Unverified Commit bc657d1c authored by Steven Fackler's avatar Steven Fackler Committed by GitHub
Browse files

Merge pull request #1388 from Byron/master

Find brew openssl in correct place on Apple Silicon/aarch64
parents 47519394 85c9fc99
Loading
Loading
Loading
Loading
+42 −23
Original line number Diff line number Diff line
@@ -21,19 +21,19 @@ 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
fn resolve_with_wellknown_homebrew_location(dir: &str) -> Option<PathBuf> {
    // Check up default aarch 64 Homebrew installation location first
    // for quick resolution if possible.
        let homebrew = Path::new("/usr/local/opt/openssl@1.1");
    //  `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 homebrew.to_path_buf().into();
        return Some(homebrew.to_path_buf());
    }
        let homebrew = Path::new("/usr/local/opt/openssl");
    let homebrew = Path::new(dir);
    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.
@@ -41,14 +41,33 @@ fn find_openssl_dir(target: &str) -> OsString {
    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 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());
        }
    }

    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();
            }
        }
    }