// This file is generated by cargo2android.py --run --device --tests --dependencies --global_defaults=crosvm_defaults.

package {
    default_applicable_licenses: ["external_libchromeos-rs_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "external_libchromeos-rs_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-BSD",
    ],
    license_text: [
        "LICENSE",
    ],
}

rust_defaults {
    name: "libchromeos-rs_defaults",
    defaults: ["crosvm_defaults"],
    crate_name: "libchromeos",
    srcs: ["src/lib.rs"],
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2018",
    rustlibs: [
        "libdata_model",
        "libfutures",
        "libfutures_executor",
        "libfutures_util",
        "libintrusive_collections",
        "liblibc",
        "liblog_rust",
        "libprotobuf",
    ],
}

rust_test_host {
    name: "libchromeos-rs_host_test_src_lib",
    defaults: ["libchromeos-rs_defaults"],
}

rust_test {
    name: "libchromeos-rs_device_test_src_lib",
    defaults: ["libchromeos-rs_defaults"],
}

rust_library {
    name: "liblibchromeos",
    defaults: ["crosvm_defaults"],
    host_supported: true,
    crate_name: "libchromeos",
    srcs: ["src/lib.rs"],
    edition: "2018",
    rustlibs: [
        "libdata_model",
        "libfutures",
        "libintrusive_collections",
        "liblibc",
        "liblog_rust",
        "libprotobuf",
    ],
}

// dependent_library ["feature_list"]
//   ../crosvm/assertions/src/lib.rs
//   ../crosvm/data_model/src/lib.rs
//   autocfg-1.0.1
//   cfg-if-0.1.10
//   futures-0.3.9 "alloc,async-await,default,executor,futures-executor,std"
//   futures-channel-0.3.9 "alloc,futures-sink,sink,std"
//   futures-core-0.3.9 "alloc,std"
//   futures-executor-0.3.9 "default,num_cpus,std,thread-pool"
//   futures-io-0.3.9 "std"
//   futures-macro-0.3.9
//   futures-sink-0.3.9 "alloc,std"
//   futures-task-0.3.9 "alloc,once_cell,std"
//   futures-util-0.3.9 "alloc,async-await,async-await-macro,channel,default,futures-channel,futures-io,futures-macro,futures-sink,io,memchr,proc-macro-hack,proc-macro-nested,sink,slab,std"
//   intrusive-collections-0.9.0 "alloc,default"
//   libc-0.2.82 "default,std"
//   log-0.4.11
//   memchr-2.3.4 "default,std"
//   memoffset-0.5.6 "default"
//   num_cpus-1.13.0
//   once_cell-1.5.2 "alloc,std"
//   pin-project-lite-0.2.1
//   pin-utils-0.1.0
//   proc-macro-hack-0.5.19
//   proc-macro-nested-0.1.6
//   proc-macro2-1.0.24 "default,proc-macro"
//   protobuf-2.20.0
//   quote-1.0.8 "default,proc-macro"
//   slab-0.4.2
//   syn-1.0.58 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote"
//   unicode-xid-0.2.1 "default"
