# Copyright 2022 Google LLC.
# 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", "NEXUS_CORE_TARGETS", "OPENTITAN_CPU", "opentitan_rom_binary")
load("@lowrisc_opentitan//rules:autogen.bzl", "autogen_chip_info")
load("@lowrisc_opentitan//rules:linker.bzl", "ld_library")

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

autogen_chip_info(
    name = "chip_info",
    version = "//util:matcha_version_file",
)

ld_library(
    name = "linker_script",
    script = "test_rom.ld",
    deps = [
        "//hw/top_matcha/sw/autogen:top_matcha_memory",
        "@lowrisc_opentitan//sw/device:info_sections",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/base:static_critical_sections",
    ],
)

opentitan_rom_binary(
    name = "test_rom",
    deps = [
        ":linker_script",
        ":test_rom_lib",
    ],
)

cc_library(
    name = "test_rom_lib",
    srcs = [
        "test_rom.c",
        "test_rom_start.S",
    ],
    target_compatible_with = [OPENTITAN_CPU],
    deps = [
        ":chip_info",
        "//hw/top_matcha/ip/ast/data:ast_regs",
        "//hw/top_matcha/ip/clkmgr/data/autogen:clkmgr_regs",
        "//hw/top_matcha/ip/flash_ctrl/data/autogen:flash_ctrl_regs",
        "//hw/top_matcha/ip/sensor_ctrl/data:sensor_ctrl_regs",
        "//hw/top_matcha/sw/autogen:top_matcha",
        "//sw/device/lib/testing:pinmux_testutils",
        "//sw/device/lib/dif:pinmux",
        "@lowrisc_opentitan//hw/ip/csrng/data:csrng_regs",
        "@lowrisc_opentitan//hw/ip/edn/data:edn_regs",
        "@lowrisc_opentitan//hw/ip/entropy_src/data:entropy_src_regs",
        "@lowrisc_opentitan//hw/ip/otp_ctrl/data:otp_ctrl_regs",
        "@lowrisc_opentitan//hw/ip/sram_ctrl/data:sram_ctrl_regs",
        "@lowrisc_opentitan//sw/device/lib/arch:device",
        "@lowrisc_opentitan//sw/device/lib/base:abs_mmio",
        "@lowrisc_opentitan//sw/device/lib/base:bitfield",
        "@lowrisc_opentitan//sw/device/lib/base:mmio",
        "@lowrisc_opentitan//sw/device/lib/crt",
        "@lowrisc_opentitan//sw/device/lib/dif:clkmgr",
        "@lowrisc_opentitan//sw/device/lib/dif:flash_ctrl",
        "@lowrisc_opentitan//sw/device/lib/dif:gpio",
        "@lowrisc_opentitan//sw/device/lib/dif:hmac",
        "@lowrisc_opentitan//sw/device/lib/dif:rstmgr",
        "@lowrisc_opentitan//sw/device/lib/dif:rv_core_ibex",
        "@lowrisc_opentitan//sw/device/lib/dif:spi_device",
        "@lowrisc_opentitan//sw/device/lib/dif:uart",
        "@lowrisc_opentitan//sw/device/lib/runtime:hart",
        "@lowrisc_opentitan//sw/device/lib/runtime:log",
        "@lowrisc_opentitan//sw/device/lib/runtime:print",
        "@lowrisc_opentitan//sw/device/lib/testing:flash_ctrl_testutils",
        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:check",
        "@lowrisc_opentitan//sw/device/lib/testing/test_framework:status",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib:manifest",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/base:sec_mmio",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/base:static_critical_boot_measurements",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/base:static_critical_epmp_state",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/base:static_critical_sec_mmio",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/drivers:flash_ctrl",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/drivers:retention_sram",
        "@lowrisc_opentitan//sw/device/silicon_creator/rom:bootstrap",
    ],
)

ld_library(
    name = "puppeteer_linker_script",
    script = "puppeteer_rom.ld",
    deps = [
        "//hw/top_matcha/sw/autogen:top_matcha_memory",
    ],
)

# Only build for nexus FPGA.
opentitan_rom_binary(
    name = "puppeteer_rom",
    per_device_deps = {
        "fpga_nexus": [NEXUS_CORE_TARGETS.get("secure_core")],
    },
    deps = [
        ":puppeteer_linker_script",
        ":puppeteer_rom_lib",
    ],
)

cc_library(
    name = "puppeteer_rom_lib",
    srcs = [
        "puppeteer.cc",
        "puppeteer_rom.cc",
        "test_rom_start.S",
    ],
    hdrs = [
        "puppeteer.h",
    ],
    copts = [
        "-nostdlib",
        "-DPUPPETEER_ROM",
        "-Wno-unused-result",
    ],
    target_compatible_with = [OPENTITAN_CPU],
    deps = [
        "//hw/top_matcha/ip/ast/data:ast_regs",
        "//hw/top_matcha/ip/clkmgr/data/autogen:clkmgr_regs",
        "//hw/top_matcha/ip/pinmux/data/autogen:pinmux_regs",
        "//hw/top_matcha/ip/sensor_ctrl/data:sensor_ctrl_regs",
        "//hw/top_matcha/sw/autogen:top_matcha",
        "//sw/device/lib/testing/test_rom/puppeteer_utils",
        "@lowrisc_opentitan//hw/ip/csrng/data:csrng_regs",
        "@lowrisc_opentitan//hw/ip/edn/data:edn_regs",
        "@lowrisc_opentitan//hw/ip/entropy_src/data:entropy_src_regs",
        "@lowrisc_opentitan//hw/ip/sram_ctrl/data:sram_ctrl_regs",
        "@lowrisc_opentitan//sw/device/lib/base:memory",
        "@lowrisc_opentitan//sw/device/lib/base:multibits",
        "@lowrisc_opentitan//sw/device/lib/crt",
        "@lowrisc_opentitan//sw/device/lib/dif:flash_ctrl",
        "@lowrisc_opentitan//sw/device/lib/dif:spi_host",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib:manifest",
        "@lowrisc_opentitan//sw/device/silicon_creator/lib/drivers:flash_ctrl",
    ],
)
