"""
@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/rust/cargo", which limits external
    # visibility to explicit Cargo.toml dependencies.
    "//visibility:public",
])

licenses([
    "notice",  # MIT from expression "MIT"
])

# Generated Targets
# buildifier: disable=out-of-order-load
# buildifier: disable=load-on-top
load(
    "@rules_rust//cargo:cargo_build_script.bzl",
    "cargo_build_script",
)

cargo_build_script(
    name = "pulldown_cmark_build_script",
    srcs = glob(["**/*.rs"]),
    build_script_env = {
    },
    crate_root = "build.rs",
    data = glob(["**"]),
    edition = "2021",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-raze",
        "manual",
    ],
    version = "0.9.3",
    visibility = ["//visibility:private"],
    deps = [
    ],
)

# Unsupported target "html_rendering" with type "bench" omitted

# Unsupported target "lib" with type "bench" omitted

# Unsupported target "markdown-it" with type "bench" omitted

rust_binary(
    # Prefix bin name to disambiguate from (probable) collision with lib name
    # N.B.: The exact form of this is subject to change.
    name = "cargo_bin_pulldown_cmark",
    srcs = glob(["**/*.rs"]),
    crate_root = "src/main.rs",
    data = [],
    edition = "2021",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-raze",
        "crate-name=pulldown-cmark",
        "manual",
    ],
    version = "0.9.3",
    # buildifier: leave-alone
    deps = [
        ":pulldown_cmark",
        ":pulldown_cmark_build_script",
        "@raze__bitflags__1_3_2//:bitflags",
        "@raze__memchr__2_6_4//:memchr",
        "@raze__unicase__2_7_0//:unicase",
    ],
)

# Unsupported target "broken-link-callbacks" with type "example" omitted

# Unsupported target "event-filter" with type "example" omitted

# Unsupported target "parser-map-event-print" with type "example" omitted

# Unsupported target "parser-map-tag-print" with type "example" omitted

# Unsupported target "string-to-string" with type "example" omitted

rust_library(
    name = "pulldown_cmark",
    srcs = glob(["**/*.rs"]),
    crate_root = "src/lib.rs",
    data = [],
    edition = "2021",
    rustc_flags = [
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-raze",
        "crate-name=pulldown-cmark",
        "manual",
    ],
    version = "0.9.3",
    # buildifier: leave-alone
    deps = [
        ":pulldown_cmark_build_script",
        "@raze__bitflags__1_3_2//:bitflags",
        "@raze__memchr__2_6_4//:memchr",
        "@raze__unicase__2_7_0//:unicase",
    ],
)

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

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

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

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