// This file is generated by cargo2android.py --run --dependencies --device --patch=patches/Android.bp.patch.
// Do not modify this file as changes will be overridden on upgrade.

package {
    default_applicable_licenses: ["external_rust_crates_futures_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_futures_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "LICENSE-APACHE",
        "LICENSE-MIT",
    ],
}

rust_library {
    name: "libfutures",
    host_supported: true,
    crate_name: "futures",
    srcs: ["src/lib.rs"],
    edition: "2018",
    features: [
        "alloc",
        "async-await",
        "default",
        "executor",
        "futures-executor",
        "std",
    ],
    rustlibs: [
        "libfutures_channel",
        "libfutures_core",
        "libfutures_executor",
        "libfutures_io",
        "libfutures_sink",
        "libfutures_task",
        "libfutures_util",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}

// dependent_library ["feature_list"]
//   futures-channel-0.3.13 "alloc,futures-sink,sink,std"
//   futures-core-0.3.13 "alloc,std"
//   futures-executor-0.3.13 "std"
//   futures-io-0.3.13 "std"
//   futures-macro-0.3.13
//   futures-sink-0.3.13 "alloc,std"
//   futures-task-0.3.13 "alloc,std"
//   futures-util-0.3.13 "alloc,async-await,async-await-macro,channel,futures-channel,futures-io,futures-macro,futures-sink,io,memchr,proc-macro-hack,proc-macro-nested,sink,slab,std"
//   memchr-2.3.4 "default,std"
//   pin-project-lite-0.2.6
//   pin-utils-0.1.0
//   proc-macro-hack-0.5.19
//   proc-macro-nested-0.1.7
//   proc-macro2-1.0.26 "default,proc-macro"
//   quote-1.0.9 "default,proc-macro"
//   slab-0.4.2
//   syn-1.0.68 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote,visit-mut"
//   unicode-xid-0.2.1 "default"
