|  | # 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") | 
|  |  | 
|  | package(default_visibility = ["//visibility:public"]) | 
|  |  | 
|  | rust_library( | 
|  | name = "opentitanlib", | 
|  | srcs = [ | 
|  | "src/app/command.rs", | 
|  | "src/app/conf.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/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/usb.rs", | 
|  | "src/util/voltage.rs", | 
|  | ], | 
|  | proc_macro_deps = [ | 
|  | "//sw/host/opentitanlib/opentitantool_derive", | 
|  | ], | 
|  | 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: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: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: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 = [ | 
|  | "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", | 
|  | ], | 
|  | ) |