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

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_binary",
    "rust_library",
)

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

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

rust_library(
    name = "cc",
    srcs = glob(
        include = [
            "**/*.rs",
        ],
        exclude = [
        ],
    ),
    aliases = selects.with_or({
        "//conditions:default": {
        },
    }),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ) + select_with_or({
        "//conditions:default": [
        ],
    }),
    crate_features = [
        "jobserver",
        "parallel",
    ],
    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",
    ],
    tags = [
        "cargo-bazel",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "1.0.73",
    deps = [
    ] + select_with_or({
        "//conditions:default": [
            "@cui__jobserver-0.1.24//:jobserver",
        ],
    }),
)

rust_binary(
    name = "gcc-shim__bin",
    srcs = glob(
        include = [
            "**/*.rs",
        ],
        exclude = [
        ],
    ),
    aliases = selects.with_or({
        "//conditions:default": {
        },
    }),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ) + select_with_or({
        "//conditions:default": [
        ],
    }),
    crate_features = [
        "jobserver",
        "parallel",
    ],
    crate_root = "src/bin/gcc-shim.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",
    ],
    tags = [
        "cargo-bazel",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "1.0.73",
    deps = [
        ":cc",
    ] + select_with_or({
        "//conditions:default": [
            "@cui__jobserver-0.1.24//:jobserver",
        ],
    }),
)
