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

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "external_adhd_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-BSD
    default_applicable_licenses: ["external_adhd_license"],
}

rust_defaults {
    name: "cras-sys_defaults",
    defaults: ["crosvm_defaults"],
    crate_name: "cras_sys",
    srcs: ["src/lib.rs"],
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2015",
    rustlibs: [
        "libaudio_streams",
        "libdata_model",
    ],
}

rust_test_host {
    name: "cras-sys_host_test_src_lib",
    defaults: ["cras-sys_defaults"],
}

rust_test {
    name: "cras-sys_device_test_src_lib",
    defaults: ["cras-sys_defaults"],
}

rust_library {
    name: "libcras_sys",
    defaults: ["crosvm_defaults"],
    host_supported: true,
    crate_name: "cras_sys",
    srcs: ["src/lib.rs"],
    edition: "2015",
    rustlibs: [
        "libaudio_streams",
        "libdata_model",
    ],
}

// dependent_library ["feature_list"]
//   ../../../../crosvm/assertions/src/lib.rs
//   ../../../../crosvm/data_model/src/lib.rs
//   ../../../../crosvm/sync/src/lib.rs
//   ../../../../crosvm/sys_util/poll_token_derive/poll_token_derive.rs
//   ../../../../crosvm/sys_util/src/lib.rs
//   ../../../../crosvm/syscall_defines/src/lib.rs
//   ../../../../crosvm/tempfile/src/lib.rs
//   ../../../audio_streams/src/audio_streams.rs
//   libc-0.2.76 "default,std"
//   proc-macro2-1.0.19 "default,proc-macro"
//   quote-1.0.7 "default,proc-macro"
//   syn-1.0.39 "clone-impls,default,derive,parsing,printing,proc-macro,quote"
//   unicode-xid-0.2.1 "default"
