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

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 = "libftdi1_sys",
    srcs = glob(["**/*.rs"]),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_features = [
        "default",
    ],
    crate_root = "src/lib.rs",
    edition = "2018",
    rustc_flags = ["--cap-lints=allow"],
    tags = [
        "cargo-bazel",
        "crate-name=libftdi1-sys",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "1.1.2",
    deps = [
        "@crate_index__cfg-if-1.0.0//:cfg_if",
        "@crate_index__libc-0.2.139//:libc",
        "@crate_index__libftdi1-sys-1.1.2//:build_script_build",
    ],
)

cargo_build_script(
    name = "libftdi1-sys_build_script",
    srcs = glob(["**/*.rs"]),
    crate_features = [
        "default",
    ],
    crate_name = "build_script_build",
    crate_root = "build.rs",
    data = glob(
        include = ["**"],
        exclude = [
            "**/* *",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    edition = "2018",
    links = "ftdi1",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "crate-name=libftdi1-sys",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "1.1.2",
    visibility = ["//visibility:private"],
    deps = [
        "@crate_index__cfg-if-1.0.0//:cfg_if",
    ] + select({
        "@rules_rust//rust/platform:aarch64-apple-darwin": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:aarch64-apple-ios": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:aarch64-linux-android": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
            "@crate_index__vcpkg-0.2.15//:vcpkg",  # cfg(all(windows, target_env = "msvc"))
        ],
        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:armv7-linux-androideabi": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:i686-apple-darwin": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:i686-linux-android": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
            "@crate_index__vcpkg-0.2.15//:vcpkg",  # cfg(all(windows, target_env = "msvc"))
        ],
        "@rules_rust//rust/platform:i686-unknown-freebsd": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:wasm32-unknown-unknown": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:wasm32-wasi": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:x86_64-apple-darwin": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:x86_64-apple-ios": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:x86_64-linux-android": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
            "@crate_index__vcpkg-0.2.15//:vcpkg",  # cfg(all(windows, target_env = "msvc"))
        ],
        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [
            "@crate_index__pkg-config-0.3.26//:pkg_config",  # cfg(not(all(windows, target_env = "msvc")))
        ],
        "//conditions:default": [],
    }),
)

alias(
    name = "build_script_build",
    actual = "libftdi1-sys_build_script",
    tags = ["manual"],
)
