[bazel] Try adding cc_binary rules that use generated rules

To make the atomic rules a bit easier to work with, in many
of the folders, this adds in cc_library rules to group
together the sources from that folder (and subfolders
where prudent). We only needs sources because those atoms
should have their headers as deps.

One issue that was pointed out is that there is currently
no way to restrict the inclusion of certain packages,
a la, `gn check`. For example, there is no mechanism from
stopping a dev from adding
#include "modules/canvaskit/WasmCommon.h"
to something in //src/core (except circular dependencies).
We can probably address that using Bazel's visibility
rules as needed:
https://docs.bazel.build/versions/main/visibility.html
https://docs.bazel.build/versions/main/be/functions.html#package_group

It is recommended to look at this CL patchset by patchset.
PS1: Update gazelle command to generate rules in more folders.
PS2: A few changes to make generation work better.
PS3: The result of running make generate in //bazel
PS4: Adding the rules to build sksllex, the simplest binary I
     could find in the Skia repo.
PS5: Adding the rules to build skdiff, a more complex binary.
     I tried a few approaches, but ended up gravitating back
     towards the layout where we have each folder/package
     group up the sources. I imagine at some point, we'll have
     skdiff depend on skia_core or something, which will
     have things like //src/core, //src/codecs, //src/pathops
     all bundled together.
PS7: Added in the groupings of sources, similar to what we had
     earlier. I liked these for readability. These helped fix
     up the //:skia_core build, and by extension, the CanvasKit
     build.

Change-Id: I3faa7c4e821c876b243617aacf0246efa524cbde
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/476219
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
diff --git a/BUILD.bazel b/BUILD.bazel
index 1485ded..0a71c1d 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -20,116 +20,6 @@
     ],
 )
 
-CORE_SRCS = [
-    "//include/private:hdrs",
-    "//include/third_party:skcms-hdrs",
-    "//src/android:srcs",
-    "//src/codec:srcs",
-    "//src/core:srcs",
-    "//src/image:srcs",
-    "//src/images:srcs",
-    "//src/effects:srcs",
-    "//src/opts:srcs",
-    "//src/pathops:srcs",
-    "//src/ports:srcs",
-    "//src/sfnt:srcs",
-    "//src/shaders:srcs",
-    "//src/utils:srcs",
-    "//third_party:skcms",
-] + selects.with_or({
-    # https://github.com/bazelbuild/bazel-skylib/blob/main/docs/selects_doc.md#selectswith_or
-    ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
-        "//src/gpu:srcs",
-        "//src/sksl:srcs",
-        # TODO(kjlubick) should mock be test only?
-        "//include/private:mock-hdrs",
-        "//src/gpu:mock-srcs",
-    ],
-    "//conditions:default": [],
-})
-
-CORE_HDRS = [
-    "//include/android:hdrs",
-    "//include/codec:hdrs",
-    "//include/config:hdrs",
-    "//include/core:hdrs",
-    "//include/effects:hdrs",
-    "//include/encode:hdrs",
-    "//include/pathops:hdrs",
-    "//include/ports:hdrs",
-    "//include/utils:base-hdrs",
-] + selects.with_or({
-    # https://github.com/bazelbuild/bazel-skylib/blob/main/docs/selects_doc.md#selectswith_or
-    ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
-        "//include/sksl:hdrs",
-        "//include/gpu:hdrs",
-        # TODO(kjlubick) should mock be test only?
-        "//include/gpu:mock-hdrs",
-    ],
-    "//conditions:default": [],
-})
-
-# Some of these are documented in SkUserConfig.h
-CORE_DEFINES = ["SK_HAS_ANDROID_CODEC"] + select({
-    "//bazel/common_config_settings:debug_build": [
-        "SK_DEBUG",
-    ],
-    "//bazel/common_config_settings:release_build": [
-        "SK_RELEASE",
-    ],
-    "//conditions:default": [
-        "SK_RELEASE",
-    ],
-}) + select({
-    "//bazel/common_config_settings:gl_backend": [
-        "SK_GL",
-        "SK_SUPPORT_GPU=1",
-    ],
-    "//bazel/common_config_settings:vulkan_backend": [
-        "SK_VULKAN",
-        "SK_SUPPORT_GPU=1",
-    ],
-    "//conditions:default": [
-        "SK_SUPPORT_GPU=0",
-    ],
-}) + select({
-    "//bazel/common_config_settings:gl_standard": [
-        "SK_ASSUME_GL=1",
-    ],
-    "//bazel/common_config_settings:gles_standard": [
-        "SK_ASSUME_GL_ES=1",
-    ],
-    "//bazel/common_config_settings:webgl_standard": [
-        "SK_ASSUME_WEBGL=1",
-        "SK_USE_WEBGL",
-    ],
-    "//conditions:default": [],
-}) + select_multi(
-    {
-        "//bazel/common_config_settings:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"],
-        "//bazel/common_config_settings:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"],
-        "//bazel/common_config_settings:jpeg_encode_codec": ["SK_ENCODE_JPEG"],
-        "//bazel/common_config_settings:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
-        "//bazel/common_config_settings:png_encode_codec": ["SK_ENCODE_PNG"],
-        "//bazel/common_config_settings:raw_decode_codec": [
-            "SK_CODEC_DECODES_RAW",
-            "SK_CODEC_DECODES_JPEG",
-        ],
-        "//bazel/common_config_settings:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"],
-    },
-    default = [],
-) + select({
-    # working around https://github.com/emscripten-core/emscripten/issues/10072
-    "//bazel/common_config_settings:cpu_wasm": ["SK_FORCE_8_BYTE_ALIGNMENT"],
-    "//conditions:default": [],
-})
-
-freetype_fontmgrs = (
-    "//bazel/common_config_settings:custom_directory_fontmgr",
-    "//bazel/common_config_settings:custom_embedded_fontmgr",
-    "//bazel/common_config_settings:custom_empty_fontmgr",
-)
-
 selects.config_setting_group(
     name = "needs_jpeg",
     match_any = [
@@ -164,7 +54,30 @@
     ],
 )
 
-CORE_DEPS = [] + select_multi(
+CORE_DEPS = [
+    "//src/android:srcs",
+    "//src/codec:srcs",
+    "//src/core:srcs",
+    "//src/image:srcs",
+    "//src/images:srcs",
+    "//src/effects:srcs",
+    "//src/opts:srcs",
+    "//src/pathops:srcs",
+    "//src/ports:srcs",
+    "//src/sfnt:srcs",
+    "//src/shaders:srcs",
+    "//src/utils:srcs",
+    "//third_party:skcms",
+] + selects.with_or({
+    # https://github.com/bazelbuild/bazel-skylib/blob/main/docs/selects_doc.md#selectswith_or
+    ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
+        "//src/gpu:srcs",
+        "//src/sksl:srcs",
+        # TODO(kjlubick) should mock be test only?
+        "//src/gpu:mock_srcs",
+    ],
+    "//conditions:default": [],
+}) + select_multi(
     {
         "//bazel/common_config_settings:gif_decode_codec": ["//third_party:wuffs"],
         ":needs_png": ["//third_party:libpng"],
@@ -183,14 +96,8 @@
     "//conditions:default": [],
 })
 
-CORE_COPTS = []
-
 cc_library(
-    name = "skia-core",
-    srcs = CORE_SRCS,
-    hdrs = CORE_HDRS,
-    copts = CORE_COPTS,
-    local_defines = CORE_DEFINES,
+    name = "skia_core",
     textual_hdrs = ["//src/sksl:txts"],
     deps = CORE_DEPS,
 )
diff --git a/bazel/BUILD.bazel b/bazel/BUILD.bazel
index e484f8b..351de4c 100644
--- a/bazel/BUILD.bazel
+++ b/bazel/BUILD.bazel
@@ -1 +1,70 @@
-# Intentionally left blank
+load("//bazel:macros.bzl", "select_multi")
+
+GENERAL_DEFINES = ["SK_HAS_ANDROID_CODEC"] + select({
+    "//bazel/common_config_settings:debug_build": [
+        "SK_DEBUG",
+    ],
+    "//bazel/common_config_settings:release_build": [
+        "SK_RELEASE",
+    ],
+    "//conditions:default": [
+        "SK_RELEASE",
+    ],
+})
+
+GPU_DEFINES = select({
+    "//bazel/common_config_settings:gl_backend": [
+        "SK_GL",
+        "SK_SUPPORT_GPU=1",
+    ],
+    "//bazel/common_config_settings:vulkan_backend": [
+        "SK_VULKAN",
+        "SK_SUPPORT_GPU=1",
+    ],
+    "//conditions:default": [
+        "SK_SUPPORT_GPU=0",
+    ],
+}) + select({
+    "//bazel/common_config_settings:gl_standard": [
+        "SK_ASSUME_GL=1",
+    ],
+    "//bazel/common_config_settings:gles_standard": [
+        "SK_ASSUME_GL_ES=1",
+    ],
+    "//bazel/common_config_settings:webgl_standard": [
+        "SK_ASSUME_WEBGL=1",
+        "SK_USE_WEBGL",
+    ],
+    "//conditions:default": [],
+})
+
+CODEC_DEFINES = select_multi(
+    {
+        "//bazel/common_config_settings:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"],
+        "//bazel/common_config_settings:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"],
+        "//bazel/common_config_settings:jpeg_encode_codec": ["SK_ENCODE_JPEG"],
+        "//bazel/common_config_settings:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
+        "//bazel/common_config_settings:png_encode_codec": ["SK_ENCODE_PNG"],
+        "//bazel/common_config_settings:raw_decode_codec": [
+            "SK_CODEC_DECODES_RAW",
+            "SK_CODEC_DECODES_JPEG",
+        ],
+        "//bazel/common_config_settings:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"],
+    },
+    default = [],
+)
+
+PLATFORM_DEFINES = select({
+    "//bazel/common_config_settings:cpu_wasm": [
+        # working around https://github.com/emscripten-core/emscripten/issues/10072
+        "SK_FORCE_8_BYTE_ALIGNMENT",
+        "SK_DISABLE_LEGACY_SHADERCONTEXT",
+    ],
+    "//conditions:default": [],
+})
+
+cc_library(
+    name = "defines_from_flags",
+    defines = GENERAL_DEFINES + GPU_DEFINES + CODEC_DEFINES + PLATFORM_DEFINES,
+    visibility = ["//:__subpackages__"],
+)
diff --git a/bazel/Makefile b/bazel/Makefile
index 915f90c..a155429 100644
--- a/bazel/Makefile
+++ b/bazel/Makefile
@@ -2,7 +2,8 @@
 	bazel build @org_skia_go_infra//bazel/gazelle:gazelle_cpp
 	cd .. && bazel-bin/external/org_skia_go_infra/bazel/gazelle/gazelle_cpp_/gazelle_cpp update \
 		--third_party_file_map="third_party/file_map_for_bazel.json" \
-		include src
+		include src tools modules/skshaper modules/svg modules/skresources \
+		experimental/bazel_test
 
 gazelle_update_repo:
 	cd .. && bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=go_repositories.bzl%go_repositories
diff --git a/bazel/macros.bzl b/bazel/macros.bzl
index 12458db..ee9a86e 100644
--- a/bazel/macros.bzl
+++ b/bazel/macros.bzl
@@ -63,6 +63,9 @@
         fail("Cannot set both srcs and hdrs in generated_cc_atom")
     if len(kwargs.get("srcs", [])) == 0 and len(kwargs.get("hdrs", [])) == 0:
         fail("Must set exactly one of srcs or hdrs in generated_cc_atom")
+    deps = kwargs.get("deps", [])
+    deps.append("//bazel:defines_from_flags")
+    kwargs["deps"] = deps
     native.cc_library(
         name = name,
         **kwargs
diff --git a/experimental/bazel_test/BUILD.bazel b/experimental/bazel_test/BUILD.bazel
index 8fc9abd..aaed3f8 100644
--- a/experimental/bazel_test/BUILD.bazel
+++ b/experimental/bazel_test/BUILD.bazel
@@ -1,6 +1,6 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 load("@rules_cc//cc:defs.bzl", "cc_binary")
-load("@io_bazel_rules_go//go:def.bzl", "go_binary")
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 
 cc_binary(
     name = "bazel_test_exe",
@@ -27,6 +27,13 @@
 
 go_binary(
     name = "hello_world",
-    srcs = ["hello_world.go"],
+    embed = [":bazel_test_lib"],
+    visibility = ["//visibility:public"],
 )
 
+go_library(
+    name = "bazel_test_lib",
+    srcs = ["hello_world.go"],
+    importpath = "go.skia.org/skia/experimental/bazel_test",
+    visibility = ["//visibility:private"],
+)
diff --git a/include/effects/BUILD.bazel b/include/effects/BUILD.bazel
index ecb3490..f8a91e0 100644
--- a/include/effects/BUILD.bazel
+++ b/include/effects/BUILD.bazel
@@ -97,7 +97,6 @@
     hdrs = ["SkImageFilters.h"],
     visibility = ["//:__subpackages__"],
     deps = [
-        ":SkRuntimeEffect_hdr",
         "//include/core:SkBlendMode_hdr",
         "//include/core:SkColor_hdr",
         "//include/core:SkImageFilter_hdr",
@@ -105,7 +104,6 @@
         "//include/core:SkPicture_hdr",
         "//include/core:SkRect_hdr",
         "//include/core:SkTileMode_hdr",
-        "//include/core:SkTypes_hdr",
     ],
 )
 
diff --git a/modules/canvaskit/BUILD.bazel b/modules/canvaskit/BUILD.bazel
index 4ff01ce..9ccb8bb 100644
--- a/modules/canvaskit/BUILD.bazel
+++ b/modules/canvaskit/BUILD.bazel
@@ -24,6 +24,7 @@
     # which does not appear to be exposed on the emscripten toolchain.
     # "--closure 1",  # Run the closure compiler
     "-sASSERTIONS=0",  # Turn off assertions
+    "-Oz",
 ]
 
 DEBUG_OPTS = [
@@ -109,18 +110,7 @@
     tools = ["//tools:embed_resources"],
 )
 
-CK_DEFINES = [
-    "SK_DISABLE_LEGACY_SHADERCONTEXT",
-    "SK_FORCE_8_BYTE_ALIGNMENT",  # working around https://github.com/emscripten-core/emscripten/issues/10072
-] + select({
-    "//bazel/common_config_settings:gl_backend": [
-        "SK_GL",
-        "SK_SUPPORT_GPU=1",
-    ],
-    "//conditions:default": [
-        "SK_SUPPORT_GPU=0",
-    ],
-}) + select({
+CK_DEFINES = select({
     ":enable_fonts_true": [],
     ":enable_fonts_false": ["SK_NO_FONTS"],
 })
@@ -252,6 +242,10 @@
     # wasm_cc_binary makes the canvaskit.js/canvaskit.wasm based on the actual name
     # of the executable.
     cc_binary_name = "canvaskit",
+    features = [
+        # https://github.com/emscripten-core/emsdk/blob/846f683bea839899164cdbe287f92f7ae952428e/bazel/emscripten_toolchain/crosstool.bzl#L1051
+        "emcc_debug_link",
+    ],
     linkopts = CK_OPTS,
     local_defines = CK_DEFINES,
     set_flags = {
@@ -283,7 +277,7 @@
     # headers etc. Therefore, we hide it from wildcards.
     tags = ["manual"],
     deps = [
-        "//:skia-core",
+        "//:skia_core",
     ],
 )
 
diff --git a/modules/canvaskit/Makefile b/modules/canvaskit/Makefile
index 7ecc99a..d3d54f4 100644
--- a/modules/canvaskit/Makefile
+++ b/modules/canvaskit/Makefile
@@ -150,3 +150,12 @@
 	mkdir build
 	cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.js build/canvaskit.js
 	cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.wasm build/canvaskit.wasm
+
+bazel_canvaskit_release:
+	# See above note about spawn_strategy
+	bazelisk build :canvaskit_wasm --compilation_mode opt --spawn_strategy=local
+	- rm -rf build/
+	mkdir build
+	cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.js build/canvaskit.js
+	cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.wasm build/canvaskit.wasm
+	ls -l build
\ No newline at end of file
diff --git a/modules/canvaskit/canvaskit_bindings.cpp b/modules/canvaskit/canvaskit_bindings.cpp
index 54e4dd9..513d76f 100644
--- a/modules/canvaskit/canvaskit_bindings.cpp
+++ b/modules/canvaskit/canvaskit_bindings.cpp
@@ -68,7 +68,7 @@
 #include "src/gpu/GrRecordingContextPriv.h"
 #include "src/gpu/gl/GrGLDefines.h"
 
-#include "webgl/webgl1.h"
+#include <webgl/webgl1.h>
 #endif
 
 #ifndef SK_NO_FONTS
diff --git a/modules/skresources/include/BUILD.bazel b/modules/skresources/include/BUILD.bazel
new file mode 100644
index 0000000..4d86f39
--- /dev/null
+++ b/modules/skresources/include/BUILD.bazel
@@ -0,0 +1,18 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SkResources_hdr",
+    hdrs = ["SkResources.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkData_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSamplingOptions_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkMutex_hdr",
+        "//include/private:SkTHash_hdr",
+    ],
+)
diff --git a/modules/skresources/src/BUILD.bazel b/modules/skresources/src/BUILD.bazel
new file mode 100644
index 0000000..b26ddbd
--- /dev/null
+++ b/modules/skresources/src/BUILD.bazel
@@ -0,0 +1,20 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SkResources_src",
+    srcs = ["SkResources.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//experimental/ffmpeg:SkVideoDecoder_hdr",
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/private:SkTPin_hdr",
+        "//include/utils:SkAnimCodecPlayer_hdr",
+        "//include/utils:SkBase64_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
diff --git a/modules/svg/include/BUILD.bazel b/modules/svg/include/BUILD.bazel
new file mode 100644
index 0000000..ead2f6c
--- /dev/null
+++ b/modules/svg/include/BUILD.bazel
@@ -0,0 +1,484 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SkSVGAttributeParser_hdr",
+    hdrs = ["SkSVGAttributeParser.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTypes_hdr",
+        "//include/private:SkNoncopyable_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGAttribute_hdr",
+    hdrs = ["SkSVGAttribute.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTypes_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGCircle_hdr",
+    hdrs = ["SkSVGCircle.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGShape_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGClipPath_hdr",
+    hdrs = ["SkSVGClipPath.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGContainer_hdr",
+    hdrs = ["SkSVGContainer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTransformableNode_hdr",
+        "//include/private:SkTArray_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGDOM_hdr",
+    hdrs = ["SkSVGDOM.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGIDMapper_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/private:SkTemplates_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGDefs_hdr",
+    hdrs = ["SkSVGDefs.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSVGHiddenContainer_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSVGEllipse_hdr",
+    hdrs = ["SkSVGEllipse.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGShape_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeBlend_hdr",
+    hdrs = ["SkSVGFeBlend.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeColorMatrix_hdr",
+    hdrs = ["SkSVGFeColorMatrix.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+        "//include/effects:SkColorMatrix_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeComposite_hdr",
+    hdrs = ["SkSVGFeComposite.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+        "//include/core:SkBlendMode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeDisplacementMap_hdr",
+    hdrs = ["SkSVGFeDisplacementMap.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeFlood_hdr",
+    hdrs = ["SkSVGFeFlood.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeGaussianBlur_hdr",
+    hdrs = ["SkSVGFeGaussianBlur.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeImage_hdr",
+    hdrs = ["SkSVGFeImage.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeLightSource_hdr",
+    hdrs = ["SkSVGFeLightSource.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+        "//include/core:SkPoint3_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeLighting_hdr",
+    hdrs = ["SkSVGFeLighting.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeMorphology_hdr",
+    hdrs = ["SkSVGFeMorphology.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeOffset_hdr",
+    hdrs = ["SkSVGFeOffset.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeTurbulence_hdr",
+    hdrs = ["SkSVGFeTurbulence.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGFe_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFe_hdr",
+    hdrs = ["SkSVGFe.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSVGHiddenContainer_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSVGFilterContext_hdr",
+    hdrs = ["SkSVGFilterContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTypes_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkString_hdr",
+        "//include/private:SkTHash_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFilter_hdr",
+    hdrs = ["SkSVGFilter.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGG_hdr",
+    hdrs = ["SkSVGG.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSVGContainer_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSVGGradient_hdr",
+    hdrs = ["SkSVGGradient.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+        "//include/core:SkShader_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGHiddenContainer_hdr",
+    hdrs = ["SkSVGHiddenContainer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSVGContainer_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSVGIDMapper_hdr",
+    hdrs = ["SkSVGIDMapper.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/private:SkTHash_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGImage_hdr",
+    hdrs = ["SkSVGImage.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTransformableNode_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGLine_hdr",
+    hdrs = ["SkSVGLine.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGShape_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGLinearGradient_hdr",
+    hdrs = ["SkSVGLinearGradient.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGGradient_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGMask_hdr",
+    hdrs = ["SkSVGMask.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGNode_hdr",
+    hdrs = ["SkSVGNode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGAttributeParser_hdr",
+        ":SkSVGAttribute_hdr",
+        "//include/core:SkRefCnt_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGPath_hdr",
+    hdrs = ["SkSVGPath.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGShape_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGPattern_hdr",
+    hdrs = ["SkSVGPattern.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGPoly_hdr",
+    hdrs = ["SkSVGPoly.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGShape_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGRadialGradient_hdr",
+    hdrs = ["SkSVGRadialGradient.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGGradient_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGRect_hdr",
+    hdrs = ["SkSVGRect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGShape_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGRenderContext_hdr",
+    hdrs = ["SkSVGRenderContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGAttribute_hdr",
+        ":SkSVGIDMapper_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkM44_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/core:SkTypes_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGSVG_hdr",
+    hdrs = ["SkSVGSVG.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGContainer_hdr",
+        ":SkSVGTypes_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGShape_hdr",
+    hdrs = ["SkSVGShape.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTransformableNode_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGStop_hdr",
+    hdrs = ["SkSVGStop.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGHiddenContainer_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGText_hdr",
+    hdrs = ["SkSVGText.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTransformableNode_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGTransformableNode_hdr",
+    hdrs = ["SkSVGTransformableNode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGNode_hdr",
+        "//include/core:SkMatrix_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGTypes_hdr",
+    hdrs = ["SkSVGTypes.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGUse_hdr",
+    hdrs = ["SkSVGUse.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTransformableNode_hdr",
+        ":SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGValue_hdr",
+    hdrs = ["SkSVGValue.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTypes_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkNoncopyable_hdr",
+    ],
+)
diff --git a/modules/svg/src/BUILD.bazel b/modules/svg/src/BUILD.bazel
new file mode 100644
index 0000000..f9cdb72
--- /dev/null
+++ b/modules/svg/src/BUILD.bazel
@@ -0,0 +1,593 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SkSVGAttributeParser_src",
+    srcs = ["SkSVGAttributeParser.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkTPin_hdr",
+        "//include/utils:SkParse_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGAttribute_src",
+    srcs = ["SkSVGAttribute.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/svg/include:SkSVGAttribute_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSVGCircle_src",
+    srcs = ["SkSVGCircle.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGCircle_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGClipPath_src",
+    srcs = ["SkSVGClipPath.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/svg/include:SkSVGClipPath_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGContainer_src",
+    srcs = ["SkSVGContainer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPath_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//modules/svg/include:SkSVGContainer_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGDOM_src",
+    srcs = ["SkSVGDOM.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkString_hdr",
+        "//include/private:SkTo_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGCircle_hdr",
+        "//modules/svg/include:SkSVGClipPath_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//modules/svg/include:SkSVGDefs_hdr",
+        "//modules/svg/include:SkSVGEllipse_hdr",
+        "//modules/svg/include:SkSVGFeBlend_hdr",
+        "//modules/svg/include:SkSVGFeColorMatrix_hdr",
+        "//modules/svg/include:SkSVGFeComposite_hdr",
+        "//modules/svg/include:SkSVGFeDisplacementMap_hdr",
+        "//modules/svg/include:SkSVGFeFlood_hdr",
+        "//modules/svg/include:SkSVGFeGaussianBlur_hdr",
+        "//modules/svg/include:SkSVGFeImage_hdr",
+        "//modules/svg/include:SkSVGFeLightSource_hdr",
+        "//modules/svg/include:SkSVGFeLighting_hdr",
+        "//modules/svg/include:SkSVGFeMorphology_hdr",
+        "//modules/svg/include:SkSVGFeOffset_hdr",
+        "//modules/svg/include:SkSVGFeTurbulence_hdr",
+        "//modules/svg/include:SkSVGFilter_hdr",
+        "//modules/svg/include:SkSVGG_hdr",
+        "//modules/svg/include:SkSVGImage_hdr",
+        "//modules/svg/include:SkSVGLine_hdr",
+        "//modules/svg/include:SkSVGLinearGradient_hdr",
+        "//modules/svg/include:SkSVGMask_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//modules/svg/include:SkSVGPath_hdr",
+        "//modules/svg/include:SkSVGPattern_hdr",
+        "//modules/svg/include:SkSVGPoly_hdr",
+        "//modules/svg/include:SkSVGRadialGradient_hdr",
+        "//modules/svg/include:SkSVGRect_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGSVG_hdr",
+        "//modules/svg/include:SkSVGStop_hdr",
+        "//modules/svg/include:SkSVGText_hdr",
+        "//modules/svg/include:SkSVGTypes_hdr",
+        "//modules/svg/include:SkSVGUse_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+        "//src/core:SkTSearch_hdr",
+        "//src/core:SkTraceEvent_hdr",
+        "//src/xml:SkDOM_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGEllipse_src",
+    srcs = ["SkSVGEllipse.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGEllipse_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeBlend_src",
+    srcs = ["SkSVGFeBlend.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeBlend_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeColorMatrix_src",
+    srcs = ["SkSVGFeColorMatrix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//include/private:SkColorData_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeColorMatrix_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeComposite_src",
+    srcs = ["SkSVGFeComposite.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeComposite_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeDisplacementMap_src",
+    srcs = ["SkSVGFeDisplacementMap.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeDisplacementMap_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeFlood_src",
+    srcs = ["SkSVGFeFlood.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGFeFlood_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeGaussianBlur_src",
+    srcs = ["SkSVGFeGaussianBlur.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeGaussianBlur_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeImage_src",
+    srcs = ["SkSVGFeImage.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkSamplingOptions_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGFeImage_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGImage_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeLightSource_src",
+    srcs = ["SkSVGFeLightSource.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeLightSource_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeLighting_src",
+    srcs = ["SkSVGFeLighting.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPoint3_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeLightSource_hdr",
+        "//modules/svg/include:SkSVGFeLighting_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeMorphology_src",
+    srcs = ["SkSVGFeMorphology.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeMorphology_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeOffset_src",
+    srcs = ["SkSVGFeOffset.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeOffset_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFeTurbulence_src",
+    srcs = ["SkSVGFeTurbulence.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//include/effects:SkPerlinNoiseShader_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFeTurbulence_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFe_src",
+    srcs = ["SkSVGFe.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGFe_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFilterContext_src",
+    srcs = ["SkSVGFilterContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkColorMatrix_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGFilter_src",
+    srcs = ["SkSVGFilter.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//modules/svg/include:SkSVGFe_hdr",
+        "//modules/svg/include:SkSVGFilterContext_hdr",
+        "//modules/svg/include:SkSVGFilter_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGGradient_src",
+    srcs = ["SkSVGGradient.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkTPin_hdr",
+        "//modules/svg/include:SkSVGGradient_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGStop_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGImage_src",
+    srcs = ["SkSVGImage.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkImage_hdr",
+        "//modules/svg/include:SkSVGAttributeParser_hdr",
+        "//modules/svg/include:SkSVGImage_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGLine_src",
+    srcs = ["SkSVGLine.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGLine_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGLinearGradient_src",
+    srcs = ["SkSVGLinearGradient.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkGradientShader_hdr",
+        "//modules/svg/include:SkSVGLinearGradient_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGMask_src",
+    srcs = ["SkSVGMask.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/effects:SkLumaColorFilter_hdr",
+        "//modules/svg/include:SkSVGMask_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGNode_src",
+    srcs = ["SkSVGNode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGPath_src",
+    srcs = ["SkSVGPath.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/utils:SkParsePath_hdr",
+        "//modules/svg/include:SkSVGPath_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGPattern_src",
+    srcs = ["SkSVGPattern.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkShader_hdr",
+        "//modules/svg/include:SkSVGPattern_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGPoly_src",
+    srcs = ["SkSVGPoly.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGPoly_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGRadialGradient_src",
+    srcs = ["SkSVGRadialGradient.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/effects:SkGradientShader_hdr",
+        "//modules/svg/include:SkSVGRadialGradient_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGRect_src",
+    srcs = ["SkSVGRect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkRect_hdr",
+        "//modules/svg/include:SkSVGRect_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGRenderContext_src",
+    srcs = ["SkSVGRenderContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkImageFilter_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/effects:SkDashPathEffect_hdr",
+        "//include/private:SkTo_hdr",
+        "//modules/svg/include:SkSVGAttribute_hdr",
+        "//modules/svg/include:SkSVGClipPath_hdr",
+        "//modules/svg/include:SkSVGFilter_hdr",
+        "//modules/svg/include:SkSVGMask_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGSVG_src",
+    srcs = ["SkSVGSVG.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGSVG_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGShape_src",
+    srcs = ["SkSVGShape.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGShape_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGStop_src",
+    srcs = ["SkSVGStop.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkTPin_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGStop_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGTextPriv_hdr",
+    hdrs = ["SkSVGTextPriv.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skshaper/include:SkShaper_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGText_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGText_src",
+    srcs = ["SkSVGText.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSVGTextPriv_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkContourMeasure_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//include/core:SkRSXform_hdr",
+        "//include/core:SkString_hdr",
+        "//modules/skshaper/include:SkShaper_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGText_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+        "//src/core:SkTextBlobPriv_hdr",
+        "//src/utils:SkUTF_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGTransformableNode_src",
+    srcs = ["SkSVGTransformableNode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGTransformableNode_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGUse_src",
+    srcs = ["SkSVGUse.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/svg/include:SkSVGRenderContext_hdr",
+        "//modules/svg/include:SkSVGUse_hdr",
+        "//modules/svg/include:SkSVGValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSVGValue_src",
+    srcs = ["SkSVGValue.cpp"],
+    visibility = ["//:__subpackages__"],
+)
diff --git a/modules/svg/tests/BUILD.bazel b/modules/svg/tests/BUILD.bazel
new file mode 100644
index 0000000..d527f3f
--- /dev/null
+++ b/modules/svg/tests/BUILD.bazel
@@ -0,0 +1,25 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Filters_src",
+    srcs = ["Filters.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkStream_hdr",
+        "//include/utils:SkNoDrawCanvas_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//tests:Test_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Text_src",
+    srcs = ["Text.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/utils:SkNoDrawCanvas_hdr",
+        "//modules/svg/src:SkSVGTextPriv_hdr",
+        "//tests:Test_hdr",
+    ],
+)
diff --git a/modules/svg/utils/BUILD.bazel b/modules/svg/utils/BUILD.bazel
new file mode 100644
index 0000000..fa123ff
--- /dev/null
+++ b/modules/svg/utils/BUILD.bazel
@@ -0,0 +1,17 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SvgTool_src",
+    srcs = ["SvgTool.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/encode:SkPngEncoder_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
diff --git a/src/android/BUILD.bazel b/src/android/BUILD.bazel
index 1b90e09..bd36bb5 100644
--- a/src/android/BUILD.bazel
+++ b/src/android/BUILD.bazel
@@ -1,5 +1,14 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkAndroidFrameworkUtils_src",
+        ":SkAnimatedImage_src",
+    ],
+)
+
 generated_cc_atom(
     name = "SkAndroidFrameworkUtils_src",
     srcs = ["SkAndroidFrameworkUtils.cpp"],
diff --git a/src/codec/BUILD.bazel b/src/codec/BUILD.bazel
index 91df6de..6a2d2e0 100644
--- a/src/codec/BUILD.bazel
+++ b/src/codec/BUILD.bazel
@@ -1,4 +1,111 @@
-load("//bazel:macros.bzl", "generated_cc_atom")
+# https://github.com/bazelbuild/bazel-skylib
+load("@bazel_skylib//lib:selects.bzl", "selects")
+load("//bazel:macros.bzl", "generated_cc_atom", "select_multi")
+
+cc_library(
+    name = "androidcodec_srcs",
+    deps = [
+        ":SkAndroidCodecAdapter_src",
+        ":SkAndroidCodec_src",
+        ":SkSampledCodec_src",
+    ],
+)
+
+cc_library(
+    name = "bmp_srcs",
+    deps = [
+        ":SkBmpBaseCodec_src",
+        ":SkBmpCodec_src",
+        ":SkBmpMaskCodec_src",
+        ":SkBmpRLECodec_src",
+        ":SkBmpStandardCodec_src",
+        ":SkWbmpCodec_src",
+    ],
+)
+
+cc_library(
+    name = "core_srcs",
+    deps = [
+        ":SkCodecImageGenerator_src",
+        ":SkCodec_src",
+        ":SkColorTable_src",
+        ":SkMaskSwizzler_src",
+        ":SkMasks_src",
+        ":SkSampler_src",
+        ":SkSwizzler_src",
+    ],
+)
+
+cc_library(
+    name = "gif_srcs",
+    deps = [
+        ":SkWuffsCodec_src",
+    ],
+)
+
+cc_library(
+    name = "jpeg_srcs",
+    deps = [
+        ":SkEncodedInfo_src",
+        ":SkJpegCodec_src",
+        ":SkJpegDecoderMgr_src",
+        ":SkJpegUtility_src",
+        ":SkParseEncodedOrigin_src",
+    ],
+)
+
+cc_library(
+    name = "png_srcs",
+    deps = [
+        ":SkEncodedInfo_src",
+        ":SkIcoCodec_src",
+        ":SkPngCodec_src",
+    ],
+)
+
+cc_library(
+    name = "raw_srcs",
+    deps = [
+        ":SkRawCodec_src",
+    ],
+)
+
+cc_library(
+    name = "webp_srcs",
+    deps = [
+        ":SkEncodedInfo_src",
+        ":SkParseEncodedOrigin_src",
+        ":SkWebpCodec_src",
+    ],
+)
+
+selects.config_setting_group(
+    name = "needs_jpeg",
+    match_any = [
+        "//bazel/common_config_settings:raw_decode_codec",
+        "//bazel/common_config_settings:jpeg_decode_codec",
+        "//bazel/common_config_settings:jpeg_encode_codec",
+    ],
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":androidcodec_srcs",
+        ":bmp_srcs",
+        ":core_srcs",
+    ] + select_multi(
+        {
+            "//bazel/common_config_settings:gif_decode_codec": [":gif_srcs"],
+            ":needs_jpeg": [":jpeg_srcs"],
+            "//bazel/common_config_settings:png_decode_codec": [":png_srcs"],
+            "//bazel/common_config_settings:raw_decode_codec": [":raw_srcs"],
+            "//bazel/common_config_settings:webp_decode_codec": [":webp_srcs"],
+        },
+        default = [],
+    ),
+)
 
 generated_cc_atom(
     name = "SkAndroidCodecAdapter_hdr",
diff --git a/src/core/BUILD.bazel b/src/core/BUILD.bazel
index bc63d67..e73686d 100644
--- a/src/core/BUILD.bazel
+++ b/src/core/BUILD.bazel
@@ -1,5 +1,232 @@
+# https://github.com/bazelbuild/bazel-skylib
+load("@bazel_skylib//lib:selects.bzl", "selects")
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "core_srcs",
+    deps = [
+        ":SkAAClip_src",
+        ":SkATrace_src",
+        ":SkAlphaRuns_src",
+        ":SkAnalyticEdge_src",
+        ":SkAnnotation_src",
+        ":SkArenaAlloc_src",
+        ":SkAutoPixmapStorage_src",
+        ":SkBBHFactory_src",
+        ":SkBigPicture_src",
+        ":SkBitmapCache_src",
+        ":SkBitmapDevice_src",
+        ":SkBitmapProcState_matrixProcs_src",
+        ":SkBitmapProcState_src",
+        ":SkBitmap_src",
+        ":SkBlendModeBlender_src",
+        ":SkBlendMode_src",
+        ":SkBlitRow_D32_src",
+        ":SkBlitter_A8_src",
+        ":SkBlitter_ARGB32_src",
+        ":SkBlitter_RGB565_src",
+        ":SkBlitter_Sprite_src",
+        ":SkBlitter_src",
+        ":SkBlockAllocator_src",
+        ":SkBlurMF_src",
+        ":SkBlurMask_src",
+        ":SkBuffer_src",
+        ":SkCachedData_src",
+        ":SkCanvasPriv_src",
+        ":SkCanvas_src",
+        ":SkClipStackDevice_src",
+        ":SkClipStack_src",
+        ":SkColorFilter_Matrix_src",
+        ":SkColorFilter_src",
+        ":SkColorSpaceXformSteps_src",
+        ":SkColorSpace_src",
+        ":SkColor_src",
+        ":SkCompressedDataUtils_src",
+        ":SkContourMeasure_src",
+        ":SkConvertPixels_src",
+        ":SkCpu_src",
+        ":SkCubicClipper_src",
+        ":SkCubicMap_src",
+        ":SkDataTable_src",
+        ":SkData_src",
+        ":SkDebug_src",
+        ":SkDeferredDisplayListRecorder_src",
+        ":SkDeferredDisplayList_src",
+        ":SkDeque_src",
+        ":SkDescriptor_src",
+        ":SkDevice_src",
+        ":SkDistanceFieldGen_src",
+        ":SkDocument_src",
+        ":SkDrawLooper_src",
+        ":SkDrawShadowInfo_src",
+        ":SkDraw_atlas_src",
+        ":SkDraw_src",
+        ":SkDraw_text_src",
+        ":SkDraw_vertices_src",
+        ":SkDrawable_src",
+        ":SkEdgeBuilder_src",
+        ":SkEdgeClipper_src",
+        ":SkEdge_src",
+        ":SkExecutor_src",
+        ":SkFlattenable_src",
+        ":SkFontDescriptor_src",
+        ":SkFontMgr_src",
+        ":SkFontStream_src",
+        ":SkFont_serial_src",
+        ":SkFont_src",
+        ":SkGaussFilter_src",
+        ":SkGeometry_src",
+        ":SkGlobalInitialization_core_src",
+        ":SkGlyphBuffer_src",
+        ":SkGlyphRunPainter_src",
+        ":SkGlyphRun_src",
+        ":SkGlyph_src",
+        ":SkGpuBlurUtils_src",
+        ":SkGraphics_src",
+        ":SkHalf_src",
+        ":SkICC_src",
+        ":SkIDChangeListener_src",
+        ":SkImageFilterCache_src",
+        ":SkImageFilterTypes_src",
+        ":SkImageFilter_src",
+        ":SkImageGenerator_src",
+        ":SkImageInfo_src",
+        ":SkLatticeIter_src",
+        ":SkLineClipper_src",
+        ":SkLocalMatrixImageFilter_src",
+        ":SkM44_src",
+        ":SkMD5_src",
+        ":SkMallocPixelRef_src",
+        ":SkMalloc_src",
+        ":SkMarkerStack_src",
+        ":SkMaskBlurFilter_src",
+        ":SkMaskCache_src",
+        ":SkMaskFilter_src",
+        ":SkMaskGamma_src",
+        ":SkMask_src",
+        ":SkMath_src",
+        ":SkMatrixImageFilter_src",
+        ":SkMatrixInvert_src",
+        ":SkMatrix_src",
+        ":SkMiniRecorder_src",
+        ":SkMipmapAccessor_src",
+        ":SkMipmap_src",
+        ":SkModeColorFilter_src",
+        ":SkOpts_erms_src",
+        ":SkOpts_src",
+        ":SkOverdrawCanvas_src",
+        ":SkPaintPriv_src",
+        ":SkPaint_src",
+        ":SkPathBuilder_src",
+        ":SkPathEffect_src",
+        ":SkPathMeasure_src",
+        ":SkPathRef_src",
+        ":SkPath_serial_src",
+        ":SkPath_src",
+        ":SkPictureData_src",
+        ":SkPictureFlat_src",
+        ":SkPictureImageGenerator_src",
+        ":SkPicturePlayback_src",
+        ":SkPictureRecord_src",
+        ":SkPictureRecorder_src",
+        ":SkPicture_src",
+        ":SkPixelRef_src",
+        ":SkPixmap_src",
+        ":SkPoint3_src",
+        ":SkPoint_src",
+        ":SkPromiseImageTexture_src",
+        ":SkPtrRecorder_src",
+        ":SkQuadClipper_src",
+        ":SkRRect_src",
+        ":SkRTree_src",
+        ":SkRasterClip_src",
+        ":SkRasterPipelineBlitter_src",
+        ":SkRasterPipeline_src",
+        ":SkReadBuffer_src",
+        ":SkRecordDraw_src",
+        ":SkRecordOpts_src",
+        ":SkRecord_src",
+        ":SkRecordedDrawable_src",
+        ":SkRecorder_src",
+        ":SkRecords_src",
+        ":SkRect_src",
+        ":SkRegion_path_src",
+        ":SkRegion_src",
+        ":SkRemoteGlyphCache_src",
+        ":SkResourceCache_src",
+        ":SkScalar_src",
+        ":SkScalerCache_src",
+        ":SkScalerContext_src",
+        ":SkScan_AAAPath_src",
+        ":SkScan_AntiPath_src",
+        ":SkScan_Antihair_src",
+        ":SkScan_Hairline_src",
+        ":SkScan_Path_src",
+        ":SkScan_src",
+        ":SkSemaphore_src",
+        ":SkSharedMutex_src",
+        ":SkSpecialImage_src",
+        ":SkSpecialSurface_src",
+        ":SkSpinlock_src",
+        ":SkSpriteBlitter_ARGB32_src",
+        ":SkSpriteBlitter_RGB565_src",
+        ":SkStream_src",
+        ":SkStrikeCache_src",
+        ":SkStrikeForGPU_src",
+        ":SkStrikeSpec_src",
+        ":SkStringUtils_src",
+        ":SkStringView_src",
+        ":SkString_src",
+        ":SkStrokeRec_src",
+        ":SkStroke_src",
+        ":SkStrokerPriv_src",
+        ":SkSurfaceCharacterization_src",
+        ":SkSwizzle_src",
+        ":SkTSearch_src",
+        ":SkTaskGroup_src",
+        ":SkTextBlobTrace_src",
+        ":SkTextBlob_src",
+        ":SkThreadID_src",
+        ":SkTime_src",
+        ":SkTypefaceCache_src",
+        ":SkTypeface_remote_src",
+        ":SkTypeface_src",
+        ":SkUnPreMultiply_src",
+        ":SkUtilsArm_src",
+        ":SkUtils_src",
+        ":SkVMBlitter_src",
+        ":SkVM_src",
+        ":SkVertState_src",
+        ":SkVertices_src",
+        ":SkWriteBuffer_src",
+        ":SkWriter32_src",
+        ":SkXfermodeInterpretation_src",
+        ":SkXfermode_src",
+        ":SkYUVAInfo_src",
+        ":SkYUVAPixmaps_src",
+        ":SkYUVMath_src",
+        ":SkYUVPlanesCache_src",
+    ],
+)
+
+cc_library(
+    name = "sksl_srcs",
+    deps = [
+        ":SkRuntimeEffect_src",
+    ],
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [":core_srcs"] + selects.with_or({
+        ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
+            ":sksl_srcs",
+        ],
+        "//conditions:default": [],
+    }),
+)
+
 generated_cc_atom(
     name = "Sk4px_hdr",
     hdrs = ["Sk4px.h"],
diff --git a/src/effects/BUILD.bazel b/src/effects/BUILD.bazel
index 6f8b0e4..c6302ad 100644
--- a/src/effects/BUILD.bazel
+++ b/src/effects/BUILD.bazel
@@ -1,5 +1,51 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Sk1DPathEffect_src",
+        ":Sk2DPathEffect_src",
+        ":SkBlenders_src",
+        ":SkColorMatrixFilter_src",
+        ":SkColorMatrix_src",
+        ":SkCornerPathEffect_src",
+        ":SkDashPathEffect_src",
+        ":SkDiscretePathEffect_src",
+        ":SkEmbossMaskFilter_src",
+        ":SkEmbossMask_src",
+        ":SkHighContrastFilter_src",
+        ":SkLayerDrawLooper_src",
+        ":SkLumaColorFilter_src",
+        ":SkOpPathEffect_src",
+        ":SkOverdrawColorFilter_src",
+        ":SkShaderMaskFilter_src",
+        ":SkTableColorFilter_src",
+        ":SkTableMaskFilter_src",
+        ":SkTrimPathEffect_src",
+        "//src/effects/imagefilters:SkAlphaThresholdImageFilter_src",
+        "//src/effects/imagefilters:SkArithmeticImageFilter_src",
+        "//src/effects/imagefilters:SkBlendImageFilter_src",
+        "//src/effects/imagefilters:SkBlurImageFilter_src",
+        "//src/effects/imagefilters:SkColorFilterImageFilter_src",
+        "//src/effects/imagefilters:SkComposeImageFilter_src",
+        "//src/effects/imagefilters:SkCropImageFilter_src",
+        "//src/effects/imagefilters:SkDisplacementMapImageFilter_src",
+        "//src/effects/imagefilters:SkDropShadowImageFilter_src",
+        "//src/effects/imagefilters:SkImageImageFilter_src",
+        "//src/effects/imagefilters:SkLightingImageFilter_src",
+        "//src/effects/imagefilters:SkMagnifierImageFilter_src",
+        "//src/effects/imagefilters:SkMatrixConvolutionImageFilter_src",
+        "//src/effects/imagefilters:SkMergeImageFilter_src",
+        "//src/effects/imagefilters:SkMorphologyImageFilter_src",
+        "//src/effects/imagefilters:SkOffsetImageFilter_src",
+        "//src/effects/imagefilters:SkPictureImageFilter_src",
+        "//src/effects/imagefilters:SkRuntimeImageFilter_src",
+        "//src/effects/imagefilters:SkShaderImageFilter_src",
+        "//src/effects/imagefilters:SkTileImageFilter_src",
+    ],
+)
+
 generated_cc_atom(
     name = "Sk1DPathEffect_src",
     srcs = ["Sk1DPathEffect.cpp"],
diff --git a/src/gpu/BUILD.bazel b/src/gpu/BUILD.bazel
index dd6dbe3..f5850c2 100644
--- a/src/gpu/BUILD.bazel
+++ b/src/gpu/BUILD.bazel
@@ -1,5 +1,289 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "core_srcs",
+    deps = [
+        ":BaseDevice_src",
+        ":GrAHardwareBufferImageGenerator_src",
+        ":GrAHardwareBufferUtils_src",
+        ":GrAttachment_src",
+        ":GrAuditTrail_src",
+        ":GrBackendSemaphore_src",
+        ":GrBackendSurfaceMutableState_src",
+        ":GrBackendSurface_src",
+        ":GrBackendTextureImageGenerator_src",
+        ":GrBackendUtils_src",
+        ":GrBlurUtils_src",
+        ":GrBufferAllocPool_src",
+        ":GrCaps_src",
+        ":GrClientMappedBufferManager_src",
+        ":GrColorInfo_src",
+        ":GrColorSpaceXform_src",
+        ":GrContextThreadSafeProxy_src",
+        ":GrContext_Base_src",
+        ":GrCopyRenderTask_src",
+        ":GrDDLContext_src",
+        ":GrDDLTask_src",
+        ":GrDataUtils_src",
+        ":GrDefaultGeoProcFactory_src",
+        ":GrDirectContextPriv_src",
+        ":GrDirectContext_src",
+        ":GrDistanceFieldGenFromVector_src",
+        ":GrDrawOpAtlas_src",
+        ":GrDrawOpTest_src",
+        ":GrDrawingManager_src",
+        ":GrDriverBugWorkarounds_src",
+        ":GrDynamicAtlas_src",
+        ":GrEagerVertexAllocator_src",
+        ":GrFinishCallbacks_src",
+        ":GrFixedClip_src",
+        ":GrFragmentProcessor_src",
+        ":GrGeometryProcessor_src",
+        ":GrGpuBuffer_src",
+        ":GrGpuResource_src",
+        ":GrGpu_src",
+        ":GrImageContext_src",
+        ":GrManagedResource_src",
+        ":GrMemoryPool_src",
+        ":GrMeshDrawTarget_src",
+        ":GrOnFlushResourceProvider_src",
+        ":GrOpFlushState_src",
+        ":GrOpsRenderPass_src",
+        ":GrPaint_src",
+        ":GrPersistentCacheUtils_src",
+        ":GrPipeline_src",
+        ":GrProcessorAnalysis_src",
+        ":GrProcessorSet_src",
+        ":GrProcessorUnitTest_src",
+        ":GrProcessor_src",
+        ":GrProgramDesc_src",
+        ":GrProgramInfo_src",
+        ":GrProxyProvider_src",
+        ":GrRecordingContextPriv_src",
+        ":GrRecordingContext_src",
+        ":GrRectanizerPow2_src",
+        ":GrRectanizerSkyline_src",
+        ":GrRenderTargetProxy_src",
+        ":GrRenderTarget_src",
+        ":GrRenderTaskCluster_src",
+        ":GrRenderTask_src",
+        ":GrResourceAllocator_src",
+        ":GrResourceCache_src",
+        ":GrResourceProvider_src",
+        ":GrRingBuffer_src",
+        ":GrSPIRVUniformHandler_src",
+        ":GrSPIRVVaryingHandler_src",
+        ":GrSWMaskHelper_src",
+        ":GrShaderCaps_src",
+        ":GrShaderUtils_src",
+        ":GrShaderVar_src",
+        ":GrStagingBufferManager_src",
+        ":GrStencilSettings_src",
+        ":GrStyle_src",
+        ":GrSubRunAllocator_src",
+        ":GrSurfaceInfo_src",
+        ":GrSurfaceProxy_src",
+        ":GrSurface_src",
+        ":GrSwizzle_src",
+        ":GrTestUtils_src",
+        ":GrTextureProxy_src",
+        ":GrTextureRenderTargetProxy_src",
+        ":GrTextureResolveRenderTask_src",
+        ":GrTexture_src",
+        ":GrThreadSafeCache_src",
+        ":GrThreadSafePipelineBuilder_src",
+        ":GrTransferFromRenderTask_src",
+        ":GrUniformDataManager_src",
+        ":GrUtil_src",
+        ":GrVertexChunkArray_src",
+        ":GrWaitRenderTask_src",
+        ":GrWritePixelsRenderTask_src",
+        ":GrXferProcessor_src",
+        ":GrYUVABackendTextures_src",
+        ":GrYUVATextureProxies_src",
+        ":SkGr_src",
+        ":SurfaceContext_src",
+        ":SurfaceFillContext_src",
+        "//src/gpu/effects:GrBezierEffect_src",
+        "//src/gpu/effects:GrBicubicEffect_src",
+        "//src/gpu/effects:GrBitmapTextGeoProc_src",
+        "//src/gpu/effects:GrBlendFragmentProcessor_src",
+        "//src/gpu/effects:GrConvexPolyEffect_src",
+        "//src/gpu/effects:GrCoverageSetOpXP_src",
+        "//src/gpu/effects:GrCustomXfermode_src",
+        "//src/gpu/effects:GrDisableColorXP_src",
+        "//src/gpu/effects:GrDistanceFieldGeoProc_src",
+        "//src/gpu/effects:GrGaussianConvolutionFragmentProcessor_src",
+        "//src/gpu/effects:GrMatrixConvolutionEffect_src",
+        "//src/gpu/effects:GrMatrixEffect_src",
+        "//src/gpu/effects:GrModulateAtlasCoverageEffect_src",
+        "//src/gpu/effects:GrOvalEffect_src",
+        "//src/gpu/effects:GrPorterDuffXferProcessor_src",
+        "//src/gpu/effects:GrRRectEffect_src",
+        "//src/gpu/effects:GrShadowGeoProc_src",
+        "//src/gpu/effects:GrSkSLFP_src",
+        "//src/gpu/effects:GrTextureEffect_src",
+        "//src/gpu/effects:GrYUVtoRGBEffect_src",
+        "//src/gpu/geometry:GrAAConvexTessellator_src",
+        "//src/gpu/geometry:GrAATriangulator_src",
+        "//src/gpu/geometry:GrPathUtils_src",
+        "//src/gpu/geometry:GrQuadUtils_src",
+        "//src/gpu/geometry:GrQuad_src",
+        "//src/gpu/geometry:GrShape_src",
+        "//src/gpu/geometry:GrStyledShape_src",
+        "//src/gpu/geometry:GrTriangulator_src",
+        "//src/gpu/gradients:GrGradientBitmapCache_src",
+        "//src/gpu/gradients:GrGradientShader_src",
+        "//src/gpu/ops:AAConvexPathRenderer_src",
+        "//src/gpu/ops:AAHairLinePathRenderer_src",
+        "//src/gpu/ops:AALinearizingConvexPathRenderer_src",
+        "//src/gpu/ops:AtlasInstancedHelper_src",
+        "//src/gpu/ops:AtlasPathRenderer_src",
+        "//src/gpu/ops:AtlasRenderTask_src",
+        "//src/gpu/ops:AtlasTextOp_src",
+        "//src/gpu/ops:ClearOp_src",
+        "//src/gpu/ops:DashLinePathRenderer_src",
+        "//src/gpu/ops:DashOp_src",
+        "//src/gpu/ops:DefaultPathRenderer_src",
+        "//src/gpu/ops:DrawAtlasOp_src",
+        "//src/gpu/ops:DrawAtlasPathOp_src",
+        "//src/gpu/ops:DrawVerticesOp_src",
+        "//src/gpu/ops:DrawableOp_src",
+        "//src/gpu/ops:FillRRectOp_src",
+        "//src/gpu/ops:FillRectOp_src",
+        "//src/gpu/ops:GrMeshDrawOp_src",
+        "//src/gpu/ops:GrOp_src",
+        "//src/gpu/ops:GrOvalOpFactory_src",
+        "//src/gpu/ops:GrSimpleMeshDrawOpHelperWithStencil_src",
+        "//src/gpu/ops:GrSimpleMeshDrawOpHelper_src",
+        "//src/gpu/ops:LatticeOp_src",
+        "//src/gpu/ops:OpsTask_src",
+        "//src/gpu/ops:PathInnerTriangulateOp_src",
+        "//src/gpu/ops:PathStencilCoverOp_src",
+        "//src/gpu/ops:PathTessellateOp_src",
+        "//src/gpu/ops:QuadPerEdgeAA_src",
+        "//src/gpu/ops:RegionOp_src",
+        "//src/gpu/ops:ShadowRRectOp_src",
+        "//src/gpu/ops:SmallPathAtlasMgr_src",
+        "//src/gpu/ops:SmallPathRenderer_src",
+        "//src/gpu/ops:SmallPathShapeData_src",
+        "//src/gpu/ops:SoftwarePathRenderer_src",
+        "//src/gpu/ops:StrokeRectOp_src",
+        "//src/gpu/ops:StrokeTessellateOp_src",
+        "//src/gpu/ops:TessellationPathRenderer_src",
+        "//src/gpu/ops:TextureOp_src",
+        "//src/gpu/ops:TriangulatingPathRenderer_src",
+        "//src/gpu/tessellate:PatchWriter_src",
+        "//src/gpu/tessellate:PathCurveTessellator_src",
+        "//src/gpu/tessellate:PathWedgeTessellator_src",
+        "//src/gpu/tessellate:StrokeFixedCountTessellator_src",
+        "//src/gpu/tessellate:StrokeHardwareTessellator_src",
+        "//src/gpu/tessellate:Tessellation_src",
+        "//src/gpu/tessellate/shaders:GrPathTessellationShader_Hardware_src",
+        "//src/gpu/tessellate/shaders:GrPathTessellationShader_MiddleOut_src",
+        "//src/gpu/tessellate/shaders:GrPathTessellationShader_src",
+        "//src/gpu/tessellate/shaders:GrStrokeTessellationShader_HardwareImpl_src",
+        "//src/gpu/tessellate/shaders:GrStrokeTessellationShader_InstancedImpl_src",
+        "//src/gpu/tessellate/shaders:GrStrokeTessellationShader_src",
+        "//src/gpu/tessellate/shaders:GrTessellationShader_src",
+        "//src/gpu/text:GrAtlasManager_src",
+        "//src/gpu/text:GrDistanceFieldAdjustTable_src",
+        "//src/gpu/text:GrSDFMaskFilter_src",
+        "//src/gpu/text:GrSDFTControl_src",
+        "//src/gpu/text:GrStrikeCache_src",
+        "//src/gpu/text:GrTextBlobCache_src",
+        "//src/gpu/text:GrTextBlob_src",
+    ],
+)
+
+cc_library(
+    name = "gl_srcs",
+    deps = [
+        "//src/gpu/gl:GrGLAssembleGLESInterfaceAutogen_src",
+        "//src/gpu/gl:GrGLAssembleGLInterfaceAutogen_src",
+        "//src/gpu/gl:GrGLAssembleHelpers_src",
+        "//src/gpu/gl:GrGLAssembleInterface_src",
+        "//src/gpu/gl:GrGLAssembleWebGLInterfaceAutogen_src",
+        "//src/gpu/gl:GrGLAttachment_src",
+        "//src/gpu/gl:GrGLBuffer_src",
+        "//src/gpu/gl:GrGLCaps_src",
+        "//src/gpu/gl:GrGLContext_src",
+        "//src/gpu/gl:GrGLExtensions_src",
+        "//src/gpu/gl:GrGLGLSL_src",
+        "//src/gpu/gl:GrGLGpuProgramCache_src",
+        "//src/gpu/gl:GrGLGpu_src",
+        "//src/gpu/gl:GrGLInterfaceAutogen_src",
+        "//src/gpu/gl:GrGLOpsRenderPass_src",
+        "//src/gpu/gl:GrGLProgramDataManager_src",
+        "//src/gpu/gl:GrGLProgram_src",
+        "//src/gpu/gl:GrGLRenderTarget_src",
+        "//src/gpu/gl:GrGLSemaphore_src",
+        "//src/gpu/gl:GrGLTextureRenderTarget_src",
+        "//src/gpu/gl:GrGLTexture_src",
+        "//src/gpu/gl:GrGLTypesPriv_src",
+        "//src/gpu/gl:GrGLUniformHandler_src",
+        "//src/gpu/gl:GrGLUtil_src",
+        "//src/gpu/gl:GrGLVertexArray_src",
+        "//src/gpu/gl/builders:GrGLProgramBuilder_src",
+        "//src/gpu/gl/builders:GrGLShaderStringBuilder_src",
+        "//src/gpu/glsl:GrGLSLBlend_src",
+        "//src/gpu/glsl:GrGLSLFragmentShaderBuilder_src",
+        "//src/gpu/glsl:GrGLSLProgramBuilder_src",
+        "//src/gpu/glsl:GrGLSLProgramDataManager_src",
+        "//src/gpu/glsl:GrGLSLShaderBuilder_src",
+        "//src/gpu/glsl:GrGLSLUniformHandler_src",
+        "//src/gpu/glsl:GrGLSLVarying_src",
+        "//src/gpu/glsl:GrGLSLVertexGeoBuilder_src",
+        "//src/gpu/glsl:GrGLSL_src",
+    ],
+)
+
+cc_library(
+    name = "v1_srcs",
+    deps = [
+        "//src/gpu/v1:ClipStack_src",
+        "//src/gpu/v1:Device_drawTexture_src",
+        "//src/gpu/v1:Device_src",
+        "//src/gpu/v1:PathRendererChain_src",
+        "//src/gpu/v1:PathRenderer_src",
+        "//src/gpu/v1:StencilMaskHelper_src",
+        "//src/gpu/v1:SurfaceDrawContext_src",
+        "//src/gpu/v1:SurfaceFillContext_v1_src",
+    ],
+)
+
+cc_library(
+    name = "webgl_srcs",
+    deps = [
+        "//src/gpu/gl/webgl:GrGLMakeNativeInterface_webgl_src",
+    ],
+)
+
+cc_library(
+    name = "mock_srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//src/gpu/mock:GrMockCaps_src",
+        "//src/gpu/mock:GrMockGpu_src",
+        "//src/gpu/mock:GrMockTypes_src",
+    ],
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [":core_srcs"] + select({
+        "//bazel/common_config_settings:gl_backend": [
+            ":gl_srcs",
+            ":v1_srcs",
+        ],
+        "//conditions:default": [],
+    }) + select({
+        "//bazel/common_config_settings:webgl_standard": [":webgl_srcs"],
+        "//conditions:default": [],
+    }),
+)
+
 generated_cc_atom(
     name = "BaseDevice_hdr",
     hdrs = ["BaseDevice.h"],
diff --git a/src/gpu/dawn/BUILD.bazel b/src/gpu/dawn/BUILD.bazel
index c9e5d06..fc84bf1 100644
--- a/src/gpu/dawn/BUILD.bazel
+++ b/src/gpu/dawn/BUILD.bazel
@@ -137,6 +137,7 @@
         "//src/gpu:GrOpFlushState_hdr",
         "//src/gpu:GrPipeline_hdr",
         "//src/gpu:GrRenderTarget_hdr",
+        "//src/gpu:GrStencilSettings_hdr",
         "//src/gpu:GrTexture_hdr",
         "//src/sksl:SkSLCompiler_hdr",
     ],
diff --git a/src/image/BUILD.bazel b/src/image/BUILD.bazel
index 0db7ce8..8c5f3fd 100644
--- a/src/image/BUILD.bazel
+++ b/src/image/BUILD.bazel
@@ -1,5 +1,40 @@
+# https://github.com/bazelbuild/bazel-skylib
+load("@bazel_skylib//lib:selects.bzl", "selects")
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "core_srcs",
+    deps = [
+        ":SkImage_Lazy_src",
+        ":SkImage_Raster_src",
+        ":SkImage_src",
+        ":SkRescaleAndReadPixels_src",
+        ":SkSurface_Raster_src",
+        ":SkSurface_src",
+    ],
+)
+
+cc_library(
+    name = "gpu_srcs",
+    deps = [
+        ":SkImage_GpuBase_src",
+        ":SkImage_GpuYUVA_src",
+        ":SkImage_Gpu_src",
+        ":SkSurface_Gpu_src",
+    ],
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [":core_srcs"] + selects.with_or({
+        ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
+            ":gpu_srcs",
+        ],
+        "//conditions:default": [],
+    }),
+)
+
 generated_cc_atom(
     name = "SkImage_Base_hdr",
     hdrs = ["SkImage_Base.h"],
diff --git a/src/images/BUILD.bazel b/src/images/BUILD.bazel
index 94075e8..3243617 100644
--- a/src/images/BUILD.bazel
+++ b/src/images/BUILD.bazel
@@ -1,4 +1,48 @@
-load("//bazel:macros.bzl", "generated_cc_atom")
+load("//bazel:macros.bzl", "generated_cc_atom", "select_multi")
+
+cc_library(
+    name = "core_srcs",
+    deps = [
+        ":SkImageEncoder_src",
+    ],
+)
+
+cc_library(
+    name = "jpeg_srcs",
+    deps = [
+        ":SkJPEGWriteUtility_src",
+        ":SkJpegEncoder_src",
+    ],
+)
+
+cc_library(
+    name = "png_srcs",
+    deps = [
+        ":SkPngEncoder_src",
+    ],
+)
+
+cc_library(
+    name = "webp_srcs",
+    deps = [
+        ":SkWebpEncoder_src",
+    ],
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":core_srcs",
+    ] + select_multi(
+        {
+            "//bazel/common_config_settings:jpeg_encode_codec": [":jpeg_srcs"],
+            "//bazel/common_config_settings:png_encode_codec": [":png_srcs"],
+            "//bazel/common_config_settings:webp_encode_codec": [":webp_srcs"],
+        },
+        default = [],
+    ),
+)
 
 generated_cc_atom(
     name = "SkImageEncoderFns_hdr",
diff --git a/src/opts/BUILD.bazel b/src/opts/BUILD.bazel
index a2405ef..142ba74 100644
--- a/src/opts/BUILD.bazel
+++ b/src/opts/BUILD.bazel
@@ -1,5 +1,21 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+# TODO(kjlubick) make these sources dependent on target platform, as necessary
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkOpts_avx_src",
+        ":SkOpts_crc32_src",
+        ":SkOpts_hsw_src",
+        ":SkOpts_skx_src",
+        ":SkOpts_sse41_src",
+        ":SkOpts_sse42_src",
+        ":SkOpts_ssse3_src",
+    ],
+)
+
 generated_cc_atom(
     name = "Sk4px_NEON_hdr",
     hdrs = ["Sk4px_NEON.h"],
diff --git a/src/pathops/BUILD.bazel b/src/pathops/BUILD.bazel
index b8feb8f..2650835 100644
--- a/src/pathops/BUILD.bazel
+++ b/src/pathops/BUILD.bazel
@@ -1,5 +1,44 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkAddIntersections_src",
+        ":SkDConicLineIntersection_src",
+        ":SkDCubicLineIntersection_src",
+        ":SkDCubicToQuads_src",
+        ":SkDLineIntersection_src",
+        ":SkDQuadLineIntersection_src",
+        ":SkIntersections_src",
+        ":SkOpAngle_src",
+        ":SkOpBuilder_src",
+        ":SkOpCoincidence_src",
+        ":SkOpContour_src",
+        ":SkOpCubicHull_src",
+        ":SkOpEdgeBuilder_src",
+        ":SkOpSegment_src",
+        ":SkOpSpan_src",
+        ":SkPathOpsAsWinding_src",
+        ":SkPathOpsCommon_src",
+        ":SkPathOpsConic_src",
+        ":SkPathOpsCubic_src",
+        ":SkPathOpsCurve_src",
+        ":SkPathOpsDebug_src",
+        ":SkPathOpsLine_src",
+        ":SkPathOpsOp_src",
+        ":SkPathOpsQuad_src",
+        ":SkPathOpsRect_src",
+        ":SkPathOpsSimplify_src",
+        ":SkPathOpsTSect_src",
+        ":SkPathOpsTightBounds_src",
+        ":SkPathOpsTypes_src",
+        ":SkPathOpsWinding_src",
+        ":SkPathWriter_src",
+        ":SkReduceOrder_src",
+    ],
+)
+
 generated_cc_atom(
     name = "SkAddIntersections_hdr",
     hdrs = ["SkAddIntersections.h"],
diff --git a/src/ports/BUILD.bazel b/src/ports/BUILD.bazel
index be8d640..58e2abb 100644
--- a/src/ports/BUILD.bazel
+++ b/src/ports/BUILD.bazel
@@ -1,4 +1,119 @@
-load("//bazel:macros.bzl", "generated_cc_atom")
+# https://github.com/bazelbuild/bazel-skylib
+load("@bazel_skylib//lib:selects.bzl", "selects")
+load("//bazel:macros.bzl", "generated_cc_atom", "select_multi")
+
+cc_library(
+    name = "typeface_freetype",
+    deps = [
+        ":SkFontHost_FreeType_common_src",
+        ":SkFontHost_FreeType_src",
+    ],
+)
+
+cc_library(
+    name = "fontmgr_factory",
+    deps = selects.with_or({
+        "//bazel/common_config_settings:custom_embedded_fontmgr_factory": [
+            ":SkFontMgr_custom_embedded_factory_src",
+        ],
+        ("//bazel/common_config_settings:empty_fontmgr_factory", "//conditions:default"): [
+            ":SkFontMgr_empty_factory_src",
+        ],
+    }),
+)
+
+cc_library(
+    name = "fontmgr_custom",
+    hdrs = ["SkFontMgr_custom.h"],
+    deps = [
+        ":SkFontMgr_custom_hdr",
+        ":SkFontMgr_custom_src",
+        ":typeface_freetype",
+    ],
+)
+
+cc_library(
+    name = "fontmgr_custom_directory_srcs",
+    deps = [
+        ":SkFontMgr_custom_directory_src",
+        ":fontmgr_custom",
+    ],
+)
+
+cc_library(
+    name = "fontmgr_custom_embedded_srcs",
+    deps = [
+        ":SkFontMgr_custom_embedded_src",
+        ":fontmgr_custom",
+    ],
+)
+
+cc_library(
+    name = "fontmgr_custom_empty_srcs",
+    deps = [
+        ":SkFontMgr_custom_empty_src",
+        ":fontmgr_custom",
+    ],
+)
+
+cc_library(
+    name = "global_init",
+    deps = [
+        ":SkGlobalInitialization_default_src",  # TODO(kjlubick) use select
+    ],
+)
+
+cc_library(
+    name = "image_generator",
+    deps = [
+        ":SkImageGenerator_skia_src",  # TODO(kjlubick) use select
+    ],
+)
+
+cc_library(
+    name = "osfile",
+    deps = [":SkOSFile_stdio_src"] + select({
+        "@platforms//os:windows": [":SkOSFile_win_src"],
+        "//conditions:default": [":SkOSFile_posix_src"],
+    }),
+)
+
+cc_library(
+    name = "malloc",
+    deps = [
+        ":SkMemory_malloc_src",  # TODO(kjlubick) use select
+    ],
+)
+
+cc_library(
+    name = "skdebug",
+    visibility = ["//:__subpackages__"],
+    deps = select({
+        "@platforms//os:windows": [":SkDebug_win_src"],
+        "@platforms//os:android": [":SkDebug_android_src"],
+        "//conditions:default": [":SkDebug_stdio_src"],
+    }),
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":fontmgr_factory",
+        ":global_init",
+        ":image_generator",
+        ":malloc",
+        ":osfile",
+        ":skdebug",
+    ] + select_multi(
+        {
+            "//bazel/common_config_settings:custom_directory_fontmgr": [":fontmgr_custom_directory_srcs"],
+            "//bazel/common_config_settings:custom_embedded_fontmgr": [":fontmgr_custom_embedded_srcs"],
+            "//bazel/common_config_settings:custom_empty_fontmgr": [":fontmgr_custom_empty_srcs"],
+        },
+        default = [],
+    ),
+)
 
 generated_cc_atom(
     name = "SkDebug_android_src",
diff --git a/src/sfnt/BUILD.bazel b/src/sfnt/BUILD.bazel
index b796e3f..d871976 100644
--- a/src/sfnt/BUILD.bazel
+++ b/src/sfnt/BUILD.bazel
@@ -1,5 +1,14 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkOTTable_name_src",
+        ":SkOTUtils_src",
+    ],
+)
+
 generated_cc_atom(
     name = "SkIBMFamilyClass_hdr",
     hdrs = ["SkIBMFamilyClass.h"],
diff --git a/src/shaders/BUILD.bazel b/src/shaders/BUILD.bazel
index d253653..a11a59d 100644
--- a/src/shaders/BUILD.bazel
+++ b/src/shaders/BUILD.bazel
@@ -1,5 +1,29 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkBitmapProcShader_src",
+        ":SkColorFilterShader_src",
+        ":SkColorShader_src",
+        ":SkComposeShader_src",
+        ":SkImageShader_src",
+        ":SkLocalMatrixShader_src",
+        ":SkPerlinNoiseShader_src",
+        ":SkPictureShader_src",
+        ":SkShader_src",
+        ":SkTransformShader_src",
+        "//src/shaders/gradients:Sk4fGradientBase_src",
+        "//src/shaders/gradients:Sk4fLinearGradient_src",
+        "//src/shaders/gradients:SkGradientShader_src",
+        "//src/shaders/gradients:SkLinearGradient_src",
+        "//src/shaders/gradients:SkRadialGradient_src",
+        "//src/shaders/gradients:SkSweepGradient_src",
+        "//src/shaders/gradients:SkTwoPointConicalGradient_src",
+    ],
+)
+
 generated_cc_atom(
     name = "SkBitmapProcShader_hdr",
     hdrs = ["SkBitmapProcShader.h"],
diff --git a/src/sksl/BUILD.bazel b/src/sksl/BUILD.bazel
index c22c885..56ba81d 100644
--- a/src/sksl/BUILD.bazel
+++ b/src/sksl/BUILD.bazel
@@ -1,5 +1,115 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+filegroup(
+    name = "txts",
+    srcs = [
+        "generated/sksl_frag.dehydrated.sksl",
+        "generated/sksl_gpu.dehydrated.sksl",
+        "generated/sksl_public.dehydrated.sksl",
+        "generated/sksl_rt_shader.dehydrated.sksl",
+        "generated/sksl_vert.dehydrated.sksl",
+    ],
+    visibility = ["//:__subpackages__"],
+)
+
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSLAnalysis_src",
+        ":SkSLBuiltinTypes_src",
+        ":SkSLCompiler_src",
+        ":SkSLConstantFolder_src",
+        ":SkSLContext_src",
+        ":SkSLDSLParser_src",
+        ":SkSLDehydrator_src",
+        ":SkSLErrorReporter_src",
+        ":SkSLInliner_src",
+        ":SkSLIntrinsicMap_src",
+        ":SkSLLexer_src",
+        ":SkSLMangler_src",
+        ":SkSLOperators_src",
+        ":SkSLOutputStream_src",
+        ":SkSLPool_src",
+        ":SkSLRehydrator_src",
+        ":SkSLSampleUsage_src",
+        ":SkSLString_src",
+        ":SkSLThreadContext_src",
+        ":SkSLUtil_src",
+        "//src/sksl/analysis:SkSLCanExitWithoutReturningValue_src",
+        "//src/sksl/analysis:SkSLCheckProgramUnrolledSize_src",
+        "//src/sksl/analysis:SkSLGetLoopUnrollInfo_src",
+        "//src/sksl/analysis:SkSLIsConstantExpression_src",
+        "//src/sksl/analysis:SkSLProgramUsage_src",
+        "//src/sksl/analysis:SkSLSwitchCaseContainsExit_src",
+        "//src/sksl/codegen:SkSLGLSLCodeGenerator_src",
+        "//src/sksl/codegen:SkSLMetalCodeGenerator_src",
+        "//src/sksl/codegen:SkSLPipelineStageCodeGenerator_src",
+        "//src/sksl/codegen:SkSLSPIRVCodeGenerator_src",
+        "//src/sksl/codegen:SkSLSPIRVtoHLSL_src",
+        "//src/sksl/codegen:SkSLVMCodeGenerator_src",
+        "//src/sksl/codegen:SkVMDebugInfo_src",
+        "//src/sksl/dsl:DSLBlock_src",
+        "//src/sksl/dsl:DSLCase_src",
+        "//src/sksl/dsl:DSLCore_src",
+        "//src/sksl/dsl:DSLExpression_src",
+        "//src/sksl/dsl:DSLFunction_src",
+        "//src/sksl/dsl:DSLLayout_src",
+        "//src/sksl/dsl:DSLRuntimeEffects_src",
+        "//src/sksl/dsl:DSLStatement_src",
+        "//src/sksl/dsl:DSLSymbols_src",
+        "//src/sksl/dsl:DSLType_src",
+        "//src/sksl/dsl:DSLVar_src",
+        "//src/sksl/dsl/priv:DSLFPs_src",
+        "//src/sksl/dsl/priv:DSLWriter_src",
+        "//src/sksl/ir:SkSLBinaryExpression_src",
+        "//src/sksl/ir:SkSLBlock_src",
+        "//src/sksl/ir:SkSLChildCall_src",
+        "//src/sksl/ir:SkSLConstructorArrayCast_src",
+        "//src/sksl/ir:SkSLConstructorArray_src",
+        "//src/sksl/ir:SkSLConstructorCompoundCast_src",
+        "//src/sksl/ir:SkSLConstructorCompound_src",
+        "//src/sksl/ir:SkSLConstructorDiagonalMatrix_src",
+        "//src/sksl/ir:SkSLConstructorMatrixResize_src",
+        "//src/sksl/ir:SkSLConstructorScalarCast_src",
+        "//src/sksl/ir:SkSLConstructorSplat_src",
+        "//src/sksl/ir:SkSLConstructorStruct_src",
+        "//src/sksl/ir:SkSLConstructor_src",
+        "//src/sksl/ir:SkSLDoStatement_src",
+        "//src/sksl/ir:SkSLExpressionStatement_src",
+        "//src/sksl/ir:SkSLExpression_src",
+        "//src/sksl/ir:SkSLFieldAccess_src",
+        "//src/sksl/ir:SkSLForStatement_src",
+        "//src/sksl/ir:SkSLFunctionCall_src",
+        "//src/sksl/ir:SkSLFunctionDeclaration_src",
+        "//src/sksl/ir:SkSLFunctionDefinition_src",
+        "//src/sksl/ir:SkSLIfStatement_src",
+        "//src/sksl/ir:SkSLIndexExpression_src",
+        "//src/sksl/ir:SkSLModifiers_src",
+        "//src/sksl/ir:SkSLPostfixExpression_src",
+        "//src/sksl/ir:SkSLPrefixExpression_src",
+        "//src/sksl/ir:SkSLSetting_src",
+        "//src/sksl/ir:SkSLSwitchStatement_src",
+        "//src/sksl/ir:SkSLSwizzle_src",
+        "//src/sksl/ir:SkSLSymbolTable_src",
+        "//src/sksl/ir:SkSLTernaryExpression_src",
+        "//src/sksl/ir:SkSLTypeReference_src",
+        "//src/sksl/ir:SkSLType_src",
+        "//src/sksl/ir:SkSLVarDeclarations_src",
+        "//src/sksl/ir:SkSLVariableReference_src",
+        "//src/sksl/ir:SkSLVariable_src",
+        "//src/sksl/lex:NFA_src",
+        "//src/sksl/lex:RegexNode_src",
+        "//src/sksl/lex:RegexParser_src",
+        "//src/sksl/lex:TransitionTable_src",
+        "//src/sksl/transform:SkSLBuiltinVariableScanner_src",
+        "//src/sksl/transform:SkSLEliminateDeadFunctions_src",
+        "//src/sksl/transform:SkSLEliminateDeadGlobalVariables_src",
+        "//src/sksl/transform:SkSLEliminateDeadLocalVariables_src",
+        "//src/sksl/transform:SkSLEliminateUnreachableCode_src",
+    ],
+)
+
 generated_cc_atom(
     name = "GLSL.std.450_hdr",
     hdrs = ["GLSL.std.450.h"],
@@ -113,6 +223,7 @@
 generated_cc_atom(
     name = "SkSLCompiler_src",
     srcs = ["SkSLCompiler.cpp"],
+    textual_hdrs = [":txts"],
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLCompiler_hdr",
diff --git a/src/sksl/lex/BUILD.bazel b/src/sksl/lex/BUILD.bazel
index ac7960e..2ebe2a8 100644
--- a/src/sksl/lex/BUILD.bazel
+++ b/src/sksl/lex/BUILD.bazel
@@ -1,5 +1,17 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_binary(
+    name = "sksllex",
+    deps = [
+        ":Main_src",
+        "//src/sksl/lex:NFA_src",
+        "//src/sksl/lex:RegexNode_src",
+        "//src/sksl/lex:RegexParser_src",
+        "//src/sksl/lex:TransitionTable_src",
+        "//third_party:musl_compat",
+    ],
+)
+
 generated_cc_atom(
     name = "DFAState_hdr",
     hdrs = ["DFAState.h"],
diff --git a/src/utils/BUILD.bazel b/src/utils/BUILD.bazel
index d7227f7..72f4e3c 100644
--- a/src/utils/BUILD.bazel
+++ b/src/utils/BUILD.bazel
@@ -1,5 +1,56 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+cc_library(
+    name = "core_srcs",
+    deps = [
+        ":SkAnimCodecPlayer_src",
+        ":SkBase64_src",
+        ":SkCamera_src",
+        ":SkCanvasStack_src",
+        ":SkCanvasStateUtils_src",
+        ":SkCharToGlyphCache_src",
+        ":SkClipStackUtils_src",
+        ":SkCustomTypeface_src",
+        ":SkDashPath_src",
+        ":SkEventTracer_src",
+        ":SkFloatToDecimal_src",
+        ":SkMatrix22_src",
+        ":SkMultiPictureDocument_src",
+        ":SkNWayCanvas_src",
+        ":SkNullCanvas_src",
+        ":SkOSPath_src",
+        ":SkOrderedFontMgr_src",
+        ":SkPaintFilterCanvas_src",
+        ":SkParseColor_src",
+        ":SkParsePath_src",
+        ":SkParse_src",
+        ":SkPatchUtils_src",
+        ":SkPolyUtils_src",
+        ":SkShadowTessellator_src",
+        ":SkShadowUtils_src",
+        ":SkTextUtils_src",
+        ":SkUTF_src",
+    ],
+)
+
+cc_library(
+    name = "json_srcs",
+    deps = [
+        ":SkJSONWriter_src",
+        ":SkJSON_src",
+        ":SkShaperJSONWriter_src",
+    ],
+)
+
+# TODO(kjlubick) add selects here to allow opting in or out of things like JSON
+cc_library(
+    name = "srcs",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":core_srcs",
+    ],
+)
+
 generated_cc_atom(
     name = "SkAnimCodecPlayer_src",
     srcs = ["SkAnimCodecPlayer.cpp"],
diff --git a/third_party/BUILD.bazel b/third_party/BUILD.bazel
index 92750bb..5550079 100644
--- a/third_party/BUILD.bazel
+++ b/third_party/BUILD.bazel
@@ -10,11 +10,12 @@
         "skcms/skcms_internal.h",
         "skcms/src/Transform_inl.h",
     ],
-    hdrs = [
-        "//include/third_party:skcms-hdrs",
+    copts = [
+        "-isystem include/third_party/skcms/",
     ],
-    # needed because skcms.cc just does include skcms.h
-    strip_include_prefix = "//include/third_party/skcms/",
+    deps = [
+        "//include/third_party/skcms:skcms_hdr",
+    ],
 )
 
 LIBPNG_SRCS = [
diff --git a/third_party/file_map_for_bazel.json b/third_party/file_map_for_bazel.json
index 275c50a..f2d4e6b 100644
--- a/third_party/file_map_for_bazel.json
+++ b/third_party/file_map_for_bazel.json
@@ -32,6 +32,8 @@
   "hb-subset.h": "SK_GAZELLE_IGNORE TODO //third_party:harfbuzz",
   "hb.h": "SK_GAZELLE_IGNORE TODO //third_party:harfbuzz",
 
+  "imgui.h": "SK_GAZELLE_IGNORE TODO //third_party:imgui",
+
   "png.h": "//third_party:libpng",
 
   "jerror.h": "//third_party:libjpeg-turbo",
@@ -42,6 +44,8 @@
   "webp/encode.h": "//third_party:libwebp",
   "webp/mux.h": "//third_party:libwebp",
 
+  "microhttpd.h": "SK_GAZELLE_IGNORE TODO //third_party:microhttpd",
+
   "src/piex.h": "//third_party:piex",
 
   "sample/chromium/font_subsetter.h": "SK_GAZELLE_IGNORE TODO //third_party:sfntly",
diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel
index 40e8664..fb7c231 100644
--- a/tools/BUILD.bazel
+++ b/tools/BUILD.bazel
@@ -1,68 +1,655 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
 load("@rules_python//python:defs.bzl", "py_binary")
 
-package(default_visibility = ["//:__subpackages__"])
-
-filegroup(
-    name = "cmdline",
-    srcs = [
-        "flags/CommandLineFlags.cpp",
-        "flags/CommandLineFlags.h",
-    ],
-)
-
-filegroup(
-    name = "srcs",
-    testonly = True,
-    srcs = [
-        "Registry.h",
-        "ResourceFactory.h",
-        "Resources.cpp",
-        "Resources.h",
-        "ToolUtils.cpp",
-        "ToolUtils.h",
-        "flags/CommandLineFlags.cpp",
-        "flags/CommandLineFlags.h",
-        "fonts/TestFontMgr.cpp",
-        "fonts/TestFontMgr.h",
-        "fonts/TestTypeface.cpp",
-        "fonts/TestTypeface.h",
-        "fonts/ToolUtilsFont.cpp",
-        "gpu/FenceSync.h",
-        "gpu/FlushFinishTracker.cpp",
-        "gpu/FlushFinishTracker.h",
-        "gpu/GpuTimer.h",
-        "gpu/GrContextFactory.cpp",
-        "gpu/GrContextFactory.h",
-        "gpu/TestContext.cpp",
-        "gpu/TestContext.h",
-        "gpu/gl/GLTestContext.cpp",
-        "gpu/gl/GLTestContext.h",
-        "gpu/gl/command_buffer/GLTestContext_command_buffer.h",
-        "gpu/mock/MockTestContext.h",
-    ],
-)
-
-filegroup(
-    name = "txts",
-    testonly = True,
-    srcs = [
-        "fonts/test_font_index.inc",
-        "fonts/test_font_monospace.inc",
-        "fonts/test_font_sans_serif.inc",
-        "fonts/test_font_serif.inc",
-    ],
-)
-
-filegroup(
-    name = "hash_and_encode",
-    testonly = True,
-    srcs = [
-        "HashAndEncode.cpp",
-        "HashAndEncode.h",
-    ],
-)
-
 py_binary(
     name = "embed_resources",
     srcs = ["embed_resources.py"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "AndroidSkDebugToStdOut_src",
+    srcs = ["AndroidSkDebugToStdOut.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkTypes_hdr"],
+)
+
+generated_cc_atom(
+    name = "AutoreleasePool_hdr",
+    hdrs = ["AutoreleasePool.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "CrashHandler_hdr",
+    hdrs = ["CrashHandler.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "CrashHandler_src",
+    srcs = ["CrashHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CrashHandler_hdr",
+        "//base:config_hdr",
+        "//base:process_state_hdr",
+        "//include/private:SkMalloc_hdr",
+        "//src/core:SkLeanWindows_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DDLPromiseImageHelper_hdr",
+    hdrs = ["DDLPromiseImageHelper.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkDeferredDisplayListRecorder_hdr",
+        "//include/core:SkPromiseImageTexture_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkYUVAPixmaps_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/private:SkTArray_hdr",
+        "//src/core:SkCachedData_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DDLPromiseImageHelper_src",
+    srcs = ["DDLPromiseImageHelper.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DDLPromiseImageHelper_hdr",
+        "//include/core:SkDeferredDisplayListRecorder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkSerialProcs_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu:GrYUVABackendTextures_hdr",
+        "//src/codec:SkCodecImageGenerator_hdr",
+        "//src/core:SkCachedData_hdr",
+        "//src/core:SkMipmap_hdr",
+        "//src/core:SkTaskGroup_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/image:SkImage_Base_hdr",
+        "//src/image:SkImage_GpuYUVA_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DDLTileHelper_hdr",
+    hdrs = ["DDLTileHelper.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkDeferredDisplayList_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSpan_hdr",
+        "//include/core:SkSurfaceCharacterization_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DDLTileHelper_src",
+    srcs = ["DDLTileHelper.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DDLPromiseImageHelper_hdr",
+        ":DDLTileHelper_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkDeferredDisplayListRecorder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkSurfaceCharacterization_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/core:SkDeferredDisplayListPriv_hdr",
+        "//src/core:SkTaskGroup_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/image:SkImage_Gpu_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "HashAndEncode_hdr",
+    hdrs = ["HashAndEncode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkStream_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "HashAndEncode_src",
+    srcs = ["HashAndEncode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":HashAndEncode_hdr",
+        "//include/core:SkICC_hdr",
+        "//include/core:SkString_hdr",
+        "//third_party:libpng",
+    ],
+)
+
+generated_cc_atom(
+    name = "LsanSuppressions_src",
+    srcs = ["LsanSuppressions.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkTypes_hdr"],
+)
+
+generated_cc_atom(
+    name = "MSKPPlayer_hdr",
+    hdrs = ["MSKPPlayer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSize_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MSKPPlayer_src",
+    srcs = ["MSKPPlayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":MSKPPlayer_hdr",
+        ":SkSharingProc_hdr",
+        "//include/core:SkCanvasVirtualEnforcer_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/utils:SkNoDrawCanvas_hdr",
+        "//src/core:SkCanvasPriv_hdr",
+        "//src/core:SkTLazy_hdr",
+        "//src/utils:SkMultiPictureDocument_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "OverwriteLine_hdr",
+    hdrs = ["OverwriteLine.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "ProcStats_hdr",
+    hdrs = ["ProcStats.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "ProcStats_src",
+    srcs = ["ProcStats.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ProcStats_hdr",
+        "//include/core:SkTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Registry_hdr",
+    hdrs = ["Registry.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkNoncopyable_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ResourceFactory_hdr",
+    hdrs = ["ResourceFactory.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkData_hdr"],
+)
+
+generated_cc_atom(
+    name = "Resources_hdr",
+    hdrs = ["Resources.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkImage_hdr",
+        "//include/core:SkString_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Resources_src",
+    srcs = ["Resources.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ResourceFactory_hdr",
+        ":Resources_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImageGenerator_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RuntimeBlendUtils_hdr",
+    hdrs = ["RuntimeBlendUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBlendMode_hdr",
+        "//include/core:SkRefCnt_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RuntimeBlendUtils_src",
+    srcs = ["RuntimeBlendUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBlendMode_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkMetaData_hdr",
+    hdrs = ["SkMetaData.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkScalar_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkMetaData_src",
+    srcs = ["SkMetaData.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkMetaData_hdr",
+        "//include/private:SkMalloc_hdr",
+        "//include/private:SkTo_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSharingProc_hdr",
+    hdrs = ["SkSharingProc.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkData_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkSerialProcs_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSharingProc_src",
+    srcs = ["SkSharingProc.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSharingProc_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkSerialProcs_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Stats_hdr",
+    hdrs = ["Stats.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkString_hdr",
+        "//include/private:SkFloatingPoint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ToolUtils_hdr",
+    hdrs = ["ToolUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkEncodedImageFormat_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkFontTypes_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/core:SkImageEncoder_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//include/utils:SkRandom_hdr",
+        "//src/core:SkTInternalLList_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ToolUtils_src",
+    srcs = ["ToolUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ToolUtils_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkBlendMode_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkColorPriv_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkPixelRef_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/core:SkPoint3_hdr",
+        "//include/core:SkRRect_hdr",
+        "//include/core:SkShader_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkTextBlob_hdr",
+        "//include/ports:SkTypeface_win_hdr",
+        "//include/private:SkColorData_hdr",
+        "//include/private:SkFloatingPoint_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//src/core:SkFontPriv_hdr",
+        "//src/xml:SkDOM_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "UrlDataManager_hdr",
+    hdrs = ["UrlDataManager.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkData_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkString_hdr",
+        "//src/core:SkOpts_hdr",
+        "//src/core:SkTDynamicHash_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "UrlDataManager_src",
+    srcs = ["UrlDataManager.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":UrlDataManager_hdr"],
+)
+
+generated_cc_atom(
+    name = "blob_cache_sim_src",
+    srcs = ["blob_cache_sim.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//src/core:SkRemoteGlyphCache_hdr",
+        "//src/core:SkScalerContext_hdr",
+        "//src/core:SkTextBlobTrace_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "chrome_fuzz_src",
+    srcs = ["chrome_fuzz.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkImageFilter_hdr",
+        "//include/core:SkString_hdr",
+        "//src/core:SkOSFile_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "convert-to-nia_src",
+    srcs = ["convert-to-nia.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "cpu_modules_src",
+    srcs = ["cpu_modules.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/particles/include:SkParticleEffect_hdr"],
+)
+
+generated_cc_atom(
+    name = "dump_record_src",
+    srcs = ["dump_record.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTime_hdr",
+        "//src/core:SkPicturePriv_hdr",
+        "//src/core:SkRecordDraw_hdr",
+        "//src/core:SkRecordOpts_hdr",
+        "//src/core:SkRecord_hdr",
+        "//src/core:SkRecorder_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "force_older_glibc_math_hdr",
+    hdrs = ["force_older_glibc_math.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "get_current_monitor_profile_src",
+    srcs = ["get_current_monitor_profile.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkStream_hdr"],
+)
+
+generated_cc_atom(
+    name = "get_images_from_skps_src",
+    srcs = ["get_images_from_skps.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkColorSpace_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkSerialProcs_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkTHash_hdr",
+        "//src/core:SkMD5_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "image_diff_metric_src",
+    srcs = ["image_diff_metric.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/core:SkSize_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "imgcvt_src",
+    srcs = ["imgcvt.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/third_party/skcms:skcms_hdr",
+        "//src/core:SkColorSpacePriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ios_utils_hdr",
+    hdrs = ["ios_utils.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "list_gms_src",
+    srcs = ["list_gms.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//gm:gm_hdr"],
+)
+
+generated_cc_atom(
+    name = "list_gpu_unit_tests_src",
+    srcs = ["list_gpu_unit_tests.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tests:Test_hdr"],
+)
+
+generated_cc_atom(
+    name = "public_headers_warnings_check_src",
+    srcs = ["public_headers_warnings_check.cpp"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "random_parse_path_hdr",
+    hdrs = ["random_parse_path.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkString_hdr"],
+)
+
+generated_cc_atom(
+    name = "random_parse_path_src",
+    srcs = ["random_parse_path.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":random_parse_path_hdr",
+        "//include/utils:SkRandom_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "remote_demo_src",
+    srcs = ["remote_demo.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkSurface_hdr",
+        "//src/core:SkRemoteGlyphCache_hdr",
+        "//src/core:SkScalerContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skottie2movie_src",
+    srcs = ["skottie2movie.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//experimental/ffmpeg:SkVideoEncoder_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkTime_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+        "//tools/gpu:GrContextFactory_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skp_parser_src",
+    srcs = ["skp_parser.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/utils:SkNullCanvas_hdr",
+        "//tools/debugger:DebugCanvas_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skpinfo_src",
+    srcs = ["skpinfo.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkTo_hdr",
+        "//src/core:SkFontDescriptor_hdr",
+        "//src/core:SkPictureCommon_hdr",
+        "//src/core:SkPictureData_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "using_skia_and_harfbuzz_src",
+    srcs = ["using_skia_and_harfbuzz.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTextBlob_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/docs:SkPDFDocument_hdr",
+        "//modules/skshaper/include:SkShaper_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "win_dbghelp_hdr",
+    hdrs = ["win_dbghelp.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "win_dbghelp_src",
+    srcs = ["win_dbghelp.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":win_dbghelp_hdr"],
+)
+
+generated_cc_atom(
+    name = "win_lcid_src",
+    srcs = ["win_lcid.cpp"],
+    visibility = ["//:__subpackages__"],
 )
diff --git a/tools/debugger/BUILD.bazel b/tools/debugger/BUILD.bazel
new file mode 100644
index 0000000..904063e
--- /dev/null
+++ b/tools/debugger/BUILD.bazel
@@ -0,0 +1,141 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "DebugCanvas_hdr",
+    hdrs = ["DebugCanvas.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DebugLayerManager_hdr",
+        ":DrawCommand_hdr",
+        "//include/core:SkCanvasVirtualEnforcer_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkVertices_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//include/private:SkTArray_hdr",
+        "//tools:UrlDataManager_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DebugCanvas_src",
+    srcs = ["DebugCanvas.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DebugCanvas_hdr",
+        ":DebugLayerManager_hdr",
+        ":DrawCommand_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkTextBlob_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/utils:SkPaintFilterCanvas_hdr",
+        "//src/core:SkCanvasPriv_hdr",
+        "//src/core:SkRectPriv_hdr",
+        "//src/gpu:GrAuditTrail_hdr",
+        "//src/gpu:GrRecordingContextPriv_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DebugLayerManager_hdr",
+    hdrs = ["DebugLayerManager.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DebugCanvas_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/private:SkTHash_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DebugLayerManager_src",
+    srcs = ["DebugLayerManager.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DebugCanvas_hdr",
+        ":DebugLayerManager_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/private:SkTHash_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DrawCommand_hdr",
+    hdrs = ["DrawCommand.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFlattenable_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkRRect_hdr",
+        "//include/core:SkRSXform_hdr",
+        "//include/core:SkRegion_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkVertices_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//src/core:SkDrawShadowInfo_hdr",
+        "//src/core:SkTLazy_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+        "//tools:UrlDataManager_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DrawCommand_src",
+    srcs = ["DrawCommand.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DebugLayerManager_hdr",
+        ":DrawCommand_hdr",
+        ":JsonWriteBuffer_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/core:SkDrawable_hdr",
+        "//include/core:SkImageFilter_hdr",
+        "//include/core:SkPathEffect_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/effects:SkDashPathEffect_hdr",
+        "//include/encode:SkPngEncoder_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:SkShadowFlags_hdr",
+        "//include/private:SkTHash_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+        "//src/core:SkCanvasPriv_hdr",
+        "//src/core:SkLatticeIter_hdr",
+        "//src/core:SkMaskFilterBase_hdr",
+        "//src/core:SkPaintDefaults_hdr",
+        "//src/core:SkPaintPriv_hdr",
+        "//src/core:SkReadBuffer_hdr",
+        "//src/core:SkRectPriv_hdr",
+        "//src/core:SkTextBlobPriv_hdr",
+        "//src/core:SkWriteBuffer_hdr",
+        "//src/image:SkImage_Base_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "JsonWriteBuffer_hdr",
+    hdrs = ["JsonWriteBuffer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//src/core:SkWriteBuffer_hdr"],
+)
+
+generated_cc_atom(
+    name = "JsonWriteBuffer_src",
+    srcs = ["JsonWriteBuffer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DrawCommand_hdr",
+        ":JsonWriteBuffer_hdr",
+    ],
+)
diff --git a/tools/fiddle/BUILD.bazel b/tools/fiddle/BUILD.bazel
new file mode 100644
index 0000000..7e0381e
--- /dev/null
+++ b/tools/fiddle/BUILD.bazel
@@ -0,0 +1,1291 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "all_examples_src",
+    srcs = ["all_examples.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//docs/examples:50_percent_gray_src",
+        "//docs/examples:50_percent_srgb_src",
+        "//docs/examples:Alpha_Constants_a_src",
+        "//docs/examples:Alpha_Constants_b_src",
+        "//docs/examples:Alpha_Type_Opaque_src",
+        "//docs/examples:Alpha_Type_Premul_src",
+        "//docs/examples:Alpha_Type_Unpremul_src",
+        "//docs/examples:Anti_Alias_src",
+        "//docs/examples:Arc_src",
+        "//docs/examples:AutoCanvasRestore_SkCanvas_star_src",
+        "//docs/examples:AutoCanvasRestore_restore_src",
+        "//docs/examples:Bitmap_012_src",
+        "//docs/examples:Bitmap_ComputeIsOpaque_src",
+        "//docs/examples:Bitmap_HeapAllocator_allocPixelRef_src",
+        "//docs/examples:Bitmap_allocN32Pixels_src",
+        "//docs/examples:Bitmap_allocPixelsFlags_src",
+        "//docs/examples:Bitmap_allocPixels_src",
+        "//docs/examples:Bitmap_bounds_src",
+        "//docs/examples:Bitmap_bytesPerPixel_src",
+        "//docs/examples:Bitmap_colorSpace_src",
+        "//docs/examples:Bitmap_colorType_src",
+        "//docs/examples:Bitmap_computeByteSize_src",
+        "//docs/examples:Bitmap_copy_const_SkBitmap_src",
+        "//docs/examples:Bitmap_copy_operator_src",
+        "//docs/examples:Bitmap_dimensions_src",
+        "//docs/examples:Bitmap_drawsNothing_src",
+        "//docs/examples:Bitmap_empty_constructor_src",
+        "//docs/examples:Bitmap_empty_src",
+        "//docs/examples:Bitmap_eraseARGB_src",
+        "//docs/examples:Bitmap_eraseColor_src",
+        "//docs/examples:Bitmap_erase_src",
+        "//docs/examples:Bitmap_extractAlpha_2_src",
+        "//docs/examples:Bitmap_extractAlpha_3_src",
+        "//docs/examples:Bitmap_extractAlpha_src",
+        "//docs/examples:Bitmap_extractSubset_src",
+        "//docs/examples:Bitmap_getAddr16_src",
+        "//docs/examples:Bitmap_getAddr32_src",
+        "//docs/examples:Bitmap_getAddr8_src",
+        "//docs/examples:Bitmap_getAddr_src",
+        "//docs/examples:Bitmap_getBounds_2_src",
+        "//docs/examples:Bitmap_getBounds_src",
+        "//docs/examples:Bitmap_getColor_src",
+        "//docs/examples:Bitmap_getGenerationID_src",
+        "//docs/examples:Bitmap_getPixels_src",
+        "//docs/examples:Bitmap_getSubset_src",
+        "//docs/examples:Bitmap_height_src",
+        "//docs/examples:Bitmap_info_src",
+        "//docs/examples:Bitmap_installPixels_2_src",
+        "//docs/examples:Bitmap_installPixels_3_src",
+        "//docs/examples:Bitmap_installPixels_src",
+        "//docs/examples:Bitmap_isImmutable_src",
+        "//docs/examples:Bitmap_isNull_src",
+        "//docs/examples:Bitmap_isOpaque_src",
+        "//docs/examples:Bitmap_move_SkBitmap_src",
+        "//docs/examples:Bitmap_move_operator_src",
+        "//docs/examples:Bitmap_notifyPixelsChanged_src",
+        "//docs/examples:Bitmap_peekPixels_src",
+        "//docs/examples:Bitmap_pixelRefOrigin_src",
+        "//docs/examples:Bitmap_pixelRef_src",
+        "//docs/examples:Bitmap_pixmap_src",
+        "//docs/examples:Bitmap_readPixels_2_src",
+        "//docs/examples:Bitmap_readPixels_3_src",
+        "//docs/examples:Bitmap_readPixels_src",
+        "//docs/examples:Bitmap_readyToDraw_src",
+        "//docs/examples:Bitmap_refColorSpace_src",
+        "//docs/examples:Bitmap_reset_src",
+        "//docs/examples:Bitmap_rowBytesAsPixels_src",
+        "//docs/examples:Bitmap_rowBytes_src",
+        "//docs/examples:Bitmap_setAlphaType_src",
+        "//docs/examples:Bitmap_setImmutable_src",
+        "//docs/examples:Bitmap_setInfo_src",
+        "//docs/examples:Bitmap_setPixelRef_src",
+        "//docs/examples:Bitmap_setPixels_src",
+        "//docs/examples:Bitmap_shiftPerPixel_src",
+        "//docs/examples:Bitmap_swap_src",
+        "//docs/examples:Bitmap_tryAllocN32Pixels_src",
+        "//docs/examples:Bitmap_tryAllocPixelsFlags_src",
+        "//docs/examples:Bitmap_tryAllocPixels_2_src",
+        "//docs/examples:Bitmap_tryAllocPixels_3_src",
+        "//docs/examples:Bitmap_tryAllocPixels_4_src",
+        "//docs/examples:Bitmap_tryAllocPixels_src",
+        "//docs/examples:Bitmap_width_src",
+        "//docs/examples:Bitmap_writePixels_2_src",
+        "//docs/examples:Bitmap_writePixels_src",
+        "//docs/examples:BlendModes_src",
+        "//docs/examples:Blend_Mode_Methods_src",
+        "//docs/examples:Canvas_129_src",
+        "//docs/examples:Canvas_MakeRasterDirectN32_src",
+        "//docs/examples:Canvas_MakeRasterDirect_src",
+        "//docs/examples:Canvas_PointMode_src",
+        "//docs/examples:Canvas_SaveLayerRec_SaveLayerRec_src",
+        "//docs/examples:Canvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_const_SkImageFilter_star_src",
+        "//docs/examples:Canvas_SaveLayerRec_const_SkRect_star_const_SkPaint_star_src",
+        "//docs/examples:Canvas_SaveLayerRec_src",
+        "//docs/examples:Canvas_SrcRectConstraint_src",
+        "//docs/examples:Canvas_accessTopLayerPixels_a_src",
+        "//docs/examples:Canvas_accessTopLayerPixels_b_src",
+        "//docs/examples:Canvas_accessTopRasterHandle_src",
+        "//docs/examples:Canvas_clear_src",
+        "//docs/examples:Canvas_clipPath_2_src",
+        "//docs/examples:Canvas_clipPath_3_src",
+        "//docs/examples:Canvas_clipPath_src",
+        "//docs/examples:Canvas_clipRRect_2_src",
+        "//docs/examples:Canvas_clipRRect_3_src",
+        "//docs/examples:Canvas_clipRRect_src",
+        "//docs/examples:Canvas_clipRect_2_src",
+        "//docs/examples:Canvas_clipRect_3_src",
+        "//docs/examples:Canvas_clipRect_src",
+        "//docs/examples:Canvas_clipRegion_src",
+        "//docs/examples:Canvas_concat_src",
+        "//docs/examples:Canvas_const_SkBitmap_const_SkSurfaceProps_src",
+        "//docs/examples:Canvas_copy_const_SkBitmap_src",
+        "//docs/examples:Canvas_destructor_src",
+        "//docs/examples:Canvas_drawAnnotation_2_src",
+        "//docs/examples:Canvas_drawArc_a_src",
+        "//docs/examples:Canvas_drawArc_b_src",
+        "//docs/examples:Canvas_drawAtlas_2_src",
+        "//docs/examples:Canvas_drawAtlas_src",
+        "//docs/examples:Canvas_drawBitmapRect_2_src",
+        "//docs/examples:Canvas_drawBitmapRect_3_src",
+        "//docs/examples:Canvas_drawBitmapRect_src",
+        "//docs/examples:Canvas_drawBitmap_src",
+        "//docs/examples:Canvas_drawCircle_2_src",
+        "//docs/examples:Canvas_drawCircle_src",
+        "//docs/examples:Canvas_drawColor_src",
+        "//docs/examples:Canvas_drawDRRect_a_src",
+        "//docs/examples:Canvas_drawDRRect_b_src",
+        "//docs/examples:Canvas_drawDrawable_2_src",
+        "//docs/examples:Canvas_drawDrawable_src",
+        "//docs/examples:Canvas_drawIRect_src",
+        "//docs/examples:Canvas_drawImageNine_2_src",
+        "//docs/examples:Canvas_drawImageNine_src",
+        "//docs/examples:Canvas_drawImageRect_2_src",
+        "//docs/examples:Canvas_drawImageRect_3_src",
+        "//docs/examples:Canvas_drawImageRect_4_src",
+        "//docs/examples:Canvas_drawImageRect_5_src",
+        "//docs/examples:Canvas_drawImageRect_6_src",
+        "//docs/examples:Canvas_drawImageRect_src",
+        "//docs/examples:Canvas_drawImage_2_src",
+        "//docs/examples:Canvas_drawImage_src",
+        "//docs/examples:Canvas_drawLine_2_src",
+        "//docs/examples:Canvas_drawLine_src",
+        "//docs/examples:Canvas_drawOval_src",
+        "//docs/examples:Canvas_drawPaint_src",
+        "//docs/examples:Canvas_drawPatch_2_a_src",
+        "//docs/examples:Canvas_drawPatch_2_b_src",
+        "//docs/examples:Canvas_drawPatch_src",
+        "//docs/examples:Canvas_drawPath_src",
+        "//docs/examples:Canvas_drawPicture_2_src",
+        "//docs/examples:Canvas_drawPicture_3_src",
+        "//docs/examples:Canvas_drawPicture_4_src",
+        "//docs/examples:Canvas_drawPoint_2_src",
+        "//docs/examples:Canvas_drawPoint_src",
+        "//docs/examples:Canvas_drawPoints_src",
+        "//docs/examples:Canvas_drawPosTextH_src",
+        "//docs/examples:Canvas_drawPosText_src",
+        "//docs/examples:Canvas_drawRRect_src",
+        "//docs/examples:Canvas_drawRect_src",
+        "//docs/examples:Canvas_drawRegion_src",
+        "//docs/examples:Canvas_drawRoundRect_src",
+        "//docs/examples:Canvas_drawString_2_src",
+        "//docs/examples:Canvas_drawString_src",
+        "//docs/examples:Canvas_drawTextBlob_2_src",
+        "//docs/examples:Canvas_drawTextBlob_src",
+        "//docs/examples:Canvas_drawTextRSXform_src",
+        "//docs/examples:Canvas_drawText_src",
+        "//docs/examples:Canvas_drawVertices_2_src",
+        "//docs/examples:Canvas_drawVertices_src",
+        "//docs/examples:Canvas_empty_constructor_src",
+        "//docs/examples:Canvas_getBaseLayerSize_src",
+        "//docs/examples:Canvas_getContext_src",
+        "//docs/examples:Canvas_getDeviceClipBounds_2_src",
+        "//docs/examples:Canvas_getDeviceClipBounds_src",
+        "//docs/examples:Canvas_getLocalClipBounds_2_src",
+        "//docs/examples:Canvas_getLocalClipBounds_src",
+        "//docs/examples:Canvas_getProps_src",
+        "//docs/examples:Canvas_getSaveCount_src",
+        "//docs/examples:Canvas_getTotalMatrix_src",
+        "//docs/examples:Canvas_imageInfo_src",
+        "//docs/examples:Canvas_int_int_const_SkSurfaceProps_star_src",
+        "//docs/examples:Canvas_isClipEmpty_src",
+        "//docs/examples:Canvas_isClipRect_src",
+        "//docs/examples:Canvas_kInitWithPrevious_SaveLayerFlag_src",
+        "//docs/examples:Canvas_makeSurface_src",
+        "//docs/examples:Canvas_peekPixels_src",
+        "//docs/examples:Canvas_quickReject_2_src",
+        "//docs/examples:Canvas_quickReject_src",
+        "//docs/examples:Canvas_readPixels_2_src",
+        "//docs/examples:Canvas_readPixels_3_src",
+        "//docs/examples:Canvas_readPixels_a_src",
+        "//docs/examples:Canvas_readPixels_b_src",
+        "//docs/examples:Canvas_resetMatrix_src",
+        "//docs/examples:Canvas_restoreToCount_src",
+        "//docs/examples:Canvas_restore_src",
+        "//docs/examples:Canvas_rotate_2_src",
+        "//docs/examples:Canvas_rotate_src",
+        "//docs/examples:Canvas_saveLayerAlpha_src",
+        "//docs/examples:Canvas_saveLayerPreserveLCDTextRequests_src",
+        "//docs/examples:Canvas_saveLayer_2_src",
+        "//docs/examples:Canvas_saveLayer_3_src",
+        "//docs/examples:Canvas_saveLayer_4_src",
+        "//docs/examples:Canvas_saveLayer_src",
+        "//docs/examples:Canvas_save_src",
+        "//docs/examples:Canvas_scale_src",
+        "//docs/examples:Canvas_setMatrix_src",
+        "//docs/examples:Canvas_skew_src",
+        "//docs/examples:Canvas_translate_src",
+        "//docs/examples:Canvas_writePixels_2_src",
+        "//docs/examples:Canvas_writePixels_src",
+        "//docs/examples:ChromeMDRefreshTab_src",
+        "//docs/examples:ChromeMDRefreshTabs_src",
+        "//docs/examples:Clear_src",
+        "//docs/examples:Clip_src",
+        "//docs/examples:ColorGetA_src",
+        "//docs/examples:ColorGetB_src",
+        "//docs/examples:ColorGetG_src",
+        "//docs/examples:ColorGetR_src",
+        "//docs/examples:ColorSetARGB_src",
+        "//docs/examples:ColorSetA_src",
+        "//docs/examples:ColorSetRGB_src",
+        "//docs/examples:ColorToHSV_src",
+        "//docs/examples:ColorTypeBytesPerPixel_src",
+        "//docs/examples:ColorTypeIsAlwaysOpaque_src",
+        "//docs/examples:ColorTypeValidateAlphaType_src",
+        "//docs/examples:Color_Burn_src",
+        "//docs/examples:Color_Constants_a_src",
+        "//docs/examples:Color_Constants_b_src",
+        "//docs/examples:Color_Constants_c_src",
+        "//docs/examples:Color_Constants_d_src",
+        "//docs/examples:Color_Dodge_src",
+        "//docs/examples:Color_Filter_Methods_src",
+        "//docs/examples:Color_Methods_src",
+        "//docs/examples:Color_Type_ARGB_4444_src",
+        "//docs/examples:Color_Type_Alpha_8_src",
+        "//docs/examples:Color_Type_BGRA_8888_src",
+        "//docs/examples:Color_Type_Gray_8_src",
+        "//docs/examples:Color_Type_RGBA_1010102_src",
+        "//docs/examples:Color_Type_RGBA_8888_src",
+        "//docs/examples:Color_Type_RGBA_F16_src",
+        "//docs/examples:Color_Type_RGB_101010_src",
+        "//docs/examples:Color_Type_RGB_565_src",
+        "//docs/examples:Color_Type_RGB_888_src",
+        "//docs/examples:Color_Wheel_src",
+        "//docs/examples:Color_src",
+        "//docs/examples:Colors_src",
+        "//docs/examples:Conic_Weight_a_src",
+        "//docs/examples:Conic_Weight_b_src",
+        "//docs/examples:Conic_Weight_c_src",
+        "//docs/examples:Cubic_src",
+        "//docs/examples:DCIToXYZD50_src",
+        "//docs/examples:Darken_src",
+        "//docs/examples:Device_Text_src",
+        "//docs/examples:Difference_src",
+        "//docs/examples:Dither_a_src",
+        "//docs/examples:Dither_b_src",
+        "//docs/examples:Dst_Atop_src",
+        "//docs/examples:Dst_In_src",
+        "//docs/examples:Dst_Out_src",
+        "//docs/examples:Dst_Over_src",
+        "//docs/examples:Dst_src",
+        "//docs/examples:Exclusion_src",
+        "//docs/examples:Fake_Bold_src",
+        "//docs/examples:Font_breakText_src",
+        "//docs/examples:GradientShader_MakeLinear_src",
+        "//docs/examples:HSVToColor_2_src",
+        "//docs/examples:HSVToColor_src",
+        "//docs/examples:Hard_Light_src",
+        "//docs/examples:Hue_src",
+        "//docs/examples:IPoint_Make_src",
+        "//docs/examples:IPoint_add_operator_src",
+        "//docs/examples:IPoint_addto_operator_src",
+        "//docs/examples:IPoint_equal_operator_src",
+        "//docs/examples:IPoint_equals_src",
+        "//docs/examples:IPoint_isZero_src",
+        "//docs/examples:IPoint_minus_operator_src",
+        "//docs/examples:IPoint_notequal_operator_src",
+        "//docs/examples:IPoint_set_src",
+        "//docs/examples:IPoint_subtract_operator_src",
+        "//docs/examples:IPoint_subtractfrom_operator_src",
+        "//docs/examples:IPoint_x_src",
+        "//docs/examples:IPoint_y_src",
+        "//docs/examples:IRect_Intersects_src",
+        "//docs/examples:IRect_MakeEmpty_src",
+        "//docs/examples:IRect_MakeLTRB_src",
+        "//docs/examples:IRect_MakeSize_src",
+        "//docs/examples:IRect_MakeWH_src",
+        "//docs/examples:IRect_MakeXYWH_src",
+        "//docs/examples:IRect_adjust_src",
+        "//docs/examples:IRect_bottom_src",
+        "//docs/examples:IRect_containsNoEmptyCheck_2_src",
+        "//docs/examples:IRect_containsNoEmptyCheck_src",
+        "//docs/examples:IRect_contains_3_src",
+        "//docs/examples:IRect_contains_4_src",
+        "//docs/examples:IRect_contains_src",
+        "//docs/examples:IRect_equal_operator_src",
+        "//docs/examples:IRect_height64_src",
+        "//docs/examples:IRect_height_src",
+        "//docs/examples:IRect_inset_src",
+        "//docs/examples:IRect_intersect_2_src",
+        "//docs/examples:IRect_intersect_src",
+        "//docs/examples:IRect_isEmpty64_src",
+        "//docs/examples:IRect_isEmpty_src",
+        "//docs/examples:IRect_join_2_src",
+        "//docs/examples:IRect_left_src",
+        "//docs/examples:IRect_makeInset_src",
+        "//docs/examples:IRect_makeOffset_src",
+        "//docs/examples:IRect_makeOutset_src",
+        "//docs/examples:IRect_makeSorted_src",
+        "//docs/examples:IRect_notequal_operator_src",
+        "//docs/examples:IRect_offsetTo_src",
+        "//docs/examples:IRect_offset_2_src",
+        "//docs/examples:IRect_offset_src",
+        "//docs/examples:IRect_outset_src",
+        "//docs/examples:IRect_right_src",
+        "//docs/examples:IRect_setEmpty_src",
+        "//docs/examples:IRect_setLTRB_src",
+        "//docs/examples:IRect_setXYWH_src",
+        "//docs/examples:IRect_size_src",
+        "//docs/examples:IRect_sort_src",
+        "//docs/examples:IRect_top_src",
+        "//docs/examples:IRect_width64_src",
+        "//docs/examples:IRect_width_src",
+        "//docs/examples:IRect_x_src",
+        "//docs/examples:IRect_y_src",
+        "//docs/examples:ImageInfo_ByteSizeOverflowed_src",
+        "//docs/examples:ImageInfo_MakeA8_src",
+        "//docs/examples:ImageInfo_MakeN32Premul_2_src",
+        "//docs/examples:ImageInfo_MakeN32Premul_src",
+        "//docs/examples:ImageInfo_MakeN32_src",
+        "//docs/examples:ImageInfo_MakeS32_src",
+        "//docs/examples:ImageInfo_MakeUnknown_2_src",
+        "//docs/examples:ImageInfo_MakeUnknown_src",
+        "//docs/examples:ImageInfo_Make_src",
+        "//docs/examples:ImageInfo_alphaType_src",
+        "//docs/examples:ImageInfo_bounds_src",
+        "//docs/examples:ImageInfo_bytesPerPixel_src",
+        "//docs/examples:ImageInfo_colorSpace_src",
+        "//docs/examples:ImageInfo_colorType_src",
+        "//docs/examples:ImageInfo_computeByteSize_src",
+        "//docs/examples:ImageInfo_computeMinByteSize_src",
+        "//docs/examples:ImageInfo_computeOffset_src",
+        "//docs/examples:ImageInfo_dimensions_src",
+        "//docs/examples:ImageInfo_empty_constructor_src",
+        "//docs/examples:ImageInfo_equal1_operator_src",
+        "//docs/examples:ImageInfo_gammaCloseToSRGB_src",
+        "//docs/examples:ImageInfo_height_src",
+        "//docs/examples:ImageInfo_isEmpty_src",
+        "//docs/examples:ImageInfo_isOpaque_src",
+        "//docs/examples:ImageInfo_makeColorSpace_src",
+        "//docs/examples:ImageInfo_makeWH_src",
+        "//docs/examples:ImageInfo_minRowBytes64_src",
+        "//docs/examples:ImageInfo_minRowBytes_src",
+        "//docs/examples:ImageInfo_notequal1_operator_src",
+        "//docs/examples:ImageInfo_refColorSpace_src",
+        "//docs/examples:ImageInfo_reset_src",
+        "//docs/examples:ImageInfo_shiftPerPixel_src",
+        "//docs/examples:ImageInfo_validRowBytes_src",
+        "//docs/examples:ImageInfo_width_src",
+        "//docs/examples:Image_Filter_Methods_src",
+        "//docs/examples:Image_MakeBackendTextureFromSkImage_src",
+        "//docs/examples:Image_MakeCrossContextFromPixmap_src",
+        "//docs/examples:Image_MakeFromAdoptedTexture_src",
+        "//docs/examples:Image_MakeFromBitmap_src",
+        "//docs/examples:Image_MakeFromEncoded_src",
+        "//docs/examples:Image_MakeFromGenerator_src",
+        "//docs/examples:Image_MakeFromPicture_src",
+        "//docs/examples:Image_MakeFromRaster_src",
+        "//docs/examples:Image_MakeFromTexture_2_src",
+        "//docs/examples:Image_MakeFromTexture_src",
+        "//docs/examples:Image_MakeRasterCopy_src",
+        "//docs/examples:Image_MakeRasterData_src",
+        "//docs/examples:Image_alphaType_src",
+        "//docs/examples:Image_bounds_src",
+        "//docs/examples:Image_colorSpace_src",
+        "//docs/examples:Image_colorType_src",
+        "//docs/examples:Image_dimensions_src",
+        "//docs/examples:Image_encodeToData_2_src",
+        "//docs/examples:Image_encodeToData_src",
+        "//docs/examples:Image_getBackendTexture_src",
+        "//docs/examples:Image_height_src",
+        "//docs/examples:Image_isAlphaOnly_src",
+        "//docs/examples:Image_isLazyGenerated_a_src",
+        "//docs/examples:Image_isLazyGenerated_b_src",
+        "//docs/examples:Image_isOpaque_src",
+        "//docs/examples:Image_isTextureBacked_src",
+        "//docs/examples:Image_isValid_src",
+        "//docs/examples:Image_makeColorSpace_src",
+        "//docs/examples:Image_makeNonTextureImage_src",
+        "//docs/examples:Image_makeRasterImage_src",
+        "//docs/examples:Image_makeShader_2_src",
+        "//docs/examples:Image_makeShader_src",
+        "//docs/examples:Image_makeSubset_src",
+        "//docs/examples:Image_makeTextureImage_src",
+        "//docs/examples:Image_makeWithFilter_src",
+        "//docs/examples:Image_peekPixels_src",
+        "//docs/examples:Image_readPixels_2_src",
+        "//docs/examples:Image_readPixels_src",
+        "//docs/examples:Image_refColorSpace_src",
+        "//docs/examples:Image_refEncodedData_src",
+        "//docs/examples:Image_scalePixels_src",
+        "//docs/examples:Image_uniqueID_src",
+        "//docs/examples:Image_width_src",
+        "//docs/examples:Lighten_src",
+        "//docs/examples:Luminosity_src",
+        "//docs/examples:Mask_Filter_Methods_src",
+        "//docs/examples:Matrix_063_src",
+        "//docs/examples:Matrix_Concat_src",
+        "//docs/examples:Matrix_I_src",
+        "//docs/examples:Matrix_InvalidMatrix_src",
+        "//docs/examples:Matrix_MakeAll_src",
+        "//docs/examples:Matrix_MakeRectToRect_src",
+        "//docs/examples:Matrix_MakeScale_src",
+        "//docs/examples:Matrix_MakeTrans_src",
+        "//docs/examples:Matrix_ScaleToFit_src",
+        "//docs/examples:Matrix_SetAffineIdentity_src",
+        "//docs/examples:Matrix_TypeMask_src",
+        "//docs/examples:Matrix_array_operator_src",
+        "//docs/examples:Matrix_asAffine_src",
+        "//docs/examples:Matrix_decomposeScale_src",
+        "//docs/examples:Matrix_dirtyMatrixTypeCache_src",
+        "//docs/examples:Matrix_dump_src",
+        "//docs/examples:Matrix_get9_src",
+        "//docs/examples:Matrix_getMaxScale_src",
+        "//docs/examples:Matrix_getMinMaxScales_src",
+        "//docs/examples:Matrix_getMinScale_src",
+        "//docs/examples:Matrix_getPerspX_src",
+        "//docs/examples:Matrix_getPerspY_src",
+        "//docs/examples:Matrix_getScaleX_src",
+        "//docs/examples:Matrix_getScaleY_src",
+        "//docs/examples:Matrix_getSkewX_src",
+        "//docs/examples:Matrix_getSkewY_src",
+        "//docs/examples:Matrix_getTranslateX_src",
+        "//docs/examples:Matrix_getTranslateY_src",
+        "//docs/examples:Matrix_getType_src",
+        "//docs/examples:Matrix_get_src",
+        "//docs/examples:Matrix_hasPerspective_src",
+        "//docs/examples:Matrix_invert_src",
+        "//docs/examples:Matrix_isFinite_src",
+        "//docs/examples:Matrix_isIdentity_src",
+        "//docs/examples:Matrix_isScaleTranslate_src",
+        "//docs/examples:Matrix_isSimilarity_src",
+        "//docs/examples:Matrix_isTranslate_src",
+        "//docs/examples:Matrix_mapHomogeneousPoints_src",
+        "//docs/examples:Matrix_mapPoints_2_src",
+        "//docs/examples:Matrix_mapPoints_src",
+        "//docs/examples:Matrix_mapRadius_src",
+        "//docs/examples:Matrix_mapRectScaleTranslate_src",
+        "//docs/examples:Matrix_mapRectToQuad_src",
+        "//docs/examples:Matrix_mapRect_2_src",
+        "//docs/examples:Matrix_mapRect_3_src",
+        "//docs/examples:Matrix_mapRect_src",
+        "//docs/examples:Matrix_mapVector_2_src",
+        "//docs/examples:Matrix_mapVector_src",
+        "//docs/examples:Matrix_mapVectors_2_src",
+        "//docs/examples:Matrix_mapVectors_src",
+        "//docs/examples:Matrix_mapXY_2_src",
+        "//docs/examples:Matrix_mapXY_src",
+        "//docs/examples:Matrix_postConcat_src",
+        "//docs/examples:Matrix_postRotate_2_src",
+        "//docs/examples:Matrix_postRotate_src",
+        "//docs/examples:Matrix_postScale_2_src",
+        "//docs/examples:Matrix_postScale_src",
+        "//docs/examples:Matrix_postSkew_2_src",
+        "//docs/examples:Matrix_postSkew_src",
+        "//docs/examples:Matrix_postTranslate_src",
+        "//docs/examples:Matrix_preConcat_src",
+        "//docs/examples:Matrix_preRotate_2_src",
+        "//docs/examples:Matrix_preRotate_src",
+        "//docs/examples:Matrix_preScale_2_src",
+        "//docs/examples:Matrix_preScale_src",
+        "//docs/examples:Matrix_preSkew_2_src",
+        "//docs/examples:Matrix_preSkew_src",
+        "//docs/examples:Matrix_preTranslate_src",
+        "//docs/examples:Matrix_preservesAxisAlignment_src",
+        "//docs/examples:Matrix_preservesRightAngles_src",
+        "//docs/examples:Matrix_rectStaysRect_src",
+        "//docs/examples:Matrix_reset_src",
+        "//docs/examples:Matrix_set9_src",
+        "//docs/examples:Matrix_setAffine_src",
+        "//docs/examples:Matrix_setAll_src",
+        "//docs/examples:Matrix_setConcat_src",
+        "//docs/examples:Matrix_setIdentity_src",
+        "//docs/examples:Matrix_setPerspX_src",
+        "//docs/examples:Matrix_setPerspY_src",
+        "//docs/examples:Matrix_setPolyToPoly_src",
+        "//docs/examples:Matrix_setRSXform_src",
+        "//docs/examples:Matrix_setRotate_2_src",
+        "//docs/examples:Matrix_setRotate_src",
+        "//docs/examples:Matrix_setScaleTranslate_src",
+        "//docs/examples:Matrix_setScaleX_src",
+        "//docs/examples:Matrix_setScaleY_src",
+        "//docs/examples:Matrix_setScale_2_src",
+        "//docs/examples:Matrix_setScale_src",
+        "//docs/examples:Matrix_setSinCos_2_src",
+        "//docs/examples:Matrix_setSinCos_src",
+        "//docs/examples:Matrix_setSkewX_src",
+        "//docs/examples:Matrix_setSkewY_src",
+        "//docs/examples:Matrix_setSkew_2_src",
+        "//docs/examples:Matrix_setSkew_src",
+        "//docs/examples:Matrix_setTranslateX_src",
+        "//docs/examples:Matrix_setTranslateY_src",
+        "//docs/examples:Matrix_setTranslate_2_src",
+        "//docs/examples:Matrix_setTranslate_src",
+        "//docs/examples:Matrix_set_src",
+        "//docs/examples:MemberIndex_src",
+        "//docs/examples:Miter_Limit_src",
+        "//docs/examples:Modulate_src",
+        "//docs/examples:Multiply_src",
+        "//docs/examples:Octopus_Generator_Animated_src",
+        "//docs/examples:Octopus_Generator_src",
+        "//docs/examples:Overlay_src",
+        "//docs/examples:PDF_src",
+        "//docs/examples:PaintDump_src",
+        "//docs/examples:Paint_053_src",
+        "//docs/examples:Paint_057_src",
+        "//docs/examples:Paint_containsText_src",
+        "//docs/examples:Paint_copy_const_SkPaint_src",
+        "//docs/examples:Paint_copy_operator_src",
+        "//docs/examples:Paint_countText_src",
+        "//docs/examples:Paint_empty_constructor_src",
+        "//docs/examples:Paint_equal_operator_src",
+        "//docs/examples:Paint_getAlpha_src",
+        "//docs/examples:Paint_getColor4f_src",
+        "//docs/examples:Paint_getColorFilter_src",
+        "//docs/examples:Paint_getColor_src",
+        "//docs/examples:Paint_getFillPath_2_src",
+        "//docs/examples:Paint_getFillPath_src",
+        "//docs/examples:Paint_getFlags_src",
+        "//docs/examples:Paint_getFontMetrics_src",
+        "//docs/examples:Paint_getFontSpacing_src",
+        "//docs/examples:Paint_getHinting_src",
+        "//docs/examples:Paint_getImageFilter_src",
+        "//docs/examples:Paint_getMaskFilter_src",
+        "//docs/examples:Paint_getPathEffect_src",
+        "//docs/examples:Paint_getPosTextPath_src",
+        "//docs/examples:Paint_getShader_src",
+        "//docs/examples:Paint_getStrokeCap_src",
+        "//docs/examples:Paint_getStrokeJoin_src",
+        "//docs/examples:Paint_getStrokeMiter_src",
+        "//docs/examples:Paint_getStrokeWidth_src",
+        "//docs/examples:Paint_getStyle_src",
+        "//docs/examples:Paint_getTextEncoding_src",
+        "//docs/examples:Paint_getTextPath_src",
+        "//docs/examples:Paint_getTextScaleX_src",
+        "//docs/examples:Paint_getTextSize_src",
+        "//docs/examples:Paint_getTextSkewX_src",
+        "//docs/examples:Paint_getTextWidths_src",
+        "//docs/examples:Paint_getTypeface_src",
+        "//docs/examples:Paint_isAntiAlias_src",
+        "//docs/examples:Paint_isAutohinted_src",
+        "//docs/examples:Paint_isDither_src",
+        "//docs/examples:Paint_isEmbeddedBitmapText_src",
+        "//docs/examples:Paint_isFakeBoldText_src",
+        "//docs/examples:Paint_isLCDRenderText_src",
+        "//docs/examples:Paint_isLinearText_src",
+        "//docs/examples:Paint_isSubpixelText_src",
+        "//docs/examples:Paint_measureText_2_src",
+        "//docs/examples:Paint_measureText_src",
+        "//docs/examples:Paint_move_SkPaint_src",
+        "//docs/examples:Paint_move_operator_src",
+        "//docs/examples:Paint_notequal_operator_src",
+        "//docs/examples:Paint_nothingToDraw_src",
+        "//docs/examples:Paint_refColorFilter_src",
+        "//docs/examples:Paint_refImageFilter_src",
+        "//docs/examples:Paint_refMaskFilter_src",
+        "//docs/examples:Paint_refPathEffect_src",
+        "//docs/examples:Paint_refShader_src",
+        "//docs/examples:Paint_refTypeface_src",
+        "//docs/examples:Paint_reset_src",
+        "//docs/examples:Paint_setARGB_src",
+        "//docs/examples:Paint_setAlpha_src",
+        "//docs/examples:Paint_setAntiAlias_src",
+        "//docs/examples:Paint_setAutohinted_src",
+        "//docs/examples:Paint_setBlendMode_src",
+        "//docs/examples:Paint_setColor4f_src",
+        "//docs/examples:Paint_setColorFilter_src",
+        "//docs/examples:Paint_setColor_src",
+        "//docs/examples:Paint_setDither_src",
+        "//docs/examples:Paint_setEmbeddedBitmapText_src",
+        "//docs/examples:Paint_setFakeBoldText_src",
+        "//docs/examples:Paint_setFlags_src",
+        "//docs/examples:Paint_setHinting_src",
+        "//docs/examples:Paint_setImageFilter_src",
+        "//docs/examples:Paint_setLCDRenderText_src",
+        "//docs/examples:Paint_setLinearText_src",
+        "//docs/examples:Paint_setMaskFilter_src",
+        "//docs/examples:Paint_setPathEffect_src",
+        "//docs/examples:Paint_setShader_src",
+        "//docs/examples:Paint_setStrokeCap_a_src",
+        "//docs/examples:Paint_setStrokeCap_b_src",
+        "//docs/examples:Paint_setStrokeJoin_src",
+        "//docs/examples:Paint_setStrokeMiter_src",
+        "//docs/examples:Paint_setStrokeWidth_src",
+        "//docs/examples:Paint_setStyle_src",
+        "//docs/examples:Paint_setSubpixelText_src",
+        "//docs/examples:Paint_setTextEncoding_src",
+        "//docs/examples:Paint_setTextScaleX_src",
+        "//docs/examples:Paint_setTextSize_src",
+        "//docs/examples:Paint_setTextSkewX_src",
+        "//docs/examples:Paint_setTypeface_src",
+        "//docs/examples:Paint_textToGlyphs_src",
+        "//docs/examples:Path_AddPathMode_src",
+        "//docs/examples:Path_ArcSize_src",
+        "//docs/examples:Path_ConvertConicToQuads_src",
+        "//docs/examples:Path_ConvertToNonInverseFillType_src",
+        "//docs/examples:Path_Convexity_src",
+        "//docs/examples:Path_Direction_src",
+        "//docs/examples:Path_Effect_Methods_src",
+        "//docs/examples:Path_FillType_a_src",
+        "//docs/examples:Path_FillType_b_src",
+        "//docs/examples:Path_IsCubicDegenerate_src",
+        "//docs/examples:Path_IsInverseFillType_src",
+        "//docs/examples:Path_IsLineDegenerate_src",
+        "//docs/examples:Path_IsQuadDegenerate_src",
+        "//docs/examples:Path_Iter_Iter_src",
+        "//docs/examples:Path_Iter_conicWeight_src",
+        "//docs/examples:Path_Iter_const_SkPath_src",
+        "//docs/examples:Path_Iter_isCloseLine_src",
+        "//docs/examples:Path_Iter_isClosedContour_src",
+        "//docs/examples:Path_Iter_next_src",
+        "//docs/examples:Path_Iter_setPath_src",
+        "//docs/examples:Path_Iter_src",
+        "//docs/examples:Path_SegmentMask_src",
+        "//docs/examples:Path_Verb_src",
+        "//docs/examples:Path_addArc_src",
+        "//docs/examples:Path_addCircle_src",
+        "//docs/examples:Path_addOval_2_src",
+        "//docs/examples:Path_addOval_src",
+        "//docs/examples:Path_addPath_2_src",
+        "//docs/examples:Path_addPath_3_src",
+        "//docs/examples:Path_addPath_src",
+        "//docs/examples:Path_addPoly_2_src",
+        "//docs/examples:Path_addPoly_src",
+        "//docs/examples:Path_addRRect_2_src",
+        "//docs/examples:Path_addRRect_src",
+        "//docs/examples:Path_addRect_2_src",
+        "//docs/examples:Path_addRect_3_src",
+        "//docs/examples:Path_addRect_src",
+        "//docs/examples:Path_addRoundRect_2_src",
+        "//docs/examples:Path_addRoundRect_src",
+        "//docs/examples:Path_arcTo_2_a_src",
+        "//docs/examples:Path_arcTo_2_b_src",
+        "//docs/examples:Path_arcTo_2_c_src",
+        "//docs/examples:Path_arcTo_3_src",
+        "//docs/examples:Path_arcTo_4_src",
+        "//docs/examples:Path_arcTo_src",
+        "//docs/examples:Path_close_src",
+        "//docs/examples:Path_computeTightBounds_src",
+        "//docs/examples:Path_conicTo_2_src",
+        "//docs/examples:Path_conicTo_src",
+        "//docs/examples:Path_conservativelyContainsRect_src",
+        "//docs/examples:Path_contains_src",
+        "//docs/examples:Path_copy_const_SkPath_src",
+        "//docs/examples:Path_copy_operator_src",
+        "//docs/examples:Path_countPoints_src",
+        "//docs/examples:Path_countVerbs_src",
+        "//docs/examples:Path_cubicTo_2_src",
+        "//docs/examples:Path_cubicTo_src",
+        "//docs/examples:Path_destructor_src",
+        "//docs/examples:Path_dumpHex_src",
+        "//docs/examples:Path_dump_2_src",
+        "//docs/examples:Path_dump_src",
+        "//docs/examples:Path_empty_constructor_src",
+        "//docs/examples:Path_equal_operator_src",
+        "//docs/examples:Path_getBounds_src",
+        "//docs/examples:Path_getFillType_src",
+        "//docs/examples:Path_getGenerationID_src",
+        "//docs/examples:Path_getLastPt_src",
+        "//docs/examples:Path_getPoint_src",
+        "//docs/examples:Path_getPoints_src",
+        "//docs/examples:Path_getSegmentMasks_src",
+        "//docs/examples:Path_getVerbs_src",
+        "//docs/examples:Path_incReserve_src",
+        "//docs/examples:Path_interpolate_src",
+        "//docs/examples:Path_isConvex_src",
+        "//docs/examples:Path_isEmpty_src",
+        "//docs/examples:Path_isFinite_src",
+        "//docs/examples:Path_isInterpolatable_src",
+        "//docs/examples:Path_isInverseFillType_2_src",
+        "//docs/examples:Path_isLastContourClosed_src",
+        "//docs/examples:Path_isLine_src",
+        "//docs/examples:Path_isOval_src",
+        "//docs/examples:Path_isRRect_src",
+        "//docs/examples:Path_isRect_src",
+        "//docs/examples:Path_isVolatile_src",
+        "//docs/examples:Path_lineTo_2_src",
+        "//docs/examples:Path_lineTo_src",
+        "//docs/examples:Path_moveTo_2_src",
+        "//docs/examples:Path_moveTo_src",
+        "//docs/examples:Path_offset_2_src",
+        "//docs/examples:Path_offset_src",
+        "//docs/examples:Path_quadTo_2_src",
+        "//docs/examples:Path_quadTo_src",
+        "//docs/examples:Path_rArcTo_src",
+        "//docs/examples:Path_rConicTo_src",
+        "//docs/examples:Path_rCubicTo_src",
+        "//docs/examples:Path_rLineTo_src",
+        "//docs/examples:Path_rMoveTo_src",
+        "//docs/examples:Path_rQuadTo_src",
+        "//docs/examples:Path_readFromMemory_src",
+        "//docs/examples:Path_reset_src",
+        "//docs/examples:Path_reverseAddPath_src",
+        "//docs/examples:Path_rewind_src",
+        "//docs/examples:Path_serialize_src",
+        "//docs/examples:Path_setFillType_src",
+        "//docs/examples:Path_setIsVolatile_src",
+        "//docs/examples:Path_setLastPt_2_src",
+        "//docs/examples:Path_setLastPt_src",
+        "//docs/examples:Path_swap_src",
+        "//docs/examples:Path_toggleInverseFillType_src",
+        "//docs/examples:Path_transform_2_src",
+        "//docs/examples:Path_transform_src",
+        "//docs/examples:Path_updateBoundsCache_src",
+        "//docs/examples:Path_writeToMemory_src",
+        "//docs/examples:Picture_008_src",
+        "//docs/examples:Picture_AbortCallback_abort_src",
+        "//docs/examples:Picture_MakeFromData_src",
+        "//docs/examples:Picture_MakeFromStream_src",
+        "//docs/examples:Picture_MakePlaceholder_src",
+        "//docs/examples:Picture_approximateBytesUsed_src",
+        "//docs/examples:Picture_approximateOpCount_src",
+        "//docs/examples:Picture_cullRect_src",
+        "//docs/examples:Picture_playback_src",
+        "//docs/examples:Picture_serialize_2_src",
+        "//docs/examples:Picture_serialize_src",
+        "//docs/examples:Picture_uniqueID_src",
+        "//docs/examples:Pixmap_addr16_2_src",
+        "//docs/examples:Pixmap_addr16_src",
+        "//docs/examples:Pixmap_addr32_2_src",
+        "//docs/examples:Pixmap_addr32_src",
+        "//docs/examples:Pixmap_addr64_2_src",
+        "//docs/examples:Pixmap_addr64_src",
+        "//docs/examples:Pixmap_addr8_2_src",
+        "//docs/examples:Pixmap_addr8_src",
+        "//docs/examples:Pixmap_addrF16_2_src",
+        "//docs/examples:Pixmap_addrF16_src",
+        "//docs/examples:Pixmap_addr_2_src",
+        "//docs/examples:Pixmap_addr_src",
+        "//docs/examples:Pixmap_alphaType_src",
+        "//docs/examples:Pixmap_bounds_src",
+        "//docs/examples:Pixmap_colorSpace_src",
+        "//docs/examples:Pixmap_colorType_src",
+        "//docs/examples:Pixmap_computeByteSize_src",
+        "//docs/examples:Pixmap_computeIsOpaque_src",
+        "//docs/examples:Pixmap_const_SkImageInfo_const_star_src",
+        "//docs/examples:Pixmap_empty_constructor_src",
+        "//docs/examples:Pixmap_erase_2_src",
+        "//docs/examples:Pixmap_erase_3_src",
+        "//docs/examples:Pixmap_erase_src",
+        "//docs/examples:Pixmap_extractSubset_src",
+        "//docs/examples:Pixmap_getColor_src",
+        "//docs/examples:Pixmap_height_src",
+        "//docs/examples:Pixmap_info_src",
+        "//docs/examples:Pixmap_isOpaque_src",
+        "//docs/examples:Pixmap_readPixels_2_src",
+        "//docs/examples:Pixmap_readPixels_3_src",
+        "//docs/examples:Pixmap_readPixels_4_src",
+        "//docs/examples:Pixmap_readPixels_src",
+        "//docs/examples:Pixmap_reset_2_src",
+        "//docs/examples:Pixmap_reset_src",
+        "//docs/examples:Pixmap_rowBytesAsPixels_src",
+        "//docs/examples:Pixmap_rowBytes_src",
+        "//docs/examples:Pixmap_scalePixels_src",
+        "//docs/examples:Pixmap_setColorSpace_src",
+        "//docs/examples:Pixmap_shiftPerPixel_src",
+        "//docs/examples:Pixmap_width_src",
+        "//docs/examples:Pixmap_writable_addr16_src",
+        "//docs/examples:Pixmap_writable_addr32_src",
+        "//docs/examples:Pixmap_writable_addr64_src",
+        "//docs/examples:Pixmap_writable_addr8_src",
+        "//docs/examples:Pixmap_writable_addrF16_src",
+        "//docs/examples:Pixmap_writable_addr_2_src",
+        "//docs/examples:Pixmap_writable_addr_src",
+        "//docs/examples:Plus_src",
+        "//docs/examples:Point_CrossProduct_src",
+        "//docs/examples:Point_Distance_src",
+        "//docs/examples:Point_DotProduct_src",
+        "//docs/examples:Point_Length_src",
+        "//docs/examples:Point_Make_src",
+        "//docs/examples:Point_Normalize_src",
+        "//docs/examples:Point_Offset_2_src",
+        "//docs/examples:Point_Offset_src",
+        "//docs/examples:Point_add_operator_src",
+        "//docs/examples:Point_addto_operator_src",
+        "//docs/examples:Point_cross_src",
+        "//docs/examples:Point_distanceToOrigin_src",
+        "//docs/examples:Point_dot_src",
+        "//docs/examples:Point_equal_operator_src",
+        "//docs/examples:Point_equals_src",
+        "//docs/examples:Point_isFinite_src",
+        "//docs/examples:Point_isZero_src",
+        "//docs/examples:Point_iset_2_src",
+        "//docs/examples:Point_iset_src",
+        "//docs/examples:Point_length_2_src",
+        "//docs/examples:Point_minus_operator_src",
+        "//docs/examples:Point_multiply_operator_src",
+        "//docs/examples:Point_multiplyby_operator_src",
+        "//docs/examples:Point_negate_src",
+        "//docs/examples:Point_normalize_2_src",
+        "//docs/examples:Point_notequal_operator_src",
+        "//docs/examples:Point_offset_3_src",
+        "//docs/examples:Point_scale_2_src",
+        "//docs/examples:Point_scale_src",
+        "//docs/examples:Point_setAbs_src",
+        "//docs/examples:Point_setLength_2_src",
+        "//docs/examples:Point_setLength_src",
+        "//docs/examples:Point_setNormalize_src",
+        "//docs/examples:Point_set_src",
+        "//docs/examples:Point_subtract_operator_src",
+        "//docs/examples:Point_subtractfrom_operator_src",
+        "//docs/examples:Point_x_src",
+        "//docs/examples:Point_y_src",
+        "//docs/examples:PreMultiplyARGB_src",
+        "//docs/examples:PreMultiplyColor_src",
+        "//docs/examples:Quad_a_src",
+        "//docs/examples:Quad_b_src",
+        "//docs/examples:RGBA4f_FromColor_src",
+        "//docs/examples:RGBA4f_equal1_operator_src",
+        "//docs/examples:RGBA4f_notequal1_operator_src",
+        "//docs/examples:RGBA4f_toSkColor_src",
+        "//docs/examples:RGBA4f_vec_2_src",
+        "//docs/examples:RGBA4f_vec_src",
+        "//docs/examples:RGBToHSV_src",
+        "//docs/examples:RRect_Corner_src",
+        "//docs/examples:RRect_MakeEmpty_src",
+        "//docs/examples:RRect_MakeOval_src",
+        "//docs/examples:RRect_MakeRectXY_src",
+        "//docs/examples:RRect_MakeRect_src",
+        "//docs/examples:RRect_Type_src",
+        "//docs/examples:RRect_contains_src",
+        "//docs/examples:RRect_copy_const_SkRRect_src",
+        "//docs/examples:RRect_copy_operator_src",
+        "//docs/examples:RRect_dumpHex_src",
+        "//docs/examples:RRect_dump_2_src",
+        "//docs/examples:RRect_dump_src",
+        "//docs/examples:RRect_empty_constructor_src",
+        "//docs/examples:RRect_equal_operator_src",
+        "//docs/examples:RRect_getBounds_src",
+        "//docs/examples:RRect_getSimpleRadii_src",
+        "//docs/examples:RRect_getType_src",
+        "//docs/examples:RRect_height_src",
+        "//docs/examples:RRect_inset_2_src",
+        "//docs/examples:RRect_inset_src",
+        "//docs/examples:RRect_isComplex_src",
+        "//docs/examples:RRect_isEmpty_src",
+        "//docs/examples:RRect_isNinePatch_src",
+        "//docs/examples:RRect_isOval_src",
+        "//docs/examples:RRect_isRect_src",
+        "//docs/examples:RRect_isSimple_src",
+        "//docs/examples:RRect_isValid_src",
+        "//docs/examples:RRect_makeOffset_src",
+        "//docs/examples:RRect_notequal_operator_src",
+        "//docs/examples:RRect_offset_src",
+        "//docs/examples:RRect_outset_2_src",
+        "//docs/examples:RRect_outset_src",
+        "//docs/examples:RRect_radii_src",
+        "//docs/examples:RRect_readFromMemory_src",
+        "//docs/examples:RRect_rect_src",
+        "//docs/examples:RRect_setEmpty_src",
+        "//docs/examples:RRect_setNinePatch_src",
+        "//docs/examples:RRect_setOval_src",
+        "//docs/examples:RRect_setRectRadii_src",
+        "//docs/examples:RRect_setRectXY_src",
+        "//docs/examples:RRect_setRect_src",
+        "//docs/examples:RRect_transform_src",
+        "//docs/examples:RRect_type_2_src",
+        "//docs/examples:RRect_width_src",
+        "//docs/examples:RRect_writeToMemory_src",
+        "//docs/examples:Rect_Intersects_src",
+        "//docs/examples:Rect_MakeEmpty_src",
+        "//docs/examples:Rect_MakeIWH_src",
+        "//docs/examples:Rect_MakeLTRB_src",
+        "//docs/examples:Rect_MakeSize_src",
+        "//docs/examples:Rect_MakeWH_src",
+        "//docs/examples:Rect_MakeXYWH_src",
+        "//docs/examples:Rect_Make_2_src",
+        "//docs/examples:Rect_Make_src",
+        "//docs/examples:Rect_asScalars_src",
+        "//docs/examples:Rect_bottom_src",
+        "//docs/examples:Rect_centerX_src",
+        "//docs/examples:Rect_centerY_src",
+        "//docs/examples:Rect_contains_2_src",
+        "//docs/examples:Rect_contains_3_src",
+        "//docs/examples:Rect_contains_src",
+        "//docs/examples:Rect_dumpHex_src",
+        "//docs/examples:Rect_dump_2_src",
+        "//docs/examples:Rect_dump_src",
+        "//docs/examples:Rect_equal_operator_src",
+        "//docs/examples:Rect_height_src",
+        "//docs/examples:Rect_inset_src",
+        "//docs/examples:Rect_intersect_2_src",
+        "//docs/examples:Rect_intersect_3_src",
+        "//docs/examples:Rect_intersect_src",
+        "//docs/examples:Rect_intersects_2_src",
+        "//docs/examples:Rect_intersects_3_src",
+        "//docs/examples:Rect_isEmpty_src",
+        "//docs/examples:Rect_isFinite_src",
+        "//docs/examples:Rect_isSorted_src",
+        "//docs/examples:Rect_joinNonEmptyArg_src",
+        "//docs/examples:Rect_joinPossiblyEmptyRect_src",
+        "//docs/examples:Rect_join_2_src",
+        "//docs/examples:Rect_join_src",
+        "//docs/examples:Rect_left_src",
+        "//docs/examples:Rect_makeInset_src",
+        "//docs/examples:Rect_makeOffset_src",
+        "//docs/examples:Rect_makeOutset_src",
+        "//docs/examples:Rect_makeSorted_src",
+        "//docs/examples:Rect_notequal_operator_src",
+        "//docs/examples:Rect_offsetTo_src",
+        "//docs/examples:Rect_offset_2_src",
+        "//docs/examples:Rect_offset_src",
+        "//docs/examples:Rect_outset_src",
+        "//docs/examples:Rect_right_src",
+        "//docs/examples:Rect_roundIn_src",
+        "//docs/examples:Rect_roundOut_2_src",
+        "//docs/examples:Rect_roundOut_3_src",
+        "//docs/examples:Rect_roundOut_src",
+        "//docs/examples:Rect_round_2_src",
+        "//docs/examples:Rect_round_src",
+        "//docs/examples:Rect_setBoundsCheck_src",
+        "//docs/examples:Rect_setBoundsNoCheck_src",
+        "//docs/examples:Rect_setBounds_src",
+        "//docs/examples:Rect_setEmpty_src",
+        "//docs/examples:Rect_setLTRB_src",
+        "//docs/examples:Rect_setWH_src",
+        "//docs/examples:Rect_setXYWH_src",
+        "//docs/examples:Rect_set_4_src",
+        "//docs/examples:Rect_set_src",
+        "//docs/examples:Rect_sort_src",
+        "//docs/examples:Rect_toQuad_src",
+        "//docs/examples:Rect_top_src",
+        "//docs/examples:Rect_width_src",
+        "//docs/examples:Rect_x_src",
+        "//docs/examples:Rect_y_src",
+        "//docs/examples:Region_Cliperator_const_SkRegion_const_SkIRect_src",
+        "//docs/examples:Region_Cliperator_done_src",
+        "//docs/examples:Region_Cliperator_next_src",
+        "//docs/examples:Region_Cliperator_rect_src",
+        "//docs/examples:Region_Iterator_Iterator_src",
+        "//docs/examples:Region_Iterator_copy_const_SkRegion_src",
+        "//docs/examples:Region_Iterator_done_src",
+        "//docs/examples:Region_Iterator_next_src",
+        "//docs/examples:Region_Iterator_rect_src",
+        "//docs/examples:Region_Iterator_reset_src",
+        "//docs/examples:Region_Iterator_rewind_src",
+        "//docs/examples:Region_Iterator_rgn_src",
+        "//docs/examples:Region_Op_src",
+        "//docs/examples:Region_Spanerator_const_SkRegion_int_int_int_src",
+        "//docs/examples:Region_Spanerator_next_src",
+        "//docs/examples:Region_computeRegionComplexity_src",
+        "//docs/examples:Region_contains_2_src",
+        "//docs/examples:Region_contains_3_src",
+        "//docs/examples:Region_contains_src",
+        "//docs/examples:Region_copy_const_SkIRect_src",
+        "//docs/examples:Region_copy_const_SkRegion_src",
+        "//docs/examples:Region_copy_operator_src",
+        "//docs/examples:Region_destructor_src",
+        "//docs/examples:Region_empty_constructor_src",
+        "//docs/examples:Region_equal1_operator_src",
+        "//docs/examples:Region_getBoundaryPath_src",
+        "//docs/examples:Region_getBounds_src",
+        "//docs/examples:Region_intersects_2_src",
+        "//docs/examples:Region_intersects_src",
+        "//docs/examples:Region_isComplex_src",
+        "//docs/examples:Region_isEmpty_src",
+        "//docs/examples:Region_isRect_src",
+        "//docs/examples:Region_notequal1_operator_src",
+        "//docs/examples:Region_op_1_src",
+        "//docs/examples:Region_op_2_src",
+        "//docs/examples:Region_op_3_src",
+        "//docs/examples:Region_op_4_src",
+        "//docs/examples:Region_op_5_src",
+        "//docs/examples:Region_op_6_src",
+        "//docs/examples:Region_quickContains_src",
+        "//docs/examples:Region_quickReject_2_src",
+        "//docs/examples:Region_quickReject_src",
+        "//docs/examples:Region_readFromMemory_src",
+        "//docs/examples:Region_setEmpty_src",
+        "//docs/examples:Region_setPath_src",
+        "//docs/examples:Region_setRect_src",
+        "//docs/examples:Region_setRects_src",
+        "//docs/examples:Region_setRegion_src",
+        "//docs/examples:Region_set_src",
+        "//docs/examples:Region_swap_src",
+        "//docs/examples:Region_translate_2_src",
+        "//docs/examples:Region_translate_src",
+        "//docs/examples:Region_writeToMemory_src",
+        "//docs/examples:SKIA_LOGO_ANIMATE_src",
+        "//docs/examples:SKIA_LOGO_src",
+        "//docs/examples:SKIA_LOGO_svg_src",
+        "//docs/examples:Saturation_src",
+        "//docs/examples:Screen_src",
+        "//docs/examples:Shader_Methods_a_src",
+        "//docs/examples:Shader_Methods_b_src",
+        "//docs/examples:SkFontMgr_example2_src",
+        "//docs/examples:SkFontMgr_example_src",
+        "//docs/examples:SkImage_to_PPM_ascii_src",
+        "//docs/examples:SkImage_to_PPM_binary_src",
+        "//docs/examples:SkParsePath_FromSVGString_src",
+        "//docs/examples:SkParsePath_ToSVGString_src",
+        "//docs/examples:SkPath_arcTo_example_src",
+        "//docs/examples:SkPath_arcto_conic_parametric2_src",
+        "//docs/examples:SkPath_arcto_conic_parametric_src",
+        "//docs/examples:SkPath_cubicTo_example_parametric_animated_src",
+        "//docs/examples:SkPath_cubicTo_example_parametric_src",
+        "//docs/examples:SkPath_cubicTo_example_src",
+        "//docs/examples:SkPath_quadTo_example_parametric_animated_src",
+        "//docs/examples:SkPath_quadTo_example_parametric_src",
+        "//docs/examples:SkPath_quadTo_example_src",
+        "//docs/examples:SmoothBezierSplineInterpolation_src",
+        "//docs/examples:Soft_Light_src",
+        "//docs/examples:Src_Atop_src",
+        "//docs/examples:Src_In_src",
+        "//docs/examples:Src_Out_src",
+        "//docs/examples:Src_Over_src",
+        "//docs/examples:Src_src",
+        "//docs/examples:State_Stack_a_src",
+        "//docs/examples:State_Stack_b_src",
+        "//docs/examples:Stroke_Width_src",
+        "//docs/examples:Surface_MakeFromBackendTexture_src",
+        "//docs/examples:Surface_MakeNull_src",
+        "//docs/examples:Surface_MakeRasterDirectReleaseProc_src",
+        "//docs/examples:Surface_MakeRasterDirect_src",
+        "//docs/examples:Surface_MakeRasterN32Premul_src",
+        "//docs/examples:Surface_MakeRaster_2_src",
+        "//docs/examples:Surface_MakeRaster_src",
+        "//docs/examples:Surface_MakeRenderTarget_2_src",
+        "//docs/examples:Surface_MakeRenderTarget_3_src",
+        "//docs/examples:Surface_MakeRenderTarget_src",
+        "//docs/examples:Surface_characterize_src",
+        "//docs/examples:Surface_draw_2_src",
+        "//docs/examples:Surface_draw_src",
+        "//docs/examples:Surface_getCanvas_src",
+        "//docs/examples:Surface_height_src",
+        "//docs/examples:Surface_makeImageSnapshot_2_src",
+        "//docs/examples:Surface_makeImageSnapshot_src",
+        "//docs/examples:Surface_makeSurface_src",
+        "//docs/examples:Surface_notifyContentWillChange_src",
+        "//docs/examples:Surface_peekPixels_src",
+        "//docs/examples:Surface_props_src",
+        "//docs/examples:Surface_readPixels_2_src",
+        "//docs/examples:Surface_readPixels_3_src",
+        "//docs/examples:Surface_readPixels_src",
+        "//docs/examples:Surface_width_src",
+        "//docs/examples:Surface_writePixels_2_src",
+        "//docs/examples:Surface_writePixels_src",
+        "//docs/examples:TextBlobBuilder_allocRunPosH_src",
+        "//docs/examples:TextBlobBuilder_allocRunPos_src",
+        "//docs/examples:TextBlobBuilder_allocRun_src",
+        "//docs/examples:TextBlobBuilder_empty_constructor_src",
+        "//docs/examples:TextBlobBuilder_make_src",
+        "//docs/examples:TextBlob_Deserialize_src",
+        "//docs/examples:TextBlob_MakeFromString_src",
+        "//docs/examples:TextBlob_MakeFromText_src",
+        "//docs/examples:TextBlob_bounds_src",
+        "//docs/examples:TextBlob_getIntercepts_src",
+        "//docs/examples:TextBlob_serialize_2_src",
+        "//docs/examples:TextBlob_serialize_src",
+        "//docs/examples:TextBlob_uniqueID_src",
+        "//docs/examples:Text_Encoding_src",
+        "//docs/examples:Text_Scale_X_src",
+        "//docs/examples:Text_Size_src",
+        "//docs/examples:Text_Skew_X_src",
+        "//docs/examples:Turtle_src",
+        "//docs/examples:Typeface_Methods_src",
+        "//docs/examples:UnicornPoop_src",
+        "//docs/examples:UnpremulBugs_src",
+        "//docs/examples:UnpremulGPU_src",
+        "//docs/examples:Xor_src",
+        "//docs/examples:alpha_bitmap_color_filter_mask_filter_src",
+        "//docs/examples:alphaimage_shader_colorfilter_src",
+        "//docs/examples:backdrop_blur_with_rrect_clip_src",
+        "//docs/examples:bezier_curves_src",
+        "//docs/examples:blur4444_src",
+        "//docs/examples:blur_alpha_img_src",
+        "//docs/examples:blurbug_src",
+        "//docs/examples:bug5252_src",
+        "//docs/examples:bug583299_src",
+        "//docs/examples:bug6495_src",
+        "//docs/examples:bug7573_1_src",
+        "//docs/examples:bug7573_src",
+        "//docs/examples:bug767834_src",
+        "//docs/examples:bugoftheday_src",
+        "//docs/examples:checker_board_src",
+        "//docs/examples:color_filter_vs_colorFilterImageFilter_saveLayer_src",
+        "//docs/examples:compose_path_src",
+        "//docs/examples:convex_overstroke_linear_approx_curve_src",
+        "//docs/examples:convex_overstroke_quad_src",
+        "//docs/examples:count_verbs_src",
+        "//docs/examples:crbug_663246_src",
+        "//docs/examples:crbug_918512_src",
+        "//docs/examples:cubics_are_horrible_src",
+        "//docs/examples:default2_src",
+        "//docs/examples:default3_src",
+        "//docs/examples:default_src",
+        "//docs/examples:discrete_path_src",
+        "//docs/examples:dither1_src",
+        "//docs/examples:draw_a8_bitmap_src",
+        "//docs/examples:draw_image_nine_blur_mask_src",
+        "//docs/examples:draw_patch_src",
+        "//docs/examples:draw_pixel_array_nocopy_src",
+        "//docs/examples:draw_pixel_array_src",
+        "//docs/examples:draw_pixel_array_with_copy_src",
+        "//docs/examples:draw_text_fails_src",
+        "//docs/examples:draw_vertices_src",
+        "//docs/examples:drawarcs_src",
+        "//docs/examples:example3ps_src",
+        "//docs/examples:f16_src",
+        "//docs/examples:f16to8888busted_src",
+        "//docs/examples:f16to8888drawImageBug_src",
+        "//docs/examples:failing_example_src",
+        "//docs/examples:fivearcs_src",
+        "//docs/examples:flag_us_1792_src",
+        "//docs/examples:flag_us_1960_src",
+        "//docs/examples:fluttershadow_src",
+        "//docs/examples:gamma_mask_filter_src",
+        "//docs/examples:getLocalBounds_broken_src",
+        "//docs/examples:getLocalBounds_working_src",
+        "//docs/examples:gpu4444diff_src",
+        "//docs/examples:gpu8888diff_src",
+        "//docs/examples:gpuconicbug_src",
+        "//docs/examples:homogeneous_src",
+        "//docs/examples:image_subsets_get_different_uids_src",
+        "//docs/examples:image_to_bitmap_does_not_preserve_genid_src",
+        "//docs/examples:incomplete_src",
+        "//docs/examples:inlinepixmapconstructor_src",
+        "//docs/examples:issue640176_src",
+        "//docs/examples:l_system_plant_src",
+        "//docs/examples:maddash_src",
+        "//docs/examples:makeRasterImage_fail_src",
+        "//docs/examples:mapradius_src",
+        "//docs/examples:massive_coordinates_svg_src",
+        "//docs/examples:measure_text_bounds_src",
+        "//docs/examples:no_gpu_blur_src",
+        "//docs/examples:not_path_gradient_src",
+        "//docs/examples:pathmeasure_src",
+        "//docs/examples:pathops_src",
+        "//docs/examples:persp_text_2_src",
+        "//docs/examples:picture_shader_src",
+        "//docs/examples:pong2_src",
+        "//docs/examples:pong_src",
+        "//docs/examples:purplestamp_src",
+        "//docs/examples:radial_gradient_shader_with_animated_color_src",
+        "//docs/examples:radial_gradient_test_src",
+        "//docs/examples:redwhiteonblue_src",
+        "//docs/examples:rotations_src",
+        "//docs/examples:setimagefilter_src",
+        "//docs/examples:shader_alphaimage_src",
+        "//docs/examples:shader_src",
+        "//docs/examples:shapes_src",
+        "//docs/examples:shapes_with_motion_src",
+        "//docs/examples:skbug6031_src",
+        "//docs/examples:skbug_237_drawImageRect_src",
+        "//docs/examples:skbug_237_drawImage_with_blur_src",
+        "//docs/examples:skbug_5648_src",
+        "//docs/examples:skbug_633528_src",
+        "//docs/examples:skcanvas_paint_src",
+        "//docs/examples:skcanvas_square_src",
+        "//docs/examples:skcanvas_star_src",
+        "//docs/examples:skew_x_animated_src",
+        "//docs/examples:skpaint_2pt_src",
+        "//docs/examples:skpaint_bitmap_shader_src",
+        "//docs/examples:skpaint_blur_mask_filter_2_src",
+        "//docs/examples:skpaint_blur_mask_filter_src",
+        "//docs/examples:skpaint_color_table_filter_src",
+        "//docs/examples:skpaint_compose_path_effect_src",
+        "//docs/examples:skpaint_compose_shader_src",
+        "//docs/examples:skpaint_compose_src",
+        "//docs/examples:skpaint_corner_path_effects_src",
+        "//docs/examples:skpaint_dash_path_effect_src",
+        "//docs/examples:skpaint_discrete_path_effect_src",
+        "//docs/examples:skpaint_line_2d_path_effect_src",
+        "//docs/examples:skpaint_matrix_color_filter_src",
+        "//docs/examples:skpaint_mix_src",
+        "//docs/examples:skpaint_path_1d_path_effect_src",
+        "//docs/examples:skpaint_path_2d_path_effect_src",
+        "//docs/examples:skpaint_perlin_src",
+        "//docs/examples:skpaint_radial_src",
+        "//docs/examples:skpaint_shader_src",
+        "//docs/examples:skpaint_skia_src",
+        "//docs/examples:skpaint_sum_path_effect_src",
+        "//docs/examples:skpaint_sweep_src",
+        "//docs/examples:skpaint_turb_src",
+        "//docs/examples:skpaint_xfer_src",
+        "//docs/examples:software_bitmap_w_perspective_src",
+        "//docs/examples:star2_src",
+        "//docs/examples:star_src",
+        "//docs/examples:stroke_closed_degenerate_path_src",
+        "//docs/examples:strokerect_gm_src",
+        "//docs/examples:subset_example_src",
+        "//docs/examples:sum_path_effect_src",
+        "//docs/examples:sweep_gradient_talk_1_src",
+        "//docs/examples:sweep_gradient_talk_2_src",
+        "//docs/examples:sweep_gradient_talk_4_src",
+        "//docs/examples:sweep_gradient_talk_lots_src",
+        "//docs/examples:text_only_src",
+        "//docs/examples:text_rendering_src",
+        "//docs/examples:text_shadow_src",
+        "//docs/examples:unexpected_setAlphaType_src",
+        "//docs/examples:upscale_checkerboard_src",
+        "//docs/examples:weird_RRect_bug_src",
+        "//docs/examples:zero_off_dashing_src",
+    ],
+)
+
+generated_cc_atom(
+    name = "draw_src",
+    srcs = ["draw.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":fiddle_main_hdr",
+        "//tools/gpu:ManagedBackendTexture_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "egl_context_src",
+    srcs = ["egl_context.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu/gl:GrGLFunctions_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "examples_hdr",
+    hdrs = ["examples.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools:Registry_hdr"],
+)
+
+generated_cc_atom(
+    name = "examples_src",
+    srcs = ["examples.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":examples_hdr"],
+)
+
+generated_cc_atom(
+    name = "fiddle_main_hdr",
+    hdrs = ["fiddle_main.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkDocument_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu/gl:GrGLAssembleInterface_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "fiddle_main_src",
+    srcs = ["fiddle_main.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":fiddle_main_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//src/core:SkAutoPixmapStorage_hdr",
+        "//src/core:SkMipmap_hdr",
+        "//src/core:SkOpts_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrGpu_hdr",
+        "//src/gpu:GrRenderTarget_hdr",
+        "//src/gpu:GrResourceProvider_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+        "//tools/gpu:ManagedBackendTexture_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "null_context_src",
+    srcs = ["null_context.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":fiddle_main_hdr"],
+)
diff --git a/tools/flags/BUILD.bazel b/tools/flags/BUILD.bazel
new file mode 100644
index 0000000..d38bb0f
--- /dev/null
+++ b/tools/flags/BUILD.bazel
@@ -0,0 +1,105 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "CommandLineFlags_hdr",
+    hdrs = ["CommandLineFlags.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkString_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/private:SkTDArray_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommandLineFlags_src",
+    srcs = ["CommandLineFlags.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommandLineFlags_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//src/core:SkTSort_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlagsAA_src",
+    srcs = ["CommonFlagsAA.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommonFlags_hdr",
+        "//src/core:SkScan_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlagsConfig_hdr",
+    hdrs = ["CommonFlagsConfig.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommandLineFlags_hdr",
+        "//tools/gpu:GrContextFactory_hdr",
+        "//tools/graphite:ContextFactory_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlagsConfig_src",
+    srcs = ["CommonFlagsConfig.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommonFlagsConfig_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkStringView_hdr",
+        "//include/core:SkSurfaceProps_hdr",
+        "//include/private:SkTHash_hdr",
+        "//src/core:SkColorSpacePriv_hdr",
+        "//src/core:SkSurfacePriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlagsFontMgr_src",
+    srcs = ["CommonFlagsFontMgr.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommandLineFlags_hdr",
+        ":CommonFlags_hdr",
+        "//include/ports:SkTypeface_win_hdr",
+        "//src/core:SkFontMgrPriv_hdr",
+        "//tools/fonts:TestFontMgr_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlagsGpu_src",
+    srcs = ["CommonFlagsGpu.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommonFlags_hdr",
+        "//include/core:SkExecutor_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlagsImages_src",
+    srcs = ["CommonFlagsImages.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommonFlags_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommonFlags_hdr",
+    hdrs = ["CommonFlags.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommandLineFlags_hdr",
+        "//include/core:SkString_hdr",
+        "//include/private:SkTArray_hdr",
+    ],
+)
diff --git a/tools/fm/BUILD.bazel b/tools/fm/BUILD.bazel
new file mode 100644
index 0000000..3366046
--- /dev/null
+++ b/tools/fm/BUILD.bazel
@@ -0,0 +1,42 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "fm_src",
+    srcs = ["fm.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//gm:gm_hdr",
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkColorSpace_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/docs:SkPDFDocument_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:SkTHash_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//src/core:SkColorSpacePriv_hdr",
+        "//src/core:SkMD5_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkTaskGroup_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrGpu_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tests:Test_hdr",
+        "//tools:AutoreleasePool_hdr",
+        "//tools:CrashHandler_hdr",
+        "//tools:HashAndEncode_hdr",
+        "//tools:ToolUtils_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+        "//tools/flags:CommonFlags_hdr",
+        "//tools/gpu:BackendSurfaceFactory_hdr",
+        "//tools/gpu:GrContextFactory_hdr",
+        "//tools/gpu:MemoryCache_hdr",
+        "//tools/trace:EventTracingPriv_hdr",
+    ],
+)
diff --git a/tools/fm/fm_bot/BUILD.bazel b/tools/fm/fm_bot/BUILD.bazel
new file mode 100644
index 0000000..7e2c034
--- /dev/null
+++ b/tools/fm/fm_bot/BUILD.bazel
@@ -0,0 +1,14 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+
+go_library(
+    name = "fm_bot_lib",
+    srcs = ["fm_bot.go"],
+    importpath = "go.skia.org/skia/tools/fm/fm_bot",
+    visibility = ["//visibility:private"],
+)
+
+go_binary(
+    name = "fm_bot",
+    embed = [":fm_bot_lib"],
+    visibility = ["//visibility:public"],
+)
diff --git a/tools/fonts/BUILD.bazel b/tools/fonts/BUILD.bazel
new file mode 100644
index 0000000..fd87b3f
--- /dev/null
+++ b/tools/fonts/BUILD.bazel
@@ -0,0 +1,251 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "RandomScalerContext_hdr",
+    hdrs = ["RandomScalerContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkTypeface_hdr",
+        "//src/core:SkScalerContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RandomScalerContext_src",
+    srcs = ["RandomScalerContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":RandomScalerContext_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPath_hdr",
+        "//src/core:SkAdvancedTypefaceMetrics_hdr",
+        "//src/core:SkGlyph_hdr",
+        "//src/core:SkRectPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestEmptyTypeface_hdr",
+    hdrs = ["TestEmptyTypeface.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//src/core:SkAdvancedTypefaceMetrics_hdr",
+        "//src/core:SkScalerContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestFontMgr_hdr",
+    hdrs = ["TestFontMgr.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkFontMgr_hdr"],
+)
+
+generated_cc_atom(
+    name = "TestFontMgr_src",
+    srcs = ["TestFontMgr.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TestFontMgr_hdr",
+        ":TestSVGTypeface_hdr",
+        ":TestTypeface_hdr",
+        ":test_font_index_hdr",
+        ":test_font_monospace_hdr",
+        ":test_font_sans_serif_hdr",
+        ":test_font_serif_hdr",
+        "//src/core:SkFontDescriptor_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestSVGTypeface_hdr",
+    hdrs = ["TestSVGTypeface.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkFontArguments_hdr",
+        "//include/core:SkFontMetrics_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkSpan_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//include/private:SkMutex_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/private:SkTHash_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestSVGTypeface_src",
+    srcs = ["TestSVGTypeface.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TestSVGTypeface_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkEncodedImageFormat_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPathEffect_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/core:SkRRect_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//include/private:SkTemplates_hdr",
+        "//include/utils:SkNoDrawCanvas_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//src/core:SkAdvancedTypefaceMetrics_hdr",
+        "//src/core:SkFontDescriptor_hdr",
+        "//src/core:SkFontPriv_hdr",
+        "//src/core:SkGeometry_hdr",
+        "//src/core:SkGlyph_hdr",
+        "//src/core:SkMask_hdr",
+        "//src/core:SkPaintPriv_hdr",
+        "//src/core:SkPathPriv_hdr",
+        "//src/core:SkPointPriv_hdr",
+        "//src/core:SkScalerContext_hdr",
+        "//src/core:SkUtils_hdr",
+        "//src/sfnt:SkOTUtils_hdr",
+        "//tools:Resources_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestTypeface_hdr",
+    hdrs = ["TestTypeface.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkFontArguments_hdr",
+        "//include/core:SkFontMetrics_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkFixed_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestTypeface_src",
+    srcs = ["TestTypeface.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TestTypeface_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFontMetrics_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkString_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//include/private:SkTo_hdr",
+        "//src/core:SkAdvancedTypefaceMetrics_hdr",
+        "//src/core:SkFontDescriptor_hdr",
+        "//src/core:SkFontPriv_hdr",
+        "//src/core:SkGlyph_hdr",
+        "//src/core:SkPaintPriv_hdr",
+        "//src/core:SkScalerContext_hdr",
+        "//src/core:SkUtils_hdr",
+        "//src/sfnt:SkOTUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ToolUtilsFont_src",
+    srcs = ["ToolUtilsFont.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TestFontMgr_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/private:SkMutex_hdr",
+        "//include/utils:SkCustomTypeface_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/utils:SkUTF_hdr",
+        "//tools:Resources_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "create_test_font_color_src",
+    srcs = ["create_test_font_color.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TestSVGTypeface_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkString_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "create_test_font_src",
+    srcs = ["create_test_font.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkFontMetrics_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkSpan_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/private:SkTArray_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkPathPriv_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//src/utils:SkUTF_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "test_font_index_hdr",
+    hdrs = ["test_font_index.inc"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "test_font_monospace_hdr",
+    hdrs = ["test_font_monospace.inc"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "test_font_sans_serif_hdr",
+    hdrs = ["test_font_sans_serif.inc"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "test_font_serif_hdr",
+    hdrs = ["test_font_serif.inc"],
+    visibility = ["//:__subpackages__"],
+)
diff --git a/tools/fonts/TestFontMgr.cpp b/tools/fonts/TestFontMgr.cpp
index aba8e0e..e957c07 100644
--- a/tools/fonts/TestFontMgr.cpp
+++ b/tools/fonts/TestFontMgr.cpp
@@ -18,11 +18,11 @@
 
 namespace {
 
-#include "test_font_monospace.inc"
-#include "test_font_sans_serif.inc"
-#include "test_font_serif.inc"
+#include "tools/fonts/test_font_monospace.inc"
+#include "tools/fonts/test_font_sans_serif.inc"
+#include "tools/fonts/test_font_serif.inc"
 
-#include "test_font_index.inc"
+#include "tools/fonts/test_font_index.inc"
 
 class FontStyleSet final : public SkFontStyleSet {
 public:
diff --git a/tools/gpu/BUILD.bazel b/tools/gpu/BUILD.bazel
new file mode 100644
index 0000000..89cde21
--- /dev/null
+++ b/tools/gpu/BUILD.bazel
@@ -0,0 +1,326 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "BackendSurfaceFactory_hdr",
+    hdrs = ["BackendSurfaceFactory.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/gpu:GrTypes_hdr",
+        "//include/private:SkColorData_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BackendSurfaceFactory_src",
+    srcs = ["BackendSurfaceFactory.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":BackendSurfaceFactory_hdr",
+        ":ManagedBackendTexture_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrGpu_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BackendTextureImageFactory_hdr",
+    hdrs = ["BackendTextureImageFactory.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/gpu:GrTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BackendTextureImageFactory_src",
+    srcs = ["BackendTextureImageFactory.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":BackendTextureImageFactory_hdr",
+        ":ManagedBackendTexture_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/core:SkAutoPixmapStorage_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "FenceSync_hdr",
+    hdrs = ["FenceSync.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkTypes_hdr"],
+)
+
+generated_cc_atom(
+    name = "FlushFinishTracker_hdr",
+    hdrs = ["FlushFinishTracker.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkRefCnt_hdr"],
+)
+
+generated_cc_atom(
+    name = "FlushFinishTracker_src",
+    srcs = ["FlushFinishTracker.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":FlushFinishTracker_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/core:SkTraceEvent_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GpuTimer_hdr",
+    hdrs = ["GpuTimer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkTypes_hdr"],
+)
+
+generated_cc_atom(
+    name = "GrContextFactory_hdr",
+    hdrs = ["GrContextFactory.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:SkTArray_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GrContextFactory_src",
+    srcs = ["GrContextFactory.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GrContextFactory_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/gpu:GrCaps_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//tools/gpu/d3d:D3DTestContext_hdr",
+        "//tools/gpu/dawn:DawnTestContext_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+        "//tools/gpu/gl/angle:GLTestContext_angle_hdr",
+        "//tools/gpu/gl/command_buffer:GLTestContext_command_buffer_hdr",
+        "//tools/gpu/mock:MockTestContext_hdr",
+        "//tools/gpu/mtl:MtlTestContext_hdr",
+        "//tools/gpu/vk:VkTestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GrTest_src",
+    srcs = ["GrTest.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkString_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/gpu:GrRecordingContext_hdr",
+        "//include/private:SkTo_hdr",
+        "//src/core:SkMathPriv_hdr",
+        "//src/gpu:GrClip_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrDrawOpAtlas_hdr",
+        "//src/gpu:GrDrawingManager_hdr",
+        "//src/gpu:GrGpuResourceCacheAccess_hdr",
+        "//src/gpu:GrGpu_hdr",
+        "//src/gpu:GrMemoryPool_hdr",
+        "//src/gpu:GrRecordingContextPriv_hdr",
+        "//src/gpu:GrRenderTargetProxy_hdr",
+        "//src/gpu:GrResourceCache_hdr",
+        "//src/gpu:GrSemaphore_hdr",
+        "//src/gpu:GrTexture_hdr",
+        "//src/gpu:SkGr_hdr",
+        "//src/gpu/text:GrStrikeCache_hdr",
+        "//src/gpu/text:GrTextBlobCache_hdr",
+        "//src/gpu/v1:SurfaceDrawContext_v1_hdr",
+        "//src/image:SkImage_Gpu_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ManagedBackendTexture_hdr",
+    hdrs = ["ManagedBackendTexture.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkYUVAInfo_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ManagedBackendTexture_src",
+    srcs = ["ManagedBackendTexture.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ManagedBackendTexture_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/private:GrTypesPriv_hdr",
+        "//src/core:SkMipmap_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MemoryCache_hdr",
+    hdrs = ["MemoryCache.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkData_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/private:SkChecksum_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MemoryCache_src",
+    srcs = ["MemoryCache.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":MemoryCache_hdr",
+        "//include/utils:SkBase64_hdr",
+        "//src/core:SkMD5_hdr",
+        "//src/core:SkReadBuffer_hdr",
+        "//src/gpu:GrPersistentCacheUtils_hdr",
+        "//src/gpu/vk:GrVkGpu_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ProxyUtils_hdr",
+    hdrs = ["ProxyUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:GrTypesPriv_hdr",
+        "//src/gpu:GrImageInfo_hdr",
+        "//src/gpu:GrPipeline_hdr",
+        "//src/gpu:GrTextureProxy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ProxyUtils_src",
+    srcs = ["ProxyUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ProxyUtils_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:GrImageContext_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrDrawingManager_hdr",
+        "//src/gpu:GrGpu_hdr",
+        "//src/gpu:GrImageContextPriv_hdr",
+        "//src/gpu:GrPixmap_hdr",
+        "//src/gpu:GrProgramInfo_hdr",
+        "//src/gpu:GrProxyProvider_hdr",
+        "//src/gpu:SkGr_hdr",
+        "//src/gpu:SurfaceContext_hdr",
+        "//src/gpu/ops:GrSimpleMeshDrawOpHelper_hdr",
+        "//src/image:SkImage_Base_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestContext_hdr",
+    hdrs = ["TestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":FenceSync_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/gpu:GrTypes_hdr",
+        "//include/private:SkNoncopyable_hdr",
+        "//include/private:SkTemplates_hdr",
+        "//src/core:SkScopeExit_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestContext_src",
+    srcs = ["TestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":FlushFinishTracker_hdr",
+        ":GpuTimer_hdr",
+        ":TestContext_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/core:SkTraceEvent_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestOps_hdr",
+    hdrs = ["TestOps.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/gpu:GrRecordingContext_hdr",
+        "//src/gpu:GrRecordingContextPriv_hdr",
+        "//src/gpu/ops:GrOp_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TestOps_src",
+    srcs = ["TestOps.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TestOps_hdr",
+        "//src/core:SkPointPriv_hdr",
+        "//src/gpu:BufferWriter_hdr",
+        "//src/gpu:GrCaps_hdr",
+        "//src/gpu:GrGeometryProcessor_hdr",
+        "//src/gpu:GrMemoryPool_hdr",
+        "//src/gpu:GrOpFlushState_hdr",
+        "//src/gpu:GrProgramInfo_hdr",
+        "//src/gpu/glsl:GrGLSLFragmentShaderBuilder_hdr",
+        "//src/gpu/glsl:GrGLSLVarying_hdr",
+        "//src/gpu/glsl:GrGLSLVertexGeoBuilder_hdr",
+        "//src/gpu/ops:GrSimpleMeshDrawOpHelper_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "YUVUtils_hdr",
+    hdrs = ["YUVUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkImage_hdr",
+        "//include/core:SkYUVAPixmaps_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "YUVUtils_src",
+    srcs = ["YUVUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ManagedBackendTexture_hdr",
+        ":YUVUtils_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/core:SkColorPriv_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrRecordingContext_hdr",
+        "//include/gpu:GrYUVABackendTextures_hdr",
+        "//src/codec:SkCodecImageGenerator_hdr",
+        "//src/core:SkYUVAInfoLocation_hdr",
+        "//src/core:SkYUVMath_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrRecordingContextPriv_hdr",
+    ],
+)
diff --git a/tools/gpu/d3d/BUILD.bazel b/tools/gpu/d3d/BUILD.bazel
new file mode 100644
index 0000000..043d7f2
--- /dev/null
+++ b/tools/gpu/d3d/BUILD.bazel
@@ -0,0 +1,38 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "D3DTestContext_hdr",
+    hdrs = ["D3DTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/gpu/d3d:GrD3DBackendContext_hdr",
+        "//tools/gpu:TestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "D3DTestContext_src",
+    srcs = ["D3DTestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":D3DTestContext_hdr",
+        ":D3DTestUtils_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "D3DTestUtils_hdr",
+    hdrs = ["D3DTestUtils.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "D3DTestUtils_src",
+    srcs = ["D3DTestUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":D3DTestUtils_hdr",
+        "//include/gpu/d3d:GrD3DBackendContext_hdr",
+    ],
+)
diff --git a/tools/gpu/dawn/BUILD.bazel b/tools/gpu/dawn/BUILD.bazel
new file mode 100644
index 0000000..a2e299a
--- /dev/null
+++ b/tools/gpu/dawn/BUILD.bazel
@@ -0,0 +1,23 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "DawnTestContext_hdr",
+    hdrs = ["DawnTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/gpu:TestContext_hdr"],
+)
+
+generated_cc_atom(
+    name = "DawnTestContext_src",
+    srcs = ["DawnTestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DawnTestContext_hdr",
+        "//GL:glx_hdr",
+        "//dawn:dawn_proc_hdr",
+        "//dawn:webgpu_hdr",
+        "//dawn_native:OpenGLBackend_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//tools:AutoreleasePool_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/BUILD.bazel b/tools/gpu/gl/BUILD.bazel
new file mode 100644
index 0000000..4a85813
--- /dev/null
+++ b/tools/gpu/gl/BUILD.bazel
@@ -0,0 +1,24 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GLTestContext_hdr",
+    hdrs = ["GLTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//src/gpu/gl:GrGLUtil_hdr",
+        "//tools/gpu:TestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GLTestContext_src",
+    srcs = ["GLTestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GLTestContext_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/gpu/gl:GrGLUtil_hdr",
+        "//tools/gpu:GpuTimer_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/angle/BUILD.bazel b/tools/gpu/gl/angle/BUILD.bazel
new file mode 100644
index 0000000..4af4915
--- /dev/null
+++ b/tools/gpu/gl/angle/BUILD.bazel
@@ -0,0 +1,25 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GLTestContext_angle_hdr",
+    hdrs = ["GLTestContext_angle.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/gpu/gl:GLTestContext_hdr"],
+)
+
+generated_cc_atom(
+    name = "GLTestContext_angle_src",
+    srcs = ["GLTestContext_angle.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GLTestContext_angle_hdr",
+        "//include/core:SkTime_hdr",
+        "//include/gpu/gl:GrGLAssembleInterface_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//src/core:SkTraceEvent_hdr",
+        "//src/gpu/gl:GrGLDefines_hdr",
+        "//src/gpu/gl:GrGLUtil_hdr",
+        "//src/ports:SkOSLibrary_hdr",
+        "//third_party/externals/angle2/include/platform:Platform_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/command_buffer/BUILD.bazel b/tools/gpu/gl/command_buffer/BUILD.bazel
new file mode 100644
index 0000000..8b6656b
--- /dev/null
+++ b/tools/gpu/gl/command_buffer/BUILD.bazel
@@ -0,0 +1,22 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GLTestContext_command_buffer_hdr",
+    hdrs = ["GLTestContext_command_buffer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/gpu/gl:GLTestContext_hdr"],
+)
+
+generated_cc_atom(
+    name = "GLTestContext_command_buffer_src",
+    srcs = ["GLTestContext_command_buffer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GLTestContext_command_buffer_hdr",
+        "//include/gpu/gl:GrGLAssembleInterface_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//include/private:SkMutex_hdr",
+        "//include/private:SkOnce_hdr",
+        "//src/ports:SkOSLibrary_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/egl/BUILD.bazel b/tools/gpu/gl/egl/BUILD.bazel
new file mode 100644
index 0000000..68d4c32
--- /dev/null
+++ b/tools/gpu/gl/egl/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "CreatePlatformGLTestContext_egl_src",
+    srcs = ["CreatePlatformGLTestContext_egl.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//src/gpu/gl:GrGLDefines_hdr",
+        "//src/gpu/gl:GrGLUtil_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/glx/BUILD.bazel b/tools/gpu/gl/glx/BUILD.bazel
new file mode 100644
index 0000000..f07e4d7
--- /dev/null
+++ b/tools/gpu/gl/glx/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "CreatePlatformGLTestContext_glx_src",
+    srcs = ["CreatePlatformGLTestContext_glx.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkOnce_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/interface/BUILD.bazel b/tools/gpu/gl/interface/BUILD.bazel
new file mode 100644
index 0000000..de3ccab
--- /dev/null
+++ b/tools/gpu/gl/interface/BUILD.bazel
@@ -0,0 +1,18 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+
+go_library(
+    name = "interface_lib",
+    srcs = [
+        "gen_interface.go",
+        "templates.go",
+    ],
+    importpath = "go.skia.org/skia/tools/gpu/gl/interface",
+    visibility = ["//visibility:private"],
+    deps = ["@com_github_flynn_json5//:json5"],
+)
+
+go_binary(
+    name = "interface",
+    embed = [":interface_lib"],
+    visibility = ["//visibility:public"],
+)
diff --git a/tools/gpu/gl/mac/BUILD.bazel b/tools/gpu/gl/mac/BUILD.bazel
new file mode 100644
index 0000000..c797825
--- /dev/null
+++ b/tools/gpu/gl/mac/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "CreatePlatformGLTestContext_mac_src",
+    srcs = ["CreatePlatformGLTestContext_mac.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkTypes_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
diff --git a/tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp b/tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp
index e5ff2fa..6362383 100644
--- a/tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp
+++ b/tools/gpu/gl/mac/CreatePlatformGLTestContext_mac.cpp
@@ -8,8 +8,8 @@
 #include "include/core/SkTypes.h"
 
 #include "tools/gpu/gl/GLTestContext.h"
-#include "AvailabilityMacros.h"
 
+#include <AvailabilityMacros.h>
 #include <OpenGL/OpenGL.h>
 #include <dlfcn.h>
 
diff --git a/tools/gpu/gl/none/BUILD.bazel b/tools/gpu/gl/none/BUILD.bazel
new file mode 100644
index 0000000..49098b3
--- /dev/null
+++ b/tools/gpu/gl/none/BUILD.bazel
@@ -0,0 +1,8 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "CreatePlatformGLTestContext_none_src",
+    srcs = ["CreatePlatformGLTestContext_none.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/gpu/gl:GLTestContext_hdr"],
+)
diff --git a/tools/gpu/gl/win/BUILD.bazel b/tools/gpu/gl/win/BUILD.bazel
new file mode 100644
index 0000000..3254e1d
--- /dev/null
+++ b/tools/gpu/gl/win/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "CreatePlatformGLTestContext_win_src",
+    srcs = ["CreatePlatformGLTestContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//src/utils/win:SkWGL_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+    ],
+)
diff --git a/tools/gpu/mock/BUILD.bazel b/tools/gpu/mock/BUILD.bazel
new file mode 100644
index 0000000..d0ccc1b
--- /dev/null
+++ b/tools/gpu/mock/BUILD.bazel
@@ -0,0 +1,18 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "MockTestContext_hdr",
+    hdrs = ["MockTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/gpu:TestContext_hdr"],
+)
+
+generated_cc_atom(
+    name = "MockTestContext_src",
+    srcs = ["MockTestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":MockTestContext_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+    ],
+)
diff --git a/tools/gpu/mtl/BUILD.bazel b/tools/gpu/mtl/BUILD.bazel
new file mode 100644
index 0000000..df9925c
--- /dev/null
+++ b/tools/gpu/mtl/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "MtlTestContext_hdr",
+    hdrs = ["MtlTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/gpu/mtl:GrMtlBackendContext_hdr",
+        "//tools/gpu:TestContext_hdr",
+    ],
+)
diff --git a/tools/gpu/vk/BUILD.bazel b/tools/gpu/vk/BUILD.bazel
new file mode 100644
index 0000000..b82e254
--- /dev/null
+++ b/tools/gpu/vk/BUILD.bazel
@@ -0,0 +1,103 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GrVulkanDefines_hdr",
+    hdrs = ["GrVulkanDefines.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkTypes_hdr"],
+)
+
+generated_cc_atom(
+    name = "VkTestContext_hdr",
+    hdrs = ["VkTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GrVulkanDefines_hdr",
+        "//include/gpu/vk:GrVkBackendContext_hdr",
+        "//tools/gpu:TestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkTestContext_src",
+    srcs = ["VkTestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":VkTestContext_hdr",
+        ":VkTestUtils_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu/vk:GrVkExtensions_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkTestHelper_hdr",
+    hdrs = ["VkTestHelper.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/gpu/vk:GrVkBackendContext_hdr",
+        "//include/gpu/vk:GrVkExtensions_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkTestHelper_src",
+    srcs = ["VkTestHelper.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":VkTestHelper_hdr",
+        ":VkTestUtils_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkTestUtils_hdr",
+    hdrs = ["VkTestUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GrVulkanDefines_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/gpu/vk:GrVkBackendContext_hdr",
+        "//include/gpu/vk:GrVkTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkTestUtils_src",
+    srcs = ["VkTestUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":VkTestUtils_hdr",
+        "//include/gpu/vk:GrVkBackendContext_hdr",
+        "//include/gpu/vk:GrVkExtensions_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+        "//src/ports:SkOSLibrary_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkYcbcrSamplerHelper_hdr",
+    hdrs = ["VkYcbcrSamplerHelper.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkTypes_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VkYcbcrSamplerHelper_src",
+    srcs = ["VkYcbcrSamplerHelper.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":VkYcbcrSamplerHelper_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu/vk:GrVkGpu_hdr",
+        "//src/gpu/vk:GrVkUtil_hdr",
+    ],
+)
diff --git a/tools/graphite/BUILD.bazel b/tools/graphite/BUILD.bazel
new file mode 100644
index 0000000..be9fd3a
--- /dev/null
+++ b/tools/graphite/BUILD.bazel
@@ -0,0 +1,40 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "ContextFactory_hdr",
+    hdrs = ["ContextFactory.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GraphiteTestContext_hdr",
+        "//experimental/graphite/include:GraphiteTypes_hdr",
+        "//include/core:SkRefCnt_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ContextFactory_src",
+    srcs = ["ContextFactory.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ContextFactory_hdr",
+        "//experimental/graphite/include:Context_hdr",
+        "//tools/graphite/mtl:GraphiteMtlTestContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GraphiteTestContext_hdr",
+    hdrs = ["GraphiteTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//experimental/graphite/include:GraphiteTypes_hdr",
+        "//include/core:SkRefCnt_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GraphiteTestContext_src",
+    srcs = ["GraphiteTestContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":GraphiteTestContext_hdr"],
+)
diff --git a/tools/graphite/mtl/BUILD.bazel b/tools/graphite/mtl/BUILD.bazel
new file mode 100644
index 0000000..280790a
--- /dev/null
+++ b/tools/graphite/mtl/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GraphiteMtlTestContext_hdr",
+    hdrs = ["GraphiteMtlTestContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//experimental/graphite/include/mtl:MtlBackendContext_hdr",
+        "//tools/graphite:GraphiteTestContext_hdr",
+    ],
+)
diff --git a/tools/mdbviz/BUILD.bazel b/tools/mdbviz/BUILD.bazel
new file mode 100644
index 0000000..c91733b
--- /dev/null
+++ b/tools/mdbviz/BUILD.bazel
@@ -0,0 +1,45 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Model_hdr",
+    hdrs = ["Model.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBitmap_hdr",
+        "//include/private:SkTDArray_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Model_src",
+    srcs = ["Model.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Model_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkStream_hdr",
+        "//tools/debugger:DebugCanvas_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "main_src",
+    srcs = ["main.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":mainwindow_hdr"],
+)
+
+generated_cc_atom(
+    name = "mainwindow_hdr",
+    hdrs = ["mainwindow.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":Model_hdr"],
+)
+
+generated_cc_atom(
+    name = "mainwindow_src",
+    srcs = ["mainwindow.cpp"],
+    visibility = ["//:__subpackages__"],
+)
diff --git a/tools/sk_app/BUILD.bazel b/tools/sk_app/BUILD.bazel
new file mode 100644
index 0000000..d977eb7
--- /dev/null
+++ b/tools/sk_app/BUILD.bazel
@@ -0,0 +1,210 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Application_hdr",
+    hdrs = ["Application.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "CommandSet_hdr",
+    hdrs = ["CommandSet.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Window_hdr",
+        "//include/core:SkString_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CommandSet_src",
+    srcs = ["CommandSet.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":CommandSet_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFont_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DawnWindowContext_hdr",
+    hdrs = ["DawnWindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        "//dawn:dawn_wsi_hdr",
+        "//dawn_native:DawnNative_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSurface_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DawnWindowContext_src",
+    srcs = ["DawnWindowContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DawnWindowContext_hdr",
+        "//dawn:dawn_proc_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DisplayParams_hdr",
+    hdrs = ["DisplayParams.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkSurfaceProps_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GLWindowContext_hdr",
+    hdrs = ["GLWindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GLWindowContext_src",
+    srcs = ["GLWindowContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GLWindowContext_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/core:SkMathPriv_hdr",
+        "//src/gpu:GrCaps_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu/gl:GrGLDefines_hdr",
+        "//src/gpu/gl:GrGLUtil_hdr",
+        "//src/image:SkImage_Base_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GraphiteMetalWindowContext_hdr",
+    hdrs = ["GraphiteMetalWindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/ports:SkCFObject_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MetalWindowContext_hdr",
+    hdrs = ["MetalWindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/ports:SkCFObject_hdr",
+        "//include/private:GrMtlTypesPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RasterWindowContext_hdr",
+    hdrs = ["RasterWindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":WindowContext_hdr"],
+)
+
+generated_cc_atom(
+    name = "VulkanWindowContext_hdr",
+    hdrs = ["VulkanWindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/gpu/vk:GrVkBackendContext_hdr",
+        "//include/gpu/vk:GrVkVulkan_hdr",
+        "//src/gpu/vk:GrVkInterface_hdr",
+        "//tools/gpu/vk:VkTestUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VulkanWindowContext_src",
+    srcs = ["VulkanWindowContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":VulkanWindowContext_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrBackendSemaphore_hdr",
+        "//include/gpu:GrBackendSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu/vk:GrVkExtensions_hdr",
+        "//include/gpu/vk:GrVkTypes_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+        "//src/gpu/vk:GrVkImage_hdr",
+        "//src/gpu/vk:GrVkUtil_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "WindowContext_hdr",
+    hdrs = ["WindowContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DisplayParams_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSurfaceProps_hdr",
+        "//include/gpu:GrTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "WindowContext_src",
+    srcs = ["WindowContext.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        "//experimental/graphite/include:Context_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Window_hdr",
+    hdrs = ["Window.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":DisplayParams_hdr",
+        "//include/core:SkRect_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//tools/skui:InputState_hdr",
+        "//tools/skui:Key_hdr",
+        "//tools/skui:ModifierKey_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Window_src",
+    srcs = ["Window.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContext_hdr",
+        ":Window_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkSurface_hdr",
+    ],
+)
diff --git a/tools/sk_app/android/BUILD.bazel b/tools/sk_app/android/BUILD.bazel
new file mode 100644
index 0000000..131e717
--- /dev/null
+++ b/tools/sk_app/android/BUILD.bazel
@@ -0,0 +1,99 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GLWindowContext_android_src",
+    srcs = ["GLWindowContext_android.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_android_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//tools/sk_app:GLWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RasterWindowContext_android_src",
+    srcs = ["RasterWindowContext_android.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_android_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkTypes_hdr",
+        "//tools/sk_app:RasterWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VulkanWindowContext_android_src",
+    srcs = ["VulkanWindowContext_android.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_android_hdr",
+        "//include/gpu/vk:GrVkVulkan_hdr",
+        "//tools/gpu/vk:VkTestUtils_hdr",
+        "//tools/sk_app:VulkanWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "WindowContextFactory_android_hdr",
+    hdrs = ["WindowContextFactory_android.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "Window_android_hdr",
+    hdrs = ["Window_android.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":surface_glue_android_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Window_android_src",
+    srcs = ["Window_android.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_android_hdr",
+        ":Window_android_hdr",
+        "//tools/sk_app:WindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "main_android_src",
+    srcs = ["main_android.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//tools/sk_app:Application_hdr",
+        "//tools/timer:Timer_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "surface_glue_android_hdr",
+    hdrs = ["surface_glue_android.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkString_hdr",
+        "//tools/sk_app:Application_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "surface_glue_android_src",
+    srcs = ["surface_glue_android.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Window_android_hdr",
+        ":surface_glue_android_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkTo_hdr",
+        "//src/utils:SkUTF_hdr",
+        "//tools:ResourceFactory_hdr",
+        "//tools/sk_app:Application_hdr",
+    ],
+)
diff --git a/tools/sk_app/ios/BUILD.bazel b/tools/sk_app/ios/BUILD.bazel
new file mode 100644
index 0000000..cc3cee1
--- /dev/null
+++ b/tools/sk_app/ios/BUILD.bazel
@@ -0,0 +1,22 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "WindowContextFactory_ios_hdr",
+    hdrs = ["WindowContextFactory_ios.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Window_ios_hdr",
+        "//tools/sk_app:WindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Window_ios_hdr",
+    hdrs = ["Window_ios.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkChecksum_hdr",
+        "//src/core:SkTDynamicHash_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
diff --git a/tools/sk_app/mac/BUILD.bazel b/tools/sk_app/mac/BUILD.bazel
new file mode 100644
index 0000000..8b92d5e
--- /dev/null
+++ b/tools/sk_app/mac/BUILD.bazel
@@ -0,0 +1,18 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "WindowContextFactory_mac_hdr",
+    hdrs = ["WindowContextFactory_mac.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/sk_app:WindowContext_hdr"],
+)
+
+generated_cc_atom(
+    name = "Window_mac_hdr",
+    hdrs = ["Window_mac.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//src/core:SkTDynamicHash_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
diff --git a/tools/sk_app/unix/BUILD.bazel b/tools/sk_app/unix/BUILD.bazel
new file mode 100644
index 0000000..a0eb1fc
--- /dev/null
+++ b/tools/sk_app/unix/BUILD.bazel
@@ -0,0 +1,109 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "DawnVulkanWindowContext_unix_src",
+    srcs = ["DawnVulkanWindowContext_unix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_unix_hdr",
+        "//dawn_native:DawnNative_hdr",
+        "//dawn_native:VulkanBackend_hdr",
+        "//src/ports:SkOSLibrary_hdr",
+        "//tools/gpu/vk:VkTestUtils_hdr",
+        "//tools/sk_app:DawnWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GLWindowContext_unix_src",
+    srcs = ["GLWindowContext_unix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_unix_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//tools/sk_app:GLWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RasterWindowContext_unix_src",
+    srcs = ["RasterWindowContext_unix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_unix_hdr",
+        "//include/core:SkSurface_hdr",
+        "//tools/sk_app:RasterWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VulkanWindowContext_unix_src",
+    srcs = ["VulkanWindowContext_unix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_unix_hdr",
+        "//include/gpu/vk:GrVkVulkan_hdr",
+        "//src/gpu/vk:GrVkInterface_hdr",
+        "//src/gpu/vk:GrVkUtil_hdr",
+        "//tools/gpu/vk:VkTestUtils_hdr",
+        "//tools/sk_app:VulkanWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "WindowContextFactory_unix_hdr",
+    hdrs = ["WindowContextFactory_unix.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "Window_unix_hdr",
+    hdrs = ["Window_unix.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkChecksum_hdr",
+        "//src/core:SkTDynamicHash_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Window_unix_src",
+    srcs = ["Window_unix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_unix_hdr",
+        ":Window_unix_hdr",
+        ":keysym2ucs_hdr",
+        "//src/utils:SkUTF_hdr",
+        "//tools/sk_app:GLWindowContext_hdr",
+        "//tools/skui:ModifierKey_hdr",
+        "//tools/timer:Timer_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "keysym2ucs_hdr",
+    hdrs = ["keysym2ucs.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "keysym2ucs_src",
+    srcs = ["keysym2ucs.c"],
+    visibility = ["//:__subpackages__"],
+    deps = [":keysym2ucs_hdr"],
+)
+
+generated_cc_atom(
+    name = "main_unix_src",
+    srcs = ["main_unix.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Window_unix_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkTHash_hdr",
+        "//tools/sk_app:Application_hdr",
+        "//tools/timer:Timer_hdr",
+    ],
+)
diff --git a/tools/sk_app/win/BUILD.bazel b/tools/sk_app/win/BUILD.bazel
new file mode 100644
index 0000000..b72417e
--- /dev/null
+++ b/tools/sk_app/win/BUILD.bazel
@@ -0,0 +1,119 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "ANGLEWindowContext_win_src",
+    srcs = ["ANGLEWindowContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        "//include/gpu/gl:GrGLAssembleInterface_hdr",
+        "//src/gpu/gl:GrGLDefines_hdr",
+        "//tools/sk_app:GLWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "D3D12WindowContext_win_src",
+    srcs = ["D3D12WindowContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu/d3d:GrD3DBackendContext_hdr",
+        "//tools/gpu/d3d:D3DTestUtils_hdr",
+        "//tools/sk_app:WindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DawnD3D12WindowContext_win_src",
+    srcs = ["DawnD3D12WindowContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        "//dawn:dawn_wsi_hdr",
+        "//dawn_native:D3D12Backend_hdr",
+        "//dawn_native:DawnNative_hdr",
+        "//tools/sk_app:DawnWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GLWindowContext_win_src",
+    srcs = ["GLWindowContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        "//include/gpu/gl:GrGLInterface_hdr",
+        "//src/utils/win:SkWGL_hdr",
+        "//tools/sk_app:GLWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RasterWindowContext_win_src",
+    srcs = ["RasterWindowContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        "//include/core:SkSurface_hdr",
+        "//src/core:SkAutoMalloc_hdr",
+        "//tools/sk_app:RasterWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VulkanWindowContext_win_src",
+    srcs = ["VulkanWindowContext_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        ":Window_win_hdr",
+        "//include/gpu/vk:GrVkVulkan_hdr",
+        "//src/gpu/vk:GrVkInterface_hdr",
+        "//src/gpu/vk:GrVkUtil_hdr",
+        "//tools/gpu/vk:VkTestUtils_hdr",
+        "//tools/sk_app:VulkanWindowContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "WindowContextFactory_win_hdr",
+    hdrs = ["WindowContextFactory_win.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "Window_win_hdr",
+    hdrs = ["Window_win.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//tools/sk_app:Window_hdr"],
+)
+
+generated_cc_atom(
+    name = "Window_win_src",
+    srcs = ["Window_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":WindowContextFactory_win_hdr",
+        ":Window_win_hdr",
+        "//include/gpu/vk:GrVkVulkan_hdr",
+        "//src/utils:SkUTF_hdr",
+        "//tools/sk_app:VulkanWindowContext_hdr",
+        "//tools/sk_app:WindowContext_hdr",
+        "//tools/skui:ModifierKey_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "main_win_src",
+    srcs = ["main_win.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Window_win_hdr",
+        "//include/core:SkTypes_hdr",
+        "//tools/sk_app:Application_hdr",
+        "//tools/timer:Timer_hdr",
+    ],
+)
diff --git a/tools/skdiff/BUILD.bazel b/tools/skdiff/BUILD.bazel
new file mode 100644
index 0000000..a7fe13b
--- /dev/null
+++ b/tools/skdiff/BUILD.bazel
@@ -0,0 +1,110 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+cc_binary(
+    name = "skdiff",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skdiff_html_src",
+        ":skdiff_main_src",
+        ":skdiff_src",
+        ":skdiff_utils_src",
+        "//:skia_core",
+        "//third_party:musl_compat",
+        "//third_party:skcms",
+        "//tools:Resources_src",
+        "//tools:ToolUtils_src",
+        "//tools/flags:CommandLineFlags_src",
+        "//tools/fonts:TestFontMgr_src",
+        "//tools/fonts:TestTypeface_src",
+        "//tools/fonts:ToolUtilsFont_src",
+    ],
+)
+
+generated_cc_atom(
+    name = "skdiff_hdr",
+    hdrs = ["skdiff.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkColorPriv_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkString_hdr",
+        "//include/private:SkTArray_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skdiff_html_hdr",
+    hdrs = ["skdiff_html.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":skdiff_hdr"],
+)
+
+generated_cc_atom(
+    name = "skdiff_html_src",
+    srcs = ["skdiff_html.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skdiff_hdr",
+        ":skdiff_html_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTime_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skdiff_main_src",
+    srcs = ["skdiff_main.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skdiff_hdr",
+        ":skdiff_html_hdr",
+        ":skdiff_utils_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImageEncoder_hdr",
+        "//include/core:SkPixelRef_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkTSearch_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skdiff_src",
+    srcs = ["skdiff.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skdiff_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkColorPriv_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skdiff_utils_hdr",
+    hdrs = ["skdiff_utils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":skdiff_hdr"],
+)
+
+generated_cc_atom(
+    name = "skdiff_utils_src",
+    srcs = ["skdiff_utils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skdiff_hdr",
+        ":skdiff_utils_hdr",
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImageEncoder_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTypes_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
diff --git a/tools/skiaserve/BUILD.bazel b/tools/skiaserve/BUILD.bazel
new file mode 100644
index 0000000..fcf7e9f
--- /dev/null
+++ b/tools/skiaserve/BUILD.bazel
@@ -0,0 +1,61 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Request_hdr",
+    hdrs = ["Request.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkTypes_hdr",
+        "//tools:UrlDataManager_hdr",
+        "//tools/debugger:DebugCanvas_hdr",
+        "//tools/gpu:GrContextFactory_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Request_src",
+    srcs = ["Request.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Request_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Response_hdr",
+    hdrs = ["Response.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "Response_src",
+    srcs = ["Response.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Request_hdr",
+        ":Response_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkString_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skiaserve_src",
+    srcs = ["skiaserve.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Request_hdr",
+        ":Response_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+        "//tools/skiaserve/urlhandlers:UrlHandler_hdr",
+    ],
+)
diff --git a/tools/skiaserve/urlhandlers/BUILD.bazel b/tools/skiaserve/urlhandlers/BUILD.bazel
new file mode 100644
index 0000000..0fa36cc
--- /dev/null
+++ b/tools/skiaserve/urlhandlers/BUILD.bazel
@@ -0,0 +1,173 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "BreakHandler_src",
+    srcs = ["BreakHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ClipAlphaHandler_src",
+    srcs = ["ClipAlphaHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CmdHandler_src",
+    srcs = ["CmdHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ColorModeHandler_src",
+    srcs = ["ColorModeHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DataHandler_src",
+    srcs = ["DataHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DownloadHandler_src",
+    srcs = ["DownloadHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "EnableGPUHandler_src",
+    srcs = ["EnableGPUHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ImgHandler_src",
+    srcs = ["ImgHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "InfoHandler_src",
+    srcs = ["InfoHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "OpBoundsHandler_src",
+    srcs = ["OpBoundsHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "OpsHandler_src",
+    srcs = ["OpsHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "OverdrawHandler_src",
+    srcs = ["OverdrawHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "PostHandler_src",
+    srcs = ["PostHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "QuitHandler_src",
+    srcs = ["QuitHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RootHandler_src",
+    srcs = ["RootHandler.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":UrlHandler_hdr",
+        "//tools/skiaserve:Request_hdr",
+        "//tools/skiaserve:Response_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "UrlHandler_hdr",
+    hdrs = ["UrlHandler.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkColor_hdr"],
+)
diff --git a/tools/skottie_ios_app/BUILD.bazel b/tools/skottie_ios_app/BUILD.bazel
new file mode 100644
index 0000000..b101a56
--- /dev/null
+++ b/tools/skottie_ios_app/BUILD.bazel
@@ -0,0 +1,34 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "GrContextHolder_hdr",
+    hdrs = ["GrContextHolder.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "SkMetalViewBridge_hdr",
+    hdrs = ["SkMetalViewBridge.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":GrContextHolder_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkiaContext_hdr",
+    hdrs = ["SkiaContext.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkottieViewController_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkiaViewController_hdr",
+    hdrs = ["SkiaViewController.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "SkottieViewController_hdr",
+    hdrs = ["SkottieViewController.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkiaViewController_hdr"],
+)
diff --git a/tools/skpbench/BUILD.bazel b/tools/skpbench/BUILD.bazel
new file mode 100644
index 0000000..87ad965
--- /dev/null
+++ b/tools/skpbench/BUILD.bazel
@@ -0,0 +1,39 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "skpbench_src",
+    srcs = ["skpbench.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//bench:BigPath_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkDeferredDisplayList_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkPicture_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurfaceProps_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/effects:SkPerlinNoiseShader_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkTaskGroup_hdr",
+        "//src/gpu:GrCaps_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:SkGr_hdr",
+        "//src/utils:SkMultiPictureDocument_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//src/xml:SkDOM_hdr",
+        "//tools:DDLPromiseImageHelper_hdr",
+        "//tools:DDLTileHelper_hdr",
+        "//tools:SkSharingProc_hdr",
+        "//tools:ToolUtils_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+        "//tools/flags:CommonFlagsConfig_hdr",
+        "//tools/flags:CommonFlags_hdr",
+        "//tools/gpu:FlushFinishTracker_hdr",
+        "//tools/gpu:GpuTimer_hdr",
+        "//tools/gpu:GrContextFactory_hdr",
+    ],
+)
diff --git a/tools/skqp/BUILD.bazel b/tools/skqp/BUILD.bazel
new file mode 100644
index 0000000..761272d
--- /dev/null
+++ b/tools/skqp/BUILD.bazel
@@ -0,0 +1,34 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "jitter_gms_src",
+    srcs = ["jitter_gms.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//gm:gm_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkExecutor_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkSemaphore_hdr",
+        "//tools:Registry_hdr",
+        "//tools/skqp/src:skqp_hdr",
+        "//tools/skqp/src:skqp_model_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "make_skqp_model_src",
+    srcs = ["make_skqp_model.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/encode:SkPngEncoder_hdr",
+        "//src/core:SkOSFile_hdr",
+    ],
+)
diff --git a/tools/skqp/src/BUILD.bazel b/tools/skqp/src/BUILD.bazel
new file mode 100644
index 0000000..52d08c4
--- /dev/null
+++ b/tools/skqp/src/BUILD.bazel
@@ -0,0 +1,82 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "jni_skqp_src",
+    srcs = ["jni_skqp.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skqp_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkTo_hdr",
+        "//tools:ResourceFactory_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skqp_hdr",
+    hdrs = ["skqp.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "skqp_main_src",
+    srcs = ["skqp_main.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skqp_hdr",
+        "//include/core:SkData_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//tools:Resources_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skqp_model_hdr",
+    hdrs = ["skqp_model.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skqp_hdr",
+        "//include/core:SkBitmap_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skqp_model_src",
+    srcs = ["skqp_model.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skqp_hdr",
+        ":skqp_model_hdr",
+        "//include/codec:SkCodec_hdr",
+        "//include/core:SkBitmap_hdr",
+        "//include/core:SkStream_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "skqp_src",
+    srcs = ["skqp.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skqp_hdr",
+        ":skqp_model_hdr",
+        "//gm:gm_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/encode:SkPngEncoder_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:SkImageInfoPriv_hdr",
+        "//src/core:SkFontMgrPriv_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkStreamPriv_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tests:Test_hdr",
+        "//tools/fonts:TestFontMgr_hdr",
+        "//tools/gpu/gl:GLTestContext_hdr",
+        "//tools/gpu/vk:VkTestContext_hdr",
+    ],
+)
diff --git a/tools/skui/BUILD.bazel b/tools/skui/BUILD.bazel
new file mode 100644
index 0000000..d4e9404
--- /dev/null
+++ b/tools/skui/BUILD.bazel
@@ -0,0 +1,20 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "InputState_hdr",
+    hdrs = ["InputState.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "Key_hdr",
+    hdrs = ["Key.h"],
+    visibility = ["//:__subpackages__"],
+)
+
+generated_cc_atom(
+    name = "ModifierKey_hdr",
+    hdrs = ["ModifierKey.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/private:SkBitmaskEnum_hdr"],
+)
diff --git a/tools/timer/BUILD.bazel b/tools/timer/BUILD.bazel
new file mode 100644
index 0000000..a09e159
--- /dev/null
+++ b/tools/timer/BUILD.bazel
@@ -0,0 +1,25 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "TimeUtils_hdr",
+    hdrs = ["TimeUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkFloatingPoint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Timer_hdr",
+    hdrs = ["Timer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkString_hdr"],
+)
+
+generated_cc_atom(
+    name = "Timer_src",
+    srcs = ["Timer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":Timer_hdr"],
+)
diff --git a/tools/trace/BUILD.bazel b/tools/trace/BUILD.bazel
new file mode 100644
index 0000000..158ac27
--- /dev/null
+++ b/tools/trace/BUILD.bazel
@@ -0,0 +1,72 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "ChromeTracingTracer_hdr",
+    hdrs = ["ChromeTracingTracer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":EventTracingPriv_hdr",
+        "//include/core:SkString_hdr",
+        "//include/private:SkSpinlock_hdr",
+        "//include/private:SkTHash_hdr",
+        "//include/utils:SkEventTracer_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ChromeTracingTracer_src",
+    srcs = ["ChromeTracingTracer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ChromeTracingTracer_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkThreadID_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkTraceEvent_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "EventTracingPriv_hdr",
+    hdrs = ["EventTracingPriv.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/private:SkMutex_hdr"],
+)
+
+generated_cc_atom(
+    name = "EventTracingPriv_src",
+    srcs = ["EventTracingPriv.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ChromeTracingTracer_hdr",
+        ":EventTracingPriv_hdr",
+        ":SkDebugfTracer_hdr",
+        "//include/utils:SkEventTracer_hdr",
+        "//src/core:SkATrace_hdr",
+        "//src/core:SkTraceEvent_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkDebugfTracer_hdr",
+    hdrs = ["SkDebugfTracer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":EventTracingPriv_hdr",
+        "//include/core:SkString_hdr",
+        "//include/utils:SkEventTracer_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkDebugfTracer_src",
+    srcs = ["SkDebugfTracer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkDebugfTracer_hdr",
+        "//src/core:SkTraceEvent_hdr",
+    ],
+)
diff --git a/tools/viewer/BUILD.bazel b/tools/viewer/BUILD.bazel
new file mode 100644
index 0000000..1e6809f
--- /dev/null
+++ b/tools/viewer/BUILD.bazel
@@ -0,0 +1,481 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "AnimTimer_hdr",
+    hdrs = ["AnimTimer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkTime_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BisectSlide_hdr",
+    hdrs = ["BisectSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BisectSlide_src",
+    srcs = ["BisectSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":BisectSlide_hdr",
+        "//include/core:SkStream_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GMSlide_hdr",
+    hdrs = ["GMSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//gm:gm_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GMSlide_src",
+    srcs = ["GMSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GMSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/gpu:GrRecordingContext_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ImGuiLayer_hdr",
+    hdrs = ["ImGuiLayer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPaint_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/private:SkTPin_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ImGuiLayer_src",
+    srcs = ["ImGuiLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ImGuiLayer_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkSwizzle_hdr",
+        "//include/core:SkTime_hdr",
+        "//include/core:SkVertices_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ImageSlide_hdr",
+    hdrs = ["ImageSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkPicture_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ImageSlide_src",
+    srcs = ["ImageSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ImageSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkImage_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MSKPSlide_hdr",
+    hdrs = ["MSKPSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//tools:MSKPPlayer_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MSKPSlide_src",
+    srcs = ["MSKPSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":MSKPSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkTPin_hdr",
+        "//src/core:SkOSFile_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ParticlesSlide_hdr",
+    hdrs = ["ParticlesSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/utils:SkRandom_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ParticlesSlide_src",
+    srcs = ["ParticlesSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ImGuiLayer_hdr",
+        ":ParticlesSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//modules/particles/include:SkParticleEffect_hdr",
+        "//modules/particles/include:SkParticleSerialization_hdr",
+        "//modules/particles/include:SkReflected_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/sksl/codegen:SkSLVMCodeGenerator_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools:Resources_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SKPSlide_hdr",
+    hdrs = ["SKPSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//include/core:SkPicture_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SKPSlide_src",
+    srcs = ["SKPSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SKPSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStream_hdr",
+        "//src/core:SkOSFile_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SampleSlide_hdr",
+    hdrs = ["SampleSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//samplecode:Sample_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SampleSlide_src",
+    srcs = ["SampleSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SampleSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStream_hdr",
+        "//src/core:SkOSFile_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkRiveSlide_hdr",
+    hdrs = ["SkRiveSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//experimental/skrive/include:SkRive_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkRiveSlide_src",
+    srcs = ["SkRiveSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkRiveSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStream_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSLSlide_hdr",
+    hdrs = ["SkSLSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//include/core:SkM44_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSLSlide_src",
+    srcs = ["SkSLSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSLSlide_hdr",
+        ":Viewer_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/effects:SkGradientShader_hdr",
+        "//include/effects:SkPerlinNoiseShader_hdr",
+        "//src/core:SkEnumerate_hdr",
+        "//tools:Resources_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieSlide_hdr",
+    hdrs = ["SkottieSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieSlide_src",
+    srcs = ["SkottieSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkottieSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/core:SkTime_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/audioplayer:SkAudioPlayer_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/utils:SkottieUtils_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools/timer:TimeUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SlideDir_hdr",
+    hdrs = ["SlideDir.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Slide_hdr",
+        "//include/private:SkTArray_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SlideDir_src",
+    srcs = ["SlideDir.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SlideDir_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkCubicMap_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPlane_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+        "//modules/sksg/include:SkSGText_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+        "//tools/timer:TimeUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Slide_hdr",
+    hdrs = ["Slide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/core:SkString_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "StatsLayer_hdr",
+    hdrs = ["StatsLayer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkString_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "StatsLayer_src",
+    srcs = ["StatsLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":StatsLayer_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/core:SkTime_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SvgSlide_hdr",
+    hdrs = ["SvgSlide.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":Slide_hdr"],
+)
+
+generated_cc_atom(
+    name = "SvgSlide_src",
+    srcs = ["SvgSlide.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SvgSlide_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStream_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//modules/svg/include:SkSVGDOM_hdr",
+        "//modules/svg/include:SkSVGNode_hdr",
+        "//src/utils:SkOSPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TouchGesture_hdr",
+    hdrs = ["TouchGesture.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkMatrix_hdr",
+        "//include/private:SkTDArray_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TouchGesture_src",
+    srcs = ["TouchGesture.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TouchGesture_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkTime_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Viewer_hdr",
+    hdrs = ["Viewer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":AnimTimer_hdr",
+        ":ImGuiLayer_hdr",
+        ":Slide_hdr",
+        ":StatsLayer_hdr",
+        ":TouchGesture_hdr",
+        "//gm:gm_hdr",
+        "//include/core:SkExecutor_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/gpu:GrContextOptions_hdr",
+        "//include/private:SkSLString_hdr",
+        "//src/core:SkScan_hdr",
+        "//src/core:SkVMBlitter_hdr",
+        "//src/sksl/ir:SkSLProgram_hdr",
+        "//tools/gpu:MemoryCache_hdr",
+        "//tools/sk_app:Application_hdr",
+        "//tools/sk_app:CommandSet_hdr",
+        "//tools/sk_app:Window_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Viewer_src",
+    srcs = ["Viewer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":BisectSlide_hdr",
+        ":GMSlide_hdr",
+        ":ImageSlide_hdr",
+        ":MSKPSlide_hdr",
+        ":ParticlesSlide_hdr",
+        ":SKPSlide_hdr",
+        ":SampleSlide_hdr",
+        ":SkRiveSlide_hdr",
+        ":SkSLSlide_hdr",
+        ":SkottieSlide_hdr",
+        ":SlideDir_hdr",
+        ":SvgSlide_hdr",
+        ":Viewer_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/gpu:GrDirectContext_hdr",
+        "//include/private:SkTPin_hdr",
+        "//include/private:SkTo_hdr",
+        "//include/utils:SkPaintFilterCanvas_hdr",
+        "//misc/cpp:imgui_stdlib_hdr",
+        "//src/core:SkColorSpacePriv_hdr",
+        "//src/core:SkImagePriv_hdr",
+        "//src/core:SkMD5_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkReadBuffer_hdr",
+        "//src/core:SkScan_hdr",
+        "//src/core:SkSurfacePriv_hdr",
+        "//src/core:SkTSort_hdr",
+        "//src/core:SkTaskGroup_hdr",
+        "//src/core:SkTextBlobPriv_hdr",
+        "//src/core:SkVMBlitter_hdr",
+        "//src/gpu:GrDirectContextPriv_hdr",
+        "//src/gpu:GrGpu_hdr",
+        "//src/gpu:GrPersistentCacheUtils_hdr",
+        "//src/gpu:GrShaderUtils_hdr",
+        "//src/gpu/ops:AtlasPathRenderer_hdr",
+        "//src/gpu/ops:TessellationPathRenderer_hdr",
+        "//src/image:SkImage_Base_hdr",
+        "//src/sksl:SkSLCompiler_hdr",
+        "//src/utils:SkJSONWriter_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools:Resources_hdr",
+        "//tools:RuntimeBlendUtils_hdr",
+        "//tools:ToolUtils_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+        "//tools/flags:CommonFlags_hdr",
+        "//tools/trace:EventTracingPriv_hdr",
+    ],
+)