blob: f5fc5695e7e69d4e29eb63fafd1bc60019ddccc6 [file] [log] [blame]
# 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/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",
]
rustfmt_test(
name = "rustfmt_check",
targets = RUST_TARGETS,
)
html_coverage_report(
name = "html_coverage_report",
)