# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

load("//rules:cargo.bzl", "cargo_raze")

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

exports_files([
    "WORKSPACE",
    "python-requirements.txt",
])

filegroup(
    name = "cores",
    srcs = [
        "check_tool_requirements.core",
        "topgen.core",
        "topgen-reg-only.core",
    ],
)

alias(
    name = "gen_rust_project",
    actual = "@rules_rust//tools/rust_analyzer:gen_rust_project",
)

cargo_raze(
    name = "cargo_raze",
    cargo = [
        "third_party/rust/crates/Cargo.toml",
    ],
)
