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

// We renamed the shared_libs dependence from libsqlite3 to libsqlite.
// srcs has been moved out of _defaults to work around b/163420435

package {
    default_applicable_licenses: [
        "external_rust_crates_libsqlite3-sys_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.
// See: http://go/android-license-faq
license {
    name: "external_rust_crates_libsqlite3-sys_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-MIT",
        "legacy_permissive",
    ],
    license_text: [
        "LICENSE",
    ],
}

rust_library {
    name: "liblibsqlite3_sys",
    host_supported: true,
    crate_name: "libsqlite3_sys",
    cargo_env_compat: true,
    cargo_pkg_version: "0.22.2",
    srcs: [
        "src/lib.rs",
        ":libsqlite3_bindgen",
    ],
    edition: "2018",
    features: [
        "default",
        "min_sqlite_version_3_6_8",
        "pkg-config",
        "vcpkg",
    ],
    shared_libs: [
        "libsqlite",
    ],
}

rust_defaults {
    name: "libsqlite3-sys_test_defaults",
    crate_name: "libsqlite3_sys",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    edition: "2018",
    features: [
        "default",
        "min_sqlite_version_3_6_8",
        "pkg-config",
        "vcpkg",
    ],
    shared_libs: [
        "libsqlite",
    ],
}

rust_test_host {
    name: "libsqlite3-sys_host_test_src_lib",
    srcs: [
        "src/lib.rs",
        ":libsqlite3_bindgen",
    ],
    defaults: ["libsqlite3-sys_test_defaults"],
    test_options: {
        unit_test: true,
    },
}

rust_test {
    name: "libsqlite3-sys_device_test_src_lib",
    srcs: [
        "src/lib.rs",
        ":libsqlite3_bindgen",
    ],
    defaults: ["libsqlite3-sys_test_defaults"],
}

rust_bindgen {
    name: "libsqlite3_bindgen",
    host_supported: true,
    crate_name: "sqlite3_bindgen",
    custom_bindgen: "sqlite3_bindgen_build",
    wrapper_src: "wrapper.h",
    source_stem: "bindgen",
    cflags: ["-I external/sqlite/dist"],
    defaults: ["sqlite-defaults"],
}

rust_test {
    name: "libsqlite3_bindgen_test",
    srcs: [":libsqlite3_bindgen"],
    crate_name: "sqlite3_bindgen_test",
    test_suites: ["general-tests"],
    auto_gen_config: true,
    clippy_lints: "none",
    lints: "none",
}

rust_library {
    name: "liblibsqlite3_sys_noicu",
    host_supported: true,
    crate_name: "libsqlite3_sys",
    cargo_env_compat: true,
    srcs: [
        "src/lib.rs",
        ":libsqlite3_bindgen",
    ],
    edition: "2018",
    features: [
        "default",
        "min_sqlite_version_3_6_8",
        "pkg-config",
        "vcpkg",
    ],
    static_libs: [
        "libsqlite_static_noicu",
    ],
}

