package {
    default_applicable_licenses: ["external_zlib_license"],
}

license {
    name: "external_zlib_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-Zlib",
    ],
    license_text: [
        "LICENSE",
    ],
}

srcs_opt = [
    "adler32_simd.c",
    // See https://chromium-review.googlesource.com/749732.
    // TODO: causes `atest org.apache.harmony.tests.java.util.zip.DeflaterTest` failures.
    //    "contrib/optimizations/inffast_chunk.c",
    //    "contrib/optimizations/inflate.c",
    // This file doesn't build for non-neon, so it can't be in the main srcs.
    "crc32_simd.c",
]

cflags_arm = [
    // Testing with zlib_bench shows -O3 is a win for ARM but a bit of a wash
    // for x86, so match the BUILD file in only enabling this for ARM.
    "-O3",
    // We need a non-NEON libz.a for the NDK, and cpu_features.c won't build
    // without this.
    "-DCPU_NO_SIMD",
]
cflags_arm_neon = [
    // Undo the -DCPU_NO_SIMD from the generic (non-NEON) ARM flags.
    "-UCPU_NO_SIMD",
    // We no longer support non-Neon platform builds, but the NDK just has one libz.
    "-DADLER32_SIMD_NEON",
    // TODO: causes `atest org.apache.harmony.tests.java.util.zip.DeflaterTest` failures.
    //    "-DINFLATE_CHUNK_SIMD_NEON",
    // HWCAP_CRC32 is checked at runtime, so it's okay to turn crc32
    // acceleration on for both 32- and 64-bit.
    "-DCRC32_ARMV8_CRC32",
]
cflags_arm64 = cflags_arm + cflags_arm_neon

// The *host* x86 configuration (with *lower* CPU feature requirements).
cflags_x86 = [
    // See ARMV8_OS_LINUX above.
    "-DX86_NOT_WINDOWS",
    // TODO: see arm above.
    //    "-DINFLATE_CHUNK_SIMD_SSE2",
    // Android's host CPU feature requirements are *lower* than the
    // corresponding device CPU feature requirements, so it's easier to just
    // say "no SIMD for you" rather than specificially disable SSSE3.
    // We should have a conversation about that, but not until we at least have
    // data on how many Studio users have CPUs that don't make the grade...
    // https://issuetracker.google.com/171235570
    "-DCPU_NO_SIMD",
]
// The *device* x86 configuration (with *higher* CPU feature requirements).
cflags_android_x86 = [
    // Android's x86/x86-64 ABI includes SSE2 and SSSE3.
    "-UCPU_NO_SIMD",
    "-DADLER32_SIMD_SSSE3",
    // PCLMUL isn't in the ABI, but it won't actually be used unless CPUID
    // reports that the processor really does have the instruction.
    "-mpclmul",
    "-DCRC32_SIMD_SSE42_PCLMUL",
]
srcs_x86 = [
    "crc_folding.c",
    "fill_window_sse.c",
] + srcs_opt

// This optimization is applicable to arm64 and x86-64.
cflags_64 = ["-DINFLATE_CHUNK_READ_64LE"]

libz_srcs = [
    "adler32.c",
    "compress.c",
    "cpu_features.c",
    "crc32.c",
    "deflate.c",
    "gzclose.c",
    "gzlib.c",
    "gzread.c",
    "gzwrite.c",
    "infback.c",
    "inffast.c",
    "inflate.c",
    "inftrees.c",
    "trees.c",
    "uncompr.c",
    "zutil.c",
]

cc_defaults {
    name: "libz_defaults",

    cflags: [
        // We do support hidden visibility, so turn that on.
        "-DHAVE_HIDDEN",
        // We do support const, so turn that on.
        "-DZLIB_CONST",
        // Enable -O3 as per chromium.
        "-O3",
        "-Wall",
        "-Werror",
        "-Wno-unused",
        "-Wno-unused-parameter",
    ],
    stl: "none",
    export_include_dirs: ["."],
    srcs: libz_srcs,

    arch: {
        arm: {
            // TODO: This is to work around b/24465209. Remove after root cause
            // is fixed.
            pack_relocations: false,
            ldflags: ["-Wl,--hash-style=both"],

            cflags: cflags_arm,
            neon: {
                cflags: cflags_arm_neon,
                srcs: srcs_opt,
            },
        },
        arm64: {
            cflags: cflags_arm64 + cflags_64,
            srcs: srcs_opt,
        },
        x86: {
            cflags: cflags_x86,
            srcs: srcs_x86,
        },
        x86_64: {
            cflags: cflags_x86 + cflags_64,
            srcs: srcs_x86,
        },
    },
    target: {
        android_arm: {
            cflags: [
                // Since we're building for the platform, we claim to be Linux rather than
                // Android so we use getauxval() directly instead of the NDK
                // android_getCpuFeatures which isn't available to us anyway.
                "-DARMV8_OS_LINUX",
            ],
        },
        android_x86: {
            cflags: cflags_android_x86,
        },
        android_x86_64: {
            cflags: cflags_android_x86,
        },
        darwin_arm64: {
            cflags: [
                "-DARMV8_OS_MACOS",
            ],
        },
        linux_arm64: {
            cflags: [
                // Since we're building for the platform, we claim to be Linux rather than
                // Android so we use getauxval() directly instead of the NDK
                // android_getCpuFeatures which isn't available to us anyway.
                "-DARMV8_OS_LINUX",
            ],
        },
    },
}

cc_library {
    name: "libz",
    defaults: ["libz_defaults"],

    host_supported: true,
    unique_host_soname: true,
    static_ndk_lib: true,

    vendor_available: true,
    product_available: true,
    vndk: {
        enabled: true,
        support_system_process: true,
    },
    ramdisk_available: true,
    vendor_ramdisk_available: true,
    recovery_available: true,
    native_bridge_supported: true,

    target: {
        linux_bionic: {
            enabled: true,
        },
        windows: {
            enabled: true,
        },
    },

    stubs: {
        versions: [
            "29",
            "30",
        ],
        symbol_file: "libz.map.txt",
    },
    min_sdk_version: "30",
    sdk_version: "current", /* TODO(b211800738): This needs to change to Tiramisu */
}

// A more stable build of libz. Build configuration of this library should be
// the same for different targets. This is only used by imgdiff.

cc_library {
    name: "libz_stable",
    visibility: [
        "//bootable/recovery/applypatch",
        "//bootable/recovery/tests",
    ],
    cflags: [
        // We do support hidden visibility, so turn that on.
        "-DHAVE_HIDDEN",
        // We do support const, so turn that on.
        "-DZLIB_CONST",
        // Enable -O3 as per chromium
        "-O3",
        "-Wall",
        "-Werror",
        "-Wno-unused",
        "-Wno-unused-parameter",
    ],
    stl: "none",
    export_include_dirs: ["."],
    srcs: libz_srcs,

    host_supported: true,
    vendor_available: true,
    recovery_available: true,
}

cc_binary_host {
    name: "minigzip",
    srcs: ["contrib/minigzip/minigzip.c"],
    cflags: [
        "-Wall",
        "-Werror",
        "-DUSE_MMAP",
    ],
    static_libs: ["libz"],
    stl: "none",
}

cc_binary {
    name: "zlib_bench",
    srcs: ["contrib/bench/zlib_bench.cc"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    host_supported: true,
    shared_libs: ["libz"],
    // We build zlib_bench32 and zlib_bench64 so it's easy to test LP32.
    compile_multilib: "both",
    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },
}

cc_test {
    name: "zlib_tests",
    srcs: [
        "contrib/tests/infcover.cc",
        "contrib/tests/utils_unittest.cc",
        "google/compression_utils_portable.cc",
    ],
    include_dirs: [
        "external/zlib/google",
        // These tests include "gtest.h" rather than the usual "gtest/gtest.h".
        "external/googletest/googletest/include/gtest/",
    ],
    shared_libs: ["libz"],
    host_supported: true,
    test_suites: ["device-tests"],
}

ndk_headers {
    name: "libz_headers",
    from: "",
    to: "",
    srcs: [
        "zconf.h",
        "zlib.h",
    ],
    license: "LICENSE",
}

ndk_library {
    name: "libz",
    symbol_file: "libz.map.txt",
    first_version: "9",
    unversioned_until: "current",
}
