[bazel] Merge :manifest, :manifest_intf, and :mock_manifest
Signed-off-by: Miguel Young de la Sota <mcyoung@google.com>
diff --git a/sw/device/lib/testing/test_rom/BUILD b/sw/device/lib/testing/test_rom/BUILD
index 6be6ca2..70df9eb 100644
--- a/sw/device/lib/testing/test_rom/BUILD
+++ b/sw/device/lib/testing/test_rom/BUILD
@@ -57,7 +57,7 @@
"//sw/device/lib/runtime:log",
"//sw/device/lib/runtime:print",
"//sw/device/lib/testing/test_framework",
- "//sw/device/silicon_creator/lib:manifest_intf",
+ "//sw/device/silicon_creator/lib:manifest",
],
)
diff --git a/sw/device/silicon_creator/lib/BUILD b/sw/device/silicon_creator/lib/BUILD
index a8d3716..34ec917 100644
--- a/sw/device/silicon_creator/lib/BUILD
+++ b/sw/device/silicon_creator/lib/BUILD
@@ -181,55 +181,44 @@
hdrs = ["manifest_size.h"],
)
-cc_library(
- name = "manifest_intf",
- hdrs = ["manifest.h"],
- deps = [
- ":epmp",
- ":error",
- ":keymgr_binding",
- ":manifest_size",
- ":sigverify_internal",
- "//sw/device/lib/base:macros",
- "//sw/device/silicon_creator/lib/drivers:lifecycle",
- ],
-)
-
-cc_library(
+dual_cc_library(
name = "manifest",
- srcs = ["manifest.c"],
- deps = [
- ":manifest_intf",
- "//hw/top_earlgrey/sw/autogen:top_earlgrey",
- ],
-)
-
-cc_library(
- name = "mock_manifest",
- testonly = True,
- hdrs = ["mock_manifest.h"],
- deps = [
- ":manifest_intf",
- "//sw/device/lib/base/testing:global_mock",
- "//sw/device/silicon_creator/testing:mask_rom_test",
- "@googletest//:gtest",
- ],
+ srcs = dual_inputs(
+ device = ["manifest.c"],
+ host = ["mock_manifest.cc"],
+ ),
+ hdrs = dual_inputs(
+ host = ["mock_manifest.h"],
+ shared = ["manifest.h"],
+ ),
+ deps = dual_inputs(
+ device = [
+ "//hw/top_earlgrey/sw/autogen:top_earlgrey",
+ ],
+ host = [
+ "//sw/device/lib/base/testing:global_mock",
+ "//sw/device/silicon_creator/testing:mask_rom_test",
+ "@googletest//:gtest",
+ ],
+ shared = [
+ ":epmp",
+ ":error",
+ ":keymgr_binding",
+ ":manifest_size",
+ ":sigverify_internal",
+ "//sw/device/lib/base:macros",
+ "//sw/device/silicon_creator/lib/drivers:lifecycle",
+ ],
+ ),
)
cc_test(
name = "manifest_unittest",
- srcs = [
- "manifest_unittest.cc",
- ],
+ srcs = ["manifest_unittest.cc"],
+ local_defines = ["MANIFEST_UNIT_TEST_"],
deps = [
- ":epmp",
- ":error",
- ":keymgr_binding",
- ":manifest_intf",
- ":sigverify_internal",
- "//hw/top_earlgrey/sw/autogen:top_earlgrey",
+ dual_cc_device_library_of(":manifest"),
"//sw/device/lib/base:csr",
- "//sw/device/silicon_creator/lib/drivers:lifecycle",
"//sw/device/silicon_creator/testing:mask_rom_test",
"@googletest//:gtest_main",
],
@@ -354,7 +343,7 @@
hdrs = ["sigverify.h"],
deps = [
":error",
- ":manifest_intf",
+ ":manifest",
":sigverify_internal",
"//sw/device/silicon_creator/lib/drivers:hmac",
"//sw/device/silicon_creator/lib/drivers:lifecycle",
diff --git a/sw/device/silicon_creator/lib/manifest.h b/sw/device/silicon_creator/lib/manifest.h
index 8bbda4c..5c58b97 100644
--- a/sw/device/silicon_creator/lib/manifest.h
+++ b/sw/device/silicon_creator/lib/manifest.h
@@ -265,7 +265,7 @@
#define MANIFEST_LENGTH_FIELD_OWNER_STAGE_MIN MANIFEST_SIZE
#define MANIFEST_LENGTH_FIELD_OWNER_STAGE_MAX 0x70000
-#ifndef OT_OFF_TARGET_TEST
+#if defined(OT_PLATFORM_RV32) || defined(MANIFEST_UNIT_TEST_)
/**
* Checks the fields of a manifest.
*
@@ -347,7 +347,7 @@
inline uintptr_t manifest_entry_point_get(const manifest_t *manifest) {
return (uintptr_t)manifest + manifest->entry_point;
}
-#else
+#else // defined(OT_PLATFORM_RV32) || defined(MANIFEST_UNIT_TEST_)
/**
* Declarations for the functions above that should be defined in tests.
*/
@@ -355,7 +355,7 @@
manifest_digest_region_t manifest_digest_region_get(const manifest_t *manifest);
epmp_region_t manifest_code_region_get(const manifest_t *manifest);
uintptr_t manifest_entry_point_get(const manifest_t *manifest);
-#endif
+#endif // defined(OT_PLATFORM_RV32) || defined(MANIFEST_UNIT_TEST_)
#ifdef __cplusplus
} // extern "C"
diff --git a/sw/device/silicon_creator/lib/mock_manifest.cc b/sw/device/silicon_creator/lib/mock_manifest.cc
new file mode 100644
index 0000000..148e8b0
--- /dev/null
+++ b/sw/device/silicon_creator/lib/mock_manifest.cc
@@ -0,0 +1,26 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+#include "sw/device/silicon_creator/lib/mock_manifest.h"
+
+namespace mask_rom_test {
+extern "C" {
+rom_error_t manifest_check(const manifest_t *manifest) {
+ return MockManifest::Instance().Check(manifest);
+}
+
+manifest_digest_region_t manifest_digest_region_get(
+ const manifest_t *manifest) {
+ return MockManifest::Instance().DigestRegion(manifest);
+}
+
+epmp_region_t manifest_code_region_get(const manifest_t *manifest) {
+ return MockManifest::Instance().CodeRegion(manifest);
+}
+
+uintptr_t manifest_entry_point_get(const manifest_t *manifest) {
+ return MockManifest::Instance().EntryPoint(manifest);
+}
+} // extern "C"
+} // namespace mask_rom_test
diff --git a/sw/device/silicon_creator/lib/mock_manifest.h b/sw/device/silicon_creator/lib/mock_manifest.h
index cdc0074..0f4ada6 100644
--- a/sw/device/silicon_creator/lib/mock_manifest.h
+++ b/sw/device/silicon_creator/lib/mock_manifest.h
@@ -27,6 +27,7 @@
using MockManifest = testing::StrictMock<internal::MockManifest>;
+#ifdef IS_MESON_FOR_MIGRATIONS_ONLY
extern "C" {
rom_error_t manifest_check(const manifest_t *manifest) {
@@ -47,6 +48,7 @@
}
} // extern "C"
+#endif
} // namespace mask_rom_test
#endif // OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_MOCK_MANIFEST_H_
diff --git a/sw/device/silicon_creator/mask_rom/BUILD b/sw/device/silicon_creator/mask_rom/BUILD
index d8ea891..6148095 100644
--- a/sw/device/silicon_creator/mask_rom/BUILD
+++ b/sw/device/silicon_creator/mask_rom/BUILD
@@ -23,7 +23,7 @@
"//sw/device/lib/base:hardened",
"//sw/device/silicon_creator/lib:boot_data",
"//sw/device/silicon_creator/lib:error",
- "//sw/device/silicon_creator/lib:manifest_intf",
+ "//sw/device/silicon_creator/lib:manifest",
"//sw/device/silicon_creator/lib:shutdown",
],
)
@@ -52,7 +52,7 @@
":mock_boot_policy_ptrs",
"//sw/device/lib/base:hardened",
"//sw/device/silicon_creator/lib:boot_data",
- "//sw/device/silicon_creator/lib:mock_manifest",
+ "//sw/device/silicon_creator/lib:manifest",
"//sw/device/silicon_creator/lib:mock_shutdown",
"//sw/device/silicon_creator/testing:mask_rom_test",
"@googletest//:gtest_main",