|
|
|
@ -1,17 +1,19 @@
|
|
|
|
|
From 3660391791ccadf584bcbfd0b9238fca13e52522 Mon Sep 17 00:00:00 2001
|
|
|
|
|
From 7d6c389b4f3330696e737110bbb9f7c38101da55 Mon Sep 17 00:00:00 2001
|
|
|
|
|
From: Fabio Valentini <decathorpe@gmail.com>
|
|
|
|
|
Date: Wed, 25 Sep 2024 17:10:14 +0200
|
|
|
|
|
Date: Wed, 10 Jan 2024 17:12:19 +0100
|
|
|
|
|
Subject: [PATCH] unconditionally use pkg-config to link with system zlib
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
build.rs | 243 +------------------------------------------------------
|
|
|
|
|
1 file changed, 4 insertions(+), 239 deletions(-)
|
|
|
|
|
build.rs | 197 ++-------------------------------------------------
|
|
|
|
|
build_zng.rs | 60 ----------------
|
|
|
|
|
2 files changed, 4 insertions(+), 253 deletions(-)
|
|
|
|
|
delete mode 100644 build_zng.rs
|
|
|
|
|
|
|
|
|
|
diff --git a/build.rs b/build.rs
|
|
|
|
|
index cab160a..8d1acf7 100644
|
|
|
|
|
index 1368a12..8d1acf7 100644
|
|
|
|
|
--- a/build.rs
|
|
|
|
|
+++ b/build.rs
|
|
|
|
|
@@ -1,244 +1,9 @@
|
|
|
|
|
@@ -1,198 +1,9 @@
|
|
|
|
|
-use std::env;
|
|
|
|
|
-use std::fs;
|
|
|
|
|
-use std::path::PathBuf;
|
|
|
|
@ -19,31 +21,17 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
fn main() {
|
|
|
|
|
- println!("cargo:rerun-if-env-changed=LIBZ_SYS_STATIC");
|
|
|
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
|
|
|
- println!("cargo:rerun-if-changed=zng/cmake.rs");
|
|
|
|
|
- println!("cargo:rerun-if-changed=zng/cc.rs");
|
|
|
|
|
-
|
|
|
|
|
- let host = env::var("HOST").unwrap();
|
|
|
|
|
- let target = env::var("TARGET").unwrap();
|
|
|
|
|
-
|
|
|
|
|
- let host_and_target_contain = |s| host.contains(s) && target.contains(s);
|
|
|
|
|
-
|
|
|
|
|
- let want_ng = cfg!(any(
|
|
|
|
|
- feature = "zlib-ng",
|
|
|
|
|
- feature = "zlib-ng-no-cmake-experimental-community-maintained"
|
|
|
|
|
- )) && !cfg!(feature = "stock-zlib");
|
|
|
|
|
- let want_ng = cfg!(feature = "zlib-ng") && !cfg!(feature = "stock-zlib");
|
|
|
|
|
-
|
|
|
|
|
- if want_ng && target != "wasm32-unknown-unknown" {
|
|
|
|
|
- return build_zlib_ng(&target, true);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // All android compilers should come with libz by default, so let's just use
|
|
|
|
|
- // the one already there. Likewise, Haiku always ships with libz, so we can
|
|
|
|
|
- // link to it even when cross-compiling.
|
|
|
|
|
- if target.contains("android") || target.contains("haiku") {
|
|
|
|
|
- println!("cargo:rustc-link-lib=z");
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Don't run pkg-config if we're linking statically (we'll build below) and
|
|
|
|
|
- // also don't run pkg-config on FreeBSD/DragonFly. That'll end up printing
|
|
|
|
|
- // `-L /usr/lib` which wreaks havoc with linking to an OpenSSL in /usr/local/lib
|
|
|
|
@ -63,16 +51,7 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- .print_system_libs(false)
|
|
|
|
|
- .probe("zlib");
|
|
|
|
|
- match zlib {
|
|
|
|
|
- Ok(zlib) => {
|
|
|
|
|
- if !zlib.include_paths.is_empty() {
|
|
|
|
|
- let paths = zlib
|
|
|
|
|
- .include_paths
|
|
|
|
|
- .iter()
|
|
|
|
|
- .map(|s| s.display().to_string())
|
|
|
|
|
- .collect::<Vec<_>>();
|
|
|
|
|
- println!("cargo:include={}", paths.join(","));
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- Ok(_) => return,
|
|
|
|
|
- Err(e) => {
|
|
|
|
|
- println!("cargo-warning={}", e.to_string())
|
|
|
|
|
- }
|
|
|
|
@ -85,6 +64,14 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // All android compilers should come with libz by default, so let's just use
|
|
|
|
|
- // the one already there. Likewise, Haiku always ships with libz, so we can
|
|
|
|
|
- // link to it even when cross-compiling.
|
|
|
|
|
- if target.contains("android") || target.contains("haiku") {
|
|
|
|
|
- println!("cargo:rustc-link-lib=z");
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- let mut cfg = cc::Build::new();
|
|
|
|
|
-
|
|
|
|
|
- // Situations where we build unconditionally.
|
|
|
|
@ -96,10 +83,11 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- // Apple platforms have libz.1.dylib, and it's usually available even when
|
|
|
|
|
- // cross compiling (via fat binary or in the target's Xcode SDK)
|
|
|
|
|
- let cross_compiling = target != host;
|
|
|
|
|
- let apple_to_apple = host.contains("-apple-") && target.contains("-apple-");
|
|
|
|
|
- if target.contains("msvc")
|
|
|
|
|
- || target.contains("pc-windows-gnu")
|
|
|
|
|
- || want_static
|
|
|
|
|
- || (cross_compiling && !target.contains("-apple-"))
|
|
|
|
|
- || (cross_compiling && !apple_to_apple)
|
|
|
|
|
- {
|
|
|
|
|
- return build_zlib(&mut cfg, &target);
|
|
|
|
|
- }
|
|
|
|
@ -123,7 +111,7 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- let lib = dst.join("lib");
|
|
|
|
|
-
|
|
|
|
|
- cfg.warnings(false).out_dir(&lib).include("src/zlib");
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
- cfg.file("src/zlib/adler32.c")
|
|
|
|
|
- .file("src/zlib/compress.c")
|
|
|
|
|
- .file("src/zlib/crc32.c")
|
|
|
|
@ -135,7 +123,7 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- .file("src/zlib/trees.c")
|
|
|
|
|
- .file("src/zlib/uncompr.c")
|
|
|
|
|
- .file("src/zlib/zutil.c");
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- if !cfg!(feature = "libc") || target.starts_with("wasm32") {
|
|
|
|
|
- cfg.define("Z_SOLO", None);
|
|
|
|
|
- } else {
|
|
|
|
@ -193,31 +181,13 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- println!("cargo:include={}/include", dst.to_str().unwrap());
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-#[cfg(any(
|
|
|
|
|
- feature = "zlib-ng",
|
|
|
|
|
- feature = "zlib-ng-no-cmake-experimental-community-maintained"
|
|
|
|
|
-))]
|
|
|
|
|
-mod zng {
|
|
|
|
|
- #[cfg_attr(feature = "zlib-ng", path = "cmake.rs")]
|
|
|
|
|
- #[cfg_attr(
|
|
|
|
|
- all(
|
|
|
|
|
- feature = "zlib-ng-no-cmake-experimental-community-maintained",
|
|
|
|
|
- not(feature = "zlib-ng")
|
|
|
|
|
- ),
|
|
|
|
|
- path = "cc.rs"
|
|
|
|
|
- )]
|
|
|
|
|
- mod build_zng;
|
|
|
|
|
-#[cfg(not(feature = "zlib-ng"))]
|
|
|
|
|
-fn build_zlib_ng(_target: &str, _compat: bool) {}
|
|
|
|
|
-
|
|
|
|
|
- pub(super) use build_zng::build_zlib_ng;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-fn build_zlib_ng(_target: &str, _compat: bool) {
|
|
|
|
|
- #[cfg(any(
|
|
|
|
|
- feature = "zlib-ng",
|
|
|
|
|
- feature = "zlib-ng-no-cmake-experimental-community-maintained"
|
|
|
|
|
- ))]
|
|
|
|
|
- zng::build_zlib_ng(_target, _compat);
|
|
|
|
|
-}
|
|
|
|
|
-#[cfg(feature = "zlib-ng")]
|
|
|
|
|
-mod build_zng;
|
|
|
|
|
-#[cfg(feature = "zlib-ng")]
|
|
|
|
|
-use build_zng::build_zlib_ng;
|
|
|
|
|
-
|
|
|
|
|
-fn try_vcpkg() -> bool {
|
|
|
|
|
- // see if there is a vcpkg tree with zlib installed
|
|
|
|
@ -225,17 +195,7 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
- .emit_includes(true)
|
|
|
|
|
- .find_package("zlib")
|
|
|
|
|
- {
|
|
|
|
|
- Ok(zlib) => {
|
|
|
|
|
- if !zlib.include_paths.is_empty() {
|
|
|
|
|
- let paths = zlib
|
|
|
|
|
- .include_paths
|
|
|
|
|
- .iter()
|
|
|
|
|
- .map(|s| s.display().to_string())
|
|
|
|
|
- .collect::<Vec<_>>();
|
|
|
|
|
- println!("cargo:include={}", paths.join(","));
|
|
|
|
|
- }
|
|
|
|
|
- true
|
|
|
|
|
- }
|
|
|
|
|
- Ok(_) => true,
|
|
|
|
|
- Err(e) => {
|
|
|
|
|
- println!("note, vcpkg did not find zlib: {}", e);
|
|
|
|
|
- false
|
|
|
|
@ -245,11 +205,7 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
-
|
|
|
|
|
-fn zlib_installed(cfg: &mut cc::Build) -> bool {
|
|
|
|
|
- let mut cmd = cfg.get_compiler().to_command();
|
|
|
|
|
- cmd.arg("src/smoke.c")
|
|
|
|
|
- .arg("-g0")
|
|
|
|
|
- .arg("-o")
|
|
|
|
|
- .arg("/dev/null")
|
|
|
|
|
- .arg("-lz");
|
|
|
|
|
- cmd.arg("src/smoke.c").arg("-o").arg("/dev/null").arg("-lz");
|
|
|
|
|
-
|
|
|
|
|
- println!("running {:?}", cmd);
|
|
|
|
|
- if let Ok(status) = cmd.status() {
|
|
|
|
@ -260,6 +216,72 @@ index cab160a..8d1acf7 100644
|
|
|
|
|
-
|
|
|
|
|
- false
|
|
|
|
|
}
|
|
|
|
|
diff --git a/build_zng.rs b/build_zng.rs
|
|
|
|
|
deleted file mode 100644
|
|
|
|
|
index 2557625..0000000
|
|
|
|
|
--- a/build_zng.rs
|
|
|
|
|
+++ /dev/null
|
|
|
|
|
@@ -1,60 +0,0 @@
|
|
|
|
|
-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);
|
|
|
|
|
-}
|
|
|
|
|
--
|
|
|
|
|
2.46.2
|
|
|
|
|
2.43.0
|
|
|
|
|
|
|
|
|
|