// This file is generated by cargo2android.py --run --dependencies --features=clap,runtime,which-rustfmt --host-first-multilib --copy-out.
// Do not modify this file as changes will be overridden on upgrade.

package {
    default_applicable_licenses: ["external_rust_crates_bindgen_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_bindgen_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
    ],
    license_text: [
        "LICENSE",
    ],
}

genrule {
    name: "copy_bindgen_build_out",
    srcs: ["out/*"],
    cmd: "cp $(in) $(genDir)",
    out: [
        "host-target.txt",
        "tests.rs",
    ],
}

rust_binary_host {
    name: "bindgen",
    crate_name: "bindgen",
    srcs: [
        "src/main.rs",
        ":copy_bindgen_build_out",
    ],
    edition: "2018",
    features: [
        "clap",
        "runtime",
        "which",
        "which-rustfmt",
    ],
    rustlibs: [
        "libbindgen",
        "libbitflags",
        "libcexpr",
        "libclang_sys",
        "libclap",
        "liblazy_static",
        "liblazycell",
        "libpeeking_take_while",
        "libproc_macro2",
        "libquote",
        "libregex",
        "librustc_hash",
        "libshlex",
        "libwhich",
    ],
    compile_multilib: "first",
}

rust_library_host {
    name: "libbindgen",
    crate_name: "bindgen",
    srcs: [
        "src/lib.rs",
        ":copy_bindgen_build_out",
    ],
    edition: "2018",
    features: [
        "clap",
        "runtime",
        "which",
        "which-rustfmt",
    ],
    rustlibs: [
        "libbitflags",
        "libcexpr",
        "libclang_sys",
        "libclap",
        "liblazy_static",
        "liblazycell",
        "libpeeking_take_while",
        "libproc_macro2",
        "libquote",
        "libregex",
        "librustc_hash",
        "libshlex",
        "libwhich",
    ],
    compile_multilib: "first",
}

// dependent_library ["feature_list"]
//   ansi_term-0.11.0
//   atty-0.2.14
//   bitflags-1.2.1 "default"
//   cexpr-0.4.0
//   cfg-if-1.0.0
//   clang-sys-1.2.0 "clang_3_5,clang_3_6,clang_3_7,clang_3_8,clang_3_9,clang_4_0,clang_5_0,clang_6_0,libloading,runtime"
//   clap-2.33.3 "ansi_term,atty,color,default,strsim,suggestions,vec_map"
//   glob-0.3.0
//   lazy_static-1.4.0
//   lazycell-1.3.0
//   libc-0.2.93 "default,std"
//   libloading-0.7.0
//   memchr-2.3.4 "std,use_std"
//   nom-5.1.2 "alloc,std"
//   peeking_take_while-0.1.2
//   proc-macro2-1.0.26
//   quote-1.0.9
//   regex-1.4.5 "std,unicode,unicode-age,unicode-bool,unicode-case,unicode-gencat,unicode-perl,unicode-script,unicode-segment"
//   regex-syntax-0.6.23 "unicode,unicode-age,unicode-bool,unicode-case,unicode-gencat,unicode-perl,unicode-script,unicode-segment"
//   rustc-hash-1.1.0 "default,std"
//   shlex-1.0.0
//   strsim-0.8.0
//   textwrap-0.11.0
//   unicode-width-0.1.8 "default"
//   unicode-xid-0.2.1 "default"
//   vec_map-0.8.2
//   version_check-0.9.3
//   which-3.1.1
