| # Copyright lowRISC contributors. | 
 | # Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
 | # SPDX-License-Identifier: Apache-2.0 | 
 |  | 
 | load("@ot_hack_bazelbuild_buildtools//buildifier:def.bzl", "buildifier", "buildifier_test") | 
 | load("@lowrisc_lint//rules:rules.bzl", "licence_test") | 
 | load("//rules:quality.bzl", "clang_format_check", "clang_format_test", "html_coverage_report") | 
 | load("@rules_rust//rust:defs.bzl", "rustfmt_test") | 
 |  | 
 | package(default_visibility = ["//visibility:public"]) | 
 |  | 
 | licence_test( | 
 |     name = "license_check", | 
 |     exclude_patterns = [ | 
 |         # Exclude anything in vendored directories | 
 |         "third_party/**", | 
 |         "*/vendor/*/*", | 
 |         "util/lowrisc_misc-linters/*", | 
 |  | 
 |         ## Hardware Exclusions | 
 |  | 
 |         # DV Vendored test vectors | 
 |         "hw/dv/sv/test_vectors", | 
 |         # Vendored CRC model | 
 |         "hw/dv/dpi/usbdpi/usb_crc.c", | 
 |         # Vendored HMAC model | 
 |         "hw/ip/hmac/dv/cryptoc_dpi/*", | 
 |         # PRINCE C++ reference model from Sebastien Riou | 
 |         "hw/ip/prim/dv/prim_prince/crypto_dpi_prince/prince_ref.h", | 
 |         # PRESENT C reference model from Thomas Siebert | 
 |         "hw/ip/prim/dv/prim_present/crypto_dpi_present/boxes.inc", | 
 |         "hw/ip/prim/dv/prim_present/crypto_dpi_present/comline.inc", | 
 |         "hw/ip/prim/dv/prim_present/crypto_dpi_present/present.inc", | 
 |         "hw/ip/prim/dv/prim_present/crypto_dpi_present/verbose.inc", | 
 |         # PRESENT Python reference model | 
 |         "util/design/lib/Present.py", | 
 |         # Vendored FPGA information | 
 |         "hw/top_earlgrey/data/*.xdc", | 
 |         "util/fpga/bram_load.mmi", | 
 |         # Manually checked, files contain additional copyright header lines | 
 |         "hw/ip/usb_fs_nb_pe/rtl/*", | 
 |         "hw/ip/usbdev/rtl/usbdev_iomux.sv", | 
 |  | 
 |         ## Software Exclusions | 
 |  | 
 |         # Coremark Vendored Files | 
 |         "sw/device/benchmarks/coremark/top_earlgrey/*", | 
 |  | 
 |         ## Other Exclusions | 
 |  | 
 |         # Other Licences, | 
 |         "util/wavegen/LICENSE.wavedrom", | 
 |         # Site Assets | 
 |         "site/**/assets/scss/**", | 
 |         "site/landing/static/js/tiny-slider.js", | 
 |         # Code taken from Chromium, so covered by the BSD licence | 
 |         "sw/otbn/crypto/modexp.s", | 
 |         "sw/otbn/crypto/p256.s", | 
 |         "sw/otbn/crypto/rsa_verify.s", | 
 |         "sw/otbn/crypto/handwritten/rsa_verify_3072.s", | 
 |         "sw/otbn/crypto/sha512.s", | 
 |         # Mersenne Twister PRNG | 
 |         "sw/device/sca/lib/prng.c", | 
 |         # Alma testbench files | 
 |         "hw/ip/aes/pre_sca/alma/cpp/testbench.h", | 
 |         "hw/ip/aes/pre_sca/alma/cpp/verilator_tb_aes_sbox.cpp", | 
 |         "hw/ip/aes/pre_sca/alma/cpp/verilator_tb_aes_sub_bytes.cpp", | 
 |         "hw/ip/kmac/pre_sca/alma/cpp/verilator_tb_keccak_2share.cpp", | 
 |     ], | 
 |     licence = """ | 
 |     Copyright lowRISC contributors. | 
 |     Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
 |     SPDX-License-Identifier: Apache-2.0 | 
 |     """, | 
 |     workspace = "//:WORKSPACE", | 
 | ) | 
 |  | 
 | clang_format_exclude = [ | 
 |     # Vendored source code dirs | 
 |     "./**/vendor/**", | 
 |     # Rust cargo build dirs | 
 |     "./**/target/**", | 
 |     # Directories used exclusively to store build artifacts are still copied into. | 
 |     "./build-out/**", | 
 |     "./build-bin/**", | 
 |     # fusesoc build dir | 
 |     "./build/**", | 
 | ] | 
 |  | 
 | clang_format_test( | 
 |     name = "clang_format_check", | 
 |     exclude_patterns = clang_format_exclude, | 
 |     mode = "diff", | 
 |     workspace = "//:WORKSPACE", | 
 | ) | 
 |  | 
 | clang_format_check( | 
 |     name = "clang_format_fix", | 
 |     exclude_patterns = clang_format_exclude, | 
 |     mode = "fix", | 
 | ) | 
 |  | 
 | buildifier_exclude = [ | 
 |     "./WORKSPACE",  # Prevent Buildifier from inserting unnecessary newlines. | 
 |     "./**/vendor/**", | 
 |     "./build/**", | 
 |     "./third_party/rust/crates/crates.bzl",  # Autogenerated by cargo-raze | 
 | ] | 
 |  | 
 | buildifier( | 
 |     name = "buildifier_fix", | 
 |     exclude_patterns = buildifier_exclude, | 
 | ) | 
 |  | 
 | buildifier_test( | 
 |     name = "buildifier_check", | 
 |     diff_command = "diff -u", | 
 |     exclude_patterns = buildifier_exclude, | 
 |     mode = "diff", | 
 |     no_sandbox = True, | 
 |     verbose = True, | 
 |     workspace = "//:WORKSPACE", | 
 | ) | 
 |  | 
 | # TODO(cfrantz): Find a way to keep this list of rust targets synchronized | 
 | # with the full set of rust targets in the codebase. | 
 | # | 
 | # $ bazel query 'kind("rust_(binary|library|test)", //...)' | grep -v bindgen | 
 | RUST_TARGETS = [ | 
 |     "//sw/device/lib/ujson/rust:roundtrip_test", | 
 |     "//sw/host/cryptotest:cryptotest_parser", | 
 |     "//sw/host/cryptotest:cryptotest_parser_test", | 
 |     "//sw/host/opentitanlib:opentitanlib", | 
 |     "//sw/host/opentitanlib:opentitanlib_test", | 
 |     "//sw/host/opentitansession:opentitansession", | 
 |     "//sw/host/opentitantool:opentitantool", | 
 |     "//sw/host/tests/chip/gpio:gpio", | 
 |     "//sw/host/tests/chip/power_virus:power_virus", | 
 |     "//sw/host/tests/rom/e2e_bootstrap_disabled:e2e_bootstrap_disabled", | 
 |     "//sw/host/tests/rom/e2e_bootstrap_entry:e2e_bootstrap_entry", | 
 |     "//sw/host/tests/rom/e2e_chip_specific_startup:e2e_chip_specific_startup", | 
 |     "//sw/host/tests/rom/sw_strap_value:sw_strap_value", | 
 |     "//sw/host/tests/chip/spi_passthru:spi_passthru", | 
 | ] | 
 |  | 
 | rustfmt_test( | 
 |     name = "rustfmt_check", | 
 |     targets = RUST_TARGETS, | 
 | ) | 
 |  | 
 | html_coverage_report( | 
 |     name = "html_coverage_report", | 
 | ) |