| # 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_doc", "rust_library", "rust_test") |
| load("//rules:ujson.bzl", "ujson_rust") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| ujson_rust( |
| name = "e2e_command", |
| srcs = ["//sw/device/lib/testing/json:command"], |
| defines = ["opentitanlib=crate"], |
| ) |
| |
| ujson_rust( |
| name = "gpio", |
| srcs = ["//sw/device/lib/testing/json:gpio"], |
| defines = ["opentitanlib=crate"], |
| ) |
| |
| ujson_rust( |
| name = "pinmux_config", |
| srcs = ["//sw/device/lib/testing/json:pinmux_config"], |
| defines = ["opentitanlib=crate"], |
| ) |
| |
| ujson_rust( |
| name = "spi_passthru", |
| srcs = ["//sw/device/lib/testing/json:spi_passthru"], |
| 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/nexus.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/chip/alert.rs", |
| "src/chip/boolean.rs", |
| "src/chip/mod.rs", |
| "src/crypto/mod.rs", |
| "src/crypto/rsa.rs", |
| "src/crypto/sha256.rs", |
| "src/dif/lc_ctrl.rs", |
| "src/dif/rstmgr.rs", |
| "src/dif/mod.rs", |
| "src/image/image.rs", |
| "src/image/manifest.rs", |
| "src/image/manifest_def.rs", |
| "src/image/mod.rs", |
| "src/io/eeprom.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/alert_handler.rs", |
| "src/otp/alert_handler_regs.rs", |
| "src/otp/lc_state.rs", |
| "src/otp/mod.rs", |
| "src/otp/otp_img.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/epmp.rs", |
| "src/test_utils/gpio.rs", |
| "src/test_utils/spi_passthru.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/tpm/access.rs", |
| "src/tpm/driver.rs", |
| "src/tpm/mod.rs", |
| "src/tpm/status.rs", |
| "src/transport/common/mod.rs", |
| "src/transport/common/fpga.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/dfu.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/nexus/gpio.rs", |
| "src/transport/nexus/mod.rs", |
| "src/transport/nexus/spi.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/gpio.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/nix.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", |
| ] + select({ |
| "//sw/device:is_english_breakfast": [], |
| "//conditions:default": [ |
| "src/chip/earlgrey.rs", |
| "src/test_utils/pinmux_config.rs", |
| ], |
| }), |
| compile_data = [ |
| ":config", |
| ":gpio", |
| ":e2e_command", |
| ":pinmux_config", |
| ":spi_passthru", |
| "@hyperdebug_firmware//file", |
| ], |
| crate_features = [ |
| "include_hyperdebug_firmware", |
| ] + select({ |
| "//sw/device:is_english_breakfast": ["english_breakfast"], |
| "//conditions:default": [], |
| }), |
| proc_macro_deps = [ |
| "//sw/host/opentitanlib/opentitantool_derive", |
| "@crate_index//:serde_derive", |
| "@lowrisc_serde_annotate//annotate_derive:annotate_derive", |
| ], |
| rustc_env = { |
| "e2e_command": "$(location :e2e_command)", |
| "gpio": "$(location :gpio)", |
| "pinmux_config": "$(location :pinmux_config)", |
| "spi_passthru": "$(location :spi_passthru)", |
| "hyperdebug_firmware": "$(location @hyperdebug_firmware//file)", |
| }, |
| deps = [ |
| "//sw/host/opentitanlib/bindgen", |
| "@crate_index//:anyhow", |
| "@crate_index//:arrayvec", |
| "@crate_index//:bitflags", |
| "@crate_index//:bitvec", |
| "@crate_index//:byteorder", |
| "@crate_index//:chrono", |
| "@crate_index//:crc", |
| "@crate_index//:deser-hjson", |
| "@crate_index//:directories", |
| "@crate_index//:env_logger", |
| "@crate_index//:erased-serde", |
| "@crate_index//:hex", |
| "@crate_index//:humantime", |
| "@crate_index//:humantime-serde", |
| "@crate_index//:indicatif", |
| "@crate_index//:lazy_static", |
| "@crate_index//:log", |
| "@crate_index//:memoffset", |
| "@crate_index//:mio", |
| "@crate_index//:mio-signals", |
| "@crate_index//:nix", |
| "@crate_index//:num-bigint-dig", |
| "@crate_index//:num-traits", |
| "@crate_index//:num_enum", |
| "@crate_index//:rand", |
| "@crate_index//:raw_tty", |
| "@crate_index//:regex", |
| "@crate_index//:rsa", |
| "@crate_index//:rusb", |
| "@crate_index//:serde", |
| "@crate_index//:serde_json", |
| "@crate_index//:serialport", |
| "@crate_index//:sha2", |
| "@crate_index//:shellwords", |
| "@crate_index//:structopt", |
| "@crate_index//:thiserror", |
| "@crate_index//:typetag", |
| "@crate_index//:zerocopy", |
| "@lowrisc_safe_ftdi//:safe_ftdi", |
| "@lowrisc_serde_annotate//:serde_annotate", |
| ], |
| ) |
| |
| rust_test( |
| name = "opentitanlib_test", |
| compile_data = [ |
| ":e2e_command", |
| ":gpio", |
| ":pinmux_config", |
| "@hyperdebug_firmware//file", |
| "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)", |
| "gpio": "$(location :gpio)", |
| "pinmux_config": "$(location :pinmux_config)", |
| }, |
| ) |
| |
| rust_doc( |
| name = "opentitanlib_doc", |
| crate = ":opentitanlib", |
| ) |