// This file is generated by cargo2android.py --config cargo2android.json.

// WARNING! This crate has a change in dependency structure that is not yet
// reflected on crates.io. This means that the automated update tool will
// not be able to handle the next update, and it will need to be performed
// manually - openssl-error and openssl-macros will need to be imported,
// and the applied patch will need to be rebased one directory down to apply
// to only the openssl crate if it is not yet upstreamed at that point.
//
// Even if upstreamed, cargo2android.py will likely never run correctly on
// this package without modification because boringssl does not intend to
// publish "bssl-ffi" on crates.io, since it needs to match the exact local
// version of boringssl.

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

rust_library {
    name: "libopenssl",
    host_supported: true,
    crate_name: "openssl",
    srcs: ["openssl/src/lib.rs"],
    vendor_available: true,
    edition: "2018",
    cfgs: [
        "boringssl",
    ],
    features: [
        "boringssl",
    ],
    proc_macros: [
        "libopenssl_macros",
    ],
    rustlibs: [
        "libbitflags",
        "libbssl_ffi",
        "libcfg_if",
        "libforeign_types",
        "liblibc",
        "libonce_cell",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}

rust_proc_macro {
    name: "libopenssl_macros",
    crate_name: "openssl_macros",
    srcs: ["openssl-macros/src/lib.rs"],
    edition: "2018",
    rustlibs: [
        "libquote",
	"libsyn",
	"libproc_macro2",
    ],
}
