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

load("@rules_python//python:defs.bzl", "py_binary")
load("@ot_python_deps//:requirements.bzl", "requirement")

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

exports_files(glob(["**"]))

genrule(
    name = "matcha_version_file",
    outs = ["matcha_version.txt"],
    cmd = """awk '/MATCHA_BUILD_GIT_VERSION/ { print $$2 }' bazel-out/volatile-status.txt > $@""",
    stamp = 1,  # this provides volatile-status.txt
)

# To execute this binary:
# bazel run //util:topgen_matcha -- -t <top hjson> [-r] -o <output dir> [other flags]
py_binary(
    name = "topgen_matcha",
    srcs = [
        "topgen_matcha.py",
        "topgen_utils/toputils.py",
    ],
    # This target assumes all the top_matcha hjson files are already up-to-date.
    # The goal is to generate the rtl, dv, reg files.
    data = [
        ":topgen_tpl_files",
        "//hw/top_matcha/ip:all_hjson_files",
        "@lowrisc_opentitan//hw/ip:all_files",
        "@lowrisc_opentitan//util:BUILD",
    ],
    env = {"OPENTITAN_TOP": "$(location @lowrisc_opentitan//util:BUILD)/../.."},
    imports = ["../external/lowrisc_opentitan/util/"],
    deps = [
        "@lowrisc_opentitan//util/design/mubi:prim_mubi",
        "@lowrisc_opentitan//util/ipgen",
        "@lowrisc_opentitan//util/reggen:gen_cheader",
        "@lowrisc_opentitan//util/reggen:gen_rtl",
        "@lowrisc_opentitan//util/reggen:gen_sec_cm_testplan",
        "@lowrisc_opentitan//util/tlgen",
        "@lowrisc_opentitan//util/topgen",
        "@lowrisc_opentitan//util/topgen:c_test",
        "@lowrisc_opentitan//util/topgen:gen_dv",
    ],
)

py_binary(
    name = "image_to_c",
    srcs = [
        "image_to_c.py",
    ],
    data = [
        "//sw/device/examples/testdata/hps_images:image_files",
    ],
    deps = [
        requirement("Pillow"),
    ],
)

py_binary(
    name = "run_live_cam",
    srcs = [
        "run_live_cam.py",
    ],
    args = [
        "--opentitantool_bin=$(location @lowrisc_opentitan//sw/host/opentitantool)",
        "--opentitantool_conf=$(location @lowrisc_opentitan//sw/host/opentitanlib:src/app/config/nexus.json)",
    ],
    data = [
        "@lowrisc_opentitan//sw/host/opentitanlib:src/app/config/nexus.json",
        "@lowrisc_opentitan//sw/host/opentitantool",
    ],
    deps = [
        requirement("Pillow"),
        requirement("pyserial"),
    ],
)

py_binary(
    name = "gen_vmem_256",
    srcs = [
        "gen_vmem_256.py",
    ],
)

filegroup(
    name = "topgen_tpl_files",
    srcs = glob(["topgen/**/*.tpl"]) + [
        "@lowrisc_opentitan//util/reggen:tpl_files",
        "@lowrisc_opentitan//util/tlgen:tpl_files",
        "@lowrisc_opentitan//util/topgen:tpl_files",
    ],
)
