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

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

filegroup(
    name = "all_files",
    srcs = glob(["**"]) + [
        "//hw/top_earlgrey/ip/ast:all_files",
        "//hw/top_earlgrey/ip/clkmgr:all_files",
        "//hw/top_earlgrey/ip/flash_ctrl:all_files",
        "//hw/top_earlgrey/ip/padctrl:all_files",
        "//hw/top_earlgrey/ip/pinmux:all_files",
        "//hw/top_earlgrey/ip/pwrmgr:all_files",
        "//hw/top_earlgrey/ip/rstmgr:all_files",
        "//hw/top_earlgrey/ip/sensor_ctrl:all_files",
        "//hw/top_earlgrey/ip/xbar:all_files",
        "//hw/top_earlgrey/ip/xbar_main:all_files",
        "//hw/top_earlgrey/ip/xbar_peri:all_files",
    ],
)
