"""
@generated
cargo-raze crate build file.

DO NOT EDIT! Replaced on runs of cargo-raze
"""

# buildifier: disable=load
load("@bazel_skylib//lib:selects.bzl", "selects")

# buildifier: disable=load
load(
    "@rules_rust//rust:defs.bzl",
    "rust_binary",
    "rust_library",
    "rust_proc_macro",
    "rust_test",
)

package(default_visibility = [
    # Public for visibility by "@raze__crate__version//" targets.
    #
    # Prefer access through "//third_party/cargo", which limits external
    # visibility to explicit Cargo.toml dependencies.
    "//visibility:public",
])

licenses([
    "reciprocal",  # MPL-2.0 from expression "MPL-2.0"
])

# Generated Targets

# Unsupported target "clear_input_buffer" with type "example" omitted

# Unsupported target "clear_output_buffer" with type "example" omitted

# Unsupported target "duplex" with type "example" omitted

# Unsupported target "hardware_check" with type "example" omitted

# Unsupported target "list_ports" with type "example" omitted

# Unsupported target "pseudo_terminal" with type "example" omitted

# Unsupported target "receive_data" with type "example" omitted

# Unsupported target "transmit" with type "example" omitted

rust_library(
    name = "serialport",
    srcs = glob(["**/*.rs"]),
    aliases = {
    },
    crate_features = [
        "default",
        "libudev",
    ],
    crate_root = "src/lib.rs",
    data = [],
    edition = "2018",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-raze",
        "crate-name=serialport",
        "manual",
    ],
    version = "4.0.1",
    # buildifier: leave-alone
    deps = [
    ] + selects.with_or({
        # cfg(all(target_os = "linux", not(target_env = "musl")))
        (
            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
        ): [
            "@raze__libudev__0_2_0//:libudev",
        ],
        "//conditions:default": [],
    }) + selects.with_or({
        # cfg(unix)
        (
            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
        ): [
            "@raze__bitflags__1_3_2//:bitflags",
            "@raze__cfg_if__0_1_10//:cfg_if",
            "@raze__nix__0_16_1//:nix",
        ],
        "//conditions:default": [],
    }),
)

# Unsupported target "test_serialport" with type "test" omitted

# Unsupported target "test_try_clone" with type "test" omitted

# Unsupported target "test_tty" with type "test" omitted
