[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",