// This file is generated by cargo2android.py --device --run --dependencies --test --patch=patches/Android.bp.patch.

// 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",
    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_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_defaults"],
}

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

// dependent_library ["feature_list"]
//   pkg-config-0.3.19

// Keep this array in sync with the cflags used in external/sqlite
// After b/163598610 is resolved, use defaults instead.
sqlite3_bindgen_clang_flags = [
    " -DNDEBUG=1",
    " -DHAVE_USLEEP=1",
    " -DSQLITE_HAVE_ISNAN",
    " -DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
    " -DSQLITE_THREADSAFE=2",
    " -DSQLITE_TEMP_STORE=3",
    " -DSQLITE_POWERSAFE_OVERWRITE=1",
    " -DSQLITE_DEFAULT_FILE_FORMAT=4",
    " -DSQLITE_DEFAULT_AUTOVACUUM=1",
    " -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1",
    " -DSQLITE_ENABLE_FTS3",
    " -DSQLITE_ENABLE_FTS3_BACKWARDS",
    " -DSQLITE_ENABLE_FTS4",
    " -DSQLITE_OMIT_BUILTIN_TEST",
    " -DSQLITE_OMIT_COMPILEOPTION_DIAGS",
    " -DSQLITE_OMIT_LOAD_EXTENSION",
    " -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600",
    " -DSQLITE_SECURE_DELETE",
    " -DSQLITE_ENABLE_BATCH_ATOMIC_WRITE",
    " -DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD",
    " -DHAVE_POSIX_FALLOCATE=1",
    // extra -D flags for android targets
    " -DUSE_PREAD64",
    " -Dfdatasync=fdatasync",
    " -DHAVE_MALLOC_H=1",
    " -DHAVE_MALLOC_USABLE_SIZE",
    " -Wno-unused-parameter",
]

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"] + sqlite3_bindgen_clang_flags,
}
