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 = [
    // 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",
    // 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",
        "-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_x86: {
            cflags: cflags_android_x86,
        },
        android_x86_64: {
            cflags: cflags_android_x86,
        },
    },
}

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",
    },
}

// 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",
        "-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",
}
