use std::env; pub fn build_zlib_ng(target: &str, compat: bool) { let mut cmake = cmake::Config::new("src/zlib-ng"); cmake .define("BUILD_SHARED_LIBS", "OFF") .define("ZLIB_COMPAT", if compat { "ON" } else { "OFF" }) .define("ZLIB_ENABLE_TESTS", "OFF") .define("WITH_GZFILEOP", "ON"); if target.contains("s390x") { // Enable hardware compression on s390x. cmake .define("WITH_DFLTCC_DEFLATE", "1") .define("WITH_DFLTCC_INFLATE", "1") .cflag("-DDFLTCC_LEVEL_MASK=0x7e"); } if target == "i686-pc-windows-msvc" { cmake.define("CMAKE_GENERATOR_PLATFORM", "Win32"); } let install_dir = cmake.build(); let includedir = install_dir.join("include"); let libdir = install_dir.join("lib"); println!( "cargo:rustc-link-search=native={}", libdir.to_str().unwrap() ); let mut debug_suffix = ""; let libname = if target.contains("windows") && target.contains("msvc") { if env::var("OPT_LEVEL").unwrap() == "0" { debug_suffix = "d"; } "zlibstatic" } else { "z" }; println!( "cargo:rustc-link-lib=static={}{}{}", libname, if compat { "" } else { "-ng" }, debug_suffix, ); println!("cargo:root={}", install_dir.to_str().unwrap()); println!("cargo:include={}", includedir.to_str().unwrap()); if !compat { println!("cargo:rustc-cfg=zng"); } } #[allow(dead_code)] fn main() { let target = env::var("TARGET").unwrap(); build_zlib_ng(&target, false); }