Merge pull request #692 from jessicah/haiku-support
Allow overriding lib/include dirs when cross-compiling.
This commit is contained in:
commit
7f96c772ec
|
|
@ -36,17 +36,27 @@ enum Version {
|
||||||
Libressl,
|
Libressl,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn env(name: &str) -> Option<OsString> {
|
||||||
|
let prefix = env::var("TARGET").unwrap().to_uppercase().replace("-", "_");
|
||||||
|
let prefixed = format!("{}_{}", prefix, name);
|
||||||
|
println!("cargo:rerun-if-changed={}", prefixed);
|
||||||
|
|
||||||
|
if let Some(var) = env::var_os(&prefixed) {
|
||||||
|
return Some(var);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("cargo:rerun-if-changed={}", name);
|
||||||
|
env::var_os(name)
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let target = env::var("TARGET").unwrap();
|
let target = env::var("TARGET").unwrap();
|
||||||
|
|
||||||
println!("cargo:rerun-if-env-changed=OPENSSL_LIB_DIR");
|
let lib_dir = env("OPENSSL_LIB_DIR").map(PathBuf::from);
|
||||||
let lib_dir = env::var_os("OPENSSL_LIB_DIR").map(PathBuf::from);
|
let include_dir = env("OPENSSL_INCLUDE_DIR").map(PathBuf::from);
|
||||||
println!("cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR");
|
|
||||||
let include_dir = env::var_os("OPENSSL_INCLUDE_DIR").map(PathBuf::from);
|
|
||||||
|
|
||||||
let (lib_dir, include_dir) = if lib_dir.is_none() || include_dir.is_none() {
|
let (lib_dir, include_dir) = if lib_dir.is_none() || include_dir.is_none() {
|
||||||
println!("cargo:rerun-if-env-changed=OPENSSL_DIR");
|
let openssl_dir = env("OPENSSL_DIR").unwrap_or_else(|| find_openssl_dir(&target));
|
||||||
let openssl_dir = env::var_os("OPENSSL_DIR").unwrap_or_else(|| find_openssl_dir(&target));
|
|
||||||
let openssl_dir = Path::new(&openssl_dir);
|
let openssl_dir = Path::new(&openssl_dir);
|
||||||
let lib_dir = lib_dir.unwrap_or_else(|| openssl_dir.join("lib"));
|
let lib_dir = lib_dir.unwrap_or_else(|| openssl_dir.join("lib"));
|
||||||
let include_dir = include_dir.unwrap_or_else(|| openssl_dir.join("include"));
|
let include_dir = include_dir.unwrap_or_else(|| openssl_dir.join("include"));
|
||||||
|
|
@ -76,9 +86,8 @@ fn main() {
|
||||||
|
|
||||||
let version = validate_headers(&[include_dir.clone().into()]);
|
let version = validate_headers(&[include_dir.clone().into()]);
|
||||||
|
|
||||||
println!("cargo:rerun-if-env-changed=OPENSSL_LIBS");
|
let libs_env = env("OPENSSL_LIBS");
|
||||||
let libs_env = env::var("OPENSSL_LIBS").ok();
|
let libs = match libs_env.as_ref().and_then(|s| s.to_str()) {
|
||||||
let libs = match libs_env {
|
|
||||||
Some(ref v) => v.split(":").collect(),
|
Some(ref v) => v.split(":").collect(),
|
||||||
None => {
|
None => {
|
||||||
match version {
|
match version {
|
||||||
|
|
@ -477,9 +486,8 @@ aborting due to this version mismatch.
|
||||||
/// statically or dynamically.
|
/// statically or dynamically.
|
||||||
fn determine_mode(libdir: &Path, libs: &[&str]) -> &'static str {
|
fn determine_mode(libdir: &Path, libs: &[&str]) -> &'static str {
|
||||||
// First see if a mode was explicitly requested
|
// First see if a mode was explicitly requested
|
||||||
println!("cargo:rerun-if-env-changed=OPENSSL_STATIC");
|
let kind = env("OPENSSL_STATIC");
|
||||||
let kind = env::var("OPENSSL_STATIC").ok();
|
match kind.as_ref().and_then(|s| s.to_str()).map(|s| &s[..]) {
|
||||||
match kind.as_ref().map(|s| &s[..]) {
|
|
||||||
Some("0") => return "dylib",
|
Some("0") => return "dylib",
|
||||||
Some(_) => return "static",
|
Some(_) => return "static",
|
||||||
None => {}
|
None => {}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue