platform_system_core/libziparchive/Android.bp
Tianjie 6ab29129ec Implement the functions to parse zip64 structs
Implement the logic to parse zip64 eocd and zip64 extended info
in the extra field. Also add unit tests and python tests which
create packages larger than 4GiB.

The extraction of zip entry size > 4GiB will be supported in the follow
ups.

Bug: 150900468
Test: unit tests pass
Change-Id: I4cd9ebbd9709b3d2f9cd293625d2c79024bb45a5
2020-03-24 15:06:57 -07:00

231 lines
5.2 KiB
Text

//
// Copyright (C) 2013 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
cc_defaults {
name: "libziparchive_flags",
cflags: [
// ZLIB_CONST turns on const for input buffers, which is pretty standard.
"-DZLIB_CONST",
"-Werror",
"-Wall",
"-D_FILE_OFFSET_BITS=64",
],
cppflags: [
// Incorrectly warns when C++11 empty brace {} initializer is used.
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61489
"-Wno-missing-field-initializers",
"-Wconversion",
"-Wno-sign-conversion",
],
// Enable -Wold-style-cast only for non-Windows targets. _islower_l,
// _isupper_l etc. in MinGW locale_win32.h (included from
// libcxx/include/__locale) has an old-style-cast.
target: {
not_windows: {
cppflags: [
"-Wold-style-cast",
],
},
},
sanitize: {
misc_undefined: [
"signed-integer-overflow",
"unsigned-integer-overflow",
"shift",
"integer-divide-by-zero",
"implicit-signed-integer-truncation",
// TODO: Fix crash when we enable this option
// "implicit-unsigned-integer-truncation",
// TODO: not tested yet.
// "implicit-integer-sign-change",
],
},
}
cc_defaults {
name: "libziparchive_defaults",
srcs: [
"zip_archive.cc",
"zip_archive_stream_entry.cc",
"zip_cd_entry_map.cc",
"zip_error.cpp",
"zip_writer.cc",
],
target: {
windows: {
cflags: ["-mno-ms-bitfields"],
enabled: true,
},
},
shared_libs: [
"libbase",
"liblog",
],
// for FRIEND_TEST
static_libs: ["libgtest_prod"],
export_static_lib_headers: ["libgtest_prod"],
export_include_dirs: ["include"],
}
cc_library {
name: "libziparchive",
host_supported: true,
vendor_available: true,
recovery_available: true,
native_bridge_supported: true,
vndk: {
enabled: true,
},
double_loadable: true,
export_shared_lib_headers: ["libbase"],
defaults: [
"libziparchive_defaults",
"libziparchive_flags",
],
shared_libs: [
"liblog",
"libbase",
"libz",
],
target: {
linux_bionic: {
enabled: true,
},
},
}
// Tests.
cc_test {
name: "ziparchive-tests",
host_supported: true,
defaults: ["libziparchive_flags"],
data: [
"testdata/**/*",
],
srcs: [
"entry_name_utils_test.cc",
"zip_archive_test.cc",
"zip_writer_test.cc",
],
shared_libs: [
"libbase",
"liblog",
],
static_libs: [
"libziparchive",
"libz",
"libutils",
],
target: {
host: {
cppflags: ["-Wno-unnamed-type-template-args"],
},
windows: {
enabled: true,
},
},
test_suites: ["device-tests"],
}
// Performance benchmarks.
cc_benchmark {
name: "ziparchive-benchmarks",
defaults: ["libziparchive_flags"],
srcs: [
"zip_archive_benchmark.cpp",
],
shared_libs: [
"libbase",
"liblog",
],
static_libs: [
"libziparchive",
"libz",
"libutils",
],
target: {
host: {
cppflags: ["-Wno-unnamed-type-template-args"],
},
},
}
cc_binary {
name: "ziptool",
defaults: ["libziparchive_flags"],
srcs: ["ziptool.cpp"],
shared_libs: [
"libbase",
"libziparchive",
],
recovery_available: true,
host_supported: true,
target: {
android: {
symlinks: ["unzip", "zipinfo"],
},
},
}
cc_fuzz {
name: "libziparchive_fuzzer",
srcs: ["libziparchive_fuzzer.cpp"],
static_libs: ["libziparchive", "libbase", "libz", "liblog"],
host_supported: true,
corpus: ["testdata/*"],
}
sh_test {
name: "ziptool-tests",
src: "run-ziptool-tests-on-android.sh",
filename: "run-ziptool-tests-on-android.sh",
test_suites: ["general-tests"],
host_supported: true,
device_supported: false,
test_config: "ziptool-tests.xml",
data: ["cli-tests/**/*"],
target_required: ["cli-test", "ziptool"],
}
python_test_host {
name: "ziparchive_tests_large",
srcs: ["test_ziparchive_large.py"],
main: "test_ziparchive_large.py",
version: {
py2: {
enabled: true,
embedded_launcher: false,
},
py3: {
enabled: false,
embedded_launcher: false,
},
},
test_suites: ["general-tests"],
}