// This file is generated by cargo2android.py --config cargo2android.json.
// Do not modify this file as changes will be overridden on upgrade.



package {
    default_applicable_licenses: ["external_rust_crates_num-bigint_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
// See: http://go/android-license-faq
license {
    name: "external_rust_crates_num-bigint_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "LICENSE-APACHE",
        "LICENSE-MIT",
    ],
}

genrule {
    name: "copy_num-bigint_build_out",
    srcs: ["out/*"],
    cmd: "cp $(in) $(genDir)",
    out: [
        "probe0.ll",
        "probe1.ll",
        "probe2.ll",
        "probe3.ll",
        "radix_bases.rs",
    ],
}

rust_library {
    name: "libnum_bigint",
    host_supported: true,
    crate_name: "num_bigint",
    srcs: [
        "src/lib.rs",
        ":copy_num-bigint_build_out",
    ],
    edition: "2018",
    features: [
        "default",
        "std",
    ],
    cfgs: [
        "has_try_from",
        "u64_digit",
    ],
    rustlibs: [
        "libnum_integer",
        "libnum_traits",
    ],
}

rust_defaults {
    name: "num-bigint_test_defaults",
    crate_name: "num_bigint",
    srcs: [
        "src/lib.rs",
        ":copy_num-bigint_build_out",
    ],
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2018",
    features: [
        "default",
        "std",
    ],
    cfgs: [
        "has_try_from",
        "u64_digit",
    ],
    rustlibs: [
        "libnum_integer",
        "libnum_traits",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_src_lib",
    defaults: ["num-bigint_test_defaults"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_src_lib",
    defaults: ["num-bigint_test_defaults"],
}

rust_defaults {
    name: "num-bigint_test_defaults_num_bigint",
    crate_name: "num_bigint",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2018",
    features: [
        "default",
        "std",
    ],
    cfgs: [
        "has_try_from",
        "u64_digit",
    ],
    rustlibs: [
        "libnum_bigint",
        "libnum_integer",
        "libnum_traits",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_bigint",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/bigint.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_bigint",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/bigint.rs",
        ":copy_num-bigint_build_out",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_bigint_bitwise",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/bigint_bitwise.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_bigint_bitwise",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/bigint_bitwise.rs",
        ":copy_num-bigint_build_out",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_bigint_scalar",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/bigint_scalar.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_bigint_scalar",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/bigint_scalar.rs",
        ":copy_num-bigint_build_out",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_biguint",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/biguint.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_biguint",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/biguint.rs",
        ":copy_num-bigint_build_out",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_biguint_scalar",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/biguint_scalar.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_biguint_scalar",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/biguint_scalar.rs",
        ":copy_num-bigint_build_out",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_modpow",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/modpow.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_modpow",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/modpow.rs",
        ":copy_num-bigint_build_out",
    ],
}

rust_test_host {
    name: "num-bigint_host_test_tests_roots",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/roots.rs",
        ":copy_num-bigint_build_out",
    ],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "num-bigint_device_test_tests_roots",
    defaults: ["num-bigint_test_defaults_num_bigint"],
    srcs: [
        "tests/roots.rs",
        ":copy_num-bigint_build_out",
    ],
}
