[canvaskit] Add skottie to Bazel build

PS 1 regenerates existing Bazel files
PS 2 adds generated Bazel files to skottie and its dependencies,
as well as incorporating it into CanvasKit.

This changes the version of Bazel we use to 5.0.0 (recently
released).We had been using a pre-release of 6.0 because we
wanted the new features in one of the 5.0 release candidates,
but not the regression that was there (and reverted before the
full 5.0 release). I'd like to stick to the latest stable Bazel
release where possible.

Suggested Review Order:
 - //modules/skottie/BUILD.bazel (this was hand written
   to encapsulate the skottie library). The files in the
   deps are based on skottie.gni.
 - //modules/skresources/BUILD.bazel and //modules/sksg/BUILD.bazel
   which expose all sources
 - //third_party/file_map_for_bazel.json which ignores the
   ffmpeg libraries (we won't actually build the SkVideoDecoder
   stuff because HAVE_VIDEO_DECODER is not set).
 - //modules/canvaskit/BUILD.bazel which makes use of the skottie
   library and includes the interface skottie.js file.
 - .bazelversion which changes the Bazel version used (e.g. by
   Bazelisk).
 - All other changes should be auto-generated or related to
   deleted files.

Change-Id: Ic26f9a9dea5310f2cbd9cda7d701847924a39a22
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/503828
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
diff --git a/.bazelversion b/.bazelversion
index 5dd6837..28cbf7c 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-6.0.0-pre.20211025.1
\ No newline at end of file
+5.0.0
\ No newline at end of file
diff --git a/bazel/Makefile b/bazel/Makefile
index 0bfd86c..b168074 100644
--- a/bazel/Makefile
+++ b/bazel/Makefile
@@ -5,6 +5,7 @@
 		--third_party_file_map="third_party/file_map_for_bazel.json" \
 		include src tools \
 		modules/skshaper modules/svg modules/skresources modules/skparagraph modules/skunicode \
+		modules/skottie modules/skresources modules/sksg experimental/ffmpeg \
 		experimental/bazel_test experimental/graphite example
 
 # This target should be run after the go.mod file is updated (e.g. version rolls or new updates)
diff --git a/experimental/ffmpeg/BUILD.bazel b/experimental/ffmpeg/BUILD.bazel
new file mode 100644
index 0000000..7acb836
--- /dev/null
+++ b/experimental/ffmpeg/BUILD.bazel
@@ -0,0 +1,46 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SkVideoDecoder_hdr",
+    hdrs = ["SkVideoDecoder.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkImage_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkVideoDecoder_src",
+    srcs = ["SkVideoDecoder.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkVideoDecoder_hdr",
+        "//include/core:SkColorSpace_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkYUVAPixmaps_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkVideoEncoder_hdr",
+    hdrs = ["SkVideoEncoder.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkImage_hdr",
+        "//include/core:SkStream_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkVideoEncoder_src",
+    srcs = ["SkVideoEncoder.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkVideoEncoder_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/core:SkColorSpace_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/private:SkTDArray_hdr",
+        "//src/core:SkYUVMath_hdr",
+    ],
+)
diff --git a/experimental/graphite/include/BUILD.bazel b/experimental/graphite/include/BUILD.bazel
index d363ad1..3f83fe9 100644
--- a/experimental/graphite/include/BUILD.bazel
+++ b/experimental/graphite/include/BUILD.bazel
@@ -22,6 +22,7 @@
         "//include/core:SkRefCnt_hdr",
         "//include/core:SkShader_hdr",
         "//include/core:SkTileMode_hdr",
+        "//include/private:SkNoncopyable_hdr",
     ],
 )
 
diff --git a/experimental/graphite/src/BUILD.bazel b/experimental/graphite/src/BUILD.bazel
index 5358071..3247081 100644
--- a/experimental/graphite/src/BUILD.bazel
+++ b/experimental/graphite/src/BUILD.bazel
@@ -125,7 +125,6 @@
         ":ContextUtils_hdr",
         ":DrawTypes_hdr",
         ":PaintParams_hdr",
-        ":UniformManager_hdr",
         "//include/core:SkPaint_hdr",
         "//include/private:SkShaderCodeDictionary_hdr",
         "//include/private:SkUniquePaintParamsID_hdr",
@@ -144,9 +143,11 @@
         ":Caps_hdr",
         ":CommandBuffer_hdr",
         ":ContextUtils_hdr",
+        ":GlobalCache_hdr",
         ":Gpu_hdr",
         ":GraphicsPipelineDesc_hdr",
         ":Renderer_hdr",
+        ":ResourceProvider_hdr",
         "//experimental/graphite/include:BackendTexture_hdr",
         "//experimental/graphite/include:Context_hdr",
         "//experimental/graphite/include:Recorder_hdr",
@@ -347,6 +348,7 @@
         ":DrawList_hdr",
         ":DrawPass_hdr",
         ":DrawWriter_hdr",
+        ":GlobalCache_hdr",
         ":GraphicsPipelineDesc_hdr",
         ":GraphicsPipeline_hdr",
         ":Renderer_hdr",
@@ -508,7 +510,6 @@
         ":Gpu_hdr",
         ":ResourceProvider_hdr",
         ":UniformCache_hdr",
-        "//experimental/graphite/include:Context_hdr",
         "//experimental/graphite/include:Recorder_hdr",
         "//experimental/graphite/include:Recording_hdr",
         "//src/core:SkUniformData_hdr",
@@ -591,6 +592,7 @@
         ":Caps_hdr",
         ":CommandBuffer_hdr",
         ":ContextPriv_hdr",
+        ":GlobalCache_hdr",
         ":Gpu_hdr",
         ":GraphicsPipeline_hdr",
         ":ResourceProvider_hdr",
@@ -824,3 +826,20 @@
     visibility = ["//:__subpackages__"],
     deps = [":Sampler_hdr"],
 )
+
+generated_cc_atom(
+    name = "GlobalCache_hdr",
+    hdrs = ["GlobalCache.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkRefCnt_hdr"],
+)
+
+generated_cc_atom(
+    name = "GlobalCache_src",
+    srcs = ["GlobalCache.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":GlobalCache_hdr",
+        "//include/private:SkShaderCodeDictionary_hdr",
+    ],
+)
diff --git a/include/core/BUILD.bazel b/include/core/BUILD.bazel
index 9b32d5a..e7ee356 100644
--- a/include/core/BUILD.bazel
+++ b/include/core/BUILD.bazel
@@ -90,6 +90,7 @@
         ":SkTypes_hdr",
         "//include/private:SkDeque_hdr",
         "//include/private:SkMacros_hdr",
+        "//include/private:SkTOptional_hdr",
     ],
 )
 
@@ -761,12 +762,6 @@
 )
 
 generated_cc_atom(
-    name = "SkStringView_hdr",
-    hdrs = ["SkStringView.h"],
-    visibility = ["//:__subpackages__"],
-)
-
-generated_cc_atom(
     name = "SkString_hdr",
     hdrs = ["SkString.h"],
     visibility = ["//:__subpackages__"],
diff --git a/include/private/BUILD.bazel b/include/private/BUILD.bazel
index 586020e..a195fb5 100644
--- a/include/private/BUILD.bazel
+++ b/include/private/BUILD.bazel
@@ -369,7 +369,6 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLDefines_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/core:SkString_hdr",
     ],
 )
@@ -478,7 +477,6 @@
     name = "SkTOptional_hdr",
     hdrs = ["SkTOptional.h"],
     visibility = ["//:__subpackages__"],
-    deps = ["//include/core:SkTypes_hdr"],
 )
 
 generated_cc_atom(
@@ -570,3 +568,9 @@
         "//include/core:SkTypes_hdr",
     ],
 )
+
+generated_cc_atom(
+    name = "SkStringView_hdr",
+    hdrs = ["SkStringView.h"],
+    visibility = ["//:__subpackages__"],
+)
diff --git a/include/sksl/BUILD.bazel b/include/sksl/BUILD.bazel
index 2d20d6d..c3b5545 100644
--- a/include/sksl/BUILD.bazel
+++ b/include/sksl/BUILD.bazel
@@ -48,7 +48,6 @@
     deps = [
         ":DSLWrapper_hdr",
         ":SkSLErrorReporter_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/core:SkTypes_hdr",
         "//include/private:SkTArray_hdr",
     ],
@@ -116,7 +115,6 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":DSLExpression_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/private:SkSLString_hdr",
     ],
 )
@@ -162,7 +160,6 @@
     hdrs = ["SkSLErrorReporter.h"],
     visibility = ["//:__subpackages__"],
     deps = [
-        "//include/core:SkStringView_hdr",
         "//include/core:SkTypes_hdr",
         "//include/private:SkSLString_hdr",
     ],
diff --git a/modules/canvaskit/BUILD.bazel b/modules/canvaskit/BUILD.bazel
index 4165028..f903d49 100644
--- a/modules/canvaskit/BUILD.bazel
+++ b/modules/canvaskit/BUILD.bazel
@@ -114,6 +114,9 @@
 CK_DEFINES = select({
     ":enable_fonts_true": ["SK_INCLUDE_PARAGRAPH=1"],
     ":enable_fonts_false": ["SK_NO_FONTS"],
+}) + select({
+    ":enable_skottie_true": ["SK_INCLUDE_MANAGED_SKOTTIE=1"],
+    ":enable_skottie_false": [],
 })
 
 CK_OPTS = BASE_LINKOPTS + [
@@ -182,7 +185,14 @@
         "modules/canvaskit/htmlcanvas/postamble.js",
     ],
     ":enable_canvas_polyfill_false": [],
+}) + select({
+    ":enable_skottie_true": [
+        "--pre-js",
+        "modules/canvaskit/skottie.js",
+    ],
+    ":enable_skottie_false": [],
 }) + [
+    # This must come last
     "--pre-js",
     "modules/canvaskit/postamble.js",
 ] + select({
@@ -244,6 +254,9 @@
         "paragraph_bindings_gen.cpp",
     ],
     ":enable_fonts_false": [],
+}) + select({
+    ":enable_skottie_true": ["skottie_bindings.cpp"],
+    ":enable_skottie_false": [],
 })
 
 cc_binary_with_flags(
@@ -289,9 +302,15 @@
         "//:skia_core",
     ] + select({
         ":enable_fonts_true": [
-            "//modules/skparagraph:skparagraph",
+            "//modules/skparagraph",
         ],
         ":enable_fonts_false": [],
+    }) + select({
+        ":enable_skottie_true": [
+            "//modules/skottie",
+            "//modules/skottie:utils",
+        ],
+        ":enable_skottie_false": [],
     }),
 )
 
@@ -316,3 +335,8 @@
     default = True,
     flag_name = "include_embedded_font",
 )
+
+bool_flag(
+    default = True,
+    flag_name = "enable_skottie",
+)
diff --git a/modules/skottie/BUILD.bazel b/modules/skottie/BUILD.bazel
new file mode 100644
index 0000000..4f8734d
--- /dev/null
+++ b/modules/skottie/BUILD.bazel
@@ -0,0 +1,91 @@
+cc_library(
+    name = "skottie",
+    hdrs = ["//modules/skottie/include:hdrs"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/src:Camera_src",
+        "//modules/skottie/src:Composition_src",
+        "//modules/skottie/src:Layer_src",
+        "//modules/skottie/src:Path_src",
+        "//modules/skottie/src:SkottieJson_src",
+        "//modules/skottie/src:SkottieProperty_src",
+        "//modules/skottie/src:Skottie_src",
+        "//modules/skottie/src:Transform_src",
+        "//modules/skottie/src/animator:Animator_src",
+        "//modules/skottie/src/animator:KeyframeAnimator_src",
+        "//modules/skottie/src/animator:ScalarKeyframeAnimator_src",
+        "//modules/skottie/src/animator:ShapeKeyframeAnimator_src",
+        "//modules/skottie/src/animator:TextKeyframeAnimator_src",
+        "//modules/skottie/src/animator:Vec2KeyframeAnimator_src",
+        "//modules/skottie/src/animator:VectorKeyframeAnimator_src",
+        "//modules/skottie/src/effects:BlackAndWhiteEffect_src",
+        "//modules/skottie/src/effects:BrightnessContrastEffect_src",
+        "//modules/skottie/src/effects:BuldgeEffect_src",
+        "//modules/skottie/src/effects:CCTonerEffect_src",
+        "//modules/skottie/src/effects:CornerPinEffect_src",
+        "//modules/skottie/src/effects:DirectionalBlur_src",
+        "//modules/skottie/src/effects:DisplacementMapEffect_src",
+        "//modules/skottie/src/effects:DropShadowEffect_src",
+        "//modules/skottie/src/effects:Effects_src",
+        "//modules/skottie/src/effects:FillEffect_src",
+        "//modules/skottie/src/effects:FractalNoiseEffect_src",
+        "//modules/skottie/src/effects:GaussianBlurEffect_src",
+        "//modules/skottie/src/effects:GlowStyles_src",
+        "//modules/skottie/src/effects:GradientEffect_src",
+        "//modules/skottie/src/effects:HueSaturationEffect_src",
+        "//modules/skottie/src/effects:InvertEffect_src",
+        "//modules/skottie/src/effects:LevelsEffect_src",
+        "//modules/skottie/src/effects:LinearWipeEffect_src",
+        "//modules/skottie/src/effects:MotionBlurEffect_src",
+        "//modules/skottie/src/effects:MotionTileEffect_src",
+        "//modules/skottie/src/effects:RadialWipeEffect_src",
+        "//modules/skottie/src/effects:ShadowStyles_src",
+        "//modules/skottie/src/effects:SharpenEffect_src",
+        "//modules/skottie/src/effects:ShiftChannelsEffect_src",
+        "//modules/skottie/src/effects:SkSLEffect_src",
+        "//modules/skottie/src/effects:SphereEffect_src",
+        "//modules/skottie/src/effects:ThresholdEffect_src",
+        "//modules/skottie/src/effects:TintEffect_src",
+        "//modules/skottie/src/effects:TransformEffect_src",
+        "//modules/skottie/src/effects:TritoneEffect_src",
+        "//modules/skottie/src/effects:VenetianBlindsEffect_src",
+        "//modules/skottie/src/layers:AudioLayer_src",
+        "//modules/skottie/src/layers:FootageLayer_src",
+        "//modules/skottie/src/layers:NullLayer_src",
+        "//modules/skottie/src/layers:PrecompLayer_src",
+        "//modules/skottie/src/layers:SolidLayer_src",
+        "//modules/skottie/src/layers:TextLayer_src",
+        "//modules/skottie/src/layers/shapelayer:Ellipse_src",
+        "//modules/skottie/src/layers/shapelayer:FillStroke_src",
+        "//modules/skottie/src/layers/shapelayer:Gradient_src",
+        "//modules/skottie/src/layers/shapelayer:MergePaths_src",
+        "//modules/skottie/src/layers/shapelayer:OffsetPaths_src",
+        "//modules/skottie/src/layers/shapelayer:Polystar_src",
+        "//modules/skottie/src/layers/shapelayer:PuckerBloat_src",
+        "//modules/skottie/src/layers/shapelayer:Rectangle_src",
+        "//modules/skottie/src/layers/shapelayer:Repeater_src",
+        "//modules/skottie/src/layers/shapelayer:RoundCorners_src",
+        "//modules/skottie/src/layers/shapelayer:ShapeLayer_src",
+        "//modules/skottie/src/layers/shapelayer:TrimPaths_src",
+        "//modules/skottie/src/text:RangeSelector_src",
+        "//modules/skottie/src/text:SkottieShaper_src",
+        "//modules/skottie/src/text:TextAdapter_src",
+        "//modules/skottie/src/text:TextAnimator_src",
+        "//modules/skottie/src/text:TextValue_src",
+        "//modules/skresources",
+        "//modules/sksg",
+        "//modules/skshaper",
+        "//modules/skunicode",
+        "//src/utils:json_srcs",
+    ],
+)
+
+cc_library(
+    name = "utils",
+    hdrs = ["//modules/skottie/utils:hdrs"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":skottie",
+        "//modules/skottie/utils:SkottieUtils_src",
+    ],
+)
diff --git a/modules/skottie/fuzz/BUILD.bazel b/modules/skottie/fuzz/BUILD.bazel
new file mode 100644
index 0000000..6982b72
--- /dev/null
+++ b/modules/skottie/fuzz/BUILD.bazel
@@ -0,0 +1,14 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "FuzzSkottieJSON_src",
+    srcs = ["FuzzSkottieJSON.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkData_hdr",
+        "//include/core:SkStream_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//src/core:SkFontMgrPriv_hdr",
+        "//tools/fonts:TestFontMgr_hdr",
+    ],
+)
diff --git a/modules/skottie/gm/BUILD.bazel b/modules/skottie/gm/BUILD.bazel
new file mode 100644
index 0000000..522c477
--- /dev/null
+++ b/modules/skottie/gm/BUILD.bazel
@@ -0,0 +1,33 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "ExternalProperties_src",
+    srcs = ["ExternalProperties.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//gm:gm_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/utils:SkAnimCodecPlayer_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/utils:SkottieUtils_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//tools:Resources_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieGM_src",
+    srcs = ["SkottieGM.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//gm:gm_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/utils:SkAnimCodecPlayer_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/utils:SkottieUtils_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//tools:Resources_hdr",
+    ],
+)
diff --git a/modules/skottie/include/BUILD.bazel b/modules/skottie/include/BUILD.bazel
new file mode 100644
index 0000000..e31061d
--- /dev/null
+++ b/modules/skottie/include/BUILD.bazel
@@ -0,0 +1,48 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+filegroup(
+    name = "hdrs",
+    srcs = [
+        "ExternalLayer.h",
+        "Skottie.h",
+        "SkottieProperty.h",
+    ],
+    visibility = ["//modules/skottie:__pkg__"],
+)
+
+generated_cc_atom(
+    name = "ExternalLayer_hdr",
+    hdrs = ["ExternalLayer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkRefCnt_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkottieProperty_hdr",
+    hdrs = ["SkottieProperty.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/utils:SkTextUtils_hdr",
+        "//modules/skottie/src/text:SkottieShaper_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Skottie_hdr",
+    hdrs = ["Skottie.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ExternalLayer_hdr",
+        ":SkottieProperty_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSize_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkTypes_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+    ],
+)
diff --git a/modules/skottie/src/BUILD.bazel b/modules/skottie/src/BUILD.bazel
new file mode 100644
index 0000000..1be2828
--- /dev/null
+++ b/modules/skottie/src/BUILD.bazel
@@ -0,0 +1,270 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Adapter_hdr",
+    hdrs = ["Adapter.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/skottie/src/animator:Animator_hdr"],
+)
+
+generated_cc_atom(
+    name = "Camera_hdr",
+    hdrs = ["Camera.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":Transform_hdr"],
+)
+
+generated_cc_atom(
+    name = "Camera_src",
+    srcs = ["Camera.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Camera_hdr",
+        ":SkottieJson_hdr",
+        ":SkottiePriv_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Composition_hdr",
+    hdrs = ["Composition.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Layer_hdr",
+        ":SkottiePriv_hdr",
+        "//include/private:SkTHash_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Composition_src",
+    srcs = ["Composition.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Camera_hdr",
+        ":Composition_hdr",
+        ":SkottieJson_hdr",
+        ":SkottiePriv_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Layer_hdr",
+    hdrs = ["Layer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkottiePriv_hdr"],
+)
+
+generated_cc_atom(
+    name = "Layer_src",
+    srcs = ["Layer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Camera_hdr",
+        ":Composition_hdr",
+        ":Layer_hdr",
+        ":SkottieJson_hdr",
+        "//modules/skottie/src/effects:Effects_hdr",
+        "//modules/skottie/src/effects:MotionBlurEffect_hdr",
+        "//modules/sksg/include:SkSGClipEffect_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGMaskEffect_hdr",
+        "//modules/sksg/include:SkSGMerge_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Path_src",
+    srcs = ["Path.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Adapter_hdr",
+        ":SkottieJson_hdr",
+        ":SkottiePriv_hdr",
+        ":SkottieValue_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieJson_hdr",
+    hdrs = ["SkottieJson.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieJson_src",
+    srcs = ["SkottieJson.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkottieJson_hdr",
+        ":SkottieValue_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkString_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottiePriv_hdr",
+    hdrs = ["SkottiePriv.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkFontStyle_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/private:SkTHash_hdr",
+        "//include/utils:SkCustomTypeface_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+        "//src/utils:SkUTF_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieProperty_src",
+    srcs = ["SkottieProperty.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Transform_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/src/text:TextAdapter_hdr",
+        "//modules/sksg/include:SkSGOpacityEffect_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieTest_src",
+    srcs = ["SkottieTest.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkTextBlob_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/src/text:SkottieShaper_hdr",
+        "//src/core:SkFontDescriptor_hdr",
+        "//src/core:SkTextBlobPriv_hdr",
+        "//tests:Test_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieTool_src",
+    srcs = ["SkottieTool.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//experimental/ffmpeg:SkVideoEncoder_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkGraphics_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/core:SkSurface_hdr",
+        "//include/encode:SkPngEncoder_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/utils:SkottieUtils_hdr",
+        "//modules/skresources/include:SkResources_hdr",
+        "//src/core:SkOSFile_hdr",
+        "//src/core:SkTaskGroup_hdr",
+        "//src/utils:SkOSPath_hdr",
+        "//tools/flags:CommandLineFlags_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieValue_hdr",
+    hdrs = ["SkottieValue.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColor_hdr",
+        "//include/core:SkM44_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Skottie_src",
+    srcs = ["Skottie.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Composition_hdr",
+        ":SkottieJson_hdr",
+        ":SkottiePriv_hdr",
+        ":SkottieValue_hdr",
+        ":Transform_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkImage_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkTArray_hdr",
+        "//include/private:SkTPin_hdr",
+        "//include/private:SkTo_hdr",
+        "//modules/skottie/include:ExternalLayer_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//modules/skottie/src/text:TextAdapter_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//modules/sksg/include:SkSGOpacityEffect_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+        "//src/core:SkTraceEvent_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Transform_hdr",
+    hdrs = ["Transform.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Adapter_hdr",
+        ":SkottieValue_hdr",
+        "//include/core:SkM44_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPoint_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Transform_src",
+    srcs = ["Transform.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkottieJson_hdr",
+        ":SkottiePriv_hdr",
+        ":Transform_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
diff --git a/modules/skottie/src/Skottie.cpp b/modules/skottie/src/Skottie.cpp
index f1e62dd..b073ac2 100644
--- a/modules/skottie/src/Skottie.cpp
+++ b/modules/skottie/src/Skottie.cpp
@@ -38,7 +38,7 @@
 #include <cmath>
 #include <memory>
 
-#include "stdlib.h"
+#include <stdlib.h>
 
 namespace skottie {
 
diff --git a/modules/skottie/src/animator/BUILD.bazel b/modules/skottie/src/animator/BUILD.bazel
new file mode 100644
index 0000000..1c2a813
--- /dev/null
+++ b/modules/skottie/src/animator/BUILD.bazel
@@ -0,0 +1,117 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Animator_hdr",
+    hdrs = ["Animator.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//include/core:SkRefCnt_hdr"],
+)
+
+generated_cc_atom(
+    name = "Animator_src",
+    srcs = ["Animator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Animator_hdr",
+        ":KeyframeAnimator_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "KeyframeAnimator_hdr",
+    hdrs = ["KeyframeAnimator.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Animator_hdr",
+        "//include/core:SkCubicMap_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/private:SkNoncopyable_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "KeyframeAnimator_src",
+    srcs = ["KeyframeAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":KeyframeAnimator_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ScalarKeyframeAnimator_src",
+    srcs = ["ScalarKeyframeAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Animator_hdr",
+        ":KeyframeAnimator_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ShapeKeyframeAnimator_src",
+    srcs = ["ShapeKeyframeAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Animator_hdr",
+        ":VectorKeyframeAnimator_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextKeyframeAnimator_src",
+    srcs = ["TextKeyframeAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":KeyframeAnimator_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/skottie/src/text:TextValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Vec2KeyframeAnimator_src",
+    srcs = ["Vec2KeyframeAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Animator_hdr",
+        ":KeyframeAnimator_hdr",
+        "//include/core:SkContourMeasure_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VectorKeyframeAnimator_hdr",
+    hdrs = ["VectorKeyframeAnimator.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":KeyframeAnimator_hdr"],
+)
+
+generated_cc_atom(
+    name = "VectorKeyframeAnimator_src",
+    srcs = ["VectorKeyframeAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Animator_hdr",
+        ":VectorKeyframeAnimator_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkNx_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//src/core:SkSafeMath_hdr",
+    ],
+)
diff --git a/modules/skottie/src/effects/BUILD.bazel b/modules/skottie/src/effects/BUILD.bazel
new file mode 100644
index 0000000..25f2990
--- /dev/null
+++ b/modules/skottie/src/effects/BUILD.bazel
@@ -0,0 +1,480 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "BlackAndWhiteEffect_src",
+    srcs = ["BlackAndWhiteEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BrightnessContrastEffect_src",
+    srcs = ["BrightnessContrastEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "BuldgeEffect_src",
+    srcs = ["BuldgeEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/private:SkNx_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CCTonerEffect_src",
+    srcs = ["CCTonerEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/private:SkNx_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "CornerPinEffect_src",
+    srcs = ["CornerPinEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DirectionalBlur_src",
+    srcs = ["DirectionalBlur.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DisplacementMapEffect_src",
+    srcs = ["DisplacementMapEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/effects:SkColorMatrix_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/private:SkColorData_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "DropShadowEffect_src",
+    srcs = ["DropShadowEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Effects_hdr",
+    hdrs = ["Effects.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/src:Composition_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Effects_src",
+    srcs = ["Effects.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:Composition_hdr",
+        "//modules/skottie/src:Layer_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "FillEffect_src",
+    srcs = ["FillEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "FractalNoiseEffect_src",
+    srcs = ["FractalNoiseEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/utils:SkRandom_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GaussianBlurEffect_src",
+    srcs = ["GaussianBlurEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GlowStyles_src",
+    srcs = ["GlowStyles.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkColorMatrix_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "GradientEffect_src",
+    srcs = ["GradientEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGradient_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "HueSaturationEffect_src",
+    srcs = ["HueSaturationEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "InvertEffect_src",
+    srcs = ["InvertEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkColorMatrix_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "LevelsEffect_src",
+    srcs = ["LevelsEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkTableColorFilter_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "LinearWipeEffect_src",
+    srcs = ["LinearWipeEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkGradientShader_hdr",
+        "//include/effects:SkShaderMaskFilter_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MotionBlurEffect_hdr",
+    hdrs = ["MotionBlurEffect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MotionBlurEffect_src",
+    srcs = ["MotionBlurEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":MotionBlurEffect_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkMath_hdr",
+        "//include/core:SkPixmap_hdr",
+        "//include/private:SkVx_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//src/core:SkMathPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MotionTileEffect_src",
+    srcs = ["MotionTileEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/core:SkShader_hdr",
+        "//include/effects:SkGradientShader_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RadialWipeEffect_src",
+    srcs = ["RadialWipeEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/effects:SkGradientShader_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ShadowStyles_src",
+    srcs = ["ShadowStyles.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkColorMatrix_hdr",
+        "//include/effects:SkImageFilters_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SharpenEffect_src",
+    srcs = ["SharpenEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ShiftChannelsEffect_src",
+    srcs = ["ShiftChannelsEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/private:SkColorData_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSLEffect_src",
+    srcs = ["SkSLEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//include/private:SkMalloc_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SphereEffect_src",
+    srcs = ["SphereEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/core:SkM44_hdr",
+        "//include/core:SkPictureRecorder_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ThresholdEffect_src",
+    srcs = ["ThresholdEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkRuntimeEffect_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TintEffect_src",
+    srcs = ["TintEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TransformEffect_src",
+    srcs = ["TransformEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:Transform_hdr",
+        "//modules/sksg/include:SkSGOpacityEffect_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TritoneEffect_src",
+    srcs = ["TritoneEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "VenetianBlindsEffect_src",
+    srcs = ["VenetianBlindsEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":Effects_hdr",
+        "//include/effects:SkGradientShader_hdr",
+        "//include/effects:SkShaderMaskFilter_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
diff --git a/modules/skottie/src/layers/BUILD.bazel b/modules/skottie/src/layers/BUILD.bazel
new file mode 100644
index 0000000..a105299
--- /dev/null
+++ b/modules/skottie/src/layers/BUILD.bazel
@@ -0,0 +1,92 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "AudioLayer_src",
+    srcs = ["AudioLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "FootageLayer_src",
+    srcs = ["FootageLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkImage_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/sksg/include:SkSGImage_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "NullLayer_src",
+    srcs = ["NullLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "PrecompLayer_src",
+    srcs = ["PrecompLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/include:ExternalLayer_hdr",
+        "//modules/skottie/src:Composition_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+        "//src/core:SkTLazy_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SolidLayer_src",
+    srcs = ["SolidLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/utils:SkParse_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextLayer_src",
+    srcs = ["TextLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkData_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkTypes_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src/text:TextAdapter_hdr",
+        "//modules/skottie/src/text:TextAnimator_hdr",
+        "//modules/skottie/src/text:TextValue_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//modules/sksg/include:SkSGText_hdr",
+        "//src/core:SkTSearch_hdr",
+    ],
+)
diff --git a/modules/skottie/src/layers/shapelayer/BUILD.bazel b/modules/skottie/src/layers/shapelayer/BUILD.bazel
new file mode 100644
index 0000000..13f76de
--- /dev/null
+++ b/modules/skottie/src/layers/shapelayer/BUILD.bazel
@@ -0,0 +1,200 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "Ellipse_src",
+    srcs = ["Ellipse.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/core:SkRRect_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "FillStroke_src",
+    srcs = ["FillStroke.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Gradient_src",
+    srcs = ["Gradient.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGradient_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "MergePaths_src",
+    srcs = ["MergePaths.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "OffsetPaths_src",
+    srcs = ["OffsetPaths.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Polystar_src",
+    srcs = ["Polystar.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "PuckerBloat_src",
+    srcs = ["PuckerBloat.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/core:SkM44_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+        "//src/core:SkGeometry_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Rectangle_src",
+    srcs = ["Rectangle.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/core:SkRRect_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Repeater_src",
+    srcs = ["Repeater.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RoundCorners_src",
+    srcs = ["RoundCorners.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ShapeLayer_hdr",
+    hdrs = ["ShapeLayer.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkNoncopyable_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//modules/sksg/include:SkSGMerge_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "ShapeLayer_src",
+    srcs = ["ShapeLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//include/core:SkPath_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGMerge_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TrimPaths_src",
+    srcs = ["TrimPaths.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":ShapeLayer_hdr",
+        "//modules/skottie/src:Adapter_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+        "//modules/sksg/include:SkSGMerge_hdr",
+    ],
+)
diff --git a/modules/skottie/src/text/BUILD.bazel b/modules/skottie/src/text/BUILD.bazel
new file mode 100644
index 0000000..1b51f02
--- /dev/null
+++ b/modules/skottie/src/text/BUILD.bazel
@@ -0,0 +1,139 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "RangeSelector_hdr",
+    hdrs = ["RangeSelector.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TextAnimator_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "RangeSelector_src",
+    srcs = ["RangeSelector.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":RangeSelector_hdr",
+        "//include/core:SkCubicMap_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieShaper_hdr",
+    hdrs = ["SkottieShaper.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPoint_hdr",
+        "//include/utils:SkTextUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieShaper_src",
+    srcs = ["SkottieShaper.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkottieShaper_hdr",
+        "//include/core:SkFontMetrics_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkTextBlob_hdr",
+        "//include/private:SkTPin_hdr",
+        "//include/private:SkTemplates_hdr",
+        "//modules/skshaper/include:SkShaper_hdr",
+        "//modules/skunicode/include:SkUnicode_hdr",
+        "//src/core:SkTLazy_hdr",
+        "//src/core:SkTextBlobPriv_hdr",
+        "//src/utils:SkUTF_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextAdapter_hdr",
+    hdrs = ["TextAdapter.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkottieShaper_hdr",
+        ":TextAnimator_hdr",
+        ":TextValue_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextAdapter_src",
+    srcs = ["TextAdapter.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":RangeSelector_hdr",
+        ":TextAdapter_hdr",
+        ":TextAnimator_hdr",
+        "//include/core:SkContourMeasure_hdr",
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkM44_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//modules/sksg/include:SkSGText_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextAnimator_hdr",
+    hdrs = ["TextAnimator.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkM44_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextAnimator_src",
+    srcs = ["TextAnimator.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":RangeSelector_hdr",
+        ":TextAnimator_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/private:SkNx_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//src/utils:SkJSON_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "TextValue_hdr",
+    hdrs = ["TextValue.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/skottie/include:SkottieProperty_hdr"],
+)
+
+generated_cc_atom(
+    name = "TextValue_src",
+    srcs = ["TextValue.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":TextValue_hdr",
+        "//modules/skottie/src:SkottieJson_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+    ],
+)
diff --git a/modules/skottie/tests/BUILD.bazel b/modules/skottie/tests/BUILD.bazel
new file mode 100644
index 0000000..7b252a0
--- /dev/null
+++ b/modules/skottie/tests/BUILD.bazel
@@ -0,0 +1,61 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "AudioLayer_src",
+    srcs = ["AudioLayer.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/include:Skottie_hdr",
+        "//tests:Test_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Expression_src",
+    srcs = ["Expression.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//tests:Test_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Image_src",
+    srcs = ["Image.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkSurface_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//tests:Test_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Keyframe_src",
+    srcs = ["Keyframe.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/include:ExternalLayer_hdr",
+        "//modules/skottie/src:SkottiePriv_hdr",
+        "//modules/skottie/src:SkottieValue_hdr",
+        "//modules/skottie/src/animator:Animator_hdr",
+        "//src/utils:SkJSON_hdr",
+        "//tests:Test_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "Text_src",
+    srcs = ["Text.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkFontMgr_hdr",
+        "//include/core:SkFontStyle_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+        "//tests:Test_hdr",
+        "//tools:ToolUtils_hdr",
+    ],
+)
diff --git a/modules/skottie/utils/BUILD.bazel b/modules/skottie/utils/BUILD.bazel
new file mode 100644
index 0000000..c26dda8
--- /dev/null
+++ b/modules/skottie/utils/BUILD.bazel
@@ -0,0 +1,27 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+filegroup(
+    name = "hdrs",
+    srcs = [
+        "SkottieUtils.h",
+    ],
+    visibility = ["//modules/skottie:__pkg__"],
+)
+
+generated_cc_atom(
+    name = "SkottieUtils_hdr",
+    hdrs = ["SkottieUtils.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skottie/include:ExternalLayer_hdr",
+        "//modules/skottie/include:SkottieProperty_hdr",
+        "//modules/skottie/include:Skottie_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkottieUtils_src",
+    srcs = ["SkottieUtils.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkottieUtils_hdr"],
+)
diff --git a/modules/skresources/BUILD.bazel b/modules/skresources/BUILD.bazel
new file mode 100644
index 0000000..156af07
--- /dev/null
+++ b/modules/skresources/BUILD.bazel
@@ -0,0 +1,8 @@
+cc_library(
+    name = "skresources",
+    hdrs = ["//modules/skresources/include:hdrs"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/skresources/src:SkResources_src",
+    ],
+)
diff --git a/modules/skresources/include/BUILD.bazel b/modules/skresources/include/BUILD.bazel
index 4d86f39..8963fdb 100644
--- a/modules/skresources/include/BUILD.bazel
+++ b/modules/skresources/include/BUILD.bazel
@@ -1,5 +1,11 @@
 load("//bazel:macros.bzl", "generated_cc_atom")
 
+filegroup(
+    name = "hdrs",
+    srcs = ["SkResources.h"],
+    visibility = ["//modules/skresources:__pkg__"],
+)
+
 generated_cc_atom(
     name = "SkResources_hdr",
     hdrs = ["SkResources.h"],
diff --git a/modules/sksg/BUILD.bazel b/modules/sksg/BUILD.bazel
new file mode 100644
index 0000000..36b2528
--- /dev/null
+++ b/modules/sksg/BUILD.bazel
@@ -0,0 +1,30 @@
+cc_library(
+    name = "sksg",
+    hdrs = ["//modules/sksg/include:hdrs"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/sksg/src:SkSGClipEffect_src",
+        "//modules/sksg/src:SkSGColorFilter_src",
+        "//modules/sksg/src:SkSGDraw_src",
+        "//modules/sksg/src:SkSGEffectNode_src",
+        "//modules/sksg/src:SkSGGeometryEffect_src",
+        "//modules/sksg/src:SkSGGeometryNode_src",
+        "//modules/sksg/src:SkSGGradient_src",
+        "//modules/sksg/src:SkSGGroup_src",
+        "//modules/sksg/src:SkSGImage_src",
+        "//modules/sksg/src:SkSGInvalidationController_src",
+        "//modules/sksg/src:SkSGMaskEffect_src",
+        "//modules/sksg/src:SkSGMerge_src",
+        "//modules/sksg/src:SkSGNode_src",
+        "//modules/sksg/src:SkSGOpacityEffect_src",
+        "//modules/sksg/src:SkSGPaint_src",
+        "//modules/sksg/src:SkSGPath_src",
+        "//modules/sksg/src:SkSGPlane_src",
+        "//modules/sksg/src:SkSGRect_src",
+        "//modules/sksg/src:SkSGRenderEffect_src",
+        "//modules/sksg/src:SkSGRenderNode_src",
+        "//modules/sksg/src:SkSGScene_src",
+        "//modules/sksg/src:SkSGText_src",
+        "//modules/sksg/src:SkSGTransform_src",
+    ],
+)
diff --git a/modules/sksg/include/BUILD.bazel b/modules/sksg/include/BUILD.bazel
new file mode 100644
index 0000000..9af7e81
--- /dev/null
+++ b/modules/sksg/include/BUILD.bazel
@@ -0,0 +1,255 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+filegroup(
+    name = "hdrs",
+    srcs = [
+        "SkSGClipEffect.h",
+        "SkSGColorFilter.h",
+        "SkSGDraw.h",
+        "SkSGEffectNode.h",
+        "SkSGGeometryEffect.h",
+        "SkSGGeometryNode.h",
+        "SkSGGradient.h",
+        "SkSGGroup.h",
+        "SkSGImage.h",
+        "SkSGInvalidationController.h",
+        "SkSGMaskEffect.h",
+        "SkSGMerge.h",
+        "SkSGNode.h",
+        "SkSGOpacityEffect.h",
+        "SkSGPaint.h",
+        "SkSGPath.h",
+        "SkSGPlane.h",
+        "SkSGRect.h",
+        "SkSGRenderEffect.h",
+        "SkSGRenderNode.h",
+        "SkSGScene.h",
+        "SkSGText.h",
+        "SkSGTransform.h",
+    ],
+    visibility = ["//modules/sksg:__pkg__"],
+)
+
+generated_cc_atom(
+    name = "SkSGClipEffect_hdr",
+    hdrs = ["SkSGClipEffect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGEffectNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGColorFilter_hdr",
+    hdrs = ["SkSGColorFilter.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGEffectNode_hdr",
+        "//include/core:SkBlendMode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGDraw_hdr",
+    hdrs = ["SkSGDraw.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGGeometryNode_hdr",
+        ":SkSGPaint_hdr",
+        ":SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGEffectNode_hdr",
+    hdrs = ["SkSGEffectNode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGRenderNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGGeometryEffect_hdr",
+    hdrs = ["SkSGGeometryEffect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGGeometryNode_hdr",
+        ":SkSGTransform_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/effects:SkTrimPathEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGGeometryNode_hdr",
+    hdrs = ["SkSGGeometryNode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGGradient_hdr",
+    hdrs = ["SkSGGradient.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGRenderEffect_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkScalar_hdr",
+        "//include/core:SkShader_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGGroup_hdr",
+    hdrs = ["SkSGGroup.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGRenderNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGImage_hdr",
+    hdrs = ["SkSGImage.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGRenderNode_hdr",
+        "//include/core:SkSamplingOptions_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGInvalidationController_hdr",
+    hdrs = ["SkSGInvalidationController.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGMaskEffect_hdr",
+    hdrs = ["SkSGMaskEffect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGEffectNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGMerge_hdr",
+    hdrs = ["SkSGMerge.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGGeometryNode_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGNode_hdr",
+    hdrs = ["SkSGNode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRect_hdr",
+        "//include/core:SkRefCnt_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGOpacityEffect_hdr",
+    hdrs = ["SkSGOpacityEffect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGEffectNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGPaint_hdr",
+    hdrs = ["SkSGPaint.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGNode_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/core:SkPaint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGPath_hdr",
+    hdrs = ["SkSGPath.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGGeometryNode_hdr",
+        "//include/core:SkPath_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGPlane_hdr",
+    hdrs = ["SkSGPlane.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGGeometryNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGRect_hdr",
+    hdrs = ["SkSGRect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGGeometryNode_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkRRect_hdr",
+        "//include/core:SkRect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGRenderEffect_hdr",
+    hdrs = ["SkSGRenderEffect.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGEffectNode_hdr",
+        "//include/core:SkBlendMode_hdr",
+        "//include/core:SkColor_hdr",
+        "//include/effects:SkImageFilters_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGRenderNode_hdr",
+    hdrs = ["SkSGRenderNode.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGNode_hdr",
+        "//include/core:SkBlendMode_hdr",
+        "//include/core:SkColorFilter_hdr",
+        "//include/core:SkShader_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGScene_hdr",
+    hdrs = ["SkSGScene.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkTypes_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGText_hdr",
+    hdrs = ["SkSGText.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGGeometryNode_hdr",
+        "//include/core:SkFont_hdr",
+        "//include/core:SkPoint_hdr",
+        "//include/core:SkString_hdr",
+        "//include/core:SkTextBlob_hdr",
+        "//include/utils:SkTextUtils_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGTransform_hdr",
+    hdrs = ["SkSGTransform.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkSGEffectNode_hdr"],
+)
diff --git a/modules/sksg/samples/BUILD.bazel b/modules/sksg/samples/BUILD.bazel
new file mode 100644
index 0000000..a96eec0
--- /dev/null
+++ b/modules/sksg/samples/BUILD.bazel
@@ -0,0 +1,24 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SampleSVGPong_src",
+    srcs = ["SampleSVGPong.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPathBuilder_hdr",
+        "//include/core:SkRRect_hdr",
+        "//include/private:SkTPin_hdr",
+        "//include/utils:SkRandom_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+        "//samplecode:Sample_hdr",
+        "//tools/timer:TimeUtils_hdr",
+    ],
+)
diff --git a/modules/sksg/src/BUILD.bazel b/modules/sksg/src/BUILD.bazel
new file mode 100644
index 0000000..6f6f52b
--- /dev/null
+++ b/modules/sksg/src/BUILD.bazel
@@ -0,0 +1,287 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SkSGClipEffect_src",
+    srcs = ["SkSGClipEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPath_hdr",
+        "//modules/sksg/include:SkSGClipEffect_hdr",
+        "//modules/sksg/include:SkSGGeometryNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGColorFilter_src",
+    srcs = ["SkSGColorFilter.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkColorFilter_hdr",
+        "//include/effects:SkTableColorFilter_hdr",
+        "//include/private:SkColorData_hdr",
+        "//modules/sksg/include:SkSGColorFilter_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGDraw_src",
+    srcs = ["SkSGDraw.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPath_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGeometryNode_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGEffectNode_src",
+    srcs = ["SkSGEffectNode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/sksg/include:SkSGEffectNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGGeometryEffect_src",
+    srcs = ["SkSGGeometryEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGTransformPriv_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkStrokeRec_hdr",
+        "//include/effects:SkCornerPathEffect_hdr",
+        "//include/effects:SkDashPathEffect_hdr",
+        "//include/effects:SkTrimPathEffect_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//modules/sksg/include:SkSGGeometryEffect_hdr",
+        "//src/core:SkPathEffectBase_hdr",
+        "//src/core:SkPathPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGGeometryNode_src",
+    srcs = ["SkSGGeometryNode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPath_hdr",
+        "//modules/sksg/include:SkSGGeometryNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGGradient_src",
+    srcs = ["SkSGGradient.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkPaint_hdr",
+        "//include/effects:SkGradientShader_hdr",
+        "//include/private:SkTPin_hdr",
+        "//modules/sksg/include:SkSGGradient_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGGroup_src",
+    srcs = ["SkSGGroup.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGImage_src",
+    srcs = ["SkSGImage.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkImage_hdr",
+        "//modules/sksg/include:SkSGImage_hdr",
+        "//src/core:SkPaintPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGInvalidationController_src",
+    srcs = ["SkSGInvalidationController.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRect_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//src/core:SkTLazy_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGMaskEffect_src",
+    srcs = ["SkSGMaskEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/effects:SkLumaColorFilter_hdr",
+        "//modules/sksg/include:SkSGMaskEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGMerge_src",
+    srcs = ["SkSGMerge.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/pathops:SkPathOps_hdr",
+        "//modules/sksg/include:SkSGMerge_hdr",
+        "//src/core:SkPathPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGNodePriv_hdr",
+    hdrs = ["SkSGNodePriv.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/sksg/include:SkSGNode_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGNode_src",
+    srcs = ["SkSGNode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//modules/sksg/include:SkSGNode_hdr",
+        "//src/core:SkRectPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGOpacityEffect_src",
+    srcs = ["SkSGOpacityEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/sksg/include:SkSGOpacityEffect_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGPaint_src",
+    srcs = ["SkSGPaint.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/private:SkTPin_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGPath_src",
+    srcs = ["SkSGPath.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPaint_hdr",
+        "//modules/sksg/include:SkSGPath_hdr",
+        "//src/core:SkRectPriv_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGPlane_src",
+    srcs = ["SkSGPlane.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPath_hdr",
+        "//modules/sksg/include:SkSGPlane_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGRect_src",
+    srcs = ["SkSGRect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPath_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGRenderEffect_src",
+    srcs = ["SkSGRenderEffect.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkMaskFilter_hdr",
+        "//include/core:SkShader_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//src/core:SkMaskFilterBase_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGRenderNode_src",
+    srcs = ["SkSGRenderNode.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGNodePriv_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkImageFilter_hdr",
+        "//include/core:SkPaint_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGScene_src",
+    srcs = ["SkSGScene.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkMatrix_hdr",
+        "//include/core:SkPaint_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//modules/sksg/include:SkSGRenderNode_hdr",
+        "//modules/sksg/include:SkSGScene_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGText_src",
+    srcs = ["SkSGText.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkCanvas_hdr",
+        "//include/core:SkPaint_hdr",
+        "//include/core:SkPath_hdr",
+        "//include/core:SkTypeface_hdr",
+        "//include/private:SkTArray_hdr",
+        "//modules/sksg/include:SkSGText_hdr",
+    ],
+)
+
+generated_cc_atom(
+    name = "SkSGTransformPriv_hdr",
+    hdrs = ["SkSGTransformPriv.h"],
+    visibility = ["//:__subpackages__"],
+    deps = ["//modules/sksg/include:SkSGTransform_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkSGTransform_src",
+    srcs = ["SkSGTransform.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkSGTransformPriv_hdr",
+        "//include/core:SkCanvas_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+    ],
+)
diff --git a/modules/sksg/tests/BUILD.bazel b/modules/sksg/tests/BUILD.bazel
new file mode 100644
index 0000000..b8b9584
--- /dev/null
+++ b/modules/sksg/tests/BUILD.bazel
@@ -0,0 +1,21 @@
+load("//bazel:macros.bzl", "generated_cc_atom")
+
+generated_cc_atom(
+    name = "SGTest_src",
+    srcs = ["SGTest.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//include/core:SkRect_hdr",
+        "//include/core:SkTypes_hdr",
+        "//include/private:SkTo_hdr",
+        "//modules/sksg/include:SkSGDraw_hdr",
+        "//modules/sksg/include:SkSGGroup_hdr",
+        "//modules/sksg/include:SkSGInvalidationController_hdr",
+        "//modules/sksg/include:SkSGPaint_hdr",
+        "//modules/sksg/include:SkSGRect_hdr",
+        "//modules/sksg/include:SkSGRenderEffect_hdr",
+        "//modules/sksg/include:SkSGTransform_hdr",
+        "//src/core:SkRectPriv_hdr",
+        "//tests:Test_hdr",
+    ],
+)
diff --git a/src/codec/BUILD.bazel b/src/codec/BUILD.bazel
index 2f5d2a2..cfe561c 100644
--- a/src/codec/BUILD.bazel
+++ b/src/codec/BUILD.bazel
@@ -309,6 +309,7 @@
         ":SkHeifCodec_hdr",
         ":SkIcoCodec_hdr",
         ":SkJpegCodec_hdr",
+        ":SkJpegxlCodec_hdr",
         ":SkPngCodec_hdr",
         ":SkRawCodec_hdr",
         ":SkWbmpCodec_hdr",
@@ -853,3 +854,34 @@
         "//third_party:wuffs",
     ],
 )
+
+generated_cc_atom(
+    name = "SkJpegxlCodec_hdr",
+    hdrs = ["SkJpegxlCodec.h"],
+    visibility = ["//:__subpackages__"],
+    deps = [":SkScalingCodec_hdr"],
+)
+
+generated_cc_atom(
+    name = "SkJpegxlCodec_src",
+    srcs = ["SkJpegxlCodec.cpp"],
+    visibility = ["//:__subpackages__"],
+    deps = [
+        ":SkFrameHolder_hdr",
+        ":SkJpegxlCodec_hdr",
+        ":SkSampler_hdr",
+        "//include/codec:SkEncodedOrigin_hdr",
+        "//include/core:SkData_hdr",
+        "//include/core:SkEncodedImageFormat_hdr",
+        "//include/core:SkImageInfo_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkStream_hdr",
+        "//include/private:SkEncodedInfo_hdr",
+        "//include/private:SkTFitsIn_hdr",
+        "//include/private:SkTo_hdr",
+        "//jxl:decode_cxx_hdr",
+        "//jxl:decode_hdr",
+        "//src/core:SkOpts_hdr",
+        "//src/core:SkStreamPriv_hdr",
+    ],
+)
diff --git a/src/core/BUILD.bazel b/src/core/BUILD.bazel
index c3f9112..99584f5 100644
--- a/src/core/BUILD.bazel
+++ b/src/core/BUILD.bazel
@@ -176,7 +176,6 @@
         ":SkStrikeForGPU_src",
         ":SkStrikeSpec_src",
         ":SkStringUtils_src",
-        ":SkStringView_src",
         ":SkString_src",
         ":SkStrokeRec_src",
         ":SkStroke_src",
@@ -1864,7 +1863,6 @@
     name = "SkEnumerate_hdr",
     hdrs = ["SkEnumerate.h"],
     visibility = ["//:__subpackages__"],
-    deps = ["//include/private:SkTLogic_hdr"],
 )
 
 generated_cc_atom(
@@ -4729,20 +4727,12 @@
 )
 
 generated_cc_atom(
-    name = "SkStringView_src",
-    srcs = ["SkStringView.cpp"],
-    visibility = ["//:__subpackages__"],
-    deps = ["//include/core:SkStringView_hdr"],
-)
-
-generated_cc_atom(
     name = "SkString_src",
     srcs = ["SkString.cpp"],
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSafeMath_hdr",
         ":SkUtils_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/core:SkString_hdr",
         "//include/private:SkTPin_hdr",
         "//include/private:SkTo_hdr",
@@ -5167,6 +5157,7 @@
         ":SkArenaAlloc_hdr",
         ":SkBlitter_hdr",
         ":SkLRUCache_hdr",
+        ":SkTLazy_hdr",
         ":SkVM_hdr",
     ],
 )
@@ -5587,6 +5578,9 @@
     deps = [
         ":SkDebugUtils_hdr",
         ":SkKeyHelpers_hdr",
+        ":SkUniformData_hdr",
+        ":SkUniform_hdr",
+        "//experimental/graphite/src:UniformManager_hdr",
         "//include/private:SkPaintParamsKey_hdr",
         "//src/shaders:SkShaderBase_hdr",
     ],
@@ -5623,14 +5617,21 @@
     name = "SkUniformData_hdr",
     hdrs = ["SkUniformData.h"],
     visibility = ["//:__subpackages__"],
-    deps = ["//include/core:SkRefCnt_hdr"],
+    deps = [
+        ":SkUniform_hdr",
+        "//include/core:SkRefCnt_hdr",
+        "//include/core:SkSpan_hdr",
+    ],
 )
 
 generated_cc_atom(
     name = "SkUniformData_src",
     srcs = ["SkUniformData.cpp"],
     visibility = ["//:__subpackages__"],
-    deps = [":SkUniformData_hdr"],
+    deps = [
+        ":SkOpts_hdr",
+        ":SkUniformData_hdr",
+    ],
 )
 
 generated_cc_atom(
diff --git a/src/shaders/BUILD.bazel b/src/shaders/BUILD.bazel
index b9d2a23..3e2d1f3 100644
--- a/src/shaders/BUILD.bazel
+++ b/src/shaders/BUILD.bazel
@@ -92,6 +92,7 @@
         "//src/core:SkArenaAlloc_hdr",
         "//src/core:SkColorSpacePriv_hdr",
         "//src/core:SkColorSpaceXformSteps_hdr",
+        "//src/core:SkKeyHelpers_hdr",
         "//src/core:SkRasterPipeline_hdr",
         "//src/core:SkReadBuffer_hdr",
         "//src/core:SkUtils_hdr",
diff --git a/src/shaders/gradients/BUILD.bazel b/src/shaders/gradients/BUILD.bazel
index b7f2b5b..ad50bbe 100644
--- a/src/shaders/gradients/BUILD.bazel
+++ b/src/shaders/gradients/BUILD.bazel
@@ -114,6 +114,7 @@
     deps = [
         ":Sk4fLinearGradient_hdr",
         ":SkLinearGradient_hdr",
+        "//src/core:SkKeyHelpers_hdr",
         "//src/core:SkReadBuffer_hdr",
         "//src/core:SkWriteBuffer_hdr",
         "//src/gpu/gradients:GrGradientShader_hdr",
@@ -133,6 +134,7 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkRadialGradient_hdr",
+        "//src/core:SkKeyHelpers_hdr",
         "//src/core:SkRasterPipeline_hdr",
         "//src/core:SkReadBuffer_hdr",
         "//src/core:SkWriteBuffer_hdr",
@@ -154,6 +156,7 @@
     deps = [
         ":SkSweepGradient_hdr",
         "//include/private:SkFloatingPoint_hdr",
+        "//src/core:SkKeyHelpers_hdr",
         "//src/core:SkRasterPipeline_hdr",
         "//src/core:SkReadBuffer_hdr",
         "//src/core:SkWriteBuffer_hdr",
@@ -175,6 +178,7 @@
     deps = [
         ":SkTwoPointConicalGradient_hdr",
         "//include/private:SkFloatingPoint_hdr",
+        "//src/core:SkKeyHelpers_hdr",
         "//src/core:SkRasterPipeline_hdr",
         "//src/core:SkReadBuffer_hdr",
         "//src/core:SkWriteBuffer_hdr",
diff --git a/src/sksl/BUILD.bazel b/src/sksl/BUILD.bazel
index 9cbee15..f9a726f 100644
--- a/src/sksl/BUILD.bazel
+++ b/src/sksl/BUILD.bazel
@@ -330,7 +330,6 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLLexer_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/private:SkSLProgramKind_hdr",
         "//include/private:SkTOptional_hdr",
         "//include/sksl:DSLSymbols_hdr",
@@ -428,6 +427,7 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLCompiler_hdr",
+        "//include/private:SkStringView_hdr",
         "//include/sksl:SkSLErrorReporter_hdr",
         "//src/sksl/dsl/priv:DSLWriter_hdr",
     ],
@@ -525,7 +525,6 @@
     name = "SkSLLexer_hdr",
     hdrs = ["SkSLLexer.h"],
     visibility = ["//:__subpackages__"],
-    deps = ["//include/core:SkStringView_hdr"],
 )
 
 generated_cc_atom(
@@ -547,6 +546,7 @@
         ":SkSLUtil_hdr",
         "//include/core:SkGraphics_hdr",
         "//include/core:SkStream_hdr",
+        "//include/private:SkStringView_hdr",
         "//include/private:SkTOptional_hdr",
         "//src/core:SkCpu_hdr",
         "//src/core:SkOpts_hdr",
@@ -575,6 +575,7 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLMangler_hdr",
+        "//include/private:SkStringView_hdr",
         "//src/sksl/ir:SkSLSymbolTable_hdr",
     ],
 )
@@ -609,7 +610,6 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLLexer_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/private:SkSLDefines_hdr",
     ],
 )
@@ -623,6 +623,7 @@
         ":SkSLOperators_hdr",
         ":SkSLProgramSettings_hdr",
         "//include/core:SkTypes_hdr",
+        "//include/private:SkStringView_hdr",
         "//src/sksl/ir:SkSLType_hdr",
     ],
 )
@@ -686,6 +687,7 @@
         "//include/private:SkSLDefines_hdr",
         "//include/private:SkSLModifiers_hdr",
         "//include/private:SkSLSymbol_hdr",
+        "//src/sksl/ir:SkSLProgram_hdr",
     ],
 )
 
@@ -695,6 +697,7 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLAnalysis_hdr",
+        ":SkSLCompiler_hdr",
         ":SkSLRehydrator_hdr",
         "//include/private:SkSLModifiers_hdr",
         "//include/private:SkSLProgramElement_hdr",
@@ -779,7 +782,6 @@
     visibility = ["//:__subpackages__"],
     deps = [
         ":SkSLMangler_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/private:SkSLModifiers_hdr",
         "//src/gpu:GrFragmentProcessor_hdr",
         "//src/sksl/ir:SkSLProgram_hdr",
diff --git a/src/sksl/dsl/priv/BUILD.bazel b/src/sksl/dsl/priv/BUILD.bazel
index 1bcf836..cb6ce11 100644
--- a/src/sksl/dsl/priv/BUILD.bazel
+++ b/src/sksl/dsl/priv/BUILD.bazel
@@ -27,7 +27,6 @@
     hdrs = ["DSLWriter.h"],
     visibility = ["//:__subpackages__"],
     deps = [
-        "//include/core:SkStringView_hdr",
         "//include/core:SkTypes_hdr",
         "//src/gpu:GrFragmentProcessor_hdr",
         "//src/gpu/glsl:GrGLSLFragmentShaderBuilder_hdr",
diff --git a/src/sksl/ir/BUILD.bazel b/src/sksl/ir/BUILD.bazel
index 92edf1e..4cfec33 100644
--- a/src/sksl/ir/BUILD.bazel
+++ b/src/sksl/ir/BUILD.bazel
@@ -582,6 +582,7 @@
     deps = [
         ":SkSLFunctionDeclaration_hdr",
         ":SkSLUnresolvedFunction_hdr",
+        "//include/private:SkStringView_hdr",
         "//src/sksl:SkSLCompiler_hdr",
     ],
 )
@@ -715,7 +716,6 @@
     deps = [
         ":SkSLSymbolTable_hdr",
         ":SkSLVarDeclarations_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/private:SkSLProgramElement_hdr",
     ],
 )
@@ -1040,7 +1040,6 @@
     hdrs = ["SkSLType.h"],
     visibility = ["//:__subpackages__"],
     deps = [
-        "//include/core:SkStringView_hdr",
         "//include/private:SkSLModifiers_hdr",
         "//include/private:SkSLSymbol_hdr",
         "//src/sksl:SkSLUtil_hdr",
@@ -1060,6 +1059,8 @@
         ":SkSLProgram_hdr",
         ":SkSLSymbolTable_hdr",
         ":SkSLType_hdr",
+        "//include/private:SkStringView_hdr",
+        "//include/private:SkTOptional_hdr",
         "//src/sksl:SkSLConstantFolder_hdr",
         "//src/sksl:SkSLContext_hdr",
         "//src/sksl:SkSLProgramSettings_hdr",
@@ -1141,6 +1142,7 @@
         ":SkSLSymbolTable_hdr",
         ":SkSLVarDeclarations_hdr",
         ":SkSLVariable_hdr",
+        "//include/private:SkStringView_hdr",
         "//src/sksl:SkSLCompiler_hdr",
         "//src/sksl:SkSLContext_hdr",
         "//src/sksl:SkSLMangler_hdr",
diff --git a/src/utils/BUILD.bazel b/src/utils/BUILD.bazel
index 690041c..c4d2849 100644
--- a/src/utils/BUILD.bazel
+++ b/src/utils/BUILD.bazel
@@ -271,7 +271,6 @@
     hdrs = ["SkJSON.h"],
     visibility = ["//:__subpackages__"],
     deps = [
-        "//include/core:SkStringView_hdr",
         "//include/core:SkTypes_hdr",
         "//include/private:SkNoncopyable_hdr",
         "//include/private:SkTo_hdr",
diff --git a/third_party/file_map_for_bazel.json b/third_party/file_map_for_bazel.json
index cd25df93..12ded9d 100644
--- a/third_party/file_map_for_bazel.json
+++ b/third_party/file_map_for_bazel.json
@@ -85,5 +85,11 @@
   "log/log_main.h": "SK_GAZELLE_IGNORE",
   "mozilla/mozalloc.h": "SK_GAZELLE_IGNORE",
   "mozilla/mozalloc_abort.h": "SK_GAZELLE_IGNORE",
-  "mozilla/mozalloc_oom.h": "SK_GAZELLE_IGNORE"
+  "mozilla/mozalloc_oom.h": "SK_GAZELLE_IGNORE",
+
+  "libavcodec/avcodec.h": "SK_GAZELLE_IGNORE for experimental/ffmpeg",
+  "libavformat/avformat.h": "SK_GAZELLE_IGNORE",
+  "libavformat/avio.h": "SK_GAZELLE_IGNORE",
+  "libavutil/pixdesc.h": "SK_GAZELLE_IGNORE",
+  "libswscale/swscale.h": "SK_GAZELLE_IGNORE"
 }
\ No newline at end of file
diff --git a/tools/flags/BUILD.bazel b/tools/flags/BUILD.bazel
index d38bb0f..4aae132 100644
--- a/tools/flags/BUILD.bazel
+++ b/tools/flags/BUILD.bazel
@@ -50,7 +50,6 @@
     deps = [
         ":CommonFlagsConfig_hdr",
         "//include/core:SkImageInfo_hdr",
-        "//include/core:SkStringView_hdr",
         "//include/core:SkSurfaceProps_hdr",
         "//include/private:SkTHash_hdr",
         "//src/core:SkColorSpacePriv_hdr",
diff --git a/tools/gpu/BUILD.bazel b/tools/gpu/BUILD.bazel
index 8c7f450..f1731ea 100644
--- a/tools/gpu/BUILD.bazel
+++ b/tools/gpu/BUILD.bazel
@@ -89,6 +89,7 @@
     hdrs = ["GrContextFactory.h"],
     visibility = ["//:__subpackages__"],
     deps = [
+        ":TestContext_hdr",
         "//include/gpu:GrContextOptions_hdr",
         "//include/gpu:GrDirectContext_hdr",
         "//include/private:SkTArray_hdr",
diff --git a/tools/viewer/BUILD.bazel b/tools/viewer/BUILD.bazel
index 014193a..f10c80a 100644
--- a/tools/viewer/BUILD.bazel
+++ b/tools/viewer/BUILD.bazel
@@ -149,6 +149,7 @@
         ":ImGuiLayer_hdr",
         ":ParticlesSlide_hdr",
         "//include/core:SkCanvas_hdr",
+        "//include/private:SkStringView_hdr",
         "//modules/particles/include:SkParticleEffect_hdr",
         "//modules/particles/include:SkParticleSerialization_hdr",
         "//modules/particles/include:SkReflected_hdr",