###############################################################################
# @generated
# This file is auto-generated by the cargo-bazel tool.
#
# DO NOT MODIFY: Local changes may be replaced in future executions.
###############################################################################

load(
    "@bazel_skylib//lib:selects.bzl",
    "selects",
)

# buildifier: disable=bzl-visibility
load("@rules_rust//crate_universe/private:selects.bzl", "select_with_or")
load(
    "@rules_rust//rust:defs.bzl",
    "rust_library",
)

package(default_visibility = ["//visibility:public"])

# licenses([
#     "TODO",  # MIT OR Apache-2.0
# ])

rust_library(
    name = "getrandom",
    srcs = glob(
        include = [
            "**/*.rs",
        ],
        exclude = [
        ],
    ),
    aliases = selects.with_or({
        "//conditions:default": {
        },
    }),
    compile_data = glob(["**"]) + select_with_or({
        "//conditions:default": [
        ],
    }),
    crate_features = [
        "std",
    ],
    crate_root = "src/lib.rs",
    data = select_with_or({
        "//conditions:default": [
        ],
    }),
    edition = "2018",
    proc_macro_deps = [
    ] + select_with_or({
        "//conditions:default": [
        ],
    }),
    rustc_env = {
    },
    rustc_env_files = select_with_or({
        "//conditions:default": [
        ],
    }),
    rustc_flags = [
        # In most cases, warnings in 3rd party crates are not interesting as
        # they're out of the control of consumers. The flag here silences
        # warnings. For more details see:
        # https://doc.rust-lang.org/rustc/lints/levels.html
        "--cap-lints=allow",
    ] + select_with_or({
        "//conditions:default": [
        ],
    }),
    tags = [
        "cargo-bazel",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.2.6",
    deps = [
    ] + select_with_or({
        # cfg(target_os = "wasi")
        (
            "@rules_rust//rust/platform:wasm32-wasi",
        ): [
            # Target Deps
            "@crate_universe_crate_index__wasi-0.10.2-wasi-snapshot-preview1//:wasi",

            # Common Deps
            "@crate_universe_crate_index__cfg-if-1.0.0//:cfg_if",
        ],
        # cfg(unix)
        (
            "@rules_rust//rust/platform:aarch64-apple-darwin",
            "@rules_rust//rust/platform:aarch64-apple-ios",
            "@rules_rust//rust/platform:aarch64-apple-ios-sim",
            "@rules_rust//rust/platform:aarch64-linux-android",
            "@rules_rust//rust/platform:aarch64-unknown-linux-gnu",
            "@rules_rust//rust/platform:arm-unknown-linux-gnueabi",
            "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi",
            "@rules_rust//rust/platform:i686-apple-darwin",
            "@rules_rust//rust/platform:i686-linux-android",
            "@rules_rust//rust/platform:i686-unknown-freebsd",
            "@rules_rust//rust/platform:i686-unknown-linux-gnu",
            "@rules_rust//rust/platform:powerpc-unknown-linux-gnu",
            "@rules_rust//rust/platform:s390x-unknown-linux-gnu",
            "@rules_rust//rust/platform:x86_64-apple-darwin",
            "@rules_rust//rust/platform:x86_64-apple-ios",
            "@rules_rust//rust/platform:x86_64-linux-android",
            "@rules_rust//rust/platform:x86_64-unknown-freebsd",
            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
        ): [
            # Target Deps
            "@crate_universe_crate_index__libc-0.2.126//:libc",

            # Common Deps
            "@crate_universe_crate_index__cfg-if-1.0.0//:cfg_if",
        ],
        "//conditions:default": [
            "@crate_universe_crate_index__cfg-if-1.0.0//:cfg_if",
        ],
    }),
)
