workspace: Updates Bazel build files to work in CI

No-Docs-Update-Reason: Fixes build files.
Change-Id: I596ba5b567cbe6625d378695e0c59a15db974578
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/54680
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Akira Baruah <akirabaruah@google.com>
Commit-Queue: Keir Mierle <keir@google.com>
diff --git a/WORKSPACE b/WORKSPACE
index dc556c8..8f1736f 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -30,7 +30,7 @@
 
 cipd_init()
 
-# Setup python support.
+# Set up Python support.
 # Required by: rules_fuzzing.
 # Used in modules: None.
 http_archive(
@@ -42,7 +42,7 @@
     ],
 )
 
-# Set up Starlark library
+# Set up Starlark library.
 # Required by: io_bazel_rules_go, com_google_protobuf.
 # Used in modules: None.
 # This must be instantiated before com_google_protobuf as protobuf_deps() pulls
@@ -61,7 +61,20 @@
 
 bazel_skylib_workspace()
 
-# Sets up host hermetic host toolchain.
+# Set up upstream googletest and googlemock.
+# Required by: Pigweed.
+# Used in modules: //pw_analog, //pw_i2c.
+http_archive(
+    name = "com_google_googletest",
+    sha256 = "9dc9157a9a1551ec7a7e43daea9a694a0bb5fb8bec81235d8a1e6ef64c716dcb",
+    strip_prefix = "googletest-release-1.10.0",
+    urls = [
+        "https://mirror.bazel.build/github.com/google/googletest/archive/release-1.10.0.tar.gz",
+        "https://github.com/google/googletest/archive/release-1.10.0.tar.gz",
+    ],
+)
+
+# Set up host hermetic host toolchain.
 # Required by: All cc targets.
 # Used in modules: All cc targets.
 git_repository(
@@ -78,7 +91,7 @@
 
 register_cc_toolchains()
 
-# Set up protobuf rules
+# Set up Protobuf rules.
 # Required by: pigweed, com_github_bazelbuild_buildtools.
 # Used in modules: //pw_protobuf.
 http_archive(
@@ -92,9 +105,9 @@
 
 protobuf_deps()
 
-# Setup tools to build custom grpc rules.
+# Set up tools to build custom GRPC rules.
 # Required by: pigweed.
-# Used in modules: //pw_protobuf
+# Used in modules: //pw_protobuf.
 http_archive(
     name = "rules_proto_grpc",
     sha256 = "5f0f2fc0199810c65a2de148a52ba0aff14d631d4e8202f41aff6a9d590a471b",
@@ -112,15 +125,18 @@
 
 rules_proto_grpc_repos()
 
-# Set up build_bazel_rules_nodejs.
+# Set up Bazel platforms.
 # Required by: pigweed.
-# Used in modules: //pw_web_ui.
+# Used in modules: //pw_build, (Assorted modules via select statements).
 git_repository(
     name = "platforms",
     commit = "d4c9d7f51a7c403814b60f66d20eeb425fbaaacb",
     remote = "https://github.com/bazelbuild/platforms.git",
 )
 
+# Set up NodeJs rules.
+# Required by: pigweed.
+# Used in modules: //pw_web_ui.
 http_archive(
     name = "build_bazel_rules_nodejs",
     sha256 = "8f5f192ba02319254aaf2cdcca00ec12eaafeb979a80a1e946773c520ae0a2c9",
@@ -142,6 +158,9 @@
     yarn_lock = "//:yarn.lock",
 )
 
+# Set up web-testing rules.
+# Required by: pigweed.
+# Used in modules: //pw_web_ui.
 http_archive(
     name = "io_bazel_rules_webtesting",
     sha256 = "9bb461d5ef08e850025480bab185fd269242d4e533bca75bfb748001ceb343c3",
@@ -162,7 +181,7 @@
     firefox = True,
 )
 
-# Setup embedded C/C++ toolchains.
+# Set up embedded C/C++ toolchains.
 # Required by: pigweed.
 # Used in modules: //pw_polyfill, //pw_build (all pw_cc* targets).
 git_repository(
@@ -214,7 +233,7 @@
 # Registers platforms for use with toolchain resolution
 register_execution_platforms("//pw_build/platforms:all")
 
-# Setup Golang toolchain rules
+# Set up Golang toolchain rules.
 # Required by: bazel_gazelle, com_github_bazelbuild_buildtools.
 # Used in modules: None.
 http_archive(
@@ -236,9 +255,9 @@
 
 go_register_toolchains()
 
-# Setup bazel package manager for golang
+# Set up bazel package manager for golang.
 # Required by: com_github_bazelbuild_buildtools.
-# Used in modules: None
+# Used in modules: None.
 http_archive(
     name = "bazel_gazelle",
     sha256 = "b85f48fa105c4403326e9525ad2b2cc437babaa6e15a3fc0b1dbab0ab064bc7c",
@@ -252,8 +271,8 @@
 
 gazelle_dependencies()
 
-# Setup bazel buildtools (bazel linter and formatter)
-# Required by: pigweed
+# Set up bazel buildtools (bazel linter and formatter).
+# Required by: pigweed.
 # Used in modules: //:all (bazel specific tools).
 http_archive(
     name = "com_github_bazelbuild_buildtools",
@@ -270,9 +289,9 @@
     build_file = "//targets:default_config.BUILD",
 )
 
-# Setup rules_fuzzing for fuzz tests.
+# Set up rules for fuzz testing.
 # Required by: pigweed.
-# Used in modules: pw_protobuf, pw_tokenizer, pw_fuzzer.
+# Used in modules: //pw_protobuf, //pw_tokenizer, //pw_fuzzer.
 http_archive(
     name = "rules_fuzzing",
     sha256 = "94f25c7a18db0502ace26a3ef7d0a25fd7c195c4e9770ddd1b1ec718e8936091",
diff --git a/pw_analog/BUILD.bazel b/pw_analog/BUILD.bazel
index c048d8f..5c699c3 100644
--- a/pw_analog/BUILD.bazel
+++ b/pw_analog/BUILD.bazel
@@ -55,8 +55,8 @@
     ],
     includes = ["public"],
     deps = [
-        "$dir_pw_third_party/googletest",
         ":microvolt_input",
+        "@com_google_googletest//:gtest",
     ],
 )
 
@@ -67,8 +67,8 @@
     ],
     includes = ["public"],
     deps = [
-        "$dir_pw_third_party/googletest",
         ":analog_input",
+        "@com_google_googletest//:gtest",
     ],
 )
 
diff --git a/pw_assert/BUILD.bazel b/pw_assert/BUILD.bazel
index 8b18131..0afb80d 100644
--- a/pw_assert/BUILD.bazel
+++ b/pw_assert/BUILD.bazel
@@ -63,7 +63,7 @@
     ],
     deps = [
         ":facade",
-        ":pw_assert",
+        "//pw_assert",
         "//pw_preprocessor",
         "//pw_span",
         "//pw_string",
@@ -78,7 +78,7 @@
         "assert_backend_compile_test_c.c",
     ],
     deps = [
-        ":pw_assert",
+        "//pw_assert",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_assert_log/BUILD.bazel b/pw_assert_log/BUILD.bazel
index a978f07..58225b7 100644
--- a/pw_assert_log/BUILD.bazel
+++ b/pw_assert_log/BUILD.bazel
@@ -35,6 +35,7 @@
         "public_overrides",
     ],
     deps = [
+        "//pw_log",
         "//pw_preprocessor",
     ],
 )
diff --git a/pw_blob_store/BUILD.bazel b/pw_blob_store/BUILD.bazel
index e4dc714..c8b5894 100644
--- a/pw_blob_store/BUILD.bazel
+++ b/pw_blob_store/BUILD.bazel
@@ -32,9 +32,11 @@
     deps = [
         "//pw_checksum",
         "//pw_containers",
+        "//pw_kvs",
         "//pw_log",
         "//pw_span",
         "//pw_status",
+        "//pw_stream",
     ],
 )
 
@@ -49,7 +51,6 @@
         "//pw_kvs:fake_flash",
         "//pw_kvs:fake_flash_test_key_value_store",
         "//pw_log",
-        "//pw_random",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_build/pigweed.bzl b/pw_build/pigweed.bzl
index 2b16982..c7a1fc0 100644
--- a/pw_build/pigweed.bzl
+++ b/pw_build/pigweed.bzl
@@ -110,14 +110,36 @@
 
     target(**cc_kwargs)
 
+def _has_pw_assert_dep(deps):
+    pw_assert_targets = ["//pw_assert", "//pw_assert:pw_assert"]
+    pw_assert_targets.append(["@pigweed" + t for t in pw_assert_targets])
+    for dep in deps:
+        if dep in pw_assert_targets:
+            return True
+    return False
+
 def pw_cc_binary(**kwargs):
+    kwargs["deps"] = kwargs.get("deps", [])
+
+    # TODO(pwbug/440): Remove this implicit dependency once we have a better
+    # way to handle the facades without introducing a circular dependency into
+    # the build.
+    if not _has_pw_assert_dep(kwargs["deps"]):
+        kwargs["deps"].append("@pigweed//pw_assert")
     _add_cc_and_c_targets(native.cc_binary, kwargs)
 
 def pw_cc_library(**kwargs):
     _add_cc_and_c_targets(native.cc_library, kwargs)
 
 def pw_cc_test(**kwargs):
-    kwargs["deps"] = kwargs.get("deps", []) + ["//pw_unit_test:main"]
+    kwargs["deps"] = kwargs.get("deps", []) + \
+                     ["//pw_unit_test:main"]
+
+    # TODO(pwbug/440): Remove this implicit dependency once we have a better
+    # way to handle the facades without introducing a circular dependency into
+    # the build.
+    if not _has_pw_assert_dep(kwargs["deps"]):
+        kwargs["deps"].append("@pigweed//pw_assert")
     _add_cc_and_c_targets(native.cc_test, kwargs)
 
 def pw_cc_facade(**kwargs):
diff --git a/pw_checksum/BUILD.bazel b/pw_checksum/BUILD.bazel
index b939761..6cb4fe5 100644
--- a/pw_checksum/BUILD.bazel
+++ b/pw_checksum/BUILD.bazel
@@ -33,7 +33,10 @@
         "public/pw_checksum/crc32.h",
     ],
     includes = ["public"],
-    deps = ["//pw_span"],
+    deps = [
+        "//pw_bytes",
+        "//pw_span",
+    ],
 )
 
 pw_cc_test(
diff --git a/pw_function/size_report/BUILD.bazel b/pw_function/size_report/BUILD.bazel
index dfe5829..7de277c 100644
--- a/pw_function/size_report/BUILD.bazel
+++ b/pw_function/size_report/BUILD.bazel
@@ -42,6 +42,7 @@
 pw_cc_binary(
     name = "callable_size",
     srcs = ["callable_size.cc"],
+    defines = ["_BASE=1"],
     deps = [
         "//pw_bloat:bloat_this_binary",
         "//pw_function",
diff --git a/pw_hdlc/BUILD.bazel b/pw_hdlc/BUILD.bazel
index 26c2c8c..a13b3a8 100644
--- a/pw_hdlc/BUILD.bazel
+++ b/pw_hdlc/BUILD.bazel
@@ -28,7 +28,6 @@
         "encoder.cc",
         "public/pw_hdlc/internal/encoder.h",
         "public/pw_hdlc/internal/protocol.h",
-        "rpc_packets.cc",
     ],
     hdrs = [
         "public/pw_hdlc/decoder.h",
diff --git a/pw_hex_dump/BUILD.bazel b/pw_hex_dump/BUILD.bazel
index eb234bf..ed7709f 100644
--- a/pw_hex_dump/BUILD.bazel
+++ b/pw_hex_dump/BUILD.bazel
@@ -35,6 +35,7 @@
         "//pw_bytes",
         "//pw_span",
         "//pw_status",
+        "//pw_string",
     ],
 )
 
@@ -45,6 +46,7 @@
     ],
     deps = [
         ":pw_hex_dump",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_i2c/BUILD.bazel b/pw_i2c/BUILD.bazel
index cd97bfb..2edc8d3 100644
--- a/pw_i2c/BUILD.bazel
+++ b/pw_i2c/BUILD.bazel
@@ -89,7 +89,6 @@
     ],
     deps = [
         ":address",
-        "//pw_assert",
         "//pw_unit_test",
     ],
 )
@@ -115,8 +114,8 @@
     ],
     includes = ["public"],
     deps = [
-        "$dir_pw_third_party/googletest",
         ":initiator",
+        "@com_google_googletest//:gtest",
     ],
 )
 
@@ -150,7 +149,6 @@
     ],
     deps = [
         ":register_device",
-        "//pw_assert",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_kvs/BUILD.bazel b/pw_kvs/BUILD.bazel
index b666c51..0efcade 100644
--- a/pw_kvs/BUILD.bazel
+++ b/pw_kvs/BUILD.bazel
@@ -54,6 +54,7 @@
     includes = ["public"],
     deps = [
         "//pw_assert",
+        "//pw_bytes",
         "//pw_checksum",
         "//pw_containers",
         "//pw_log",
@@ -83,6 +84,7 @@
     hdrs = [
         "public/pw_kvs/fake_flash_memory.h",
     ],
+    includes = ["public"],
     deps = [
         ":pw_kvs",
         "//pw_containers",
@@ -185,15 +187,6 @@
 )
 
 pw_cc_library(
-    name = "test_utils",
-    hdrs = [
-        "pw_kvs_private/byte_utils.h",
-    ],
-    includes = ["public"],
-    visibility = ["//visibility:private"],
-)
-
-pw_cc_library(
     name = "test_partition",
     srcs = [
         "flash_partition_with_stats.cc",
@@ -248,9 +241,9 @@
         "entry_test.cc",
     ],
     deps = [
+        ":fake_flash",
         ":pw_kvs",
-        ":test_utils",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_span",
         "//pw_unit_test",
     ],
@@ -260,9 +253,9 @@
     name = "entry_cache_test",
     srcs = ["entry_cache_test.cc"],
     deps = [
+        ":fake_flash",
         ":pw_kvs",
-        ":test_utils",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -277,7 +270,7 @@
     deps = [
         ":fake_flash_1_aligned_partition",
         ":pw_kvs",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -292,7 +285,7 @@
     deps = [
         ":fake_flash_16_aligned_partition",
         ":pw_kvs",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -307,7 +300,7 @@
     deps = [
         ":fake_flash_64_aligned_partition",
         ":pw_kvs",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -322,7 +315,7 @@
     deps = [
         ":fake_flash_256_aligned_partition",
         ":pw_kvs",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -337,7 +330,7 @@
     deps = [
         ":fake_flash_1_aligned_partition",
         ":pw_kvs",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -359,10 +352,10 @@
     srcs = ["key_value_store_test.cc"],
     deps = [
         ":crc16",
+        ":fake_flash",
         ":pw_kvs",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_log:facade",
         "//pw_span",
         "//pw_status",
@@ -378,9 +371,8 @@
         ":crc16",
         ":fake_flash_1_aligned_partition",
         ":pw_kvs",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_log:facade",
         "//pw_span",
         "//pw_status",
@@ -396,9 +388,8 @@
         ":crc16",
         ":fake_flash_16_aligned_partition",
         ":pw_kvs",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_log:facade",
         "//pw_span",
         "//pw_status",
@@ -414,9 +405,8 @@
         ":crc16",
         ":fake_flash_64_aligned_partition",
         ":pw_kvs",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_log:facade",
         "//pw_span",
         "//pw_status",
@@ -432,9 +422,8 @@
         ":crc16",
         ":fake_flash_256_aligned_partition",
         ":pw_kvs",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_log:facade",
         "//pw_span",
         "//pw_status",
@@ -450,7 +439,7 @@
         ":crc16",
         ":fake_flash_test_key_value_store",
         ":pw_kvs",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_status",
         "//pw_unit_test",
     ],
@@ -463,9 +452,9 @@
     ],
     deps = [
         ":crc16",
+        ":fake_flash",
         ":pw_kvs",
-        ":test_utils",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -475,11 +464,11 @@
     srcs = ["key_value_store_put_test.cc"],
     deps = [
         ":crc16",
+        ":fake_flash",
         ":pw_kvs",
         ":test_partition",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -489,11 +478,11 @@
     srcs = ["key_value_store_map_test.cc"],
     deps = [
         ":crc16",
+        ":fake_flash",
         ":pw_kvs",
         ":test_partition",
-        ":test_utils",
         "//pw_checksum",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_log:facade",
         "//pw_span",
         "//pw_unit_test",
@@ -504,9 +493,9 @@
     name = "sectors_test",
     srcs = ["sectors_test.cc"],
     deps = [
+        ":fake_flash",
         ":pw_kvs",
-        ":test_utils",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
@@ -517,10 +506,10 @@
         "key_value_store_wear_test.cc",
     ],
     deps = [
+        ":fake_flash",
         ":pw_kvs",
         ":test_partition",
-        ":test_utils",
-        "//pw_log:backend",
+        "//pw_log",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_log_rpc/BUILD.bazel b/pw_log_rpc/BUILD.bazel
index 84ca7cb..87e2dda 100644
--- a/pw_log_rpc/BUILD.bazel
+++ b/pw_log_rpc/BUILD.bazel
@@ -41,6 +41,7 @@
         "logs_rpc_test.cc",
     ],
     deps = [
+        ":pw_log_queue",
         "//pw_preprocessor",
         "//pw_unit_test",
     ],
diff --git a/pw_metric/BUILD.bazel b/pw_metric/BUILD.bazel
index 10b0203..5c293f3 100644
--- a/pw_metric/BUILD.bazel
+++ b/pw_metric/BUILD.bazel
@@ -35,7 +35,7 @@
         "//pw_containers",
         "//pw_log",
         "//pw_span",
-        "//pw_tokenizer",
+        "//pw_tokenizer:base64",
     ],
 )
 
diff --git a/pw_metric/size_report/BUILD.bazel b/pw_metric/size_report/BUILD.bazel
index e8275d7..d2dbe28 100644
--- a/pw_metric/size_report/BUILD.bazel
+++ b/pw_metric/size_report/BUILD.bazel
@@ -38,7 +38,7 @@
         "//pw_assert",
         "//pw_bloat:bloat_this_binary",
         "//pw_log",
-        "//pw_metric",
+        "//pw_metric:metric",
     ],
 )
 
@@ -49,7 +49,7 @@
         "//pw_assert",
         "//pw_bloat:bloat_this_binary",
         "//pw_log",
-        "//pw_metric",
+        "//pw_metric:metric",
     ],
 )
 
@@ -60,6 +60,6 @@
         "//pw_assert",
         "//pw_bloat:bloat_this_binary",
         "//pw_log",
-        "//pw_metric",
+        "//pw_metric:metric",
     ],
 )
diff --git a/pw_minimal_cpp_stdlib/BUILD.bazel b/pw_minimal_cpp_stdlib/BUILD.bazel
index 644af1a..4deb4ce 100644
--- a/pw_minimal_cpp_stdlib/BUILD.bazel
+++ b/pw_minimal_cpp_stdlib/BUILD.bazel
@@ -82,7 +82,7 @@
         "test.cc",
     ],
     deps = [
-        ":pw_minimal_cpp_stdlib_isolated_test",
+        ":minimal_cpp_stdlib_isolated_test",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_multisink/BUILD.bazel b/pw_multisink/BUILD.bazel
index df68796..c80e546 100644
--- a/pw_multisink/BUILD.bazel
+++ b/pw_multisink/BUILD.bazel
@@ -51,6 +51,7 @@
         "multisink_test.cc",
     ],
     deps = [
+        ":pw_multisink",
         "//pw_preprocessor",
         "//pw_unit_test",
     ],
diff --git a/pw_persistent_ram/BUILD.bazel b/pw_persistent_ram/BUILD.bazel
index 46ca6f1..65f5551 100644
--- a/pw_persistent_ram/BUILD.bazel
+++ b/pw_persistent_ram/BUILD.bazel
@@ -45,6 +45,7 @@
     ],
     deps = [
         ":pw_persistent_ram",
+        "//pw_random",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py b/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py
index 65d3faa..f451c06 100755
--- a/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py
+++ b/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py
@@ -238,50 +238,92 @@
     build.ninja(ctx.output_dir, 'pw_apps', 'pw_run_tests.modules')
 
 
-# TODO: Slowly add modules here that work with bazel until all
+# TODO(pwbug/180): Slowly add modules here that work with bazel until all
 # modules are added. Then replace with //...
-_MODULES_THAT_WORK_WITH_BAZEL = [
-    "//pw_allocator/...",
-    "//pw_assert/...",
+_MODULES_THAT_BUILD_WITH_BAZEL = [
+    '//pw_allocator/...',
+    '//pw_analog/...',
+    '//pw_assert/...',
     '//pw_assert_basic/...',
-    '//pw_protobuf/...',
+    '//pw_assert_log/...',
     '//pw_base64/...',
     '//pw_bloat/...',
     '//pw_build/...',
-    '//pw_chrono/...',
+    '//pw_checksum/...',
+    '//pw_chrono_embos/...',
+    '//pw_chrono_freertos/...',
     '//pw_chrono_stl/...',
+    '//pw_chrono_threadx/...',
     '//pw_containers/...',
     '//pw_cpu_exception/...',
     '//pw_docgen/...',
     '//pw_doctor/...',
-    "//pw_fuzzer/...",
+    '//pw_env_setup/...',
+    '//pw_fuzzer/...',
+    '//pw_hex_dump/...',
     '//pw_i2c/...',
     '//pw_interrupt/...',
-    '//pw_log/...',
+    '//pw_interrupt_cortex_m/...',
+    '//pw_libc/...',
     '//pw_log_basic/...',
     '//pw_malloc/...',
     '//pw_malloc_freelist/...',
+    '//pw_multisink/...',
     '//pw_polyfill/...',
     '//pw_preprocessor/...',
-    '//pw_protobuf/...',
     '//pw_protobuf_compiler/...',
-    '//pw_rpc/...',
+    '//pw_random/...',
+    '//pw_result/...',
     '//pw_span/...',
     '//pw_status/...',
     '//pw_stream/...',
-    "//pw_sync/...",
-    "//pw_sync_stl/...",
+    '//pw_string/...',
+    '//pw_sync_baremetal/...',
+    '//pw_sync_embos/...',
+    '//pw_sync_freertos/...',
+    '//pw_sync_stl/...',
+    '//pw_sync_threadx/...',
     '//pw_sys_io/...',
     '//pw_sys_io_baremetal_lm3s6965evb/...',
+    '//pw_sys_io_baremetal_stm32f429/...',
     '//pw_sys_io_stdio/...',
-    '//pw_thread/...',
     '//pw_thread_stl/...',
-    '//pw_tokenizer/...',
+    '//pw_tool/...',
     '//pw_toolchain/...',
+    '//pw_transfer/...',
+    '//pw_unit_test/...',
     '//pw_varint/...',
     '//pw_web_ui/...',
 ]
 
+# TODO(pwbug/180): Slowly add modules here that work with bazel until all
+# modules are added. Then replace with //...
+_MODULES_THAT_TEST_WITH_BAZEL = [
+    '//pw_allocator/...',
+    '//pw_analog/...',
+    '//pw_assert/...',
+    '//pw_base64/...',
+    '//pw_checksum/...',
+    '//pw_containers/...',
+    '//pw_hex_dump/...',
+    '//pw_i2c/...',
+    '//pw_libc/...',
+    '//pw_multisink/...',
+    '//pw_polyfill/...',
+    '//pw_preprocessor/...',
+    '//pw_random/...',
+    '//pw_result/...',
+    '//pw_span/...',
+    '//pw_status/...',
+    '//pw_stream/...',
+    '//pw_string/...',
+    '//pw_thread_stl/...',
+    '//pw_transfer/...',
+    '//pw_unit_test/...',
+    '//pw_varint/...',
+    '//:buildifier_test',
+]
+
 
 @filter_paths(endswith=(*format_code.C_FORMAT.extensions, '.bzl', 'BUILD'))
 def bazel_test(ctx: PresubmitContext):
@@ -290,7 +332,7 @@
     try:
         call('bazel',
              'test',
-             *_MODULES_THAT_WORK_WITH_BAZEL,
+             *_MODULES_THAT_TEST_WITH_BAZEL,
              '--verbose_failures',
              '--verbose_explanations',
              '--worker_verbose',
@@ -310,7 +352,7 @@
     try:
         call('bazel',
              'build',
-             *_MODULES_THAT_WORK_WITH_BAZEL,
+             *_MODULES_THAT_BUILD_WITH_BAZEL,
              '--verbose_failures',
              '--verbose_explanations',
              '--worker_verbose',
diff --git a/pw_protobuf_compiler/proto.bzl b/pw_protobuf_compiler/proto.bzl
index 9bcdbd1..1baadeb 100644
--- a/pw_protobuf_compiler/proto.bzl
+++ b/pw_protobuf_compiler/proto.bzl
@@ -83,6 +83,9 @@
     name_pb = kwargs.get("name") + "_pb"
     _cc_proto_compile(
         name = name_pb,
+        # TODO(pwbug/437): Remove 'manual' tag once hermetic Python toolchains
+        # are supported with Bazel.
+        tags = ["manual", "needs-python3.6+"],
         # Forward deps and verbose tags to implementation
         **{k: v for (k, v) in kwargs.items() if k in ("deps", "verbose")}
     )
@@ -98,4 +101,7 @@
         strip_include_prefix = ".",
         visibility = kwargs.get("visibility"),
         linkstatic = 1,
+        # TODO(pwbug/437): Remove 'manual' tag once hermetic Python toolchains
+        # are supported with Bazel.
+        tags = ["manual", "needs-python3.6+"],
     )
diff --git a/pw_random/BUILD.bazel b/pw_random/BUILD.bazel
index 4ffda3b..e41d610 100644
--- a/pw_random/BUILD.bazel
+++ b/pw_random/BUILD.bazel
@@ -36,6 +36,7 @@
     srcs = ["xor_shift_test.cc"],
     deps = [
         ":pw_random",
+        "//pw_bytes",
         "//pw_unit_test",
     ],
 )
diff --git a/pw_result/BUILD.bazel b/pw_result/BUILD.bazel
index b17f321..867bf7b 100644
--- a/pw_result/BUILD.bazel
+++ b/pw_result/BUILD.bazel
@@ -29,7 +29,7 @@
     ],
     includes = ["public"],
     deps = [
-        "//pw_assert",
+        "//pw_assert:facade",
         "//pw_status",
     ],
 )
diff --git a/pw_result/size_report/BUILD.bazel b/pw_result/size_report/BUILD.bazel
index fd41185..6853da2 100644
--- a/pw_result/size_report/BUILD.bazel
+++ b/pw_result/size_report/BUILD.bazel
@@ -61,6 +61,7 @@
     name = "pointer_read",
     srcs = ["pointer_read.cc"],
     deps = [
+        "//pw_bytes",
         "//pw_log",
         "//pw_result",
         "//pw_span",
@@ -71,6 +72,7 @@
     name = "result_read",
     srcs = ["result_read.cc"],
     deps = [
+        "//pw_bytes",
         "//pw_log",
         "//pw_result",
         "//pw_span",
diff --git a/pw_router/BUILD.bazel b/pw_router/BUILD.bazel
index c643d43..3acbbba 100644
--- a/pw_router/BUILD.bazel
+++ b/pw_router/BUILD.bazel
@@ -26,11 +26,12 @@
     name = "static_router",
     srcs = ["static_router.cc"],
     hdrs = ["public/pw_router/static_router.h"],
+    includes = ["public"],
     deps = [
         ":egress",
         ":packet_parser",
         "//pw_log",
-        "//pw_metric",
+        "//pw_metric:metric",
         "//pw_sync:mutex",
     ],
 )
@@ -38,7 +39,10 @@
 pw_cc_library(
     name = "egress",
     hdrs = ["public/pw_router/egress.h"],
-    deps = ["//pw_bytes"],
+    deps = [
+        "//pw_bytes",
+        "//pw_function",
+    ],
 )
 
 pw_cc_library(
diff --git a/pw_rpc/BUILD.bazel b/pw_rpc/BUILD.bazel
index 617fc05..5dc8d16 100644
--- a/pw_rpc/BUILD.bazel
+++ b/pw_rpc/BUILD.bazel
@@ -65,6 +65,7 @@
         ":common",
         ":internal_packet_pwpb",
         "//pw_containers",
+        "//pw_rpc/system_server",
     ],
 )
 
diff --git a/pw_rpc/raw/BUILD.bazel b/pw_rpc/raw/BUILD.bazel
index 2d2ab19..52c1dfd 100644
--- a/pw_rpc/raw/BUILD.bazel
+++ b/pw_rpc/raw/BUILD.bazel
@@ -56,6 +56,7 @@
         "public/pw_rpc/raw/test_method_context.h",
         "public/pw_rpc/raw_test_method_context.h",
     ],
+    includes = ["public"],
     deps = [
         ":method_union",
         "//pw_assert",
@@ -72,6 +73,7 @@
         ":method_union",
         ":test_method_context",
         "//pw_protobuf",
+        "//pw_rpc:internal_test_utils",
         "//pw_rpc:pw_rpc_test_pwpb",
     ],
 )
diff --git a/pw_string/BUILD.bazel b/pw_string/BUILD.bazel
index d7e959a..663bb4f 100644
--- a/pw_string/BUILD.bazel
+++ b/pw_string/BUILD.bazel
@@ -39,7 +39,7 @@
     ],
     includes = ["public"],
     deps = [
-        "//pw_assert",
+        "//pw_assert:facade",
         "//pw_preprocessor",
         "//pw_result",
         "//pw_span",
diff --git a/pw_tls_client_boringssl/BUILD.bazel b/pw_tls_client_boringssl/BUILD.bazel
index f57c61c..0e94f7d 100644
--- a/pw_tls_client_boringssl/BUILD.bazel
+++ b/pw_tls_client_boringssl/BUILD.bazel
@@ -34,7 +34,7 @@
         "public_overrides",
     ],
     deps = [
-        "//pw_tls_clent:pw_tls_client_facade",
+        "//pw_tls_client:pw_tls_client_facade",
     ],
 )
 
diff --git a/pw_tls_client_mbedtls/BUILD.bazel b/pw_tls_client_mbedtls/BUILD.bazel
index 4c9a9b0..e376115 100644
--- a/pw_tls_client_mbedtls/BUILD.bazel
+++ b/pw_tls_client_mbedtls/BUILD.bazel
@@ -36,7 +36,7 @@
         "public_overrides",
     ],
     deps = [
-        "//pw_tls_clent:pw_tls_client_facade",
+        "//pw_tls_client:pw_tls_client_facade",
     ],
 )
 
diff --git a/pw_unit_test/BUILD.bazel b/pw_unit_test/BUILD.bazel
index 2e5790c..8c7bc8e 100644
--- a/pw_unit_test/BUILD.bazel
+++ b/pw_unit_test/BUILD.bazel
@@ -17,6 +17,7 @@
     "pw_cc_library",
     "pw_cc_test",
 )
+load("//pw_protobuf_compiler:proto.bzl", "pw_proto_library")
 
 package(default_visibility = ["//visibility:public"])
 
@@ -93,6 +94,23 @@
     ],
 )
 
+proto_library(
+    name = "unit_test_proto",
+    srcs = ["pw_unit_test_proto/unit_test.proto"],
+    strip_import_prefix = "//pw_unit_test",
+)
+
+pw_proto_library(
+    name = "unit_test_pwpb",
+    # TODO(pwbug/437): Remove 'manual' tag once hermetic Python toolchains are
+    # supported with Bazel.
+    tags = [
+        "manual",
+        "needs-python3.6",
+    ],
+    deps = [":unit_test_proto"],
+)
+
 pw_cc_library(
     name = "rpc_service",
     srcs = [
@@ -103,9 +121,15 @@
         "public/pw_unit_test/internal/rpc_event_handler.h",
         "public/pw_unit_test/unit_test_service.h",
     ],
+    # TODO(pwbug/437): Remove 'manual' tag once hermetic Python toolchains are
+    # supported with Bazel.
+    tags = ["manual"],
     deps = [
         ":pw_unit_test",
+        ":unit_test_pwpb",
         "//pw_log",
+        "//pw_rpc:server",
+        "//pw_rpc/raw:method_union",
     ],
 )
 
@@ -114,6 +138,9 @@
     srcs = [
         "rpc_main.cc",
     ],
+    # TODO(pwbug/437): Remove 'manual' tag once hermetic Python toolchains are
+    # supported with Bazel.
+    tags = ["manual"],
     deps = [
         ":pw_unit_test",
         ":rpc_service",
diff --git a/targets/default_config.BUILD b/targets/default_config.BUILD
index a623908..dd3e923 100644
--- a/targets/default_config.BUILD
+++ b/targets/default_config.BUILD
@@ -65,6 +65,11 @@
 )
 
 label_flag(
+    name = "pw_sync_thread_notification_backend",
+    build_setting_default = "@pigweed//pw_sync:thread_notification_backend_multiplexer",
+)
+
+label_flag(
     name = "pw_interrupt_backend",
     build_setting_default = "@pigweed//pw_interrupt:backend_multiplexer",
 )