// This file is generated by cargo_embargo.
// Do not modify this file because the changes will be overridden on upgrade.

package {
    default_applicable_licenses: ["external_rust_crates_flate2_license"],
    default_team: "trendy_team_android_rust",
}

license {
    name: "external_rust_crates_flate2_license",
    visibility: [":__subpackages__"],
    license_kinds: ["SPDX-license-identifier-Apache-2.0"],
    license_text: ["LICENSE"],
}

rust_test {
    name: "flate2_test_src_lib",
    crate_name: "flate2",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.35",
    crate_root: "src/lib.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "any_impl",
        "any_zlib",
        "libz-sys",
        "zlib",
    ],
    rustlibs: [
        "libcrc32fast",
        "liblibz_sys",
        "libquickcheck",
        "librand",
    ],
}

rust_test {
    name: "flate2_test_tests_early-flush",
    crate_name: "early_flush",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.35",
    crate_root: "tests/early-flush.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "any_impl",
        "any_zlib",
        "libz-sys",
        "zlib",
    ],
    rustlibs: [
        "libcrc32fast",
        "libflate2",
        "liblibz_sys",
        "libquickcheck",
        "librand",
    ],
}

rust_test {
    name: "flate2_test_tests_empty-read",
    crate_name: "empty_read",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.35",
    crate_root: "tests/empty-read.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "any_impl",
        "any_zlib",
        "libz-sys",
        "zlib",
    ],
    rustlibs: [
        "libcrc32fast",
        "libflate2",
        "liblibz_sys",
        "libquickcheck",
        "librand",
    ],
}

rust_test {
    name: "flate2_test_tests_gunzip",
    crate_name: "gunzip",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.35",
    crate_root: "tests/gunzip.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "any_impl",
        "any_zlib",
        "libz-sys",
        "zlib",
    ],
    rustlibs: [
        "libcrc32fast",
        "libflate2",
        "liblibz_sys",
        "libquickcheck",
        "librand",
    ],
    data: [
        "tests/corrupt-gz-file.bin",
        "tests/good-file.gz",
        "tests/good-file.txt",
        "tests/multi.gz",
        "tests/multi.txt",
    ],
}

rust_test {
    name: "flate2_test_tests_zero-write",
    crate_name: "zero_write",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.35",
    crate_root: "tests/zero-write.rs",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    test_options: {
        unit_test: true,
    },
    edition: "2018",
    features: [
        "any_impl",
        "any_zlib",
        "libz-sys",
        "zlib",
    ],
    rustlibs: [
        "libcrc32fast",
        "libflate2",
        "liblibz_sys",
        "libquickcheck",
        "librand",
    ],
}

rust_library {
    name: "libflate2",
    host_supported: true,
    crate_name: "flate2",
    cargo_env_compat: true,
    cargo_pkg_version: "1.0.35",
    crate_root: "src/lib.rs",
    edition: "2018",
    features: [
        "any_impl",
        "any_zlib",
        "libz-sys",
        "zlib",
    ],
    rustlibs: [
        "libcrc32fast",
        "liblibz_sys",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
    product_available: true,
    vendor_available: true,
}
