###############################################################################
# @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//cargo:defs.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_library")

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

# licenses([
#     "TODO",  # MIT
# ])

rust_library(
    name = "axum",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            ".tmp_git_root/**/*",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_root = "src/lib.rs",
    edition = "2021",
    proc_macro_deps = [
        "@rules_rust_prost__async-trait-0.1.68//:async_trait",
    ],
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=axum",
        "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 = "0.6.18",
    deps = [
        "@rules_rust_prost__axum-0.6.18//:build_script_build",
        "@rules_rust_prost__axum-core-0.3.4//:axum_core",
        "@rules_rust_prost__bitflags-1.3.2//:bitflags",
        "@rules_rust_prost__bytes-1.4.0//:bytes",
        "@rules_rust_prost__futures-util-0.3.28//:futures_util",
        "@rules_rust_prost__http-0.2.9//:http",
        "@rules_rust_prost__http-body-0.4.5//:http_body",
        "@rules_rust_prost__hyper-0.14.26//:hyper",
        "@rules_rust_prost__itoa-1.0.6//:itoa",
        "@rules_rust_prost__matchit-0.7.0//:matchit",
        "@rules_rust_prost__memchr-2.5.0//:memchr",
        "@rules_rust_prost__mime-0.3.17//:mime",
        "@rules_rust_prost__percent-encoding-2.3.0//:percent_encoding",
        "@rules_rust_prost__pin-project-lite-0.2.9//:pin_project_lite",
        "@rules_rust_prost__serde-1.0.164//:serde",
        "@rules_rust_prost__sync_wrapper-0.1.2//:sync_wrapper",
        "@rules_rust_prost__tower-0.4.13//:tower",
        "@rules_rust_prost__tower-layer-0.3.2//:tower_layer",
        "@rules_rust_prost__tower-service-0.3.2//:tower_service",
    ],
)

cargo_build_script(
    name = "axum_build_script",
    srcs = glob(["**/*.rs"]),
    crate_name = "build_script_build",
    crate_root = "build.rs",
    data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            ".tmp_git_root/**/*",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    edition = "2021",
    proc_macro_deps = [
        "@rules_rust_prost__rustversion-1.0.12//:rustversion",
    ],
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "crate-name=axum",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.6.18",
    visibility = ["//visibility:private"],
)

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