###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
#     bazel run @//proto/prost/private/3rdparty:crates_vendor
###############################################################################

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

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

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

rust_library(
    name = "num_cpus",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            ".tmp_git_root/**/*",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_root = "src/lib.rs",
    edition = "2015",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=num_cpus",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    target_compatible_with = select({
        "@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-fuchsia": [],
        "@rules_rust//rust/platform:aarch64-linux-android": [],
        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
        "@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-pc-windows-msvc": [],
        "@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:riscv32imc-unknown-none-elf": [],
        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
        "@rules_rust//rust/platform:wasm32-wasi": [],
        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
        "@rules_rust//rust/platform:x86_64-apple-ios": [],
        "@rules_rust//rust/platform:x86_64-fuchsia": [],
        "@rules_rust//rust/platform:x86_64-linux-android": [],
        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
        "@rules_rust//rust/platform:x86_64-unknown-none": [],
        "//conditions:default": ["@platforms//:incompatible"],
    }),
    version = "1.15.0",
    deps = select({
        "@rules_rust//rust/platform:aarch64-apple-darwin": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:aarch64-apple-ios": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:aarch64-fuchsia": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:aarch64-linux-android": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:armv7-linux-androideabi": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:i686-apple-darwin": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:i686-linux-android": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:i686-unknown-freebsd": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:thumbv7em-none-eabi": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:wasm32-unknown-unknown": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:wasm32-wasi": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-apple-darwin": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-apple-ios": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-fuchsia": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-linux-android": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "@rules_rust//rust/platform:x86_64-unknown-none": [
            "@rules_rust_prost__libc-0.2.146//:libc",  # cfg(not(windows))
        ],
        "//conditions:default": [],
    }),
)
