[bazel] Merge :rnd and :mock_rnd

Signed-off-by: Miguel Young de la Sota <mcyoung@google.com>
diff --git a/sw/device/silicon_creator/lib/drivers/BUILD b/sw/device/silicon_creator/lib/drivers/BUILD
index 8e99e57..1537d9b 100644
--- a/sw/device/silicon_creator/lib/drivers/BUILD
+++ b/sw/device/silicon_creator/lib/drivers/BUILD
@@ -404,35 +404,36 @@
     ],
 )
 
-cc_library(
+dual_cc_library(
     name = "rnd",
-    srcs = ["rnd.c"],
-    hdrs = ["rnd.h"],
-    target_compatible_with = [OPENTITAN_CPU],
-    deps = [
-        ":otp",
-        "//hw/ip/otp_ctrl/data:otp_ctrl_regs",
-        "//hw/ip/rv_core_ibex/data:rv_core_ibex_regs",
-        "//hw/top_earlgrey/sw/autogen:top_earlgrey",
-        "//sw/device/lib/base:abs_mmio",
-        "//sw/device/lib/base:csr",
-        "//sw/device/lib/base:hardened",
-        "//sw/device/lib/base:macros",
-    ],
-)
-
-cc_library(
-    name = "mock_rnd",
-    testonly = True,
-    hdrs = [
-        "mock_rnd.h",
-        "rnd.h",
-    ],
-    deps = [
-        "//sw/device/lib/base/testing:global_mock",
-        "//sw/device/silicon_creator/testing:mask_rom_test",
-        "@googletest//:gtest",
-    ],
+    srcs = dual_inputs(
+        device = ["rnd.c"],
+        host = ["mock_rnd.cc"],
+    ),
+    hdrs = dual_inputs(
+        host = ["mock_rnd.h"],
+        shared = ["rnd.h"],
+    ),
+    deps = dual_inputs(
+        device = [
+            ":otp",
+            "//hw/ip/otp_ctrl/data:otp_ctrl_regs",
+            "//hw/ip/rv_core_ibex/data:rv_core_ibex_regs",
+            "//hw/top_earlgrey/sw/autogen:top_earlgrey",
+            "//sw/device/lib/base:abs_mmio",
+            "//sw/device/lib/base:csr",
+            "//sw/device/lib/base:hardened",
+        ],
+        host = [
+            "//sw/device/lib/base/testing:global_mock",
+            "//sw/device/silicon_creator/testing:mask_rom_test",
+            "@googletest//:gtest",
+        ],
+        shared = [
+            "//sw/device/lib/base:macros",
+            "//sw/device/silicon_creator/lib:error",
+        ],
+    ),
 )
 
 opentitan_functest(
diff --git a/sw/device/silicon_creator/lib/drivers/mock_rnd.cc b/sw/device/silicon_creator/lib/drivers/mock_rnd.cc
new file mode 100644
index 0000000..9684c41
--- /dev/null
+++ b/sw/device/silicon_creator/lib/drivers/mock_rnd.cc
@@ -0,0 +1,9 @@
+// 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/drivers/mock_rnd.h"
+
+namespace mask_rom_test {
+extern "C" uint32_t rnd_uint32(void) { return MockRnd::Instance().Uint32(); }
+}  // namespace mask_rom_test
diff --git a/sw/device/silicon_creator/lib/drivers/mock_rnd.h b/sw/device/silicon_creator/lib/drivers/mock_rnd.h
index 76f0ab8..14460dd 100644
--- a/sw/device/silicon_creator/lib/drivers/mock_rnd.h
+++ b/sw/device/silicon_creator/lib/drivers/mock_rnd.h
@@ -24,11 +24,13 @@
 
 using MockRnd = testing::StrictMock<internal::MockRnd>;
 
+#ifdef IS_MESON_FOR_MIGRATIONS_ONLY
 extern "C" {
 
 uint32_t rnd_uint32(void) { return MockRnd::Instance().Uint32(); }
 
 }  // extern "C"
+#endif
 }  // namespace mask_rom_test
 
 #endif  // OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_MOCK_RND_H_
diff --git a/sw/device/silicon_creator/mask_rom/BUILD b/sw/device/silicon_creator/mask_rom/BUILD
index cbb3bac..ac31df3 100644
--- a/sw/device/silicon_creator/mask_rom/BUILD
+++ b/sw/device/silicon_creator/mask_rom/BUILD
@@ -274,8 +274,8 @@
         "//sw/device/silicon_creator/lib:sigverify_intf",
         "//sw/device/silicon_creator/lib:sigverify_mod_exp_ibex",
         "//sw/device/silicon_creator/lib/drivers:lifecycle",
-        "//sw/device/silicon_creator/lib/drivers:mock_rnd",
         "//sw/device/silicon_creator/lib/drivers:otp",
+        "//sw/device/silicon_creator/lib/drivers:rnd",
         "//sw/device/silicon_creator/mask_rom/keys:test_public_keys",
         "//sw/device/silicon_creator/testing:mask_rom_test",
         "@googletest//:gtest_main",