aboutsummaryrefslogtreecommitdiff
path: root/openssl-sys
diff options
context:
space:
mode:
authorAlex Crichton <[email protected]>2015-09-01 11:12:22 -0700
committerAlex Crichton <[email protected]>2015-09-01 11:24:32 -0700
commitbf16c19f315c83fe4b329730f03e568cbf4c47f9 (patch)
tree0ded372579f889b06f29bebc15f3ee8b98910f6e /openssl-sys
parentMerge pull request #259 from jedisct1/dh (diff)
downloadrust-openssl-bf16c19f315c83fe4b329730f03e568cbf4c47f9.tar.xz
rust-openssl-bf16c19f315c83fe4b329730f03e568cbf4c47f9.zip
Swap order of linking ssl/crypto
GNU linkers will sometimes aggressively try to strip objects and archives from a linker command line in a left-to-right fashion. When a linker hits an object file that doesn't satisfy any unresolved symbols, it will discard the object and not re-visit it. This means that currently if symbols are depended upon in libssl then some of the dependencies of libssl (in libcrypto) may have already been stripped, causing a link error. By swapping the order of what's linked it reflects the natural flow of dependencies and the linker should figure everything out for us.
Diffstat (limited to 'openssl-sys')
-rw-r--r--openssl-sys/build.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/openssl-sys/build.rs b/openssl-sys/build.rs
index b4a00566..5f934888 100644
--- a/openssl-sys/build.rs
+++ b/openssl-sys/build.rs
@@ -36,12 +36,12 @@ fn main() {
Some(ref v) => v.split(":").collect(),
None => if target.contains("windows") {
if get_mingw_in_path().is_some() && lib_dir.is_none() && include_dir.is_none() {
- vec!("eay32", "ssleay32")
+ vec!["ssleay32", "eay32"]
} else {
- vec!("eay32", "ssl32")
+ vec!["ssl32", "eay32"]
}
} else {
- vec!("crypto", "ssl")
+ vec!["ssl", "crypto"]
}
};