diff --git a/.gitmodules b/.gitmodules index d2290de35..a1502149e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,9 +13,6 @@ [submodule "libcxx"] path = native/src/external/libcxx url = https://github.com/topjohnwu/libcxx.git -[submodule "zlib"] - path = native/src/external/zlib - url = https://android.googlesource.com/platform/external/zlib [submodule "zopfli"] path = native/src/external/zopfli url = https://github.com/google/zopfli.git diff --git a/native/src/Android.mk b/native/src/Android.mk index aa16a3e85..d60ab3cbb 100644 --- a/native/src/Android.mk +++ b/native/src/Android.mk @@ -89,7 +89,6 @@ LOCAL_STATIC_LIBRARIES := \ liblzma \ liblz4 \ libbz2 \ - libz \ libzopfli \ libboot-rs diff --git a/native/src/Cargo.lock b/native/src/Cargo.lock index 302ccafd2..58b4df3d9 100644 --- a/native/src/Cargo.lock +++ b/native/src/Cargo.lock @@ -452,6 +452,15 @@ version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" +[[package]] +name = "libz-rs-sys" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "902bc563b5d65ad9bba616b490842ef0651066a1a1dc3ce1087113ffcb873c8d" +dependencies = [ + "zlib-rs", +] + [[package]] name = "log" version = "0.4.26" @@ -489,6 +498,7 @@ dependencies = [ "der", "digest", "fdt", + "libz-rs-sys", "num-traits", "p256", "p384", @@ -1048,3 +1058,9 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zlib-rs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b20717f0917c908dc63de2e44e97f1e6b126ca58d0e391cee86d504eb8fbd05" diff --git a/native/src/Cargo.toml b/native/src/Cargo.toml index 8e0f4f91b..17374a381 100644 --- a/native/src/Cargo.toml +++ b/native/src/Cargo.toml @@ -34,6 +34,7 @@ syn = "2" quote = "1" proc-macro2 = "1" argh = { version = "0.1.13", default-features = false } +libz-rs-sys = { version = "0.4.2", default-features = false, features=["c-allocator"] } # Pin version to prevent cargo update break builds block-buffer = "=0.11.0-rc.3" diff --git a/native/src/boot/Cargo.toml b/native/src/boot/Cargo.toml index e02ff6943..ffa9af7c9 100644 --- a/native/src/boot/Cargo.toml +++ b/native/src/boot/Cargo.toml @@ -32,3 +32,4 @@ der = { workspace = true, features = ["derive", "pem"] } fdt = { workspace = true } bytemuck = { workspace = true, features = ["derive", "min_const_generics"] } num-traits = { workspace = true } +libz-rs-sys = { workspace = true } diff --git a/native/src/boot/compress.cpp b/native/src/boot/compress.cpp index 49daa32e1..cb099c666 100644 --- a/native/src/boot/compress.cpp +++ b/native/src/boot/compress.cpp @@ -153,7 +153,7 @@ class zopfli_encoder : public chunk_out_stream { public: explicit zopfli_encoder(out_strm_ptr &&base) : chunk_out_stream(std::move(base), ZOPFLI_MASTER_BLOCK_SIZE), - zo{}, out(nullptr), outsize(0), crc(crc32_z(0L, Z_NULL, 0)), in_total(0), bp(0) { + zo{}, out(nullptr), outsize(0), crc(crc32(0L, Z_NULL, 0)), in_total(0), bp(0) { ZopfliInitOptions(&zo); // This config is already better than gzip -9 @@ -198,7 +198,7 @@ protected: auto in = static_cast(buf); in_total += len; - crc = crc32_z(crc, in, len); + crc = crc32(crc, in, len); ZopfliDeflatePart(&zo, 2, final, in, 0, len, &bp, &out, &outsize); diff --git a/native/src/boot/lib.rs b/native/src/boot/lib.rs index a85ac1c90..43f03e457 100644 --- a/native/src/boot/lib.rs +++ b/native/src/boot/lib.rs @@ -3,6 +3,7 @@ #![feature(iter_intersperse)] #![feature(try_blocks)] +pub use libz_rs_sys::*; pub use base; use cpio::cpio_commands; use dtb::dtb_commands; diff --git a/native/src/external/Android.mk b/native/src/external/Android.mk index 60c13de90..083ba4803 100644 --- a/native/src/external/Android.mk +++ b/native/src/external/Android.mk @@ -233,33 +233,6 @@ LOCAL_SRC_FILES := \ lsplt/lsplt/src/main/jni/lsplt.cc include $(BUILD_STATIC_LIBRARY) -# libz.a -include $(CLEAR_VARS) -LOCAL_MODULE:= libz -LOCAL_C_INCLUDES := $(LOCAL_PATH)/zlib -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) -LOCAL_CFLAGS := \ - -DHAVE_HIDDEN -DZLIB_CONST -Wall -Werror \ - -Wno-unused -Wno-unused-parameter -Wno-deprecated-non-prototype -LOCAL_SRC_FILES := \ - zlib/adler32.c \ - zlib/compress.c \ - zlib/cpu_features.c \ - zlib/crc32.c \ - zlib/deflate.c \ - zlib/gzclose.c \ - zlib/gzlib.c \ - zlib/gzread.c \ - zlib/gzwrite.c \ - zlib/infback.c \ - zlib/inffast.c \ - zlib/inflate.c \ - zlib/inftrees.c \ - zlib/trees.c \ - zlib/uncompr.c \ - zlib/zutil.c -include $(BUILD_STATIC_LIBRARY) - # libzopfli.a include $(CLEAR_VARS) LOCAL_MODULE:= libzopfli diff --git a/native/src/external/zlib b/native/src/external/zlib deleted file mode 160000 index 3a0aa2b3d..000000000 --- a/native/src/external/zlib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3a0aa2b3df38ad6298f91c4d8afef708bb4f088e