blob: 3e33f9698c6b07bbe08e83a31e17e2002275abb9 [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("@//rules:opentitan_test.bzl", "dv_params", "opentitan_functest")
package(default_visibility = ["//visibility:public"])
# Note, this file contains step-by-step instructions on how to both:
# 1. add custom test hook libraries (that override the default), labeled
# `TH-STEP *` for "Test Hook Step *", and,
# 2. add custom manufacturer tests, labeled `OTFT-STEP *` for "OpenTitan
# Functest Step *".
# Read on to learn more about these features.
################################################################################
# Config Settings for each Test Hook Library.
#
# These allow you to select which set of test hooks Bazel should use via a
# command line argument, e.g., `--define test_hooks=<config setting name>`
#
# Modify this as described below to add more test hooks libraries.
################################################################################
# Example running the open-source AES smoketest with default test hooks:
# bazel test //sw/device/tests:aes_smoketest --define test_hooks=default
# - or -
# bazel test //sw/device/tests:aes_smoketest
config_setting(
name = "hooks_default",
define_values = {
"test_hooks": "default",
},
)
# Example running the open-source AES smoketest with non-default test hooks:
# bazel test //sw/device/tests:aes_smoketest --define test_hooks=hooks_1
config_setting(
name = "hooks_1",
define_values = {
"test_hooks": "hooks_1",
},
)
# TH-Step 1: Copy/Uncomment below to add an additional set of test hooks.
# config_setting(
# name = "hooks_2",
# define_values = {
# "test_hooks": "hooks_2",
# },
# )
# TH-Step 2: Copy/Uncomment the row below to add an additional set of test hooks.
_TEST_HOOKS_DEPS = select({
"hooks_1": [":test_hooks_1"],
# "hooks_2": [":test_hooks_2"],
"hooks_default": [],
"//conditions:default": [],
})
################################################################################
# Example Manufacturer Test Hook Library.
#
# Modify this section as described below to add more test hooks libraries.
################################################################################
cc_library(
name = "test_hooks_1",
srcs = ["test_hooks_1.c"],
deps = [
"@//sw/device/lib/runtime:log",
],
alwayslink = True,
)
# TH-Step 3: Copy/Uncomment below to add an additional test hooks library that
# may override the default test hooks.
# cc_library(
# # The name is the label that will be used to refer to this library below,
# # in the single `test_hooks` library that is a dependency of the OTTF.
# name = "test_hooks_2",
#
# # `srcs` is a list of source files and private header files.
# srcs = ["test_hooks_2.c"],
#
# # `hdrs` is a list of public header files for the `test_hooks` library.
# hdrs = [],
#
# # `deps` is a list of dependencies for this library.
# # Any dependencies local to this repo can start with `//`.
# # Any dependencies from the main opentitan repo must start with `@//`.
# deps = ["@//sw/device/lib/runtime:log"],
#
# # We use alwayslink to force the symbols exported by this library to
# # override the default test hook weak symbols provided by the default
# # `test_hooks` library below.
# alwayslink = True,
# )
################################################################################
# DO NOT MODIFY THIS SECTION
#
# The main `test_hooks` library that may be overridden by manufacturer test hook
# libraries defined above.
################################################################################
cc_library(
name = "test_hooks",
srcs = ["test_hooks_default.c"],
deps = ["@//sw/device/lib/base:macros"] + _TEST_HOOKS_DEPS,
)
################################################################################
# Manufacturer Tests
#
# These may make use of any manufacturer test hook libraries the same was as
# open-source tests may, but it is probably uneccessary, since these are custom
# manufacturer defined tests.
#
# Additional tests may be added below as `opentitan_functest` rules. Same as
# above, any dependencies local to this repo can start with `//`. However, any
# dependencies from the main opentitan repo must start with `@//`.
#
# To run the example test below using the default location:
# `bazel test @manufacturer_test_hooks//:example_test`
#
# To run the example test below when the `@manufacturer_test_hooks` repo is in a
# different location on the system, use:
# `MANUFACTURER_HOOKS_DIR=/path/to/test_hooks
# bazel test @manufacturer_test_hooks//:example_test`
################################################################################
# OTFT-Step 1: Copy/paste the below `opentitan_functest` to add an additional
# manufacturer-specific test.
opentitan_functest(
name = "example_test",
srcs = ["example_test.c"],
dv = dv_params(
rom = "//sw/device/silicon_creator/rom:rom_with_fake_keys",
),
key = "fake_test_key_0",
targets = [
"cw310_rom",
"cw310_test_rom",
"dv",
],
deps = [
"@//sw/device/lib/testing/test_framework:ottf_main",
],
)
################################################################################
# Statically Hooked Manufacturer Tests
#
# This provides an example of how to use open source test code in
# `sw/device/tests/` with manufacturer test hooks (defined in this Bazel
# repository) without having to specify which test hooks library should be
# executed with the test on the command line.
#
# TODO(lowRISC:opentitan#13180): see description in `sw/device/tests/BUILD`.
#
# To run the example test below using the default location:
# `bazel test @manufacturer_test_hooks//:statically_hooked_opensource_test`
#
# To run the example test below when the `@manufacturer_test_hooks` repo is in a
# different location on the system, use:
# `MANUFACTURER_HOOKS_DIR=/path/to/test_hooks
# bazel test @manufacturer_test_hooks//:statically_hooked_opensource_test`
################################################################################
opentitan_functest(
name = "statically_hooked_opensource_test",
srcs = ["@//sw/device/tests:example_test_from_flash.c"],
dv = dv_params(
rom = "//sw/device/silicon_creator/rom:rom_with_fake_keys",
),
key = "fake_test_key_0",
targets = [
"cw310_rom",
"cw310_test_rom",
"dv",
],
deps = [
"@//sw/device/lib/testing/test_framework:ottf_main",
"@manufacturer_test_hooks//:test_hooks_1",
],
)