summaryrefslogtreecommitdiffstats
path: root/third_party/rust/libz-sys/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/libz-sys/build.rs')
-rw-r--r--third_party/rust/libz-sys/build.rs135
1 files changed, 0 insertions, 135 deletions
diff --git a/third_party/rust/libz-sys/build.rs b/third_party/rust/libz-sys/build.rs
deleted file mode 100644
index 36b27824f..000000000
--- a/third_party/rust/libz-sys/build.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-extern crate pkg_config;
-extern crate gcc;
-
-use std::env;
-use std::ffi::OsString;
-use std::fs;
-use std::path::{Path, PathBuf};
-use std::process::Command;
-
-macro_rules! t {
- ($e:expr) => (match $e {
- Ok(n) => n,
- Err(e) => panic!("\n{} failed with {}\n", stringify!($e), e),
- })
-}
-
-fn main() {
- let host = env::var("HOST").unwrap();
- let target = env::var("TARGET").unwrap();
-
- // Don't run pkg-config if we're linking statically (we'll build below) and
- // also don't run pkg-config on OSX. That'll end up printing `-L /usr/lib`
- // which wreaks havoc with linking to an OpenSSL in /usr/local/lib (e.g.
- // homebrew)
- let want_static = env::var("LIBZ_SYS_STATIC").unwrap_or(String::new()) == "1";
- if !want_static &&
- !(host.contains("apple") && target.contains("apple")) &&
- pkg_config::find_library("zlib").is_ok() {
- return
- }
-
- // Practically all platforms come with libz installed already, but MSVC is
- // one of those sole platforms that doesn't!
- if target.contains("msvc") {
- build_msvc_zlib(&target);
- } else if (target.contains("musl") ||
- target != host ||
- want_static) &&
- !target.contains("windows-gnu") &&
- !target.contains("android") {
- build_zlib();
- } else {
- println!("cargo:rustc-link-lib=z");
- }
-}
-
-fn build_zlib() {
- let src = env::current_dir().unwrap().join("src/zlib-1.2.8");
- let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap());
- let build = dst.join("build");
- t!(fs::create_dir_all(&build));
- cp_r(&src, &build);
- let compiler = gcc::Config::new().get_compiler();
- let mut cflags = OsString::new();
- for arg in compiler.args() {
- cflags.push(arg);
- cflags.push(" ");
- }
- run(Command::new("./configure")
- .current_dir(&build)
- .env("CC", compiler.path())
- .env("CFLAGS", cflags));
- run(Command::new("make")
- .current_dir(&build)
- .arg("libz.a"));
-
- t!(fs::create_dir_all(dst.join("lib")));
- t!(fs::create_dir_all(dst.join("include")));
- t!(fs::copy(build.join("libz.a"), dst.join("lib/libz.a")));
- t!(fs::copy(build.join("zlib.h"), dst.join("include/zlib.h")));
- t!(fs::copy(build.join("zconf.h"), dst.join("include/zconf.h")));
-
- println!("cargo:rustc-link-lib=static=z");
- println!("cargo:rustc-link-search={}/lib", dst.to_string_lossy());
- println!("cargo:root={}", dst.to_string_lossy());
- println!("cargo:include={}/include", dst.to_string_lossy());
-}
-
-fn cp_r(dir: &Path, dst: &Path) {
- for entry in t!(fs::read_dir(dir)) {
- let entry = t!(entry);
- let path = entry.path();
- let dst = dst.join(path.file_name().unwrap());
- if t!(fs::metadata(&path)).is_file() {
- t!(fs::copy(path, dst));
- } else {
- t!(fs::create_dir_all(&dst));
- cp_r(&path, &dst);
- }
- }
-}
-
-fn build_msvc_zlib(target: &str) {
- let src = t!(env::current_dir()).join("src/zlib-1.2.8");
- let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap());
-
- t!(fs::create_dir_all(dst.join("lib")));
- t!(fs::create_dir_all(dst.join("include")));
- t!(fs::create_dir_all(dst.join("build")));
- cp_r(&src, &dst.join("build"));
-
- let nmake = gcc::windows_registry::find(target, "nmake.exe");
- let mut nmake = nmake.unwrap_or(Command::new("nmake.exe"));
- run(nmake.current_dir(dst.join("build"))
- .arg("/nologo")
- .arg("/f")
- .arg(src.join("win32/Makefile.msc"))
- .arg("zlib.lib"));
-
- for file in t!(fs::read_dir(&dst.join("build"))) {
- let file = t!(file).path();
- if let Some(s) = file.file_name().and_then(|s| s.to_str()) {
- if s.ends_with(".h") {
- t!(fs::copy(&file, dst.join("include").join(s)));
- }
- }
- }
- t!(fs::copy(dst.join("build/zlib.lib"), dst.join("lib/zlib.lib")));
-
- println!("cargo:rustc-link-lib=static=zlib");
- println!("cargo:rustc-link-search={}/lib", dst.to_string_lossy());
- println!("cargo:root={}", dst.to_string_lossy());
- println!("cargo:include={}/include", dst.to_string_lossy());
-}
-
-fn run(cmd: &mut Command) {
- println!("running: {:?}", cmd);
- let status = match cmd.status() {
- Ok(s) => s,
- Err(e) => panic!("failed to run: {}", e),
- };
- if !status.success() {
- panic!("failed to run successfully: {}", status);
- }
-}