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

load("@matcha//rules:matcha.bzl", "matcha_extflash_tar")

tarball_data = {}

[
    tarball_data.update(
    {"@kelvin-binary//:{}".format(test): "kelvin_{}".format(test)}) for test in
        glob(
            ["*.bin"],
            exclude = [
                "instr_fault_elf.bin",
                "load_fault_0_elf.bin",
                "load_fault_1_elf.bin",
                "rv32ui_sh_elf.bin",
                "rv32ui_sw_elf.bin",
                "store_fault_0_elf.bin",
            ],
        )
]

matcha_extflash_tar(
    name = "kelvin_fpga_test_extflash",
    sc_binary = "@matcha//sw/device/tests/kelvin/fpga_tests:kelvin_test_sc_extflash_fpga_nexus_bin",
    smc_binary = "@matcha//sw/device/tests/kelvin/fpga_tests:kelvin_test_smc_fpga_nexus_bin",
    data = tarball_data,
    tags = [
        "kelvin_fpga",
    ],
)
