// 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_anyhow_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_anyhow_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "LICENSE-APACHE",
        "LICENSE-MIT",
    ],
}

rust_defaults {
    name: "anyhow_defaults",
    crate_name: "anyhow",
    srcs: ["src/lib.rs"],
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2018",
    features: [
        "default",
        "std",
    ],
    cfgs: ["backtrace"],
    rustlibs: [
        "libfutures",
        "libthiserror",
    ],
}

rust_test_host {
    name: "anyhow_host_test_src_lib",
    defaults: ["anyhow_defaults"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_src_lib",
    defaults: ["anyhow_defaults"],
}

rust_defaults {
    name: "anyhow_defaults_anyhow",
    crate_name: "anyhow",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2018",
    features: [
        "default",
        "std",
    ],
    cfgs: ["backtrace"],
    rustlibs: [
        "libanyhow",
        "libfutures",
        "libthiserror",
    ],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_autotrait",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_autotrait.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_autotrait",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_autotrait.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_boxed",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_boxed.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_boxed",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_boxed.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_chain",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_chain.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_chain",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_chain.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_context",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_context.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_context",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_context.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_convert",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_convert.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_convert",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_convert.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_downcast",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_downcast.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_downcast",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_downcast.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_ffi",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_ffi.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_ffi",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_ffi.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_fmt",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_fmt.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_fmt",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_fmt.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_macros",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_macros.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_macros",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_macros.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_repr",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_repr.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_repr",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_repr.rs"],
}

rust_test_host {
    name: "anyhow_host_test_tests_test_source",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_source.rs"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "anyhow_device_test_tests_test_source",
    defaults: ["anyhow_defaults_anyhow"],
    srcs: ["tests/test_source.rs"],
}

rust_library {
    name: "libanyhow",
    host_supported: true,
    crate_name: "anyhow",
    srcs: ["src/lib.rs"],
    edition: "2018",
    features: [
        "default",
        "std",
    ],
    cfgs: ["backtrace"],
    apex_available: [
        "//apex_available:platform",
        "com.android.resolv",
        "com.android.virt",
    ],
    min_sdk_version: "29",
}

// dependent_library ["feature_list"]
//   dissimilar-1.0.2
//   futures-0.3.14
//   futures-channel-0.3.14 "futures-sink,sink"
//   futures-core-0.3.14
//   futures-io-0.3.14
//   futures-sink-0.3.14
//   futures-task-0.3.14
//   futures-util-0.3.14 "futures-sink,sink"
//   glob-0.3.0
//   itoa-0.4.7
//   lazy_static-1.4.0
//   pin-project-lite-0.2.6
//   pin-utils-0.1.0
//   proc-macro2-1.0.26 "default,proc-macro"
//   quote-1.0.9 "default,proc-macro"
//   rustversion-1.0.4
//   ryu-1.0.5
//   serde-1.0.125 "default,derive,serde_derive,std"
//   serde_derive-1.0.125 "default"
//   serde_json-1.0.64 "default,std"
//   syn-1.0.70 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote"
//   termcolor-1.1.2
//   thiserror-1.0.24
//   thiserror-impl-1.0.24
//   toml-0.5.8 "default"
//   trybuild-1.0.42 "diff,dissimilar"
//   unicode-xid-0.2.1 "default"
