###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
#     bazel run @@//:crates_vendor_std
###############################################################################

load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_library")

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

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

rust_library(
    name = "heapless",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "atomic-polyfill",
        "cas",
        "default",
    ],
    crate_root = "src/lib.rs",
    edition = "2018",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=heapless",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.7.16",
    deps = [
        "//crates_std/vendor/hash32-0.2.1:hash32",
        "//crates_std/vendor/heapless-0.7.16:build_script_build",
        "//crates_std/vendor/stable_deref_trait-1.2.0:stable_deref_trait",
    ] + select({
        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [
            "//crates_std/vendor/atomic-polyfill-0.1.11:atomic_polyfill",  # riscv32imc-unknown-none-elf
        ],
        "@rules_rust//rust/platform:x86_64-apple-darwin": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "@rules_rust//rust/platform:x86_64-apple-ios": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "@rules_rust//rust/platform:x86_64-fuchsia": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "@rules_rust//rust/platform:x86_64-linux-android": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
            "//crates_std/vendor/spin-0.9.8:spin",  # cfg(target_arch = "x86_64")
        ],
        "//conditions:default": [],
    }),
)

cargo_build_script(
    name = "heapless_build_script",
    srcs = glob(["**/*.rs"]),
    crate_features = [
        "atomic-polyfill",
        "cas",
        "default",
    ],
    crate_name = "build_script_build",
    crate_root = "build.rs",
    data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    edition = "2018",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "crate-name=heapless",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.7.16",
    visibility = ["//visibility:private"],
    deps = [
        "//crates_std/vendor/rustc_version-0.4.0:rustc_version",
    ],
)

alias(
    name = "build_script_build",
    actual = "heapless_build_script",
    tags = ["manual"],
)
