1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
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");
let libdir64 = install_dir.join("lib64");
println!(
"cargo:rustc-link-search=native={}",
libdir.to_str().unwrap()
);
println!(
"cargo:rustc-link-search=native={}",
libdir64.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);
}
|