xref: /aosp_15_r20/external/zlib/Android.bp (revision 86ee64e75fa5f8bce2c8c356138035642429cd05)
1*86ee64e7SAndroid Build Coastguard Workerpackage {
2*86ee64e7SAndroid Build Coastguard Worker    default_applicable_licenses: ["external_zlib_license"],
3*86ee64e7SAndroid Build Coastguard Worker}
4*86ee64e7SAndroid Build Coastguard Worker
5*86ee64e7SAndroid Build Coastguard Workerlicense {
6*86ee64e7SAndroid Build Coastguard Worker    name: "external_zlib_license",
7*86ee64e7SAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
8*86ee64e7SAndroid Build Coastguard Worker    license_kinds: [
9*86ee64e7SAndroid Build Coastguard Worker        "SPDX-license-identifier-BSD",
10*86ee64e7SAndroid Build Coastguard Worker        "SPDX-license-identifier-Zlib",
11*86ee64e7SAndroid Build Coastguard Worker    ],
12*86ee64e7SAndroid Build Coastguard Worker    license_text: [
13*86ee64e7SAndroid Build Coastguard Worker        "LICENSE",
14*86ee64e7SAndroid Build Coastguard Worker    ],
15*86ee64e7SAndroid Build Coastguard Worker}
16*86ee64e7SAndroid Build Coastguard Worker
17*86ee64e7SAndroid Build Coastguard Worker// These cflags are shared --- not only between all architectures,
18*86ee64e7SAndroid Build Coastguard Worker// but between libz and libz_stable too.
19*86ee64e7SAndroid Build Coastguard Workercflags_shared = [
20*86ee64e7SAndroid Build Coastguard Worker    // Our compiler does support hidden visibility.
21*86ee64e7SAndroid Build Coastguard Worker    "-DHAVE_HIDDEN",
22*86ee64e7SAndroid Build Coastguard Worker    // Our compiler does support const.
23*86ee64e7SAndroid Build Coastguard Worker    "-DZLIB_CONST",
24*86ee64e7SAndroid Build Coastguard Worker    // Use the traditional Rabin-Karp rolling hash to match zlib DEFLATE output exactly.
25*86ee64e7SAndroid Build Coastguard Worker    "-DCHROMIUM_ZLIB_NO_CASTAGNOLI",
26*86ee64e7SAndroid Build Coastguard Worker    // Enable -O3 for everyone, as chromium's BUILD.gn does.
27*86ee64e7SAndroid Build Coastguard Worker    "-O3",
28*86ee64e7SAndroid Build Coastguard Worker    "-Wall",
29*86ee64e7SAndroid Build Coastguard Worker    "-Werror",
30*86ee64e7SAndroid Build Coastguard Worker    "-Wno-deprecated-non-prototype",
31*86ee64e7SAndroid Build Coastguard Worker    "-Wno-unused",
32*86ee64e7SAndroid Build Coastguard Worker    "-Wno-unused-parameter",
33*86ee64e7SAndroid Build Coastguard Worker]
34*86ee64e7SAndroid Build Coastguard Worker
35*86ee64e7SAndroid Build Coastguard Workercflags_arm = [
36*86ee64e7SAndroid Build Coastguard Worker    // Even the NDK dropped non-neon support in r24.
37*86ee64e7SAndroid Build Coastguard Worker    "-DADLER32_SIMD_NEON",
38*86ee64e7SAndroid Build Coastguard Worker    // HWCAP_CRC32 is checked at runtime, so it's okay to enable crc32
39*86ee64e7SAndroid Build Coastguard Worker    // acceleration for both 64-bit and 32-bit (which may be armv7, at
40*86ee64e7SAndroid Build Coastguard Worker    // least for NDK users).
41*86ee64e7SAndroid Build Coastguard Worker    "-DCRC32_ARMV8_CRC32",
42*86ee64e7SAndroid Build Coastguard Worker    // TODO: DINFLATE_CHUNK_SIMD_NEON causes `atest org.apache.harmony.tests.java.util.zip.DeflaterTest` failures.
43*86ee64e7SAndroid Build Coastguard Worker    // "-DINFLATE_CHUNK_SIMD_NEON",
44*86ee64e7SAndroid Build Coastguard Worker]
45*86ee64e7SAndroid Build Coastguard Workercflags_arm64 = cflags_arm + ["-DINFLATE_CHUNK_READ_64LE"]
46*86ee64e7SAndroid Build Coastguard Worker
47*86ee64e7SAndroid Build Coastguard Workercflags_riscv64 = [
48*86ee64e7SAndroid Build Coastguard Worker    "-DRISCV_RVV",
49*86ee64e7SAndroid Build Coastguard Worker    "-DADLER32_SIMD_RVV",
50*86ee64e7SAndroid Build Coastguard Worker    "-DDEFLATE_SLIDE_HASH_RVV",
51*86ee64e7SAndroid Build Coastguard Worker    "-DINFLATE_CHUNK_GENERIC",
52*86ee64e7SAndroid Build Coastguard Worker    "-DINFLATE_CHUNK_READ_64LE",
53*86ee64e7SAndroid Build Coastguard Worker]
54*86ee64e7SAndroid Build Coastguard Worker
55*86ee64e7SAndroid Build Coastguard Worker// The *host* x86 configuration (with *lower* CPU feature requirements).
56*86ee64e7SAndroid Build Coastguard Workercflags_x86 = [
57*86ee64e7SAndroid Build Coastguard Worker    // See ARMV8_OS_LINUX above.
58*86ee64e7SAndroid Build Coastguard Worker    "-DX86_NOT_WINDOWS",
59*86ee64e7SAndroid Build Coastguard Worker    // Android's host CPU feature requirements are *lower* than the
60*86ee64e7SAndroid Build Coastguard Worker    // corresponding device CPU feature requirements, so it's easier to just
61*86ee64e7SAndroid Build Coastguard Worker    // say "no SIMD for you" rather than specificially disable SSSE3.
62*86ee64e7SAndroid Build Coastguard Worker    // We should have a conversation about that, but not until we at least have
63*86ee64e7SAndroid Build Coastguard Worker    // data on how many Studio users have CPUs that don't make the grade...
64*86ee64e7SAndroid Build Coastguard Worker    // https://issuetracker.google.com/171235570
65*86ee64e7SAndroid Build Coastguard Worker    "-DCPU_NO_SIMD",
66*86ee64e7SAndroid Build Coastguard Worker]
67*86ee64e7SAndroid Build Coastguard Workercflags_x86_64 = cflags_x86 + ["-DINFLATE_CHUNK_READ_64LE"]
68*86ee64e7SAndroid Build Coastguard Worker
69*86ee64e7SAndroid Build Coastguard Worker// The additional *device* x86/x86_64 configuration. Devices have *higher* CPU
70*86ee64e7SAndroid Build Coastguard Worker// feature requirements than the host.
71*86ee64e7SAndroid Build Coastguard Workercflags_android_x86 = [
72*86ee64e7SAndroid Build Coastguard Worker    // Android's x86 and x86-64 ABIs both include SSE2 and SSSE3.
73*86ee64e7SAndroid Build Coastguard Worker    "-UCPU_NO_SIMD",
74*86ee64e7SAndroid Build Coastguard Worker    "-DADLER32_SIMD_SSSE3",
75*86ee64e7SAndroid Build Coastguard Worker    // TODO: DINFLATE_CHUNK_SIMD_SSE2 causes `atest org.apache.harmony.tests.java.util.zip.DeflaterTest` failures.
76*86ee64e7SAndroid Build Coastguard Worker    // "-DINFLATE_CHUNK_SIMD_SSE2",
77*86ee64e7SAndroid Build Coastguard Worker]
78*86ee64e7SAndroid Build Coastguard Worker
79*86ee64e7SAndroid Build Coastguard Workerlibz_srcs = [
80*86ee64e7SAndroid Build Coastguard Worker    "adler32.c",
81*86ee64e7SAndroid Build Coastguard Worker    "adler32_simd.c",
82*86ee64e7SAndroid Build Coastguard Worker    "compress.c",
83*86ee64e7SAndroid Build Coastguard Worker    "cpu_features.c",
84*86ee64e7SAndroid Build Coastguard Worker    "crc32.c",
85*86ee64e7SAndroid Build Coastguard Worker    "crc32_simd.c",
86*86ee64e7SAndroid Build Coastguard Worker    "crc_folding.c",
87*86ee64e7SAndroid Build Coastguard Worker    "deflate.c",
88*86ee64e7SAndroid Build Coastguard Worker    "gzclose.c",
89*86ee64e7SAndroid Build Coastguard Worker    "gzlib.c",
90*86ee64e7SAndroid Build Coastguard Worker    "gzread.c",
91*86ee64e7SAndroid Build Coastguard Worker    "gzwrite.c",
92*86ee64e7SAndroid Build Coastguard Worker    "infback.c",
93*86ee64e7SAndroid Build Coastguard Worker    "inffast.c",
94*86ee64e7SAndroid Build Coastguard Worker    "inflate.c",
95*86ee64e7SAndroid Build Coastguard Worker    "inftrees.c",
96*86ee64e7SAndroid Build Coastguard Worker    "trees.c",
97*86ee64e7SAndroid Build Coastguard Worker    "uncompr.c",
98*86ee64e7SAndroid Build Coastguard Worker    "zutil.c",
99*86ee64e7SAndroid Build Coastguard Worker
100*86ee64e7SAndroid Build Coastguard Worker    // Not-yet-enabled optimizations.
101*86ee64e7SAndroid Build Coastguard Worker    // See https://chromium-review.googlesource.com/749732.
102*86ee64e7SAndroid Build Coastguard Worker    // TODO: causes `atest org.apache.harmony.tests.java.util.zip.DeflaterTest` failures.
103*86ee64e7SAndroid Build Coastguard Worker    //    "contrib/optimizations/inffast_chunk.c",
104*86ee64e7SAndroid Build Coastguard Worker    //    "contrib/optimizations/inflate.c",
105*86ee64e7SAndroid Build Coastguard Worker]
106*86ee64e7SAndroid Build Coastguard Worker
107*86ee64e7SAndroid Build Coastguard Workercc_defaults {
108*86ee64e7SAndroid Build Coastguard Worker    name: "libz_defaults",
109*86ee64e7SAndroid Build Coastguard Worker    defaults: [
110*86ee64e7SAndroid Build Coastguard Worker        "bug_24465209_workaround",
111*86ee64e7SAndroid Build Coastguard Worker    ],
112*86ee64e7SAndroid Build Coastguard Worker
113*86ee64e7SAndroid Build Coastguard Worker    cflags: cflags_shared,
114*86ee64e7SAndroid Build Coastguard Worker    stl: "none",
115*86ee64e7SAndroid Build Coastguard Worker    export_include_dirs: ["."],
116*86ee64e7SAndroid Build Coastguard Worker
117*86ee64e7SAndroid Build Coastguard Worker    host_supported: true,
118*86ee64e7SAndroid Build Coastguard Worker    native_bridge_supported: true,
119*86ee64e7SAndroid Build Coastguard Worker
120*86ee64e7SAndroid Build Coastguard Worker    vendor_available: true,
121*86ee64e7SAndroid Build Coastguard Worker    product_available: true,
122*86ee64e7SAndroid Build Coastguard Worker    ramdisk_available: true,
123*86ee64e7SAndroid Build Coastguard Worker    vendor_ramdisk_available: true,
124*86ee64e7SAndroid Build Coastguard Worker    recovery_available: true,
125*86ee64e7SAndroid Build Coastguard Worker
126*86ee64e7SAndroid Build Coastguard Worker    arch: {
127*86ee64e7SAndroid Build Coastguard Worker        arm: {
128*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_arm,
129*86ee64e7SAndroid Build Coastguard Worker        },
130*86ee64e7SAndroid Build Coastguard Worker        arm64: {
131*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_arm64,
132*86ee64e7SAndroid Build Coastguard Worker        },
133*86ee64e7SAndroid Build Coastguard Worker        riscv64: {
134*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_riscv64,
135*86ee64e7SAndroid Build Coastguard Worker        },
136*86ee64e7SAndroid Build Coastguard Worker        x86: {
137*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_x86,
138*86ee64e7SAndroid Build Coastguard Worker        },
139*86ee64e7SAndroid Build Coastguard Worker        x86_64: {
140*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_x86_64,
141*86ee64e7SAndroid Build Coastguard Worker        },
142*86ee64e7SAndroid Build Coastguard Worker    },
143*86ee64e7SAndroid Build Coastguard Worker    target: {
144*86ee64e7SAndroid Build Coastguard Worker        android_arm: {
145*86ee64e7SAndroid Build Coastguard Worker            cflags: [
146*86ee64e7SAndroid Build Coastguard Worker                // Since we're building for the platform, we claim to be Linux rather than
147*86ee64e7SAndroid Build Coastguard Worker                // Android so we use getauxval() directly instead of the NDK
148*86ee64e7SAndroid Build Coastguard Worker                // android_getCpuFeatures which isn't available to us anyway.
149*86ee64e7SAndroid Build Coastguard Worker                "-DARMV8_OS_LINUX",
150*86ee64e7SAndroid Build Coastguard Worker            ],
151*86ee64e7SAndroid Build Coastguard Worker        },
152*86ee64e7SAndroid Build Coastguard Worker        android_x86: {
153*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_android_x86,
154*86ee64e7SAndroid Build Coastguard Worker        },
155*86ee64e7SAndroid Build Coastguard Worker        android_x86_64: {
156*86ee64e7SAndroid Build Coastguard Worker            cflags: cflags_android_x86,
157*86ee64e7SAndroid Build Coastguard Worker        },
158*86ee64e7SAndroid Build Coastguard Worker        darwin_arm64: {
159*86ee64e7SAndroid Build Coastguard Worker            cflags: [
160*86ee64e7SAndroid Build Coastguard Worker                "-DARMV8_OS_MACOS",
161*86ee64e7SAndroid Build Coastguard Worker            ],
162*86ee64e7SAndroid Build Coastguard Worker        },
163*86ee64e7SAndroid Build Coastguard Worker        linux_bionic: {
164*86ee64e7SAndroid Build Coastguard Worker            enabled: true,
165*86ee64e7SAndroid Build Coastguard Worker        },
166*86ee64e7SAndroid Build Coastguard Worker        linux_arm64: {
167*86ee64e7SAndroid Build Coastguard Worker            cflags: [
168*86ee64e7SAndroid Build Coastguard Worker                // Since we're building for the platform, we claim to be Linux rather than
169*86ee64e7SAndroid Build Coastguard Worker                // Android so we use getauxval() directly instead of the NDK
170*86ee64e7SAndroid Build Coastguard Worker                // android_getCpuFeatures which isn't available to us anyway.
171*86ee64e7SAndroid Build Coastguard Worker                "-DARMV8_OS_LINUX",
172*86ee64e7SAndroid Build Coastguard Worker            ],
173*86ee64e7SAndroid Build Coastguard Worker        },
174*86ee64e7SAndroid Build Coastguard Worker        windows: {
175*86ee64e7SAndroid Build Coastguard Worker            enabled: true,
176*86ee64e7SAndroid Build Coastguard Worker        },
177*86ee64e7SAndroid Build Coastguard Worker    },
178*86ee64e7SAndroid Build Coastguard Worker}
179*86ee64e7SAndroid Build Coastguard Worker
180*86ee64e7SAndroid Build Coastguard Workercc_library {
181*86ee64e7SAndroid Build Coastguard Worker    name: "libz",
182*86ee64e7SAndroid Build Coastguard Worker    defaults: ["libz_defaults"],
183*86ee64e7SAndroid Build Coastguard Worker
184*86ee64e7SAndroid Build Coastguard Worker    srcs: libz_srcs,
185*86ee64e7SAndroid Build Coastguard Worker
186*86ee64e7SAndroid Build Coastguard Worker    unique_host_soname: true,
187*86ee64e7SAndroid Build Coastguard Worker    static_ndk_lib: true,
188*86ee64e7SAndroid Build Coastguard Worker
189*86ee64e7SAndroid Build Coastguard Worker    double_loadable: true,
190*86ee64e7SAndroid Build Coastguard Worker
191*86ee64e7SAndroid Build Coastguard Worker    stubs: {
192*86ee64e7SAndroid Build Coastguard Worker        versions: [
193*86ee64e7SAndroid Build Coastguard Worker            "29",
194*86ee64e7SAndroid Build Coastguard Worker            "30",
195*86ee64e7SAndroid Build Coastguard Worker        ],
196*86ee64e7SAndroid Build Coastguard Worker        symbol_file: "libz.map.txt",
197*86ee64e7SAndroid Build Coastguard Worker    },
198*86ee64e7SAndroid Build Coastguard Worker
199*86ee64e7SAndroid Build Coastguard Worker    // linker/linker64 statically link zlib.
200*86ee64e7SAndroid Build Coastguard Worker    static: {
201*86ee64e7SAndroid Build Coastguard Worker        apex_available: [
202*86ee64e7SAndroid Build Coastguard Worker            "com.android.runtime",
203*86ee64e7SAndroid Build Coastguard Worker        ],
204*86ee64e7SAndroid Build Coastguard Worker    },
205*86ee64e7SAndroid Build Coastguard Worker
206*86ee64e7SAndroid Build Coastguard Worker    // When used by Vendor/Product APEX,
207*86ee64e7SAndroid Build Coastguard Worker    // libz should be treated like non-stable module.
208*86ee64e7SAndroid Build Coastguard Worker    // (Hence, should be bundled in APEX).
209*86ee64e7SAndroid Build Coastguard Worker    target: {
210*86ee64e7SAndroid Build Coastguard Worker        product: {
211*86ee64e7SAndroid Build Coastguard Worker            no_stubs: true,
212*86ee64e7SAndroid Build Coastguard Worker        },
213*86ee64e7SAndroid Build Coastguard Worker        vendor: {
214*86ee64e7SAndroid Build Coastguard Worker            no_stubs: true,
215*86ee64e7SAndroid Build Coastguard Worker        },
216*86ee64e7SAndroid Build Coastguard Worker    },
217*86ee64e7SAndroid Build Coastguard Worker
218*86ee64e7SAndroid Build Coastguard Worker    afdo: true,
219*86ee64e7SAndroid Build Coastguard Worker}
220*86ee64e7SAndroid Build Coastguard Worker
221*86ee64e7SAndroid Build Coastguard Worker// A build of libz with identical behavior between architectures.
222*86ee64e7SAndroid Build Coastguard Worker// Used by legacy OTA tools such as imgdiff and updater and their tests.
223*86ee64e7SAndroid Build Coastguard Worker// New code should not use this library, because new code should not make
224*86ee64e7SAndroid Build Coastguard Worker// assumptions about the _compressed_ bits, beyond the fact that they will
225*86ee64e7SAndroid Build Coastguard Worker// decompress to the same input bytes. The actual compressed byte sequences
226*86ee64e7SAndroid Build Coastguard Worker// can and do differ over time.
227*86ee64e7SAndroid Build Coastguard Workercc_library {
228*86ee64e7SAndroid Build Coastguard Worker    name: "libz_stable",
229*86ee64e7SAndroid Build Coastguard Worker    visibility: [
230*86ee64e7SAndroid Build Coastguard Worker        "//bootable/recovery/applypatch",
231*86ee64e7SAndroid Build Coastguard Worker        "//bootable/recovery/tests",
232*86ee64e7SAndroid Build Coastguard Worker        "//bootable/recovery/updater",
233*86ee64e7SAndroid Build Coastguard Worker        "//bootable/deprecated-ota/applypatch",
234*86ee64e7SAndroid Build Coastguard Worker        "//bootable/deprecated-ota/tests",
235*86ee64e7SAndroid Build Coastguard Worker        "//bootable/deprecated-ota/updater",
236*86ee64e7SAndroid Build Coastguard Worker    ],
237*86ee64e7SAndroid Build Coastguard Worker    // We only use the shared flags here; the whole point is that this
238*86ee64e7SAndroid Build Coastguard Worker    // library behaves the same on all different architectures.
239*86ee64e7SAndroid Build Coastguard Worker    cflags: cflags_shared,
240*86ee64e7SAndroid Build Coastguard Worker    stl: "none",
241*86ee64e7SAndroid Build Coastguard Worker    export_include_dirs: ["."],
242*86ee64e7SAndroid Build Coastguard Worker    srcs: libz_srcs,
243*86ee64e7SAndroid Build Coastguard Worker    host_supported: true,
244*86ee64e7SAndroid Build Coastguard Worker    vendor_available: true,
245*86ee64e7SAndroid Build Coastguard Worker    recovery_available: true,
246*86ee64e7SAndroid Build Coastguard Worker}
247*86ee64e7SAndroid Build Coastguard Worker
248*86ee64e7SAndroid Build Coastguard Workercc_binary {
249*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_bench",
250*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/bench/zlib_bench.cc"],
251*86ee64e7SAndroid Build Coastguard Worker    cflags: [
252*86ee64e7SAndroid Build Coastguard Worker        "-Wall",
253*86ee64e7SAndroid Build Coastguard Worker        "-Werror",
254*86ee64e7SAndroid Build Coastguard Worker        "-Wno-deprecated-non-prototype",
255*86ee64e7SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
256*86ee64e7SAndroid Build Coastguard Worker    ],
257*86ee64e7SAndroid Build Coastguard Worker    host_supported: true,
258*86ee64e7SAndroid Build Coastguard Worker    shared_libs: ["libz"],
259*86ee64e7SAndroid Build Coastguard Worker    // We build zlib_bench32 and zlib_bench64 so it's easy to test LP32.
260*86ee64e7SAndroid Build Coastguard Worker    compile_multilib: "both",
261*86ee64e7SAndroid Build Coastguard Worker    multilib: {
262*86ee64e7SAndroid Build Coastguard Worker        lib32: {
263*86ee64e7SAndroid Build Coastguard Worker            suffix: "32",
264*86ee64e7SAndroid Build Coastguard Worker        },
265*86ee64e7SAndroid Build Coastguard Worker        lib64: {
266*86ee64e7SAndroid Build Coastguard Worker            suffix: "64",
267*86ee64e7SAndroid Build Coastguard Worker        },
268*86ee64e7SAndroid Build Coastguard Worker    },
269*86ee64e7SAndroid Build Coastguard Worker}
270*86ee64e7SAndroid Build Coastguard Worker
271*86ee64e7SAndroid Build Coastguard Workercc_library {
272*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_google_compression_utils_portable",
273*86ee64e7SAndroid Build Coastguard Worker    defaults: ["libz_defaults"],
274*86ee64e7SAndroid Build Coastguard Worker    srcs: [
275*86ee64e7SAndroid Build Coastguard Worker        "google/compression_utils_portable.cc",
276*86ee64e7SAndroid Build Coastguard Worker    ],
277*86ee64e7SAndroid Build Coastguard Worker    export_include_dirs: ["google"],
278*86ee64e7SAndroid Build Coastguard Worker    host_supported: true,
279*86ee64e7SAndroid Build Coastguard Worker    shared_libs: ["libz"],
280*86ee64e7SAndroid Build Coastguard Worker    sdk_version: "minimum",
281*86ee64e7SAndroid Build Coastguard Worker    visibility: ["//external/angle"],
282*86ee64e7SAndroid Build Coastguard Worker    apex_available: [
283*86ee64e7SAndroid Build Coastguard Worker        "com.android.runtime",
284*86ee64e7SAndroid Build Coastguard Worker        "//apex_available:platform",
285*86ee64e7SAndroid Build Coastguard Worker    ],
286*86ee64e7SAndroid Build Coastguard Worker}
287*86ee64e7SAndroid Build Coastguard Worker
288*86ee64e7SAndroid Build Coastguard Workercc_library_static {
289*86ee64e7SAndroid Build Coastguard Worker    name: "tflite_support_libz",
290*86ee64e7SAndroid Build Coastguard Worker    defaults: ["libz_defaults"],
291*86ee64e7SAndroid Build Coastguard Worker    srcs: [
292*86ee64e7SAndroid Build Coastguard Worker        "contrib/minizip/ioapi.c",
293*86ee64e7SAndroid Build Coastguard Worker        "contrib/minizip/unzip.c",
294*86ee64e7SAndroid Build Coastguard Worker    ],
295*86ee64e7SAndroid Build Coastguard Worker    sdk_version: "current",
296*86ee64e7SAndroid Build Coastguard Worker    // TODO: switch this to "apex_inherit".
297*86ee64e7SAndroid Build Coastguard Worker    min_sdk_version: "30",
298*86ee64e7SAndroid Build Coastguard Worker    apex_available: [
299*86ee64e7SAndroid Build Coastguard Worker        "//apex_available:platform",
300*86ee64e7SAndroid Build Coastguard Worker        "com.android.adservices",
301*86ee64e7SAndroid Build Coastguard Worker        "com.android.extservices",
302*86ee64e7SAndroid Build Coastguard Worker    ],
303*86ee64e7SAndroid Build Coastguard Worker}
304*86ee64e7SAndroid Build Coastguard Worker
305*86ee64e7SAndroid Build Coastguard Workercc_test {
306*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_tests",
307*86ee64e7SAndroid Build Coastguard Worker    srcs: [
308*86ee64e7SAndroid Build Coastguard Worker        "contrib/tests/infcover.cc",
309*86ee64e7SAndroid Build Coastguard Worker        "contrib/tests/utils_unittest.cc",
310*86ee64e7SAndroid Build Coastguard Worker    ],
311*86ee64e7SAndroid Build Coastguard Worker    cflags: [
312*86ee64e7SAndroid Build Coastguard Worker        "-DCMAKE_STANDALONE_UNITTESTS",
313*86ee64e7SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
314*86ee64e7SAndroid Build Coastguard Worker    ],
315*86ee64e7SAndroid Build Coastguard Worker    include_dirs: [
316*86ee64e7SAndroid Build Coastguard Worker        // These tests include "gtest.h" rather than the usual "gtest/gtest.h".
317*86ee64e7SAndroid Build Coastguard Worker        "external/googletest/googletest/include/gtest/",
318*86ee64e7SAndroid Build Coastguard Worker    ],
319*86ee64e7SAndroid Build Coastguard Worker    shared_libs: ["libz"],
320*86ee64e7SAndroid Build Coastguard Worker    static_libs: ["zlib_google_compression_utils_portable"],
321*86ee64e7SAndroid Build Coastguard Worker    host_supported: true,
322*86ee64e7SAndroid Build Coastguard Worker    test_suites: ["device-tests"],
323*86ee64e7SAndroid Build Coastguard Worker}
324*86ee64e7SAndroid Build Coastguard Worker
325*86ee64e7SAndroid Build Coastguard Workerndk_headers {
326*86ee64e7SAndroid Build Coastguard Worker    name: "libz_headers",
327*86ee64e7SAndroid Build Coastguard Worker    from: "",
328*86ee64e7SAndroid Build Coastguard Worker    to: "",
329*86ee64e7SAndroid Build Coastguard Worker    srcs: [
330*86ee64e7SAndroid Build Coastguard Worker        "zconf.h",
331*86ee64e7SAndroid Build Coastguard Worker        "zlib.h",
332*86ee64e7SAndroid Build Coastguard Worker    ],
333*86ee64e7SAndroid Build Coastguard Worker    license: "LICENSE",
334*86ee64e7SAndroid Build Coastguard Worker}
335*86ee64e7SAndroid Build Coastguard Worker
336*86ee64e7SAndroid Build Coastguard Workerndk_library {
337*86ee64e7SAndroid Build Coastguard Worker    name: "libz",
338*86ee64e7SAndroid Build Coastguard Worker    symbol_file: "libz.map.txt",
339*86ee64e7SAndroid Build Coastguard Worker    first_version: "9",
340*86ee64e7SAndroid Build Coastguard Worker    unversioned_until: "current",
341*86ee64e7SAndroid Build Coastguard Worker}
342*86ee64e7SAndroid Build Coastguard Worker
343*86ee64e7SAndroid Build Coastguard Worker// Export zlib headers for inclusion in the musl sysroot.
344*86ee64e7SAndroid Build Coastguard Workergenrule {
345*86ee64e7SAndroid Build Coastguard Worker    name: "libc_musl_sysroot_zlib_headers",
346*86ee64e7SAndroid Build Coastguard Worker    visibility: ["//external/musl"],
347*86ee64e7SAndroid Build Coastguard Worker    srcs: [
348*86ee64e7SAndroid Build Coastguard Worker        "LICENSE",
349*86ee64e7SAndroid Build Coastguard Worker        "zconf.h",
350*86ee64e7SAndroid Build Coastguard Worker        "zlib.h",
351*86ee64e7SAndroid Build Coastguard Worker    ],
352*86ee64e7SAndroid Build Coastguard Worker    out: ["libc_musl_sysroot_zlib_headers.zip"],
353*86ee64e7SAndroid Build Coastguard Worker    tools: [
354*86ee64e7SAndroid Build Coastguard Worker        "soong_zip",
355*86ee64e7SAndroid Build Coastguard Worker        "zip2zip",
356*86ee64e7SAndroid Build Coastguard Worker    ],
357*86ee64e7SAndroid Build Coastguard Worker    cmd: "$(location soong_zip) -o $(genDir)/sysroot.zip -symlinks=false" +
358*86ee64e7SAndroid Build Coastguard Worker        // NOTICE
359*86ee64e7SAndroid Build Coastguard Worker        " -j -f $(location LICENSE) " +
360*86ee64e7SAndroid Build Coastguard Worker        // headers
361*86ee64e7SAndroid Build Coastguard Worker        " -j -P include " +
362*86ee64e7SAndroid Build Coastguard Worker        "  -f $(location zconf.h) " +
363*86ee64e7SAndroid Build Coastguard Worker        "  -f $(location zlib.h) " +
364*86ee64e7SAndroid Build Coastguard Worker        " && " +
365*86ee64e7SAndroid Build Coastguard Worker        "$(location zip2zip) -i $(genDir)/sysroot.zip -o $(out) " +
366*86ee64e7SAndroid Build Coastguard Worker        " include/**/*:include " +
367*86ee64e7SAndroid Build Coastguard Worker        " LICENSE:NOTICE.zlib",
368*86ee64e7SAndroid Build Coastguard Worker}
369*86ee64e7SAndroid Build Coastguard Worker
370*86ee64e7SAndroid Build Coastguard Workercc_defaults {
371*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_fuzz_defaults",
372*86ee64e7SAndroid Build Coastguard Worker    static_libs: ["libz"],
373*86ee64e7SAndroid Build Coastguard Worker    host_supported: true,
374*86ee64e7SAndroid Build Coastguard Worker}
375*86ee64e7SAndroid Build Coastguard Worker
376*86ee64e7SAndroid Build Coastguard Workercc_fuzz {
377*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_deflate_fuzzer",
378*86ee64e7SAndroid Build Coastguard Worker    defaults: ["zlib_fuzz_defaults"],
379*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/tests/fuzzers/deflate_fuzzer.cc"],
380*86ee64e7SAndroid Build Coastguard Worker}
381*86ee64e7SAndroid Build Coastguard Worker
382*86ee64e7SAndroid Build Coastguard Workercc_fuzz {
383*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_deflate_set_dictionary_fuzzer",
384*86ee64e7SAndroid Build Coastguard Worker    defaults: ["zlib_fuzz_defaults"],
385*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/tests/fuzzers/deflate_set_dictionary_fuzzer.cc"],
386*86ee64e7SAndroid Build Coastguard Worker}
387*86ee64e7SAndroid Build Coastguard Worker
388*86ee64e7SAndroid Build Coastguard Workercc_fuzz {
389*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_inflate_fuzzer",
390*86ee64e7SAndroid Build Coastguard Worker    defaults: ["zlib_fuzz_defaults"],
391*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/tests/fuzzers/inflate_fuzzer.cc"],
392*86ee64e7SAndroid Build Coastguard Worker}
393*86ee64e7SAndroid Build Coastguard Worker
394*86ee64e7SAndroid Build Coastguard Workercc_fuzz {
395*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_inflate_with_header_fuzzer",
396*86ee64e7SAndroid Build Coastguard Worker    defaults: ["zlib_fuzz_defaults"],
397*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/tests/fuzzers/inflate_with_header_fuzzer.cc"],
398*86ee64e7SAndroid Build Coastguard Worker}
399*86ee64e7SAndroid Build Coastguard Worker
400*86ee64e7SAndroid Build Coastguard Workercc_fuzz {
401*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_streaming_inflate_fuzzer",
402*86ee64e7SAndroid Build Coastguard Worker    defaults: ["zlib_fuzz_defaults"],
403*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/tests/fuzzers/streaming_inflate_fuzzer.cc"],
404*86ee64e7SAndroid Build Coastguard Worker    fuzz_config: {
405*86ee64e7SAndroid Build Coastguard Worker        libfuzzer_options: ["max_len=256000"],
406*86ee64e7SAndroid Build Coastguard Worker    },
407*86ee64e7SAndroid Build Coastguard Worker}
408*86ee64e7SAndroid Build Coastguard Worker
409*86ee64e7SAndroid Build Coastguard Workercc_fuzz {
410*86ee64e7SAndroid Build Coastguard Worker    name: "zlib_uncompress_fuzzer",
411*86ee64e7SAndroid Build Coastguard Worker    defaults: ["zlib_fuzz_defaults"],
412*86ee64e7SAndroid Build Coastguard Worker    srcs: ["contrib/tests/fuzzers/uncompress_fuzzer.cc"],
413*86ee64e7SAndroid Build Coastguard Worker}
414