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

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

rust_test {
    name: "android_logger_device_test_src_lib",
    crate_name: "android_logger",
    srcs: ["src/lib.rs"],
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2015",
    features: [
        "default",
        "regex",
    ],
    rustlibs: [
        "libandroid_log_sys",
        "libenv_logger",
        "liblazy_static",
        "liblog_rust",
    ],
}

rust_defaults {
    name: "android_logger_defaults",
    crate_name: "android_logger",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2015",
    features: [
        "default",
        "regex",
    ],
    rustlibs: [
        "libandroid_log_sys",
        "libandroid_logger",
        "libenv_logger",
        "liblazy_static",
        "liblog_rust",
    ],
}

rust_test {
    name: "android_logger_device_test_tests_config_log_level",
    defaults: ["android_logger_defaults"],
    srcs: ["tests/config_log_level.rs"],
}

rust_test {
    name: "android_logger_device_test_tests_default_init",
    defaults: ["android_logger_defaults"],
    srcs: ["tests/default_init.rs"],
}

rust_test {
    name: "android_logger_device_test_tests_multiple_init",
    defaults: ["android_logger_defaults"],
    srcs: ["tests/multiple_init.rs"],
}

rust_library {
    name: "libandroid_logger",
    crate_name: "android_logger",
    srcs: ["src/lib.rs"],
    edition: "2015",
    features: [
        "default",
        "regex",
    ],
    rustlibs: [
        "libandroid_log_sys",
        "libenv_logger",
        "liblazy_static",
        "liblog_rust",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}

// dependent_library ["feature_list"]
//   aho-corasick-0.7.15 "default,std"
//   android_log-sys-0.2.0
//   cfg-if-1.0.0
//   env_logger-0.8.3 "regex"
//   lazy_static-1.4.0
//   log-0.4.14 "std"
//   memchr-2.3.4 "default,std,use_std"
//   regex-1.4.5 "aho-corasick,memchr,perf,perf-cache,perf-dfa,perf-inline,perf-literal,std"
//   regex-syntax-0.6.23
