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

load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test")
load("//rules:ujson.bzl", "ujson_rust")

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

ujson_rust(
    name = "e2e_command",
    srcs = ["//sw/device/silicon_creator/rom/e2e/json:command"],
    defines = ["opentitanlib=crate"],
)

filegroup(
    name = "config",
    srcs = glob(["src/app/config/*.json"]),
)

rust_library(
    name = "opentitanlib",
    srcs = [
        "src/app/command.rs",
        "src/app/config/mod.rs",
        "src/app/config/structs.rs",
        "src/app/mod.rs",
        "src/backend/cw310.rs",
        "src/backend/hyperdebug.rs",
        "src/backend/mod.rs",
        "src/backend/proxy.rs",
        "src/backend/ti50emulator.rs",
        "src/backend/ultradebug.rs",
        "src/backend/verilator.rs",
        "src/bootstrap/eeprom.rs",
        "src/bootstrap/legacy.rs",
        "src/bootstrap/mod.rs",
        "src/bootstrap/primitive.rs",
        "src/bootstrap/rescue.rs",
        "src/crypto/mod.rs",
        "src/crypto/rsa.rs",
        "src/crypto/sha256.rs",
        "src/image/image.rs",
        "src/image/manifest.rs",
        "src/image/manifest_def.rs",
        "src/image/mod.rs",
        "src/io/emu.rs",
        "src/io/gpio.rs",
        "src/io/i2c.rs",
        "src/io/mod.rs",
        "src/io/spi.rs",
        "src/io/uart.rs",
        "src/lib.rs",
        "src/otp/lc_state.rs",
        "src/otp/mod.rs",
        "src/otp/otp.rs",
        "src/otp/otp_img.rs",
        "src/otp/otp_mmap.rs",
        "src/otp/vmem_serialize.rs",
        "src/proxy/errors.rs",
        "src/proxy/handler.rs",
        "src/proxy/mod.rs",
        "src/proxy/protocol.rs",
        "src/proxy/socket_server.rs",
        "src/spiflash/flash.rs",
        "src/spiflash/mod.rs",
        "src/spiflash/sfdp.rs",
        "src/test_utils/bootstrap.rs",
        "src/test_utils/e2e_command.rs",
        "src/test_utils/init.rs",
        "src/test_utils/load_bitstream.rs",
        "src/test_utils/mod.rs",
        "src/test_utils/rpc.rs",
        "src/test_utils/status.rs",
        "src/transport/common/mod.rs",
        "src/transport/common/uart.rs",
        "src/transport/cw310/gpio.rs",
        "src/transport/cw310/mod.rs",
        "src/transport/cw310/spi.rs",
        "src/transport/cw310/usb.rs",
        "src/transport/errors.rs",
        "src/transport/hyperdebug/c2d2.rs",
        "src/transport/hyperdebug/gpio.rs",
        "src/transport/hyperdebug/i2c.rs",
        "src/transport/hyperdebug/mod.rs",
        "src/transport/hyperdebug/spi.rs",
        "src/transport/mod.rs",
        "src/transport/proxy/emu.rs",
        "src/transport/proxy/gpio.rs",
        "src/transport/proxy/i2c.rs",
        "src/transport/proxy/mod.rs",
        "src/transport/proxy/spi.rs",
        "src/transport/proxy/uart.rs",
        "src/transport/ti50emulator/emu.rs",
        "src/transport/ti50emulator/gpio.rs",
        "src/transport/ti50emulator/i2c.rs",
        "src/transport/ti50emulator/mod.rs",
        "src/transport/ti50emulator/spi.rs",
        "src/transport/ti50emulator/uart.rs",
        "src/transport/ultradebug/gpio.rs",
        "src/transport/ultradebug/mod.rs",
        "src/transport/ultradebug/mpsse.rs",
        "src/transport/ultradebug/spi.rs",
        "src/transport/ultradebug/uart.rs",
        "src/transport/verilator/mod.rs",
        "src/transport/verilator/stdout.rs",
        "src/transport/verilator/subprocess.rs",
        "src/transport/verilator/transport.rs",
        "src/transport/verilator/uart.rs",
        "src/uart/console.rs",
        "src/uart/mod.rs",
        "src/util/bigint.rs",
        "src/util/bitfield.rs",
        "src/util/file.rs",
        "src/util/mod.rs",
        "src/util/num_de.rs",
        "src/util/parse_int.rs",
        "src/util/present.rs",
        "src/util/rom_detect.rs",
        "src/util/unknown.rs",
        "src/util/usb.rs",
        "src/util/usr_access.rs",
        "src/util/voltage.rs",
    ],
    compile_data = [
        ":config",
        ":e2e_command",
    ],
    proc_macro_deps = [
        "//sw/host/opentitanlib/opentitantool_derive",
    ],
    rustc_env = {
        "e2e_command": "$(location :e2e_command)",
    },
    deps = [
        "//third_party/rust/crates:anyhow",
        "//third_party/rust/crates:bitflags",
        "//third_party/rust/crates:byteorder",
        "//third_party/rust/crates:deser_hjson",
        "//third_party/rust/crates:directories",
        "//third_party/rust/crates:env_logger",
        "//third_party/rust/crates:erased_serde",
        "//third_party/rust/crates:hex",
        "//third_party/rust/crates:humantime",
        "//third_party/rust/crates:indicatif",
        "//third_party/rust/crates:lazy_static",
        "//third_party/rust/crates:log",
        "//third_party/rust/crates:memoffset",
        "//third_party/rust/crates:mio",
        "//third_party/rust/crates:mio_signals",
        "//third_party/rust/crates:nix",
        "//third_party/rust/crates:num_bigint_dig",
        "//third_party/rust/crates:num_enum",
        "//third_party/rust/crates:num_traits",
        "//third_party/rust/crates:rand",
        "//third_party/rust/crates:raw_tty",
        "//third_party/rust/crates:regex",
        "//third_party/rust/crates:rsa",
        "//third_party/rust/crates:rusb",
        "//third_party/rust/crates:serde",
        "//third_party/rust/crates:serde_json",
        "//third_party/rust/crates:serialport",
        "//third_party/rust/crates:sha2",
        "//third_party/rust/crates:shellwords",
        "//third_party/rust/crates:structopt",
        "//third_party/rust/crates:thiserror",
        "//third_party/rust/crates:typetag",
        "//third_party/rust/crates:zerocopy",
        "@safe_ftdi",
    ],
)

rust_test(
    name = "opentitanlib_test",
    compile_data = [
        ":e2e_command",
        "src/bootstrap/simple.bin",
        "src/spiflash/SFDP_MX66L1G.bin",
    ],
    crate = ":opentitanlib",
    data = [
        "src/image/testdata/hello.txt",
        "src/image/testdata/manifest.hjson",
        "src/image/testdata/manifest_missing.hjson",
        "src/image/testdata/test_image.bin",
        "src/image/testdata/world.txt",
        "src/otp/testdata/lc_ctrl_state.hjson",
        "src/otp/testdata/otp_ctrl_img_dev.hjson",
        "src/otp/testdata/otp_ctrl_mmap.hjson",
        "src/otp/testdata/output.vmem",
    ],
    rustc_env = {
        "e2e_command": "$(location :e2e_command)",
    },
)
