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

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

rust_library {
    name: "libcriterion",
    host_supported: true,
    crate_name: "criterion",
    srcs: ["src/lib.rs"],
    edition: "2018",
    features: [
        "cargo_bench_support",
        "default",
    ],
    rustlibs: [
        "libatty",
        "libcast",
        "libclap",
        "libcriterion_plot",
        "libcsv",
        "libitertools",
        "liblazy_static",
        "libnum_traits",
        "liboorandom",
        "libplotters",
        "librayon",
        "libregex",
        "libserde",
        "libserde_cbor",
        "libserde_json",
        "libtinytemplate",
        "libwalkdir",
    ],
    proc_macros: ["libserde_derive"],
}

// dependent_library ["feature_list"]
//   atty-0.2.14
//   autocfg-1.0.1
//   bitflags-1.2.1 "default"
//   bstr-0.2.16 "default,lazy_static,regex-automata,serde,serde1,serde1-nostd,std,unicode"
//   cast-0.2.7 "default,std"
//   cfg-if-1.0.0
//   clap-2.33.3
//   criterion-plot-0.4.4
//   crossbeam-channel-0.5.1 "crossbeam-utils,default,std"
//   crossbeam-deque-0.8.1 "crossbeam-epoch,crossbeam-utils,default,std"
//   crossbeam-epoch-0.9.5 "alloc,lazy_static,std"
//   crossbeam-utils-0.8.5 "default,lazy_static,std"
//   csv-1.1.6
//   csv-core-0.1.10 "default"
//   either-1.6.1
//   half-1.7.1
//   itertools-0.10.1 "default,use_alloc,use_std"
//   itoa-0.4.7 "default,std"
//   lazy_static-1.4.0
//   libc-0.2.98 "default,std"
//   memchr-2.4.0 "default,std"
//   memoffset-0.6.4 "default"
//   num-traits-0.2.14 "default,std"
//   num_cpus-1.13.0
//   oorandom-11.1.3
//   plotters-0.3.1 "area_series,line_series,plotters-svg,svg_backend"
//   plotters-backend-0.3.2
//   plotters-svg-0.3.1
//   proc-macro2-1.0.28 "default,proc-macro"
//   quote-1.0.9 "default,proc-macro"
//   rayon-1.5.1
//   rayon-core-1.9.1
//   regex-1.5.4 "std"
//   regex-automata-0.1.10
//   regex-syntax-0.6.25
//   rustc_version-0.4.0
//   ryu-1.0.5
//   same-file-1.0.6
//   scopeguard-1.1.0
//   semver-1.0.4 "default,std"
//   serde-1.0.127 "default,std"
//   serde_cbor-0.11.1 "default,std"
//   serde_derive-1.0.127 "default"
//   serde_json-1.0.66 "default,std"
//   syn-1.0.74 "clone-impls,default,derive,full,parsing,printing,proc-macro,quote,visit"
//   textwrap-0.11.0
//   tinytemplate-1.2.1
//   unicode-width-0.1.8 "default"
//   unicode-xid-0.2.2 "default"
//   walkdir-2.3.2
