aboutsummaryrefslogtreecommitdiff
path: root/openssl-sys
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2015-02-12 18:41:51 -0800
committerSteven Fackler <[email protected]>2015-02-12 18:41:51 -0800
commitd4c5bafa19d3142ca64d95bf0e531945da2db056 (patch)
treea9e2f3bd1d7c4effdab117412c1a7c906e4de369 /openssl-sys
parentMerge pull request #161 from bombless/fix-windows (diff)
downloadrust-openssl-d4c5bafa19d3142ca64d95bf0e531945da2db056.tar.xz
rust-openssl-d4c5bafa19d3142ca64d95bf0e531945da2db056.zip
Pass include directories to gcc
Diffstat (limited to 'openssl-sys')
-rw-r--r--openssl-sys/Cargo.toml2
-rw-r--r--openssl-sys/build.rs28
2 files changed, 16 insertions, 14 deletions
diff --git a/openssl-sys/Cargo.toml b/openssl-sys/Cargo.toml
index 783b68f1..6a37a3a3 100644
--- a/openssl-sys/Cargo.toml
+++ b/openssl-sys/Cargo.toml
@@ -19,7 +19,7 @@ aes_xts = []
[build-dependencies]
pkg-config = "0.2.1"
-gcc = "0.1"
+gcc = "0.2"
[target.le32-unknown-nacl.dependencies]
libressl-pnacl-sys = "2.1.0"
diff --git a/openssl-sys/build.rs b/openssl-sys/build.rs
index 50972054..f88a9cd6 100644
--- a/openssl-sys/build.rs
+++ b/openssl-sys/build.rs
@@ -1,10 +1,9 @@
-#![feature(env)]
+#![feature(env, path)]
extern crate "pkg-config" as pkg_config;
extern crate gcc;
use std::env;
-use std::default::Default;
fn main() {
let target = env::var("TARGET").unwrap();
@@ -21,18 +20,18 @@ fn main() {
if target.contains("win32") || target.contains("win64") || target.contains("windows") {
println!("cargo:rustc-flags=-l crypto -l ssl -l gdi32 -l wsock32");
// going to assume the user has a new version of openssl
- build_old_openssl_shim(false);
+ build_old_openssl_shim(false, vec![]);
return;
}
if pkg_config::Config::new().atleast_version("1.0.0").find("openssl").is_ok() {
- build_old_openssl_shim(false);
+ build_old_openssl_shim(false, vec![]);
return;
}
let err = match pkg_config::find_library("openssl") {
- Ok(..) => {
- build_old_openssl_shim(true);
+ Ok(info) => {
+ build_old_openssl_shim(true, info.include_paths);
return;
}
Err(err) => err,
@@ -42,22 +41,25 @@ fn main() {
if target.contains("bsd") {
println!("cargo:rustc-flags=-l crypto -l ssl");
// going to assume the base system includes a new version of openssl
- build_old_openssl_shim(false);
+ build_old_openssl_shim(false, vec![]);
return;
}
panic!("unable to find openssl: {}", err);
}
-fn build_old_openssl_shim(is_old: bool) {
- let mut config: gcc::Config = Default::default();
+fn build_old_openssl_shim(is_old: bool, include_paths: Vec<Path>) {
+ let mut config = gcc::Config::new();
+
+ for path in include_paths {
+ config.include(path);
+ }
if is_old {
- config.definitions.push(("OLD_OPENSSL".to_string(), None));
+ config.define("OLD_OPENSSL", None);
}
- gcc::compile_library("libold_openssl_shim.a",
- &config,
- &["src/old_openssl_shim.c"]);
+ config.file("src/old_openssl_shim.c")
+ .compile("libold_openssl_shim.a");
let out_dir = env::var("OUT_DIR").unwrap();
println!("cargo:rustc-flags=-L native={} -l old_openssl_shim:static", out_dir);