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

load("//rules:matcha.bzl", "sec_flash_binary", "NEXUS_CORE_TARGETS")

sec_flash_binary(
    name = "gpio_button_led",
    srcs = [
        "gpio_button_led.c",
    ],
    per_device_deps = {
        "fpga_nexus": [NEXUS_CORE_TARGETS.get("secure_core")],
    },
    copts = [
        "-nostdlib",
        "-ffreestanding",
    ],
    deps = [
        "//sw/device/tests:test_lib",
        "@lowrisc_opentitan//sw/device/lib/dif:rv_plic",
    ],
)
