diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..d4f7a0e
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,2480 @@
+// This file is autogenerated by gn_to_bp.py.
+
+cc_library_static {
+    name: "libskia",
+    host_supported: true,
+    cflags: [
+        "-U_FORTIFY_SOURCE",
+        "-DATRACE_TAG=ATRACE_TAG_VIEW",
+        "-DSKIA_DLL",
+        "-DSKIA_IMPLEMENTATION=1",
+        "-DSK_PRINT_CODEC_MESSAGES",
+        "-D_FORTIFY_SOURCE=1",
+        "-Wno-attributes",
+        "-Wno-implicit-fallthrough",
+        "-Wno-missing-field-initializers",
+        "-Wno-thread-safety-analysis",
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-fvisibility=hidden",
+    ],
+
+    cppflags:[
+        "-fexceptions",
+    ],
+
+    export_include_dirs: [
+        "",
+        "client_utils/android/",
+        "include/android/",
+        "include/atlastext/",
+        "include/c/",
+        "include/codec/",
+        "include/config/",
+        "include/core/",
+        "include/docs/",
+        "include/effects/",
+        "include/encode/",
+        "include/gpu/",
+        "include/pathops/",
+        "include/ports/",
+        "include/svg/",
+        "include/utils/",
+        "include/utils/mac/",
+        "modules/skottie/include/",
+        "modules/skshaper/include/",
+    ],
+
+    local_include_dirs: [
+        "",
+        "include/third_party/skcms",
+        "third_party/libgifcodec/",
+    ],
+
+    srcs: [
+        "client_utils/android/FrontBufferedStream.cpp",
+        "src/android/SkAndroidFrameworkUtils.cpp",
+        "src/android/SkAnimatedImage.cpp",
+        "src/android/SkBitmapRegionCodec.cpp",
+        "src/android/SkBitmapRegionDecoder.cpp",
+        "src/c/sk_effects.cpp",
+        "src/c/sk_imageinfo.cpp",
+        "src/c/sk_paint.cpp",
+        "src/c/sk_surface.cpp",
+        "src/codec/SkAndroidCodec.cpp",
+        "src/codec/SkAndroidCodecAdapter.cpp",
+        "src/codec/SkBmpBaseCodec.cpp",
+        "src/codec/SkBmpCodec.cpp",
+        "src/codec/SkBmpMaskCodec.cpp",
+        "src/codec/SkBmpRLECodec.cpp",
+        "src/codec/SkBmpStandardCodec.cpp",
+        "src/codec/SkCodec.cpp",
+        "src/codec/SkCodecImageGenerator.cpp",
+        "src/codec/SkColorTable.cpp",
+        "src/codec/SkEncodedInfo.cpp",
+        "src/codec/SkIcoCodec.cpp",
+        "src/codec/SkJpegCodec.cpp",
+        "src/codec/SkJpegDecoderMgr.cpp",
+        "src/codec/SkJpegUtility.cpp",
+        "src/codec/SkMaskSwizzler.cpp",
+        "src/codec/SkMasks.cpp",
+        "src/codec/SkParseEncodedOrigin.cpp",
+        "src/codec/SkPngCodec.cpp",
+        "src/codec/SkSampledCodec.cpp",
+        "src/codec/SkSampler.cpp",
+        "src/codec/SkStreamBuffer.cpp",
+        "src/codec/SkSwizzler.cpp",
+        "src/codec/SkWbmpCodec.cpp",
+        "src/codec/SkWebpCodec.cpp",
+        "src/core/SkAAClip.cpp",
+        "src/core/SkATrace.cpp",
+        "src/core/SkAlphaRuns.cpp",
+        "src/core/SkAnalyticEdge.cpp",
+        "src/core/SkAnnotation.cpp",
+        "src/core/SkArenaAlloc.cpp",
+        "src/core/SkAutoPixmapStorage.cpp",
+        "src/core/SkBBHFactory.cpp",
+        "src/core/SkBigPicture.cpp",
+        "src/core/SkBitmap.cpp",
+        "src/core/SkBitmapCache.cpp",
+        "src/core/SkBitmapController.cpp",
+        "src/core/SkBitmapDevice.cpp",
+        "src/core/SkBitmapProcState.cpp",
+        "src/core/SkBitmapProcState_matrixProcs.cpp",
+        "src/core/SkBlendMode.cpp",
+        "src/core/SkBlitRow_D32.cpp",
+        "src/core/SkBlitter.cpp",
+        "src/core/SkBlitter_A8.cpp",
+        "src/core/SkBlitter_ARGB32.cpp",
+        "src/core/SkBlitter_RGB565.cpp",
+        "src/core/SkBlitter_Sprite.cpp",
+        "src/core/SkBlurMF.cpp",
+        "src/core/SkBlurMask.cpp",
+        "src/core/SkBuffer.cpp",
+        "src/core/SkCachedData.cpp",
+        "src/core/SkCanvas.cpp",
+        "src/core/SkCanvasPriv.cpp",
+        "src/core/SkClipStack.cpp",
+        "src/core/SkClipStackDevice.cpp",
+        "src/core/SkColor.cpp",
+        "src/core/SkColorFilter.cpp",
+        "src/core/SkColorFilter_Matrix.cpp",
+        "src/core/SkColorSpace.cpp",
+        "src/core/SkColorSpaceXformSteps.cpp",
+        "src/core/SkCompressedDataUtils.cpp",
+        "src/core/SkContourMeasure.cpp",
+        "src/core/SkConvertPixels.cpp",
+        "src/core/SkCpu.cpp",
+        "src/core/SkCubicClipper.cpp",
+        "src/core/SkCubicMap.cpp",
+        "src/core/SkData.cpp",
+        "src/core/SkDataTable.cpp",
+        "src/core/SkDebug.cpp",
+        "src/core/SkDeferredDisplayList.cpp",
+        "src/core/SkDeferredDisplayListRecorder.cpp",
+        "src/core/SkDeque.cpp",
+        "src/core/SkDescriptor.cpp",
+        "src/core/SkDevice.cpp",
+        "src/core/SkDistanceFieldGen.cpp",
+        "src/core/SkDocument.cpp",
+        "src/core/SkDraw.cpp",
+        "src/core/SkDrawLooper.cpp",
+        "src/core/SkDrawShadowInfo.cpp",
+        "src/core/SkDraw_atlas.cpp",
+        "src/core/SkDraw_text.cpp",
+        "src/core/SkDraw_vertices.cpp",
+        "src/core/SkDrawable.cpp",
+        "src/core/SkEdge.cpp",
+        "src/core/SkEdgeBuilder.cpp",
+        "src/core/SkEdgeClipper.cpp",
+        "src/core/SkExecutor.cpp",
+        "src/core/SkFlattenable.cpp",
+        "src/core/SkFont.cpp",
+        "src/core/SkFontDescriptor.cpp",
+        "src/core/SkFontLCDConfig.cpp",
+        "src/core/SkFontMgr.cpp",
+        "src/core/SkFontStream.cpp",
+        "src/core/SkFont_serial.cpp",
+        "src/core/SkGaussFilter.cpp",
+        "src/core/SkGeometry.cpp",
+        "src/core/SkGlobalInitialization_core.cpp",
+        "src/core/SkGlyph.cpp",
+        "src/core/SkGlyphBuffer.cpp",
+        "src/core/SkGlyphRun.cpp",
+        "src/core/SkGlyphRunPainter.cpp",
+        "src/core/SkGpuBlurUtils.cpp",
+        "src/core/SkGraphics.cpp",
+        "src/core/SkHalf.cpp",
+        "src/core/SkICC.cpp",
+        "src/core/SkIDChangeListener.cpp",
+        "src/core/SkImageFilter.cpp",
+        "src/core/SkImageFilterCache.cpp",
+        "src/core/SkImageFilterTypes.cpp",
+        "src/core/SkImageGenerator.cpp",
+        "src/core/SkImageInfo.cpp",
+        "src/core/SkLatticeIter.cpp",
+        "src/core/SkLineClipper.cpp",
+        "src/core/SkLocalMatrixImageFilter.cpp",
+        "src/core/SkM44.cpp",
+        "src/core/SkMD5.cpp",
+        "src/core/SkMalloc.cpp",
+        "src/core/SkMallocPixelRef.cpp",
+        "src/core/SkMarkerStack.cpp",
+        "src/core/SkMask.cpp",
+        "src/core/SkMaskBlurFilter.cpp",
+        "src/core/SkMaskCache.cpp",
+        "src/core/SkMaskFilter.cpp",
+        "src/core/SkMaskGamma.cpp",
+        "src/core/SkMath.cpp",
+        "src/core/SkMatrix.cpp",
+        "src/core/SkMatrix44.cpp",
+        "src/core/SkMatrixImageFilter.cpp",
+        "src/core/SkMiniRecorder.cpp",
+        "src/core/SkMipMap.cpp",
+        "src/core/SkModeColorFilter.cpp",
+        "src/core/SkOpts.cpp",
+        "src/core/SkOpts_skx.cpp",
+        "src/core/SkOverdrawCanvas.cpp",
+        "src/core/SkPaint.cpp",
+        "src/core/SkPaintPriv.cpp",
+        "src/core/SkPath.cpp",
+        "src/core/SkPathEffect.cpp",
+        "src/core/SkPathMeasure.cpp",
+        "src/core/SkPathRef.cpp",
+        "src/core/SkPath_serial.cpp",
+        "src/core/SkPicture.cpp",
+        "src/core/SkPictureData.cpp",
+        "src/core/SkPictureFlat.cpp",
+        "src/core/SkPictureImageGenerator.cpp",
+        "src/core/SkPicturePlayback.cpp",
+        "src/core/SkPictureRecord.cpp",
+        "src/core/SkPictureRecorder.cpp",
+        "src/core/SkPixelRef.cpp",
+        "src/core/SkPixmap.cpp",
+        "src/core/SkPoint.cpp",
+        "src/core/SkPoint3.cpp",
+        "src/core/SkPromiseImageTexture.cpp",
+        "src/core/SkPtrRecorder.cpp",
+        "src/core/SkQuadClipper.cpp",
+        "src/core/SkRRect.cpp",
+        "src/core/SkRTree.cpp",
+        "src/core/SkRWBuffer.cpp",
+        "src/core/SkRasterClip.cpp",
+        "src/core/SkRasterPipeline.cpp",
+        "src/core/SkRasterPipelineBlitter.cpp",
+        "src/core/SkReadBuffer.cpp",
+        "src/core/SkRecord.cpp",
+        "src/core/SkRecordDraw.cpp",
+        "src/core/SkRecordOpts.cpp",
+        "src/core/SkRecordedDrawable.cpp",
+        "src/core/SkRecorder.cpp",
+        "src/core/SkRecords.cpp",
+        "src/core/SkRect.cpp",
+        "src/core/SkRegion.cpp",
+        "src/core/SkRegion_path.cpp",
+        "src/core/SkRemoteGlyphCache.cpp",
+        "src/core/SkResourceCache.cpp",
+        "src/core/SkRuntimeEffect.cpp",
+        "src/core/SkScalar.cpp",
+        "src/core/SkScalerCache.cpp",
+        "src/core/SkScalerContext.cpp",
+        "src/core/SkScan.cpp",
+        "src/core/SkScan_AAAPath.cpp",
+        "src/core/SkScan_AntiPath.cpp",
+        "src/core/SkScan_Antihair.cpp",
+        "src/core/SkScan_Hairline.cpp",
+        "src/core/SkScan_Path.cpp",
+        "src/core/SkSemaphore.cpp",
+        "src/core/SkSharedMutex.cpp",
+        "src/core/SkSpecialImage.cpp",
+        "src/core/SkSpecialSurface.cpp",
+        "src/core/SkSpinlock.cpp",
+        "src/core/SkSpriteBlitter_ARGB32.cpp",
+        "src/core/SkSpriteBlitter_RGB565.cpp",
+        "src/core/SkStream.cpp",
+        "src/core/SkStrikeCache.cpp",
+        "src/core/SkStrikeForGPU.cpp",
+        "src/core/SkStrikeSpec.cpp",
+        "src/core/SkString.cpp",
+        "src/core/SkStringUtils.cpp",
+        "src/core/SkStroke.cpp",
+        "src/core/SkStrokeRec.cpp",
+        "src/core/SkStrokerPriv.cpp",
+        "src/core/SkSurfaceCharacterization.cpp",
+        "src/core/SkSwizzle.cpp",
+        "src/core/SkTSearch.cpp",
+        "src/core/SkTaskGroup.cpp",
+        "src/core/SkTextBlob.cpp",
+        "src/core/SkTextBlobTrace.cpp",
+        "src/core/SkThreadID.cpp",
+        "src/core/SkTime.cpp",
+        "src/core/SkTypeface.cpp",
+        "src/core/SkTypefaceCache.cpp",
+        "src/core/SkTypeface_remote.cpp",
+        "src/core/SkUnPreMultiply.cpp",
+        "src/core/SkUtils.cpp",
+        "src/core/SkVM.cpp",
+        "src/core/SkVMBlitter.cpp",
+        "src/core/SkVertState.cpp",
+        "src/core/SkVertices.cpp",
+        "src/core/SkWriteBuffer.cpp",
+        "src/core/SkWriter32.cpp",
+        "src/core/SkXfermode.cpp",
+        "src/core/SkXfermodeInterpretation.cpp",
+        "src/core/SkYUVASizeInfo.cpp",
+        "src/core/SkYUVMath.cpp",
+        "src/core/SkYUVPlanesCache.cpp",
+        "src/effects/Sk1DPathEffect.cpp",
+        "src/effects/Sk2DPathEffect.cpp",
+        "src/effects/SkColorMatrix.cpp",
+        "src/effects/SkColorMatrixFilter.cpp",
+        "src/effects/SkCornerPathEffect.cpp",
+        "src/effects/SkDashPathEffect.cpp",
+        "src/effects/SkDiscretePathEffect.cpp",
+        "src/effects/SkEmbossMask.cpp",
+        "src/effects/SkEmbossMaskFilter.cpp",
+        "src/effects/SkHighContrastFilter.cpp",
+        "src/effects/SkLayerDrawLooper.cpp",
+        "src/effects/SkLumaColorFilter.cpp",
+        "src/effects/SkOpPathEffect.cpp",
+        "src/effects/SkOverdrawColorFilter.cpp",
+        "src/effects/SkPackBits.cpp",
+        "src/effects/SkShaderMaskFilter.cpp",
+        "src/effects/SkTableColorFilter.cpp",
+        "src/effects/SkTableMaskFilter.cpp",
+        "src/effects/SkTrimPathEffect.cpp",
+        "src/effects/imagefilters/SkAlphaThresholdFilter.cpp",
+        "src/effects/imagefilters/SkArithmeticImageFilter.cpp",
+        "src/effects/imagefilters/SkBlurImageFilter.cpp",
+        "src/effects/imagefilters/SkColorFilterImageFilter.cpp",
+        "src/effects/imagefilters/SkComposeImageFilter.cpp",
+        "src/effects/imagefilters/SkDisplacementMapEffect.cpp",
+        "src/effects/imagefilters/SkDropShadowImageFilter.cpp",
+        "src/effects/imagefilters/SkImageFilters.cpp",
+        "src/effects/imagefilters/SkImageSource.cpp",
+        "src/effects/imagefilters/SkLightingImageFilter.cpp",
+        "src/effects/imagefilters/SkMagnifierImageFilter.cpp",
+        "src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp",
+        "src/effects/imagefilters/SkMergeImageFilter.cpp",
+        "src/effects/imagefilters/SkMorphologyImageFilter.cpp",
+        "src/effects/imagefilters/SkOffsetImageFilter.cpp",
+        "src/effects/imagefilters/SkPaintImageFilter.cpp",
+        "src/effects/imagefilters/SkPictureImageFilter.cpp",
+        "src/effects/imagefilters/SkTileImageFilter.cpp",
+        "src/effects/imagefilters/SkXfermodeImageFilter.cpp",
+        "src/image/SkImage.cpp",
+        "src/image/SkImage_Lazy.cpp",
+        "src/image/SkImage_Raster.cpp",
+        "src/image/SkSurface.cpp",
+        "src/image/SkSurface_Raster.cpp",
+        "src/images/SkImageEncoder.cpp",
+        "src/images/SkJPEGWriteUtility.cpp",
+        "src/images/SkJpegEncoder.cpp",
+        "src/images/SkPngEncoder.cpp",
+        "src/images/SkWebpEncoder.cpp",
+        "src/lazy/SkDiscardableMemoryPool.cpp",
+        "src/pathops/SkAddIntersections.cpp",
+        "src/pathops/SkDConicLineIntersection.cpp",
+        "src/pathops/SkDCubicLineIntersection.cpp",
+        "src/pathops/SkDCubicToQuads.cpp",
+        "src/pathops/SkDLineIntersection.cpp",
+        "src/pathops/SkDQuadLineIntersection.cpp",
+        "src/pathops/SkIntersections.cpp",
+        "src/pathops/SkOpAngle.cpp",
+        "src/pathops/SkOpBuilder.cpp",
+        "src/pathops/SkOpCoincidence.cpp",
+        "src/pathops/SkOpContour.cpp",
+        "src/pathops/SkOpCubicHull.cpp",
+        "src/pathops/SkOpEdgeBuilder.cpp",
+        "src/pathops/SkOpSegment.cpp",
+        "src/pathops/SkOpSpan.cpp",
+        "src/pathops/SkPathOpsAsWinding.cpp",
+        "src/pathops/SkPathOpsCommon.cpp",
+        "src/pathops/SkPathOpsConic.cpp",
+        "src/pathops/SkPathOpsCubic.cpp",
+        "src/pathops/SkPathOpsCurve.cpp",
+        "src/pathops/SkPathOpsDebug.cpp",
+        "src/pathops/SkPathOpsLine.cpp",
+        "src/pathops/SkPathOpsOp.cpp",
+        "src/pathops/SkPathOpsQuad.cpp",
+        "src/pathops/SkPathOpsRect.cpp",
+        "src/pathops/SkPathOpsSimplify.cpp",
+        "src/pathops/SkPathOpsTSect.cpp",
+        "src/pathops/SkPathOpsTightBounds.cpp",
+        "src/pathops/SkPathOpsTypes.cpp",
+        "src/pathops/SkPathOpsWinding.cpp",
+        "src/pathops/SkPathWriter.cpp",
+        "src/pathops/SkReduceOrder.cpp",
+        "src/pdf/SkClusterator.cpp",
+        "src/pdf/SkDeflate.cpp",
+        "src/pdf/SkJpegInfo.cpp",
+        "src/pdf/SkKeyedImage.cpp",
+        "src/pdf/SkPDFBitmap.cpp",
+        "src/pdf/SkPDFDevice.cpp",
+        "src/pdf/SkPDFDocument.cpp",
+        "src/pdf/SkPDFFont.cpp",
+        "src/pdf/SkPDFFormXObject.cpp",
+        "src/pdf/SkPDFGradientShader.cpp",
+        "src/pdf/SkPDFGraphicStackState.cpp",
+        "src/pdf/SkPDFGraphicState.cpp",
+        "src/pdf/SkPDFMakeCIDGlyphWidthsArray.cpp",
+        "src/pdf/SkPDFMakeToUnicodeCmap.cpp",
+        "src/pdf/SkPDFMetadata.cpp",
+        "src/pdf/SkPDFResourceDict.cpp",
+        "src/pdf/SkPDFShader.cpp",
+        "src/pdf/SkPDFSubsetFont.cpp",
+        "src/pdf/SkPDFTag.cpp",
+        "src/pdf/SkPDFType1Font.cpp",
+        "src/pdf/SkPDFTypes.cpp",
+        "src/pdf/SkPDFUtils.cpp",
+        "src/ports/SkDiscardableMemory_none.cpp",
+        "src/ports/SkFontHost_FreeType.cpp",
+        "src/ports/SkFontHost_FreeType_common.cpp",
+        "src/ports/SkFontMgr_custom.cpp",
+        "src/ports/SkFontMgr_custom_empty.cpp",
+        "src/ports/SkFontMgr_custom_empty_factory.cpp",
+        "src/ports/SkGlobalInitialization_default.cpp",
+        "src/ports/SkImageGenerator_skia.cpp",
+        "src/ports/SkMemory_malloc.cpp",
+        "src/ports/SkOSFile_stdio.cpp",
+        "src/sfnt/SkOTTable_name.cpp",
+        "src/sfnt/SkOTUtils.cpp",
+        "src/shaders/SkBitmapProcShader.cpp",
+        "src/shaders/SkColorFilterShader.cpp",
+        "src/shaders/SkColorShader.cpp",
+        "src/shaders/SkComposeShader.cpp",
+        "src/shaders/SkImageShader.cpp",
+        "src/shaders/SkLocalMatrixShader.cpp",
+        "src/shaders/SkPerlinNoiseShader.cpp",
+        "src/shaders/SkPictureShader.cpp",
+        "src/shaders/SkShader.cpp",
+        "src/shaders/gradients/Sk4fGradientBase.cpp",
+        "src/shaders/gradients/Sk4fLinearGradient.cpp",
+        "src/shaders/gradients/SkGradientShader.cpp",
+        "src/shaders/gradients/SkLinearGradient.cpp",
+        "src/shaders/gradients/SkRadialGradient.cpp",
+        "src/shaders/gradients/SkSweepGradient.cpp",
+        "src/shaders/gradients/SkTwoPointConicalGradient.cpp",
+        "src/sksl/SkSLASTNode.cpp",
+        "src/sksl/SkSLByteCode.cpp",
+        "src/sksl/SkSLByteCodeGenerator.cpp",
+        "src/sksl/SkSLCFGGenerator.cpp",
+        "src/sksl/SkSLCompiler.cpp",
+        "src/sksl/SkSLIRGenerator.cpp",
+        "src/sksl/SkSLLexer.cpp",
+        "src/sksl/SkSLParser.cpp",
+        "src/sksl/SkSLSampleMatrix.cpp",
+        "src/sksl/SkSLSectionAndParameterHelper.cpp",
+        "src/sksl/SkSLString.cpp",
+        "src/sksl/SkSLUtil.cpp",
+        "src/sksl/ir/SkSLSetting.cpp",
+        "src/sksl/ir/SkSLSymbolTable.cpp",
+        "src/sksl/ir/SkSLType.cpp",
+        "src/sksl/ir/SkSLVariableReference.cpp",
+        "src/svg/SkSVGCanvas.cpp",
+        "src/svg/SkSVGDevice.cpp",
+        "src/utils/SkAnimCodecPlayer.cpp",
+        "src/utils/SkBase64.cpp",
+        "src/utils/SkCamera.cpp",
+        "src/utils/SkCanvasStack.cpp",
+        "src/utils/SkCanvasStateUtils.cpp",
+        "src/utils/SkCharToGlyphCache.cpp",
+        "src/utils/SkClipStackUtils.cpp",
+        "src/utils/SkDashPath.cpp",
+        "src/utils/SkEventTracer.cpp",
+        "src/utils/SkFloatToDecimal.cpp",
+        "src/utils/SkInterpolator.cpp",
+        "src/utils/SkJSON.cpp",
+        "src/utils/SkJSONWriter.cpp",
+        "src/utils/SkMatrix22.cpp",
+        "src/utils/SkMultiPictureDocument.cpp",
+        "src/utils/SkNWayCanvas.cpp",
+        "src/utils/SkNullCanvas.cpp",
+        "src/utils/SkOSPath.cpp",
+        "src/utils/SkPaintFilterCanvas.cpp",
+        "src/utils/SkParse.cpp",
+        "src/utils/SkParseColor.cpp",
+        "src/utils/SkParsePath.cpp",
+        "src/utils/SkPatchUtils.cpp",
+        "src/utils/SkPolyUtils.cpp",
+        "src/utils/SkShadowTessellator.cpp",
+        "src/utils/SkShadowUtils.cpp",
+        "src/utils/SkShaperJSONWriter.cpp",
+        "src/utils/SkTextUtils.cpp",
+        "src/utils/SkThreadUtils_pthread.cpp",
+        "src/utils/SkThreadUtils_win.cpp",
+        "src/utils/SkUTF.cpp",
+        "src/utils/SkWhitelistTypefaces.cpp",
+        "src/utils/mac/SkCreateCGImageRef.cpp",
+        "src/utils/win/SkAutoCoInitialize.cpp",
+        "src/utils/win/SkDWrite.cpp",
+        "src/utils/win/SkDWriteFontFileStream.cpp",
+        "src/utils/win/SkDWriteGeometrySink.cpp",
+        "src/utils/win/SkHRESULT.cpp",
+        "src/utils/win/SkIStream.cpp",
+        "src/utils/win/SkWGL_win.cpp",
+        "src/xml/SkDOM.cpp",
+        "src/xml/SkXMLParser.cpp",
+        "src/xml/SkXMLWriter.cpp",
+        "third_party/libgifcodec/SkGifImageReader.cpp",
+        "third_party/libgifcodec/SkLibGifCodec.cpp",
+        "third_party/skcms/skcms.cc",
+    ],
+
+    arch: {
+        arm: {
+            srcs: [
+                
+            ],
+
+            neon: {
+                srcs: [
+                    
+                ],
+            },
+        },
+
+        arm64: {
+            srcs: [
+                "src/opts/SkOpts_crc32.cpp",
+            ],
+        },
+
+        x86: {
+            srcs: [
+                "src/opts/SkOpts_avx.cpp",
+                "src/opts/SkOpts_hsw.cpp",
+                "src/opts/SkOpts_sse41.cpp",
+                "src/opts/SkOpts_sse42.cpp",
+                "src/opts/SkOpts_ssse3.cpp",
+            ],
+        },
+
+        x86_64: {
+            srcs: [
+                "src/opts/SkOpts_avx.cpp",
+                "src/opts/SkOpts_hsw.cpp",
+                "src/opts/SkOpts_sse41.cpp",
+                "src/opts/SkOpts_sse42.cpp",
+                "src/opts/SkOpts_ssse3.cpp",
+            ],
+        },
+    },
+
+    target: {
+      android: {
+        srcs: [
+          "src/codec/SkHeifCodec.cpp",
+          "src/codec/SkRawCodec.cpp",
+          "src/gpu/GrAHardwareBufferImageGenerator.cpp",
+          "src/gpu/GrAHardwareBufferUtils.cpp",
+          "src/gpu/GrAuditTrail.cpp",
+          "src/gpu/GrBackendSurface.cpp",
+          "src/gpu/GrBackendTextureImageGenerator.cpp",
+          "src/gpu/GrBitmapTextureMaker.cpp",
+          "src/gpu/GrBlockAllocator.cpp",
+          "src/gpu/GrBlurUtils.cpp",
+          "src/gpu/GrBufferAllocPool.cpp",
+          "src/gpu/GrCaps.cpp",
+          "src/gpu/GrClientMappedBufferManager.cpp",
+          "src/gpu/GrClipStackClip.cpp",
+          "src/gpu/GrColorInfo.cpp",
+          "src/gpu/GrColorSpaceXform.cpp",
+          "src/gpu/GrContext.cpp",
+          "src/gpu/GrContextPriv.cpp",
+          "src/gpu/GrContextThreadSafeProxy.cpp",
+          "src/gpu/GrContext_Base.cpp",
+          "src/gpu/GrCopyRenderTask.cpp",
+          "src/gpu/GrDDLContext.cpp",
+          "src/gpu/GrDataUtils.cpp",
+          "src/gpu/GrDefaultGeoProcFactory.cpp",
+          "src/gpu/GrDistanceFieldGenFromVector.cpp",
+          "src/gpu/GrDrawOpAtlas.cpp",
+          "src/gpu/GrDrawOpTest.cpp",
+          "src/gpu/GrDrawingManager.cpp",
+          "src/gpu/GrDriverBugWorkarounds.cpp",
+          "src/gpu/GrDynamicAtlas.cpp",
+          "src/gpu/GrFinishCallbacks.cpp",
+          "src/gpu/GrFixedClip.cpp",
+          "src/gpu/GrFragmentProcessor.cpp",
+          "src/gpu/GrGpu.cpp",
+          "src/gpu/GrGpuBuffer.cpp",
+          "src/gpu/GrGpuResource.cpp",
+          "src/gpu/GrImageContext.cpp",
+          "src/gpu/GrImageTextureMaker.cpp",
+          "src/gpu/GrLegacyDirectContext.cpp",
+          "src/gpu/GrManagedResource.cpp",
+          "src/gpu/GrMemoryPool.cpp",
+          "src/gpu/GrOnFlushResourceProvider.cpp",
+          "src/gpu/GrOpFlushState.cpp",
+          "src/gpu/GrOpsRenderPass.cpp",
+          "src/gpu/GrOpsTask.cpp",
+          "src/gpu/GrPaint.cpp",
+          "src/gpu/GrPath.cpp",
+          "src/gpu/GrPathProcessor.cpp",
+          "src/gpu/GrPathRenderer.cpp",
+          "src/gpu/GrPathRendererChain.cpp",
+          "src/gpu/GrPathRendering.cpp",
+          "src/gpu/GrPipeline.cpp",
+          "src/gpu/GrPrimitiveProcessor.cpp",
+          "src/gpu/GrProcessor.cpp",
+          "src/gpu/GrProcessorAnalysis.cpp",
+          "src/gpu/GrProcessorSet.cpp",
+          "src/gpu/GrProcessorUnitTest.cpp",
+          "src/gpu/GrProgramDesc.cpp",
+          "src/gpu/GrProgramInfo.cpp",
+          "src/gpu/GrProxyProvider.cpp",
+          "src/gpu/GrRecordingContext.cpp",
+          "src/gpu/GrRectanizerSkyline.cpp",
+          "src/gpu/GrReducedClip.cpp",
+          "src/gpu/GrRenderTarget.cpp",
+          "src/gpu/GrRenderTargetContext.cpp",
+          "src/gpu/GrRenderTargetProxy.cpp",
+          "src/gpu/GrRenderTask.cpp",
+          "src/gpu/GrResourceAllocator.cpp",
+          "src/gpu/GrResourceCache.cpp",
+          "src/gpu/GrResourceProvider.cpp",
+          "src/gpu/GrSPIRVUniformHandler.cpp",
+          "src/gpu/GrSPIRVVaryingHandler.cpp",
+          "src/gpu/GrSWMaskHelper.cpp",
+          "src/gpu/GrSamplePatternDictionary.cpp",
+          "src/gpu/GrShaderCaps.cpp",
+          "src/gpu/GrShaderUtils.cpp",
+          "src/gpu/GrShaderVar.cpp",
+          "src/gpu/GrSoftwarePathRenderer.cpp",
+          "src/gpu/GrStagingBuffer.cpp",
+          "src/gpu/GrStencilAttachment.cpp",
+          "src/gpu/GrStencilSettings.cpp",
+          "src/gpu/GrStyle.cpp",
+          "src/gpu/GrSurface.cpp",
+          "src/gpu/GrSurfaceContext.cpp",
+          "src/gpu/GrSurfaceProxy.cpp",
+          "src/gpu/GrSwizzle.cpp",
+          "src/gpu/GrTestUtils.cpp",
+          "src/gpu/GrTexture.cpp",
+          "src/gpu/GrTextureAdjuster.cpp",
+          "src/gpu/GrTextureMaker.cpp",
+          "src/gpu/GrTextureProducer.cpp",
+          "src/gpu/GrTextureProxy.cpp",
+          "src/gpu/GrTextureRenderTargetProxy.cpp",
+          "src/gpu/GrTextureResolveRenderTask.cpp",
+          "src/gpu/GrTransferFromRenderTask.cpp",
+          "src/gpu/GrTriangulator.cpp",
+          "src/gpu/GrWaitRenderTask.cpp",
+          "src/gpu/GrXferProcessor.cpp",
+          "src/gpu/GrYUVProvider.cpp",
+          "src/gpu/SkGpuDevice.cpp",
+          "src/gpu/SkGpuDevice_drawTexture.cpp",
+          "src/gpu/SkGr.cpp",
+          "src/gpu/ccpr/GrCCAtlas.cpp",
+          "src/gpu/ccpr/GrCCClipPath.cpp",
+          "src/gpu/ccpr/GrCCClipProcessor.cpp",
+          "src/gpu/ccpr/GrCCConicShader.cpp",
+          "src/gpu/ccpr/GrCCCoverageProcessor.cpp",
+          "src/gpu/ccpr/GrCCCubicShader.cpp",
+          "src/gpu/ccpr/GrCCDrawPathsOp.cpp",
+          "src/gpu/ccpr/GrCCFillGeometry.cpp",
+          "src/gpu/ccpr/GrCCFiller.cpp",
+          "src/gpu/ccpr/GrCCPathCache.cpp",
+          "src/gpu/ccpr/GrCCPathProcessor.cpp",
+          "src/gpu/ccpr/GrCCPerFlushResources.cpp",
+          "src/gpu/ccpr/GrCCQuadraticShader.cpp",
+          "src/gpu/ccpr/GrCCStrokeGeometry.cpp",
+          "src/gpu/ccpr/GrCCStroker.cpp",
+          "src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp",
+          "src/gpu/ccpr/GrGSCoverageProcessor.cpp",
+          "src/gpu/ccpr/GrOctoBounds.cpp",
+          "src/gpu/ccpr/GrSampleMaskProcessor.cpp",
+          "src/gpu/ccpr/GrStencilAtlasOp.cpp",
+          "src/gpu/ccpr/GrVSCoverageProcessor.cpp",
+          "src/gpu/effects/GrBezierEffect.cpp",
+          "src/gpu/effects/GrBicubicEffect.cpp",
+          "src/gpu/effects/GrBitmapTextGeoProc.cpp",
+          "src/gpu/effects/GrConvexPolyEffect.cpp",
+          "src/gpu/effects/GrCoverageSetOpXP.cpp",
+          "src/gpu/effects/GrCustomXfermode.cpp",
+          "src/gpu/effects/GrDisableColorXP.cpp",
+          "src/gpu/effects/GrDistanceFieldGeoProc.cpp",
+          "src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp",
+          "src/gpu/effects/GrMatrixConvolutionEffect.cpp",
+          "src/gpu/effects/GrOvalEffect.cpp",
+          "src/gpu/effects/GrPorterDuffXferProcessor.cpp",
+          "src/gpu/effects/GrRRectEffect.cpp",
+          "src/gpu/effects/GrShadowGeoProc.cpp",
+          "src/gpu/effects/GrSkSLFP.cpp",
+          "src/gpu/effects/GrTextureEffect.cpp",
+          "src/gpu/effects/GrXfermodeFragmentProcessor.cpp",
+          "src/gpu/effects/GrYUVtoRGBEffect.cpp",
+          "src/gpu/effects/generated/GrAARectEffect.cpp",
+          "src/gpu/effects/generated/GrAlphaThresholdFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrBlurredEdgeFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrCircleBlurFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrCircleEffect.cpp",
+          "src/gpu/effects/generated/GrClampFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrColorMatrixFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrComposeLerpEffect.cpp",
+          "src/gpu/effects/generated/GrConfigConversionEffect.cpp",
+          "src/gpu/effects/generated/GrConstColorProcessor.cpp",
+          "src/gpu/effects/generated/GrDeviceSpaceEffect.cpp",
+          "src/gpu/effects/generated/GrEllipseEffect.cpp",
+          "src/gpu/effects/generated/GrHSLToRGBFilterEffect.cpp",
+          "src/gpu/effects/generated/GrLumaColorFilterEffect.cpp",
+          "src/gpu/effects/generated/GrMagnifierEffect.cpp",
+          "src/gpu/effects/generated/GrMatrixEffect.cpp",
+          "src/gpu/effects/generated/GrMixerEffect.cpp",
+          "src/gpu/effects/generated/GrOverrideInputFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrPremulInputFragmentProcessor.cpp",
+          "src/gpu/effects/generated/GrRGBToHSLFilterEffect.cpp",
+          "src/gpu/effects/generated/GrRRectBlurEffect.cpp",
+          "src/gpu/effects/generated/GrRectBlurEffect.cpp",
+          "src/gpu/geometry/GrPathUtils.cpp",
+          "src/gpu/geometry/GrQuad.cpp",
+          "src/gpu/geometry/GrQuadUtils.cpp",
+          "src/gpu/geometry/GrShape.cpp",
+          "src/gpu/geometry/GrStyledShape.cpp",
+          "src/gpu/gl/GrGLAssembleGLESInterfaceAutogen.cpp",
+          "src/gpu/gl/GrGLAssembleGLInterfaceAutogen.cpp",
+          "src/gpu/gl/GrGLAssembleHelpers.cpp",
+          "src/gpu/gl/GrGLAssembleInterface.cpp",
+          "src/gpu/gl/GrGLAssembleWebGLInterfaceAutogen.cpp",
+          "src/gpu/gl/GrGLBuffer.cpp",
+          "src/gpu/gl/GrGLCaps.cpp",
+          "src/gpu/gl/GrGLContext.cpp",
+          "src/gpu/gl/GrGLExtensions.cpp",
+          "src/gpu/gl/GrGLGLSL.cpp",
+          "src/gpu/gl/GrGLGpu.cpp",
+          "src/gpu/gl/GrGLGpuProgramCache.cpp",
+          "src/gpu/gl/GrGLInterfaceAutogen.cpp",
+          "src/gpu/gl/GrGLOpsRenderPass.cpp",
+          "src/gpu/gl/GrGLPath.cpp",
+          "src/gpu/gl/GrGLPathRendering.cpp",
+          "src/gpu/gl/GrGLProgram.cpp",
+          "src/gpu/gl/GrGLProgramDataManager.cpp",
+          "src/gpu/gl/GrGLRenderTarget.cpp",
+          "src/gpu/gl/GrGLSemaphore.cpp",
+          "src/gpu/gl/GrGLStencilAttachment.cpp",
+          "src/gpu/gl/GrGLTexture.cpp",
+          "src/gpu/gl/GrGLTextureRenderTarget.cpp",
+          "src/gpu/gl/GrGLTypesPriv.cpp",
+          "src/gpu/gl/GrGLUniformHandler.cpp",
+          "src/gpu/gl/GrGLUtil.cpp",
+          "src/gpu/gl/GrGLVaryingHandler.cpp",
+          "src/gpu/gl/GrGLVertexArray.cpp",
+          "src/gpu/gl/builders/GrGLProgramBuilder.cpp",
+          "src/gpu/gl/builders/GrGLShaderStringBuilder.cpp",
+          "src/gpu/gl/egl/GrGLMakeNativeInterface_egl.cpp",
+          "src/gpu/glsl/GrGLSL.cpp",
+          "src/gpu/glsl/GrGLSLBlend.cpp",
+          "src/gpu/glsl/GrGLSLFragmentProcessor.cpp",
+          "src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp",
+          "src/gpu/glsl/GrGLSLGeometryProcessor.cpp",
+          "src/gpu/glsl/GrGLSLPrimitiveProcessor.cpp",
+          "src/gpu/glsl/GrGLSLProgramBuilder.cpp",
+          "src/gpu/glsl/GrGLSLProgramDataManager.cpp",
+          "src/gpu/glsl/GrGLSLShaderBuilder.cpp",
+          "src/gpu/glsl/GrGLSLUniformHandler.cpp",
+          "src/gpu/glsl/GrGLSLVarying.cpp",
+          "src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp",
+          "src/gpu/glsl/GrGLSLXferProcessor.cpp",
+          "src/gpu/gradients/GrGradientBitmapCache.cpp",
+          "src/gpu/gradients/GrGradientShader.cpp",
+          "src/gpu/gradients/generated/GrClampedGradientEffect.cpp",
+          "src/gpu/gradients/generated/GrDualIntervalGradientColorizer.cpp",
+          "src/gpu/gradients/generated/GrLinearGradientLayout.cpp",
+          "src/gpu/gradients/generated/GrRadialGradientLayout.cpp",
+          "src/gpu/gradients/generated/GrSingleIntervalGradientColorizer.cpp",
+          "src/gpu/gradients/generated/GrSweepGradientLayout.cpp",
+          "src/gpu/gradients/generated/GrTextureGradientColorizer.cpp",
+          "src/gpu/gradients/generated/GrTiledGradientEffect.cpp",
+          "src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.cpp",
+          "src/gpu/gradients/generated/GrUnrolledBinaryGradientColorizer.cpp",
+          "src/gpu/mock/GrMockCaps.cpp",
+          "src/gpu/mock/GrMockGpu.cpp",
+          "src/gpu/mock/GrMockTypes.cpp",
+          "src/gpu/ops/GrAAConvexPathRenderer.cpp",
+          "src/gpu/ops/GrAAConvexTessellator.cpp",
+          "src/gpu/ops/GrAAHairLinePathRenderer.cpp",
+          "src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp",
+          "src/gpu/ops/GrAtlasTextOp.cpp",
+          "src/gpu/ops/GrClearOp.cpp",
+          "src/gpu/ops/GrClearStencilClipOp.cpp",
+          "src/gpu/ops/GrDashLinePathRenderer.cpp",
+          "src/gpu/ops/GrDashOp.cpp",
+          "src/gpu/ops/GrDefaultPathRenderer.cpp",
+          "src/gpu/ops/GrDrawAtlasOp.cpp",
+          "src/gpu/ops/GrDrawPathOp.cpp",
+          "src/gpu/ops/GrDrawVerticesOp.cpp",
+          "src/gpu/ops/GrDrawableOp.cpp",
+          "src/gpu/ops/GrFillRRectOp.cpp",
+          "src/gpu/ops/GrFillRectOp.cpp",
+          "src/gpu/ops/GrLatticeOp.cpp",
+          "src/gpu/ops/GrMeshDrawOp.cpp",
+          "src/gpu/ops/GrOp.cpp",
+          "src/gpu/ops/GrOvalOpFactory.cpp",
+          "src/gpu/ops/GrQuadPerEdgeAA.cpp",
+          "src/gpu/ops/GrRegionOp.cpp",
+          "src/gpu/ops/GrShadowRRectOp.cpp",
+          "src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp",
+          "src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp",
+          "src/gpu/ops/GrSmallPathRenderer.cpp",
+          "src/gpu/ops/GrStencilAndCoverPathRenderer.cpp",
+          "src/gpu/ops/GrStencilPathOp.cpp",
+          "src/gpu/ops/GrStrokeRectOp.cpp",
+          "src/gpu/ops/GrTextureOp.cpp",
+          "src/gpu/ops/GrTriangulatingPathRenderer.cpp",
+          "src/gpu/tessellate/GrDrawAtlasPathOp.cpp",
+          "src/gpu/tessellate/GrFillPathShader.cpp",
+          "src/gpu/tessellate/GrStencilPathShader.cpp",
+          "src/gpu/tessellate/GrTessellatePathOp.cpp",
+          "src/gpu/tessellate/GrTessellationPathRenderer.cpp",
+          "src/gpu/text/GrAtlasManager.cpp",
+          "src/gpu/text/GrDistanceFieldAdjustTable.cpp",
+          "src/gpu/text/GrSDFMaskFilter.cpp",
+          "src/gpu/text/GrStrikeCache.cpp",
+          "src/gpu/text/GrTextBlob.cpp",
+          "src/gpu/text/GrTextBlobCache.cpp",
+          "src/gpu/text/GrTextContext.cpp",
+          "src/gpu/vk/GrVkAMDMemoryAllocator.cpp",
+          "src/gpu/vk/GrVkBuffer.cpp",
+          "src/gpu/vk/GrVkCaps.cpp",
+          "src/gpu/vk/GrVkCommandBuffer.cpp",
+          "src/gpu/vk/GrVkCommandPool.cpp",
+          "src/gpu/vk/GrVkDescriptorPool.cpp",
+          "src/gpu/vk/GrVkDescriptorSet.cpp",
+          "src/gpu/vk/GrVkDescriptorSetManager.cpp",
+          "src/gpu/vk/GrVkExtensions.cpp",
+          "src/gpu/vk/GrVkFramebuffer.cpp",
+          "src/gpu/vk/GrVkGpu.cpp",
+          "src/gpu/vk/GrVkImage.cpp",
+          "src/gpu/vk/GrVkImageView.cpp",
+          "src/gpu/vk/GrVkInterface.cpp",
+          "src/gpu/vk/GrVkMemory.cpp",
+          "src/gpu/vk/GrVkMeshBuffer.cpp",
+          "src/gpu/vk/GrVkOpsRenderPass.cpp",
+          "src/gpu/vk/GrVkPipeline.cpp",
+          "src/gpu/vk/GrVkPipelineState.cpp",
+          "src/gpu/vk/GrVkPipelineStateBuilder.cpp",
+          "src/gpu/vk/GrVkPipelineStateCache.cpp",
+          "src/gpu/vk/GrVkPipelineStateDataManager.cpp",
+          "src/gpu/vk/GrVkRenderPass.cpp",
+          "src/gpu/vk/GrVkRenderTarget.cpp",
+          "src/gpu/vk/GrVkResourceProvider.cpp",
+          "src/gpu/vk/GrVkSampler.cpp",
+          "src/gpu/vk/GrVkSamplerYcbcrConversion.cpp",
+          "src/gpu/vk/GrVkSecondaryCBDrawContext.cpp",
+          "src/gpu/vk/GrVkSemaphore.cpp",
+          "src/gpu/vk/GrVkStencilAttachment.cpp",
+          "src/gpu/vk/GrVkTexture.cpp",
+          "src/gpu/vk/GrVkTextureRenderTarget.cpp",
+          "src/gpu/vk/GrVkTransferBuffer.cpp",
+          "src/gpu/vk/GrVkTypesPriv.cpp",
+          "src/gpu/vk/GrVkUniformBuffer.cpp",
+          "src/gpu/vk/GrVkUniformHandler.cpp",
+          "src/gpu/vk/GrVkUtil.cpp",
+          "src/gpu/vk/GrVkVaryingHandler.cpp",
+          "src/image/SkImage_Gpu.cpp",
+          "src/image/SkImage_GpuBase.cpp",
+          "src/image/SkImage_GpuYUVA.cpp",
+          "src/image/SkSurface_Gpu.cpp",
+          "src/ports/SkDebug_android.cpp",
+          "src/ports/SkOSFile_posix.cpp",
+          "src/ports/SkOSLibrary_posix.cpp",
+          "src/sksl/SkSLCPPCodeGenerator.cpp",
+          "src/sksl/SkSLCPPUniformCTypes.cpp",
+          "src/sksl/SkSLGLSLCodeGenerator.cpp",
+          "src/sksl/SkSLHCodeGenerator.cpp",
+          "src/sksl/SkSLMetalCodeGenerator.cpp",
+          "src/sksl/SkSLOutputStream.cpp",
+          "src/sksl/SkSLPipelineStageCodeGenerator.cpp",
+          "src/sksl/SkSLSPIRVCodeGenerator.cpp",
+          "src/sksl/SkSLSPIRVtoHLSL.cpp",
+          "tools/SkSharingProc.cpp",
+          "third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp",
+        ],
+        local_include_dirs: [
+          "android",
+          "third_party/vulkanmemoryallocator/",
+        ],
+        export_include_dirs: [
+          "android",
+        ],
+      },
+      linux_glibc: {
+        cflags: [
+          "-mssse3",
+        ],
+        srcs: [
+          "src/codec/SkRawCodec.cpp",
+          "src/ports/SkDebug_stdio.cpp",
+          "src/ports/SkOSFile_posix.cpp",
+          "src/ports/SkOSLibrary_posix.cpp",
+        ],
+        local_include_dirs: [
+          "linux",
+        ],
+        export_include_dirs: [
+          "linux",
+        ],
+      },
+      darwin: {
+        cflags: [
+          "-mssse3",
+        ],
+        srcs: [
+          "src/codec/SkRawCodec.cpp",
+          "src/ports/SkDebug_stdio.cpp",
+          "src/ports/SkImageEncoder_CG.cpp",
+          "src/ports/SkImageGeneratorCG.cpp",
+          "src/ports/SkOSFile_posix.cpp",
+          "src/ports/SkOSLibrary_posix.cpp",
+        ],
+        local_include_dirs: [
+          "mac",
+        ],
+        export_include_dirs: [
+          "mac",
+        ],
+      },
+      windows: {
+        cflags: [
+          "-mssse3",
+          "-Wno-unknown-pragmas",
+        ],
+        srcs: [
+          "src/ports/SkDebug_win.cpp",
+          "src/ports/SkImageEncoder_WIC.cpp",
+          "src/ports/SkImageGeneratorWIC.cpp",
+          "src/ports/SkOSFile_win.cpp",
+          "src/ports/SkOSLibrary_win.cpp",
+        ],
+        local_include_dirs: [
+          "win",
+        ],
+        export_include_dirs: [
+          "win",
+        ],
+      },
+    },
+
+    defaults: ["skia_deps",
+               "skia_pgo",
+    ],
+}
+
+// Build libskia with PGO by default.
+// Location of PGO profile data is defined in build/soong/cc/pgo.go
+// and is separate from skia.
+// To turn it off, set ANDROID_PGO_NO_PROFILE_USE environment variable
+// or set enable_profile_use property to false.
+cc_defaults {
+    name: "skia_pgo",
+    pgo: {
+        instrumentation: true,
+        profile_file: "hwui/hwui.profdata",
+        benchmarks: ["hwui", "skia"],
+        enable_profile_use: true,
+    },
+}
+
+// "defaults" property to disable profile use for Skia tools and benchmarks.
+cc_defaults {
+    name: "skia_pgo_no_profile_use",
+    defaults: [
+        "skia_pgo",
+    ],
+    pgo: {
+        enable_profile_use: false,
+    },
+}
+
+cc_defaults {
+    name: "skia_deps",
+    shared_libs: [
+        "libandroidicu",
+        "libdng_sdk",
+        "libexpat",
+        "libft2",
+        "libjpeg",
+        "liblog",
+        "libpiex",
+        "libpng",
+        "libz",
+    ],
+    static_libs: [
+        "libarect",
+        "libsfntly",
+        "libwebp-decode",
+        "libwebp-encode",
+    ],
+    group_static_libs: true,
+    target: {
+      android: {
+        shared_libs: [
+            "libcutils",
+            "libEGL",
+            "libGLESv2",
+            "libheif",
+            "libvulkan",
+            "libnativewindow",
+        ],
+        export_shared_lib_headers: [
+            "libvulkan",
+        ],
+      },
+      host: {
+        static_libs: [
+          "libcutils",
+        ],
+      },
+      darwin: {
+        host_ldlibs: [
+            "-framework AppKit",
+        ],
+      },
+      windows: {
+        enabled: true,
+        host_ldlibs: [
+            "-lgdi32",
+            "-loleaut32",
+            "-lole32",
+            "-lopengl32",
+            "-luuid",
+            "-lwindowscodecs",
+        ],
+      },
+    },
+}
+
+cc_defaults {
+    name: "skia_tool_deps",
+    defaults: [
+        "skia_deps",
+        "skia_pgo_no_profile_use"
+    ],
+    static_libs: [
+        "libskia",
+    ],
+    cflags: [
+        "-Wno-implicit-fallthrough",
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+    ],
+}
+
+cc_test {
+    name: "skia_dm",
+
+    defaults: [
+        "skia_tool_deps"
+    ],
+
+    local_include_dirs: [
+        "",
+        "include/third_party/skcms",
+        "include/third_party/vulkan/",
+        "modules/skottie/include/",
+        "modules/skottie/utils/",
+        "third_party/libgifcodec/",
+    ],
+
+    srcs: [
+        "dm/DM.cpp",
+        "dm/DMGpuTestProcs.cpp",
+        "dm/DMJsonWriter.cpp",
+        "dm/DMSrcSink.cpp",
+        "experimental/svg/model/SkSVGAttribute.cpp",
+        "experimental/svg/model/SkSVGAttributeParser.cpp",
+        "experimental/svg/model/SkSVGCircle.cpp",
+        "experimental/svg/model/SkSVGClipPath.cpp",
+        "experimental/svg/model/SkSVGContainer.cpp",
+        "experimental/svg/model/SkSVGDOM.cpp",
+        "experimental/svg/model/SkSVGEllipse.cpp",
+        "experimental/svg/model/SkSVGGradient.cpp",
+        "experimental/svg/model/SkSVGLine.cpp",
+        "experimental/svg/model/SkSVGLinearGradient.cpp",
+        "experimental/svg/model/SkSVGNode.cpp",
+        "experimental/svg/model/SkSVGPath.cpp",
+        "experimental/svg/model/SkSVGPattern.cpp",
+        "experimental/svg/model/SkSVGPoly.cpp",
+        "experimental/svg/model/SkSVGRadialGradient.cpp",
+        "experimental/svg/model/SkSVGRect.cpp",
+        "experimental/svg/model/SkSVGRenderContext.cpp",
+        "experimental/svg/model/SkSVGSVG.cpp",
+        "experimental/svg/model/SkSVGShape.cpp",
+        "experimental/svg/model/SkSVGStop.cpp",
+        "experimental/svg/model/SkSVGText.cpp",
+        "experimental/svg/model/SkSVGTransformableNode.cpp",
+        "experimental/svg/model/SkSVGUse.cpp",
+        "experimental/svg/model/SkSVGValue.cpp",
+        "gm/3d.cpp",
+        "gm/aaa.cpp",
+        "gm/aaclip.cpp",
+        "gm/aarectmodes.cpp",
+        "gm/aaxfermodes.cpp",
+        "gm/addarc.cpp",
+        "gm/all_bitmap_configs.cpp",
+        "gm/alpha_image.cpp",
+        "gm/alphagradients.cpp",
+        "gm/analytic_gradients.cpp",
+        "gm/androidblendmodes.cpp",
+        "gm/animated_gif.cpp",
+        "gm/animatedimageblurs.cpp",
+        "gm/anisotropic.cpp",
+        "gm/annotated_text.cpp",
+        "gm/arcofzorro.cpp",
+        "gm/arcto.cpp",
+        "gm/arithmode.cpp",
+        "gm/asyncrescaleandread.cpp",
+        "gm/atlastext.cpp",
+        "gm/b_119394958.cpp",
+        "gm/backdrop.cpp",
+        "gm/backdrop_imagefilter_croprect.cpp",
+        "gm/badpaint.cpp",
+        "gm/bc1_transparency.cpp",
+        "gm/beziereffects.cpp",
+        "gm/beziers.cpp",
+        "gm/bicubic.cpp",
+        "gm/bigblurs.cpp",
+        "gm/bigmatrix.cpp",
+        "gm/bigrect.cpp",
+        "gm/bigrrectaaeffect.cpp",
+        "gm/bigtext.cpp",
+        "gm/bigtileimagefilter.cpp",
+        "gm/bitmapcopy.cpp",
+        "gm/bitmapfilters.cpp",
+        "gm/bitmapimage.cpp",
+        "gm/bitmappremul.cpp",
+        "gm/bitmaprect.cpp",
+        "gm/bitmaprecttest.cpp",
+        "gm/bitmapshader.cpp",
+        "gm/bitmaptiled.cpp",
+        "gm/bleed.cpp",
+        "gm/blend.cpp",
+        "gm/blurcircles.cpp",
+        "gm/blurcircles2.cpp",
+        "gm/blurignorexform.cpp",
+        "gm/blurimagevmask.cpp",
+        "gm/blurpositioning.cpp",
+        "gm/blurquickreject.cpp",
+        "gm/blurrect.cpp",
+        "gm/blurredclippedcircle.cpp",
+        "gm/blurroundrect.cpp",
+        "gm/blurs.cpp",
+        "gm/blurtextsmallradii.cpp",
+        "gm/bmpfilterqualityrepeat.cpp",
+        "gm/bug5252.cpp",
+        "gm/bug530095.cpp",
+        "gm/bug615686.cpp",
+        "gm/bug6643.cpp",
+        "gm/bug6783.cpp",
+        "gm/bug9331.cpp",
+        "gm/cgm.c",
+        "gm/cgms.cpp",
+        "gm/circle_sizes.cpp",
+        "gm/circles.cpp",
+        "gm/circulararcs.cpp",
+        "gm/circularclips.cpp",
+        "gm/clip_error.cpp",
+        "gm/clip_sierpinski_region.cpp",
+        "gm/clip_strokerect.cpp",
+        "gm/clipdrawdraw.cpp",
+        "gm/clippedbitmapshaders.cpp",
+        "gm/clockwise.cpp",
+        "gm/collapsepaths.cpp",
+        "gm/color4f.cpp",
+        "gm/coloremoji.cpp",
+        "gm/coloremoji_blendmodes.cpp",
+        "gm/colorfilteralpha8.cpp",
+        "gm/colorfilterimagefilter.cpp",
+        "gm/colorfilters.cpp",
+        "gm/colormatrix.cpp",
+        "gm/colorwheel.cpp",
+        "gm/complexclip.cpp",
+        "gm/complexclip2.cpp",
+        "gm/complexclip3.cpp",
+        "gm/complexclip4.cpp",
+        "gm/complexclip_blur_tiled.cpp",
+        "gm/composeshader.cpp",
+        "gm/compositor_quads.cpp",
+        "gm/compressed_textures.cpp",
+        "gm/concavepaths.cpp",
+        "gm/conicpaths.cpp",
+        "gm/constcolorprocessor.cpp",
+        "gm/convex_all_line_paths.cpp",
+        "gm/convexpaths.cpp",
+        "gm/convexpolyclip.cpp",
+        "gm/convexpolyeffect.cpp",
+        "gm/copy_to_4444.cpp",
+        "gm/crbug_1041204.cpp",
+        "gm/crbug_1073670.cpp",
+        "gm/crbug_224618.cpp",
+        "gm/crbug_691386.cpp",
+        "gm/crbug_788500.cpp",
+        "gm/crbug_847759.cpp",
+        "gm/crbug_884166.cpp",
+        "gm/crbug_887103.cpp",
+        "gm/crbug_892988.cpp",
+        "gm/crbug_899512.cpp",
+        "gm/crbug_905548.cpp",
+        "gm/crbug_908646.cpp",
+        "gm/crbug_913349.cpp",
+        "gm/crbug_918512.cpp",
+        "gm/crbug_938592.cpp",
+        "gm/crbug_946965.cpp",
+        "gm/crbug_947055.cpp",
+        "gm/crbug_996140.cpp",
+        "gm/croppedrects.cpp",
+        "gm/crosscontextimage.cpp",
+        "gm/cubicpaths.cpp",
+        "gm/daa.cpp",
+        "gm/dashcircle.cpp",
+        "gm/dashcubics.cpp",
+        "gm/dashing.cpp",
+        "gm/degeneratesegments.cpp",
+        "gm/dftext.cpp",
+        "gm/dftext_blob_persp.cpp",
+        "gm/discard.cpp",
+        "gm/displacement.cpp",
+        "gm/distantclip.cpp",
+        "gm/downsamplebitmap.cpp",
+        "gm/draw_bitmap_rect_skbug4374.cpp",
+        "gm/drawable.cpp",
+        "gm/drawatlas.cpp",
+        "gm/drawatlascolor.cpp",
+        "gm/drawbitmaprect.cpp",
+        "gm/drawimageset.cpp",
+        "gm/drawminibitmaprect.cpp",
+        "gm/drawquadset.cpp",
+        "gm/drawregion.cpp",
+        "gm/drawregionmodes.cpp",
+        "gm/dropshadowimagefilter.cpp",
+        "gm/drrect.cpp",
+        "gm/drrect_small_inner.cpp",
+        "gm/dstreadshuffle.cpp",
+        "gm/ducky_yuv_blend.cpp",
+        "gm/emboss.cpp",
+        "gm/emptypath.cpp",
+        "gm/encode.cpp",
+        "gm/encode_alpha_jpeg.cpp",
+        "gm/encode_platform.cpp",
+        "gm/encode_srgb.cpp",
+        "gm/exoticformats.cpp",
+        "gm/extractbitmap.cpp",
+        "gm/fadefilter.cpp",
+        "gm/fatpathfill.cpp",
+        "gm/filltypes.cpp",
+        "gm/filltypespersp.cpp",
+        "gm/filterbitmap.cpp",
+        "gm/filterbug.cpp",
+        "gm/filterfastbounds.cpp",
+        "gm/filterindiabox.cpp",
+        "gm/flippity.cpp",
+        "gm/fontcache.cpp",
+        "gm/fontmgr.cpp",
+        "gm/fontregen.cpp",
+        "gm/fontscaler.cpp",
+        "gm/fontscalerdistortable.cpp",
+        "gm/fpcoordinateoverride.cpp",
+        "gm/fwidth_squircle.cpp",
+        "gm/gammatext.cpp",
+        "gm/getpostextpath.cpp",
+        "gm/giantbitmap.cpp",
+        "gm/glyph_pos.cpp",
+        "gm/gm.cpp",
+        "gm/gpu_blur_utils.cpp",
+        "gm/gradient_dirty_laundry.cpp",
+        "gm/gradient_matrix.cpp",
+        "gm/gradients.cpp",
+        "gm/gradients_2pt_conical.cpp",
+        "gm/gradients_degenerate.cpp",
+        "gm/gradients_no_texture.cpp",
+        "gm/gradtext.cpp",
+        "gm/grayscalejpg.cpp",
+        "gm/hairlines.cpp",
+        "gm/hairmodes.cpp",
+        "gm/hardstop_gradients.cpp",
+        "gm/highcontrastfilter.cpp",
+        "gm/hittestpath.cpp",
+        "gm/hsl.cpp",
+        "gm/hugepath.cpp",
+        "gm/image.cpp",
+        "gm/image_pict.cpp",
+        "gm/image_shader.cpp",
+        "gm/imagealphathreshold.cpp",
+        "gm/imageblur.cpp",
+        "gm/imageblur2.cpp",
+        "gm/imageblurclampmode.cpp",
+        "gm/imageblurrepeatmode.cpp",
+        "gm/imageblurtiled.cpp",
+        "gm/imagefilters.cpp",
+        "gm/imagefiltersbase.cpp",
+        "gm/imagefiltersclipped.cpp",
+        "gm/imagefilterscropexpand.cpp",
+        "gm/imagefilterscropped.cpp",
+        "gm/imagefiltersgraph.cpp",
+        "gm/imagefiltersscaled.cpp",
+        "gm/imagefiltersstroked.cpp",
+        "gm/imagefilterstransformed.cpp",
+        "gm/imagefromyuvtextures.cpp",
+        "gm/imagemagnifier.cpp",
+        "gm/imagemakewithfilter.cpp",
+        "gm/imagemasksubset.cpp",
+        "gm/imageresizetiled.cpp",
+        "gm/imagescalealigned.cpp",
+        "gm/imagesource.cpp",
+        "gm/imagesource2.cpp",
+        "gm/internal_links.cpp",
+        "gm/inverseclip.cpp",
+        "gm/inversepaths.cpp",
+        "gm/jpg_color_cube.cpp",
+        "gm/labyrinth.cpp",
+        "gm/largeglyphblur.cpp",
+        "gm/lattice.cpp",
+        "gm/lcdblendmodes.cpp",
+        "gm/lcdoverlap.cpp",
+        "gm/lcdtext.cpp",
+        "gm/lighting.cpp",
+        "gm/linepaths.cpp",
+        "gm/localmatriximagefilter.cpp",
+        "gm/localmatriximageshader.cpp",
+        "gm/localmatrixshader.cpp",
+        "gm/lumafilter.cpp",
+        "gm/mac_aa_explorer.cpp",
+        "gm/make_raster_image.cpp",
+        "gm/makecolorspace.cpp",
+        "gm/mandoline.cpp",
+        "gm/manypaths.cpp",
+        "gm/matrixconvolution.cpp",
+        "gm/matriximagefilter.cpp",
+        "gm/mipmap.cpp",
+        "gm/mixedtextblobs.cpp",
+        "gm/mixercolorfilter.cpp",
+        "gm/modecolorfilters.cpp",
+        "gm/morphology.cpp",
+        "gm/nested.cpp",
+        "gm/ninepatchstretch.cpp",
+        "gm/nonclosedpaths.cpp",
+        "gm/offsetimagefilter.cpp",
+        "gm/orientation.cpp",
+        "gm/ovals.cpp",
+        "gm/overdrawcanvas.cpp",
+        "gm/overdrawcolorfilter.cpp",
+        "gm/overstroke.cpp",
+        "gm/p3.cpp",
+        "gm/patch.cpp",
+        "gm/path_stroke_with_zero_length.cpp",
+        "gm/patharcto.cpp",
+        "gm/pathcontourstart.cpp",
+        "gm/patheffects.cpp",
+        "gm/pathfill.cpp",
+        "gm/pathinterior.cpp",
+        "gm/pathmaskcache.cpp",
+        "gm/pathmeasure.cpp",
+        "gm/pathopsinverse.cpp",
+        "gm/pathreverse.cpp",
+        "gm/pdf_never_embed.cpp",
+        "gm/perlinnoise.cpp",
+        "gm/perspimages.cpp",
+        "gm/perspshaders.cpp",
+        "gm/picture.cpp",
+        "gm/pictureimagefilter.cpp",
+        "gm/pictureimagegenerator.cpp",
+        "gm/pictureshader.cpp",
+        "gm/pictureshadercache.cpp",
+        "gm/pictureshadertile.cpp",
+        "gm/pixelsnap.cpp",
+        "gm/plus.cpp",
+        "gm/points.cpp",
+        "gm/poly2poly.cpp",
+        "gm/polygonoffset.cpp",
+        "gm/polygons.cpp",
+        "gm/postercircle.cpp",
+        "gm/preservefillrule.cpp",
+        "gm/quadpaths.cpp",
+        "gm/radial_gradient_precision.cpp",
+        "gm/rasterhandleallocator.cpp",
+        "gm/readpixels.cpp",
+        "gm/recordopts.cpp",
+        "gm/rectangletexture.cpp",
+        "gm/rects.cpp",
+        "gm/repeated_bitmap.cpp",
+        "gm/resizeimagefilter.cpp",
+        "gm/roundrects.cpp",
+        "gm/rrect.cpp",
+        "gm/rrectclipdrawpaint.cpp",
+        "gm/rrects.cpp",
+        "gm/runtimecolorfilter.cpp",
+        "gm/runtimefunctions.cpp",
+        "gm/runtimeshader.cpp",
+        "gm/sample_matrix_constant.cpp",
+        "gm/sample_matrix_variable.cpp",
+        "gm/samplelocations.cpp",
+        "gm/samplerstress.cpp",
+        "gm/savelayer.cpp",
+        "gm/scaledemoji.cpp",
+        "gm/scaledemoji_rendering.cpp",
+        "gm/scaledstrokes.cpp",
+        "gm/shadermaskfilter.cpp",
+        "gm/shadertext3.cpp",
+        "gm/shadowutils.cpp",
+        "gm/shallowgradient.cpp",
+        "gm/shapes.cpp",
+        "gm/sharedcorners.cpp",
+        "gm/showmiplevels.cpp",
+        "gm/simple_magnification.cpp",
+        "gm/simpleaaclip.cpp",
+        "gm/simplerect.cpp",
+        "gm/skbug1719.cpp",
+        "gm/skbug_257.cpp",
+        "gm/skbug_4868.cpp",
+        "gm/skbug_5321.cpp",
+        "gm/skbug_8664.cpp",
+        "gm/skbug_8955.cpp",
+        "gm/skbug_9319.cpp",
+        "gm/skbug_9819.cpp",
+        "gm/smallarc.cpp",
+        "gm/smallpaths.cpp",
+        "gm/spritebitmap.cpp",
+        "gm/srcmode.cpp",
+        "gm/srgb.cpp",
+        "gm/stlouisarch.cpp",
+        "gm/stringart.cpp",
+        "gm/stroke_rect_shader.cpp",
+        "gm/strokedlines.cpp",
+        "gm/strokefill.cpp",
+        "gm/strokerect.cpp",
+        "gm/strokerect_anisotropic.cpp",
+        "gm/strokerects.cpp",
+        "gm/strokes.cpp",
+        "gm/stroketext.cpp",
+        "gm/subsetshader.cpp",
+        "gm/surface.cpp",
+        "gm/tablecolorfilter.cpp",
+        "gm/tallstretchedbitmaps.cpp",
+        "gm/tessellation.cpp",
+        "gm/testgradient.cpp",
+        "gm/texelsubset.cpp",
+        "gm/text_scale_skew.cpp",
+        "gm/textblob.cpp",
+        "gm/textblobblockreordering.cpp",
+        "gm/textblobcolortrans.cpp",
+        "gm/textblobgeometrychange.cpp",
+        "gm/textbloblooper.cpp",
+        "gm/textblobmixedsizes.cpp",
+        "gm/textblobrandomfont.cpp",
+        "gm/textblobshader.cpp",
+        "gm/textblobtransforms.cpp",
+        "gm/textblobuseaftergpufree.cpp",
+        "gm/texteffects.cpp",
+        "gm/thinconcavepaths.cpp",
+        "gm/thinrects.cpp",
+        "gm/thinstrokedrects.cpp",
+        "gm/tiledscaledbitmap.cpp",
+        "gm/tileimagefilter.cpp",
+        "gm/tilemodes.cpp",
+        "gm/tilemodes_alpha.cpp",
+        "gm/tilemodes_scaled.cpp",
+        "gm/tinybitmap.cpp",
+        "gm/transparency.cpp",
+        "gm/trickycubicstrokes.cpp",
+        "gm/typeface.cpp",
+        "gm/unpremul.cpp",
+        "gm/variedtext.cpp",
+        "gm/verifiers/gmverifier.cpp",
+        "gm/vertices.cpp",
+        "gm/verylargebitmap.cpp",
+        "gm/wacky_yuv_formats.cpp",
+        "gm/windowrectangles.cpp",
+        "gm/xfermodeimagefilter.cpp",
+        "gm/xfermodes.cpp",
+        "gm/xfermodes2.cpp",
+        "gm/xfermodes3.cpp",
+        "gm/yuv420_odd_dim.cpp",
+        "gm/yuvtorgbeffect.cpp",
+        "src/svg/SkSVGCanvas.cpp",
+        "src/svg/SkSVGDevice.cpp",
+        "src/xml/SkDOM.cpp",
+        "src/xml/SkXMLParser.cpp",
+        "src/xml/SkXMLWriter.cpp",
+        "tests/AAClipTest.cpp",
+        "tests/AdvancedBlendTest.cpp",
+        "tests/AndroidCodecTest.cpp",
+        "tests/AnimatedImageTest.cpp",
+        "tests/AnnotationTest.cpp",
+        "tests/ApplyGammaTest.cpp",
+        "tests/ArenaAllocTest.cpp",
+        "tests/AsADashTest.cpp",
+        "tests/BackendAllocationTest.cpp",
+        "tests/BadIcoTest.cpp",
+        "tests/BitSetTest.cpp",
+        "tests/BitmapCopyTest.cpp",
+        "tests/BitmapGetColorTest.cpp",
+        "tests/BitmapTest.cpp",
+        "tests/BlendTest.cpp",
+        "tests/BlitMaskClip.cpp",
+        "tests/BlurTest.cpp",
+        "tests/BulkRectTest.cpp",
+        "tests/CTest.cpp",
+        "tests/CachedDataTest.cpp",
+        "tests/CachedDecodingPixelRefTest.cpp",
+        "tests/CanvasStateHelpers.cpp",
+        "tests/CanvasStateTest.cpp",
+        "tests/CanvasTest.cpp",
+        "tests/ChecksumTest.cpp",
+        "tests/ClearTest.cpp",
+        "tests/ClipBoundsTest.cpp",
+        "tests/ClipCubicTest.cpp",
+        "tests/ClipStackTest.cpp",
+        "tests/ClipperTest.cpp",
+        "tests/CodecAnimTest.cpp",
+        "tests/CodecExactReadTest.cpp",
+        "tests/CodecPartialTest.cpp",
+        "tests/CodecRecommendedTypeTest.cpp",
+        "tests/CodecTest.cpp",
+        "tests/ColorFilterTest.cpp",
+        "tests/ColorMatrixTest.cpp",
+        "tests/ColorPrivTest.cpp",
+        "tests/ColorSpaceTest.cpp",
+        "tests/ColorTest.cpp",
+        "tests/CompressedBackendAllocationTest.cpp",
+        "tests/CopySurfaceTest.cpp",
+        "tests/CrbugOssfuzz21688.cpp",
+        "tests/CubicMapTest.cpp",
+        "tests/DashPathEffectTest.cpp",
+        "tests/DataRefTest.cpp",
+        "tests/DebugLayerManagerTest.cpp",
+        "tests/DefaultPathRendererTest.cpp",
+        "tests/DeferredDisplayListTest.cpp",
+        "tests/DequeTest.cpp",
+        "tests/DescriptorTest.cpp",
+        "tests/DetermineDomainModeTest.cpp",
+        "tests/DeviceTest.cpp",
+        "tests/DiscardableMemoryPoolTest.cpp",
+        "tests/DiscardableMemoryTest.cpp",
+        "tests/DrawBitmapRectTest.cpp",
+        "tests/DrawOpAtlasTest.cpp",
+        "tests/DrawPathTest.cpp",
+        "tests/DrawTextTest.cpp",
+        "tests/EGLImageTest.cpp",
+        "tests/EmptyPathTest.cpp",
+        "tests/EncodeTest.cpp",
+        "tests/EncodedInfoTest.cpp",
+        "tests/ExifTest.cpp",
+        "tests/ExtendedSkColorTypeTests.cpp",
+        "tests/F16StagesTest.cpp",
+        "tests/FillPathTest.cpp",
+        "tests/FitsInTest.cpp",
+        "tests/FlattenDrawableTest.cpp",
+        "tests/FlattenableFactoryToName.cpp",
+        "tests/FlattenableNameToFactory.cpp",
+        "tests/Float16Test.cpp",
+        "tests/FloatingPointTextureTest.cpp",
+        "tests/FontHostStreamTest.cpp",
+        "tests/FontHostTest.cpp",
+        "tests/FontMgrTest.cpp",
+        "tests/FontNamesTest.cpp",
+        "tests/FontTest.cpp",
+        "tests/FrontBufferedStreamTest.cpp",
+        "tests/GLBackendSurfaceTest.cpp",
+        "tests/GeometryTest.cpp",
+        "tests/GifTest.cpp",
+        "tests/GlyphRunTest.cpp",
+        "tests/GpuDrawPathTest.cpp",
+        "tests/GpuRectanizerTest.cpp",
+        "tests/GrAHardwareBufferTest.cpp",
+        "tests/GrBlockAllocatorTest.cpp",
+        "tests/GrCCPRTest.cpp",
+        "tests/GrContextAbandonTest.cpp",
+        "tests/GrContextFactoryTest.cpp",
+        "tests/GrFinishedFlushTest.cpp",
+        "tests/GrGLExtensionsTest.cpp",
+        "tests/GrMemoryPoolTest.cpp",
+        "tests/GrMeshTest.cpp",
+        "tests/GrMipMappedTest.cpp",
+        "tests/GrOpListFlushTest.cpp",
+        "tests/GrPipelineDynamicStateTest.cpp",
+        "tests/GrPorterDuffTest.cpp",
+        "tests/GrQuadBufferTest.cpp",
+        "tests/GrQuadCropTest.cpp",
+        "tests/GrStyledShapeTest.cpp",
+        "tests/GrSurfaceTest.cpp",
+        "tests/GrTAllocatorTest.cpp",
+        "tests/GrTRecorderTest.cpp",
+        "tests/GrTestingBackendTextureUploadTest.cpp",
+        "tests/GrTextureMipMapInvalidationTest.cpp",
+        "tests/GrUploadPixelsTests.cpp",
+        "tests/GradientTest.cpp",
+        "tests/HSVRoundTripTest.cpp",
+        "tests/HashTest.cpp",
+        "tests/HighContrastFilterTest.cpp",
+        "tests/ICCTest.cpp",
+        "tests/ImageBitmapTest.cpp",
+        "tests/ImageCacheTest.cpp",
+        "tests/ImageFilterCacheTest.cpp",
+        "tests/ImageFilterTest.cpp",
+        "tests/ImageFrom565Bitmap.cpp",
+        "tests/ImageGeneratorTest.cpp",
+        "tests/ImageIsOpaqueTest.cpp",
+        "tests/ImageNewShaderTest.cpp",
+        "tests/ImageTest.cpp",
+        "tests/IncrTopoSortTest.cpp",
+        "tests/IndexedPngOverflowTest.cpp",
+        "tests/InfRectTest.cpp",
+        "tests/InsetConvexPolyTest.cpp",
+        "tests/InterpolatorTest.cpp",
+        "tests/InvalidIndexedPngTest.cpp",
+        "tests/IsClosedSingleContourTest.cpp",
+        "tests/JSONTest.cpp",
+        "tests/LListTest.cpp",
+        "tests/LRUCacheTest.cpp",
+        "tests/LayerDrawLooperTest.cpp",
+        "tests/LazyProxyTest.cpp",
+        "tests/M44Test.cpp",
+        "tests/MD5Test.cpp",
+        "tests/MallocPixelRefTest.cpp",
+        "tests/MaskCacheTest.cpp",
+        "tests/MathTest.cpp",
+        "tests/Matrix44Test.cpp",
+        "tests/MatrixClipCollapseTest.cpp",
+        "tests/MatrixColorFilterTest.cpp",
+        "tests/MatrixTest.cpp",
+        "tests/MemoryTest.cpp",
+        "tests/MemsetTest.cpp",
+        "tests/MessageBusTest.cpp",
+        "tests/MetaDataTest.cpp",
+        "tests/MipMapTest.cpp",
+        "tests/MultiPictureDocumentTest.cpp",
+        "tests/NonlinearBlendingTest.cpp",
+        "tests/OSPathTest.cpp",
+        "tests/OctoBoundsTest.cpp",
+        "tests/OffsetSimplePolyTest.cpp",
+        "tests/OnFlushCallbackTest.cpp",
+        "tests/OnceTest.cpp",
+        "tests/OpChainTest.cpp",
+        "tests/OverAlignedTest.cpp",
+        "tests/PDFDeflateWStreamTest.cpp",
+        "tests/PDFDocumentTest.cpp",
+        "tests/PDFGlyphsToUnicodeTest.cpp",
+        "tests/PDFJpegEmbedTest.cpp",
+        "tests/PDFMetadataAttributeTest.cpp",
+        "tests/PDFOpaqueSrcModeToSrcOverTest.cpp",
+        "tests/PDFPrimitivesTest.cpp",
+        "tests/PDFTaggedLinkTest.cpp",
+        "tests/PDFTaggedPruningTest.cpp",
+        "tests/PDFTaggedTableTest.cpp",
+        "tests/PDFTaggedTest.cpp",
+        "tests/PackBitsTest.cpp",
+        "tests/PackedConfigsTextureTest.cpp",
+        "tests/PaintImageFilterTest.cpp",
+        "tests/PaintTest.cpp",
+        "tests/ParametricStageTest.cpp",
+        "tests/ParsePathTest.cpp",
+        "tests/PathCoverageTest.cpp",
+        "tests/PathMeasureTest.cpp",
+        "tests/PathOpsAngleIdeas.cpp",
+        "tests/PathOpsAngleTest.cpp",
+        "tests/PathOpsAsWindingTest.cpp",
+        "tests/PathOpsBattles.cpp",
+        "tests/PathOpsBoundsTest.cpp",
+        "tests/PathOpsBuildUseTest.cpp",
+        "tests/PathOpsBuilderConicTest.cpp",
+        "tests/PathOpsBuilderTest.cpp",
+        "tests/PathOpsChalkboardTest.cpp",
+        "tests/PathOpsConicIntersectionTest.cpp",
+        "tests/PathOpsConicLineIntersectionTest.cpp",
+        "tests/PathOpsConicQuadIntersectionTest.cpp",
+        "tests/PathOpsCubicConicIntersectionTest.cpp",
+        "tests/PathOpsCubicIntersectionTest.cpp",
+        "tests/PathOpsCubicIntersectionTestData.cpp",
+        "tests/PathOpsCubicLineIntersectionIdeas.cpp",
+        "tests/PathOpsCubicLineIntersectionTest.cpp",
+        "tests/PathOpsCubicQuadIntersectionTest.cpp",
+        "tests/PathOpsCubicReduceOrderTest.cpp",
+        "tests/PathOpsDCubicTest.cpp",
+        "tests/PathOpsDLineTest.cpp",
+        "tests/PathOpsDPointTest.cpp",
+        "tests/PathOpsDRectTest.cpp",
+        "tests/PathOpsDVectorTest.cpp",
+        "tests/PathOpsDebug.cpp",
+        "tests/PathOpsExtendedTest.cpp",
+        "tests/PathOpsFuzz763Test.cpp",
+        "tests/PathOpsInverseTest.cpp",
+        "tests/PathOpsIssue3651.cpp",
+        "tests/PathOpsLineIntersectionTest.cpp",
+        "tests/PathOpsLineParametetersTest.cpp",
+        "tests/PathOpsOpCircleThreadedTest.cpp",
+        "tests/PathOpsOpCubicThreadedTest.cpp",
+        "tests/PathOpsOpLoopThreadedTest.cpp",
+        "tests/PathOpsOpRectThreadedTest.cpp",
+        "tests/PathOpsOpTest.cpp",
+        "tests/PathOpsQuadIntersectionTest.cpp",
+        "tests/PathOpsQuadIntersectionTestData.cpp",
+        "tests/PathOpsQuadLineIntersectionTest.cpp",
+        "tests/PathOpsQuadLineIntersectionThreadedTest.cpp",
+        "tests/PathOpsQuadReduceOrderTest.cpp",
+        "tests/PathOpsSimplifyDegenerateThreadedTest.cpp",
+        "tests/PathOpsSimplifyFailTest.cpp",
+        "tests/PathOpsSimplifyQuadThreadedTest.cpp",
+        "tests/PathOpsSimplifyQuadralateralsThreadedTest.cpp",
+        "tests/PathOpsSimplifyRectThreadedTest.cpp",
+        "tests/PathOpsSimplifyTest.cpp",
+        "tests/PathOpsSimplifyTrianglesThreadedTest.cpp",
+        "tests/PathOpsSkpTest.cpp",
+        "tests/PathOpsTestCommon.cpp",
+        "tests/PathOpsThreadedCommon.cpp",
+        "tests/PathOpsThreeWayTest.cpp",
+        "tests/PathOpsTigerTest.cpp",
+        "tests/PathOpsTightBoundsTest.cpp",
+        "tests/PathOpsTypesTest.cpp",
+        "tests/PathRendererCacheTests.cpp",
+        "tests/PathTest.cpp",
+        "tests/PictureBBHTest.cpp",
+        "tests/PictureShaderTest.cpp",
+        "tests/PictureTest.cpp",
+        "tests/PinnedImageTest.cpp",
+        "tests/PixelRefTest.cpp",
+        "tests/Point3Test.cpp",
+        "tests/PointTest.cpp",
+        "tests/PolyUtilsTest.cpp",
+        "tests/PremulAlphaRoundTripTest.cpp",
+        "tests/PrimitiveProcessorTest.cpp",
+        "tests/ProcessorTest.cpp",
+        "tests/ProgramsTest.cpp",
+        "tests/PromiseImageTest.cpp",
+        "tests/ProxyConversionTest.cpp",
+        "tests/ProxyRefTest.cpp",
+        "tests/ProxyTest.cpp",
+        "tests/QuickRejectTest.cpp",
+        "tests/RRectInPathTest.cpp",
+        "tests/RTreeTest.cpp",
+        "tests/RandomTest.cpp",
+        "tests/ReadPixelsTest.cpp",
+        "tests/ReadWriteAlphaTest.cpp",
+        "tests/Reader32Test.cpp",
+        "tests/RecordDrawTest.cpp",
+        "tests/RecordOptsTest.cpp",
+        "tests/RecordPatternTest.cpp",
+        "tests/RecordTest.cpp",
+        "tests/RecorderTest.cpp",
+        "tests/RecordingXfermodeTest.cpp",
+        "tests/RectTest.cpp",
+        "tests/RectangleTextureTest.cpp",
+        "tests/RefCntTest.cpp",
+        "tests/RegionTest.cpp",
+        "tests/RenderTargetContextTest.cpp",
+        "tests/RepeatedClippedBlurTest.cpp",
+        "tests/ResourceAllocatorTest.cpp",
+        "tests/ResourceCacheTest.cpp",
+        "tests/RoundRectTest.cpp",
+        "tests/SRGBReadWritePixelsTest.cpp",
+        "tests/SRGBTest.cpp",
+        "tests/SVGDeviceTest.cpp",
+        "tests/SafeMathTest.cpp",
+        "tests/SamplePatternDictionaryTest.cpp",
+        "tests/ScalarTest.cpp",
+        "tests/ScaleToSidesTest.cpp",
+        "tests/SerialProcsTest.cpp",
+        "tests/SerializationTest.cpp",
+        "tests/ShaderOpacityTest.cpp",
+        "tests/ShaderTest.cpp",
+        "tests/ShadowTest.cpp",
+        "tests/ShaperTest.cpp",
+        "tests/SizeTest.cpp",
+        "tests/SkBase64Test.cpp",
+        "tests/SkColor4fTest.cpp",
+        "tests/SkColorSpaceXformStepsTest.cpp",
+        "tests/SkDOMTest.cpp",
+        "tests/SkFixed15Test.cpp",
+        "tests/SkGaussFilterTest.cpp",
+        "tests/SkGlyphBufferTest.cpp",
+        "tests/SkImageTest.cpp",
+        "tests/SkNxTest.cpp",
+        "tests/SkPEGTest.cpp",
+        "tests/SkRasterPipelineTest.cpp",
+        "tests/SkRemoteGlyphCacheTest.cpp",
+        "tests/SkResourceCacheTest.cpp",
+        "tests/SkRuntimeEffectTest.cpp",
+        "tests/SkSLErrorTest.cpp",
+        "tests/SkSLFPTest.cpp",
+        "tests/SkSLGLSLTest.cpp",
+        "tests/SkSLInterpreterTest.cpp",
+        "tests/SkSLMemoryLayoutTest.cpp",
+        "tests/SkSLMetalTest.cpp",
+        "tests/SkSLSPIRVTest.cpp",
+        "tests/SkScalerCacheTest.cpp",
+        "tests/SkShaperJSONWriterTest.cpp",
+        "tests/SkSharedMutexTest.cpp",
+        "tests/SkStrikeCacheTest.cpp",
+        "tests/SkUTFTest.cpp",
+        "tests/SkVMTest.cpp",
+        "tests/SkVxTest.cpp",
+        "tests/Skbug5221.cpp",
+        "tests/Skbug6389.cpp",
+        "tests/Skbug6653.cpp",
+        "tests/SortTest.cpp",
+        "tests/SpecialImageTest.cpp",
+        "tests/SpecialSurfaceTest.cpp",
+        "tests/SrcOverTest.cpp",
+        "tests/SrcSrcOverBatchTest.cpp",
+        "tests/StreamBufferTest.cpp",
+        "tests/StreamTest.cpp",
+        "tests/StringTest.cpp",
+        "tests/StrokeTest.cpp",
+        "tests/StrokerTest.cpp",
+        "tests/SubsetPath.cpp",
+        "tests/SurfaceSemaphoreTest.cpp",
+        "tests/SurfaceTest.cpp",
+        "tests/SwizzlerTest.cpp",
+        "tests/TArrayTest.cpp",
+        "tests/TDPQueueTest.cpp",
+        "tests/TLazyTest.cpp",
+        "tests/TemplatesTest.cpp",
+        "tests/Test.cpp",
+        "tests/TestTest.cpp",
+        "tests/TestUtils.cpp",
+        "tests/TextBlobCacheTest.cpp",
+        "tests/TextBlobTest.cpp",
+        "tests/TextureBindingsResetTest.cpp",
+        "tests/TextureProxyTest.cpp",
+        "tests/TextureStripAtlasManagerTest.cpp",
+        "tests/Time.cpp",
+        "tests/TopoSortTest.cpp",
+        "tests/TraceMemoryDumpTest.cpp",
+        "tests/TracingTest.cpp",
+        "tests/TransferPixelsTest.cpp",
+        "tests/TriangulatingPathRendererTests.cpp",
+        "tests/TypefaceTest.cpp",
+        "tests/UnicodeTest.cpp",
+        "tests/UtilsTest.cpp",
+        "tests/VerticesTest.cpp",
+        "tests/VkBackendSurfaceTest.cpp",
+        "tests/VkDrawableTest.cpp",
+        "tests/VkHardwareBufferTest.cpp",
+        "tests/VkPriorityExtensionTest.cpp",
+        "tests/VkProtectedContextTest.cpp",
+        "tests/VkWrapTests.cpp",
+        "tests/VkYcbcrSamplerTest.cpp",
+        "tests/VptrTest.cpp",
+        "tests/WindowRectanglesTest.cpp",
+        "tests/WritePixelsTest.cpp",
+        "tests/Writer32Test.cpp",
+        "tests/YUVCacheTest.cpp",
+        "tests/YUVTest.cpp",
+        "third_party/etc1/etc1.cpp",
+        "tools/AndroidSkDebugToStdOut.cpp",
+        "tools/CrashHandler.cpp",
+        "tools/DDLPromiseImageHelper.cpp",
+        "tools/DDLTileHelper.cpp",
+        "tools/HashAndEncode.cpp",
+        "tools/LsanSuppressions.cpp",
+        "tools/ProcStats.cpp",
+        "tools/Resources.cpp",
+        "tools/SkMetaData.cpp",
+        "tools/SkSharingProc.cpp",
+        "tools/SkVMBuilders.cpp",
+        "tools/ToolUtils.cpp",
+        "tools/UrlDataManager.cpp",
+        "tools/debugger/DebugCanvas.cpp",
+        "tools/debugger/DebugLayerManager.cpp",
+        "tools/debugger/DrawCommand.cpp",
+        "tools/debugger/JsonWriteBuffer.cpp",
+        "tools/flags/CommandLineFlags.cpp",
+        "tools/flags/CommonFlagsAA.cpp",
+        "tools/flags/CommonFlagsConfig.cpp",
+        "tools/flags/CommonFlagsGpu.cpp",
+        "tools/flags/CommonFlagsImages.cpp",
+        "tools/fonts/RandomScalerContext.cpp",
+        "tools/fonts/TestFontMgr.cpp",
+        "tools/fonts/TestSVGTypeface.cpp",
+        "tools/fonts/TestTypeface.cpp",
+        "tools/fonts/ToolUtilsFont.cpp",
+        "tools/gpu/GrContextFactory.cpp",
+        "tools/gpu/GrTest.cpp",
+        "tools/gpu/MemoryCache.cpp",
+        "tools/gpu/ProxyUtils.cpp",
+        "tools/gpu/TestContext.cpp",
+        "tools/gpu/TestOps.cpp",
+        "tools/gpu/YUVUtils.cpp",
+        "tools/gpu/atlastext/GLTestAtlasTextRenderer.cpp",
+        "tools/gpu/gl/GLTestContext.cpp",
+        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
+        "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp",
+        "tools/gpu/mock/MockTestContext.cpp",
+        "tools/gpu/vk/VkTestContext.cpp",
+        "tools/gpu/vk/VkTestUtils.cpp",
+        "tools/random_parse_path.cpp",
+        "tools/timer/Timer.cpp",
+        "tools/trace/ChromeTracingTracer.cpp",
+        "tools/trace/EventTracingPriv.cpp",
+        "tools/trace/SkDebugfTracer.cpp",
+    ],
+
+    shared_libs: [
+        "libbinder",
+        "libutils",
+    ],
+}
+
+cc_test {
+    name: "skia_nanobench",
+
+    defaults: [
+        "skia_tool_deps"
+    ],
+
+    local_include_dirs: [
+        "",
+        "include/third_party/vulkan/",
+        "modules/skshaper/include/",
+        "third_party/libgifcodec/",
+    ],
+
+    srcs: [
+        "bench/AAClipBench.cpp",
+        "bench/AlternatingColorPatternBench.cpp",
+        "bench/AndroidCodecBench.cpp",
+        "bench/BenchLogger.cpp",
+        "bench/Benchmark.cpp",
+        "bench/BezierBench.cpp",
+        "bench/BigPathBench.cpp",
+        "bench/BitmapBench.cpp",
+        "bench/BitmapRectBench.cpp",
+        "bench/BitmapRegionDecoderBench.cpp",
+        "bench/BlendmodeBench.cpp",
+        "bench/BlurBench.cpp",
+        "bench/BlurImageFilterBench.cpp",
+        "bench/BlurRectBench.cpp",
+        "bench/BlurRectsBench.cpp",
+        "bench/BulkRectBench.cpp",
+        "bench/CTConvertBench.cpp",
+        "bench/ChartBench.cpp",
+        "bench/ChecksumBench.cpp",
+        "bench/ChromeBench.cpp",
+        "bench/ClearBench.cpp",
+        "bench/ClipMaskBench.cpp",
+        "bench/ClipStrategyBench.cpp",
+        "bench/CmapBench.cpp",
+        "bench/CodecBench.cpp",
+        "bench/ColorFilterBench.cpp",
+        "bench/ColorPrivBench.cpp",
+        "bench/CompositingImagesBench.cpp",
+        "bench/ControlBench.cpp",
+        "bench/CoverageBench.cpp",
+        "bench/CubicKLMBench.cpp",
+        "bench/CubicMapBench.cpp",
+        "bench/DDLRecorderBench.cpp",
+        "bench/DashBench.cpp",
+        "bench/DisplacementBench.cpp",
+        "bench/DrawBitmapAABench.cpp",
+        "bench/EncodeBench.cpp",
+        "bench/FSRectBench.cpp",
+        "bench/FontCacheBench.cpp",
+        "bench/GMBench.cpp",
+        "bench/GameBench.cpp",
+        "bench/GeometryBench.cpp",
+        "bench/GrCCFillGeometryBench.cpp",
+        "bench/GrMemoryPoolBench.cpp",
+        "bench/GrMipMapBench.cpp",
+        "bench/GrQuadBench.cpp",
+        "bench/GrResourceCacheBench.cpp",
+        "bench/GradientBench.cpp",
+        "bench/HairlinePathBench.cpp",
+        "bench/HardStopGradientBench_ScaleNumColors.cpp",
+        "bench/HardStopGradientBench_ScaleNumHardStops.cpp",
+        "bench/HardStopGradientBench_SpecialHardStops.cpp",
+        "bench/ImageBench.cpp",
+        "bench/ImageCacheBench.cpp",
+        "bench/ImageCacheBudgetBench.cpp",
+        "bench/ImageCycleBench.cpp",
+        "bench/ImageFilterCollapse.cpp",
+        "bench/ImageFilterDAGBench.cpp",
+        "bench/InterpBench.cpp",
+        "bench/JSONBench.cpp",
+        "bench/LightingBench.cpp",
+        "bench/LineBench.cpp",
+        "bench/MagnifierBench.cpp",
+        "bench/MathBench.cpp",
+        "bench/Matrix44Bench.cpp",
+        "bench/MatrixBench.cpp",
+        "bench/MatrixConvolutionBench.cpp",
+        "bench/MemsetBench.cpp",
+        "bench/MergeBench.cpp",
+        "bench/MipMapBench.cpp",
+        "bench/MorphologyBench.cpp",
+        "bench/MutexBench.cpp",
+        "bench/PDFBench.cpp",
+        "bench/PatchBench.cpp",
+        "bench/PathBench.cpp",
+        "bench/PathIterBench.cpp",
+        "bench/PathOpsBench.cpp",
+        "bench/PathTextBench.cpp",
+        "bench/PerlinNoiseBench.cpp",
+        "bench/PictureNestingBench.cpp",
+        "bench/PictureOverheadBench.cpp",
+        "bench/PicturePlaybackBench.cpp",
+        "bench/PolyUtilsBench.cpp",
+        "bench/PremulAndUnpremulAlphaOpsBench.cpp",
+        "bench/QuickRejectBench.cpp",
+        "bench/RTreeBench.cpp",
+        "bench/ReadPixBench.cpp",
+        "bench/RecordingBench.cpp",
+        "bench/RectBench.cpp",
+        "bench/RectanizerBench.cpp",
+        "bench/RefCntBench.cpp",
+        "bench/RegionBench.cpp",
+        "bench/RegionContainBench.cpp",
+        "bench/RepeatTileBench.cpp",
+        "bench/RotatedRectBench.cpp",
+        "bench/SKPAnimationBench.cpp",
+        "bench/SKPBench.cpp",
+        "bench/ScalarBench.cpp",
+        "bench/ShaderMaskFilterBench.cpp",
+        "bench/ShadowBench.cpp",
+        "bench/ShapesBench.cpp",
+        "bench/Sk4fBench.cpp",
+        "bench/SkGlyphCacheBench.cpp",
+        "bench/SkSLBench.cpp",
+        "bench/SkSLInterpreterBench.cpp",
+        "bench/SkVMBench.cpp",
+        "bench/SortBench.cpp",
+        "bench/StreamBench.cpp",
+        "bench/StrokeBench.cpp",
+        "bench/SwizzleBench.cpp",
+        "bench/TableBench.cpp",
+        "bench/TessellatePathBench.cpp",
+        "bench/TextBlobBench.cpp",
+        "bench/TileBench.cpp",
+        "bench/TileImageFilterBench.cpp",
+        "bench/TopoSortBench.cpp",
+        "bench/TypefaceBench.cpp",
+        "bench/VertBench.cpp",
+        "bench/VertexColorSpaceBench.cpp",
+        "bench/WritePixelsBench.cpp",
+        "bench/WriterBench.cpp",
+        "bench/nanobench.cpp",
+        "experimental/svg/model/SkSVGAttribute.cpp",
+        "experimental/svg/model/SkSVGAttributeParser.cpp",
+        "experimental/svg/model/SkSVGCircle.cpp",
+        "experimental/svg/model/SkSVGClipPath.cpp",
+        "experimental/svg/model/SkSVGContainer.cpp",
+        "experimental/svg/model/SkSVGDOM.cpp",
+        "experimental/svg/model/SkSVGEllipse.cpp",
+        "experimental/svg/model/SkSVGGradient.cpp",
+        "experimental/svg/model/SkSVGLine.cpp",
+        "experimental/svg/model/SkSVGLinearGradient.cpp",
+        "experimental/svg/model/SkSVGNode.cpp",
+        "experimental/svg/model/SkSVGPath.cpp",
+        "experimental/svg/model/SkSVGPattern.cpp",
+        "experimental/svg/model/SkSVGPoly.cpp",
+        "experimental/svg/model/SkSVGRadialGradient.cpp",
+        "experimental/svg/model/SkSVGRect.cpp",
+        "experimental/svg/model/SkSVGRenderContext.cpp",
+        "experimental/svg/model/SkSVGSVG.cpp",
+        "experimental/svg/model/SkSVGShape.cpp",
+        "experimental/svg/model/SkSVGStop.cpp",
+        "experimental/svg/model/SkSVGText.cpp",
+        "experimental/svg/model/SkSVGTransformableNode.cpp",
+        "experimental/svg/model/SkSVGUse.cpp",
+        "experimental/svg/model/SkSVGValue.cpp",
+        "gm/3d.cpp",
+        "gm/aaa.cpp",
+        "gm/aaclip.cpp",
+        "gm/aarectmodes.cpp",
+        "gm/aaxfermodes.cpp",
+        "gm/addarc.cpp",
+        "gm/all_bitmap_configs.cpp",
+        "gm/alpha_image.cpp",
+        "gm/alphagradients.cpp",
+        "gm/analytic_gradients.cpp",
+        "gm/androidblendmodes.cpp",
+        "gm/animated_gif.cpp",
+        "gm/animatedimageblurs.cpp",
+        "gm/anisotropic.cpp",
+        "gm/annotated_text.cpp",
+        "gm/arcofzorro.cpp",
+        "gm/arcto.cpp",
+        "gm/arithmode.cpp",
+        "gm/asyncrescaleandread.cpp",
+        "gm/atlastext.cpp",
+        "gm/b_119394958.cpp",
+        "gm/backdrop.cpp",
+        "gm/backdrop_imagefilter_croprect.cpp",
+        "gm/badpaint.cpp",
+        "gm/bc1_transparency.cpp",
+        "gm/beziereffects.cpp",
+        "gm/beziers.cpp",
+        "gm/bicubic.cpp",
+        "gm/bigblurs.cpp",
+        "gm/bigmatrix.cpp",
+        "gm/bigrect.cpp",
+        "gm/bigrrectaaeffect.cpp",
+        "gm/bigtext.cpp",
+        "gm/bigtileimagefilter.cpp",
+        "gm/bitmapcopy.cpp",
+        "gm/bitmapfilters.cpp",
+        "gm/bitmapimage.cpp",
+        "gm/bitmappremul.cpp",
+        "gm/bitmaprect.cpp",
+        "gm/bitmaprecttest.cpp",
+        "gm/bitmapshader.cpp",
+        "gm/bitmaptiled.cpp",
+        "gm/bleed.cpp",
+        "gm/blend.cpp",
+        "gm/blurcircles.cpp",
+        "gm/blurcircles2.cpp",
+        "gm/blurignorexform.cpp",
+        "gm/blurimagevmask.cpp",
+        "gm/blurpositioning.cpp",
+        "gm/blurquickreject.cpp",
+        "gm/blurrect.cpp",
+        "gm/blurredclippedcircle.cpp",
+        "gm/blurroundrect.cpp",
+        "gm/blurs.cpp",
+        "gm/blurtextsmallradii.cpp",
+        "gm/bmpfilterqualityrepeat.cpp",
+        "gm/bug5252.cpp",
+        "gm/bug530095.cpp",
+        "gm/bug615686.cpp",
+        "gm/bug6643.cpp",
+        "gm/bug6783.cpp",
+        "gm/bug9331.cpp",
+        "gm/cgm.c",
+        "gm/cgms.cpp",
+        "gm/circle_sizes.cpp",
+        "gm/circles.cpp",
+        "gm/circulararcs.cpp",
+        "gm/circularclips.cpp",
+        "gm/clip_error.cpp",
+        "gm/clip_sierpinski_region.cpp",
+        "gm/clip_strokerect.cpp",
+        "gm/clipdrawdraw.cpp",
+        "gm/clippedbitmapshaders.cpp",
+        "gm/clockwise.cpp",
+        "gm/collapsepaths.cpp",
+        "gm/color4f.cpp",
+        "gm/coloremoji.cpp",
+        "gm/coloremoji_blendmodes.cpp",
+        "gm/colorfilteralpha8.cpp",
+        "gm/colorfilterimagefilter.cpp",
+        "gm/colorfilters.cpp",
+        "gm/colormatrix.cpp",
+        "gm/colorwheel.cpp",
+        "gm/complexclip.cpp",
+        "gm/complexclip2.cpp",
+        "gm/complexclip3.cpp",
+        "gm/complexclip4.cpp",
+        "gm/complexclip_blur_tiled.cpp",
+        "gm/composeshader.cpp",
+        "gm/compositor_quads.cpp",
+        "gm/compressed_textures.cpp",
+        "gm/concavepaths.cpp",
+        "gm/conicpaths.cpp",
+        "gm/constcolorprocessor.cpp",
+        "gm/convex_all_line_paths.cpp",
+        "gm/convexpaths.cpp",
+        "gm/convexpolyclip.cpp",
+        "gm/convexpolyeffect.cpp",
+        "gm/copy_to_4444.cpp",
+        "gm/crbug_1041204.cpp",
+        "gm/crbug_1073670.cpp",
+        "gm/crbug_224618.cpp",
+        "gm/crbug_691386.cpp",
+        "gm/crbug_788500.cpp",
+        "gm/crbug_847759.cpp",
+        "gm/crbug_884166.cpp",
+        "gm/crbug_887103.cpp",
+        "gm/crbug_892988.cpp",
+        "gm/crbug_899512.cpp",
+        "gm/crbug_905548.cpp",
+        "gm/crbug_908646.cpp",
+        "gm/crbug_913349.cpp",
+        "gm/crbug_918512.cpp",
+        "gm/crbug_938592.cpp",
+        "gm/crbug_946965.cpp",
+        "gm/crbug_947055.cpp",
+        "gm/crbug_996140.cpp",
+        "gm/croppedrects.cpp",
+        "gm/crosscontextimage.cpp",
+        "gm/cubicpaths.cpp",
+        "gm/daa.cpp",
+        "gm/dashcircle.cpp",
+        "gm/dashcubics.cpp",
+        "gm/dashing.cpp",
+        "gm/degeneratesegments.cpp",
+        "gm/dftext.cpp",
+        "gm/dftext_blob_persp.cpp",
+        "gm/discard.cpp",
+        "gm/displacement.cpp",
+        "gm/distantclip.cpp",
+        "gm/downsamplebitmap.cpp",
+        "gm/draw_bitmap_rect_skbug4374.cpp",
+        "gm/drawable.cpp",
+        "gm/drawatlas.cpp",
+        "gm/drawatlascolor.cpp",
+        "gm/drawbitmaprect.cpp",
+        "gm/drawimageset.cpp",
+        "gm/drawminibitmaprect.cpp",
+        "gm/drawquadset.cpp",
+        "gm/drawregion.cpp",
+        "gm/drawregionmodes.cpp",
+        "gm/dropshadowimagefilter.cpp",
+        "gm/drrect.cpp",
+        "gm/drrect_small_inner.cpp",
+        "gm/dstreadshuffle.cpp",
+        "gm/ducky_yuv_blend.cpp",
+        "gm/emboss.cpp",
+        "gm/emptypath.cpp",
+        "gm/encode.cpp",
+        "gm/encode_alpha_jpeg.cpp",
+        "gm/encode_platform.cpp",
+        "gm/encode_srgb.cpp",
+        "gm/exoticformats.cpp",
+        "gm/extractbitmap.cpp",
+        "gm/fadefilter.cpp",
+        "gm/fatpathfill.cpp",
+        "gm/filltypes.cpp",
+        "gm/filltypespersp.cpp",
+        "gm/filterbitmap.cpp",
+        "gm/filterbug.cpp",
+        "gm/filterfastbounds.cpp",
+        "gm/filterindiabox.cpp",
+        "gm/flippity.cpp",
+        "gm/fontcache.cpp",
+        "gm/fontmgr.cpp",
+        "gm/fontregen.cpp",
+        "gm/fontscaler.cpp",
+        "gm/fontscalerdistortable.cpp",
+        "gm/fpcoordinateoverride.cpp",
+        "gm/fwidth_squircle.cpp",
+        "gm/gammatext.cpp",
+        "gm/getpostextpath.cpp",
+        "gm/giantbitmap.cpp",
+        "gm/glyph_pos.cpp",
+        "gm/gm.cpp",
+        "gm/gpu_blur_utils.cpp",
+        "gm/gradient_dirty_laundry.cpp",
+        "gm/gradient_matrix.cpp",
+        "gm/gradients.cpp",
+        "gm/gradients_2pt_conical.cpp",
+        "gm/gradients_degenerate.cpp",
+        "gm/gradients_no_texture.cpp",
+        "gm/gradtext.cpp",
+        "gm/grayscalejpg.cpp",
+        "gm/hairlines.cpp",
+        "gm/hairmodes.cpp",
+        "gm/hardstop_gradients.cpp",
+        "gm/highcontrastfilter.cpp",
+        "gm/hittestpath.cpp",
+        "gm/hsl.cpp",
+        "gm/hugepath.cpp",
+        "gm/image.cpp",
+        "gm/image_pict.cpp",
+        "gm/image_shader.cpp",
+        "gm/imagealphathreshold.cpp",
+        "gm/imageblur.cpp",
+        "gm/imageblur2.cpp",
+        "gm/imageblurclampmode.cpp",
+        "gm/imageblurrepeatmode.cpp",
+        "gm/imageblurtiled.cpp",
+        "gm/imagefilters.cpp",
+        "gm/imagefiltersbase.cpp",
+        "gm/imagefiltersclipped.cpp",
+        "gm/imagefilterscropexpand.cpp",
+        "gm/imagefilterscropped.cpp",
+        "gm/imagefiltersgraph.cpp",
+        "gm/imagefiltersscaled.cpp",
+        "gm/imagefiltersstroked.cpp",
+        "gm/imagefilterstransformed.cpp",
+        "gm/imagefromyuvtextures.cpp",
+        "gm/imagemagnifier.cpp",
+        "gm/imagemakewithfilter.cpp",
+        "gm/imagemasksubset.cpp",
+        "gm/imageresizetiled.cpp",
+        "gm/imagescalealigned.cpp",
+        "gm/imagesource.cpp",
+        "gm/imagesource2.cpp",
+        "gm/internal_links.cpp",
+        "gm/inverseclip.cpp",
+        "gm/inversepaths.cpp",
+        "gm/jpg_color_cube.cpp",
+        "gm/labyrinth.cpp",
+        "gm/largeglyphblur.cpp",
+        "gm/lattice.cpp",
+        "gm/lcdblendmodes.cpp",
+        "gm/lcdoverlap.cpp",
+        "gm/lcdtext.cpp",
+        "gm/lighting.cpp",
+        "gm/linepaths.cpp",
+        "gm/localmatriximagefilter.cpp",
+        "gm/localmatriximageshader.cpp",
+        "gm/localmatrixshader.cpp",
+        "gm/lumafilter.cpp",
+        "gm/mac_aa_explorer.cpp",
+        "gm/make_raster_image.cpp",
+        "gm/makecolorspace.cpp",
+        "gm/mandoline.cpp",
+        "gm/manypaths.cpp",
+        "gm/matrixconvolution.cpp",
+        "gm/matriximagefilter.cpp",
+        "gm/mipmap.cpp",
+        "gm/mixedtextblobs.cpp",
+        "gm/mixercolorfilter.cpp",
+        "gm/modecolorfilters.cpp",
+        "gm/morphology.cpp",
+        "gm/nested.cpp",
+        "gm/ninepatchstretch.cpp",
+        "gm/nonclosedpaths.cpp",
+        "gm/offsetimagefilter.cpp",
+        "gm/orientation.cpp",
+        "gm/ovals.cpp",
+        "gm/overdrawcanvas.cpp",
+        "gm/overdrawcolorfilter.cpp",
+        "gm/overstroke.cpp",
+        "gm/p3.cpp",
+        "gm/patch.cpp",
+        "gm/path_stroke_with_zero_length.cpp",
+        "gm/patharcto.cpp",
+        "gm/pathcontourstart.cpp",
+        "gm/patheffects.cpp",
+        "gm/pathfill.cpp",
+        "gm/pathinterior.cpp",
+        "gm/pathmaskcache.cpp",
+        "gm/pathmeasure.cpp",
+        "gm/pathopsinverse.cpp",
+        "gm/pathreverse.cpp",
+        "gm/pdf_never_embed.cpp",
+        "gm/perlinnoise.cpp",
+        "gm/perspimages.cpp",
+        "gm/perspshaders.cpp",
+        "gm/picture.cpp",
+        "gm/pictureimagefilter.cpp",
+        "gm/pictureimagegenerator.cpp",
+        "gm/pictureshader.cpp",
+        "gm/pictureshadercache.cpp",
+        "gm/pictureshadertile.cpp",
+        "gm/pixelsnap.cpp",
+        "gm/plus.cpp",
+        "gm/points.cpp",
+        "gm/poly2poly.cpp",
+        "gm/polygonoffset.cpp",
+        "gm/polygons.cpp",
+        "gm/postercircle.cpp",
+        "gm/preservefillrule.cpp",
+        "gm/quadpaths.cpp",
+        "gm/radial_gradient_precision.cpp",
+        "gm/rasterhandleallocator.cpp",
+        "gm/readpixels.cpp",
+        "gm/recordopts.cpp",
+        "gm/rectangletexture.cpp",
+        "gm/rects.cpp",
+        "gm/repeated_bitmap.cpp",
+        "gm/resizeimagefilter.cpp",
+        "gm/roundrects.cpp",
+        "gm/rrect.cpp",
+        "gm/rrectclipdrawpaint.cpp",
+        "gm/rrects.cpp",
+        "gm/runtimecolorfilter.cpp",
+        "gm/runtimefunctions.cpp",
+        "gm/runtimeshader.cpp",
+        "gm/sample_matrix_constant.cpp",
+        "gm/sample_matrix_variable.cpp",
+        "gm/samplelocations.cpp",
+        "gm/samplerstress.cpp",
+        "gm/savelayer.cpp",
+        "gm/scaledemoji.cpp",
+        "gm/scaledemoji_rendering.cpp",
+        "gm/scaledstrokes.cpp",
+        "gm/shadermaskfilter.cpp",
+        "gm/shadertext3.cpp",
+        "gm/shadowutils.cpp",
+        "gm/shallowgradient.cpp",
+        "gm/shapes.cpp",
+        "gm/sharedcorners.cpp",
+        "gm/showmiplevels.cpp",
+        "gm/simple_magnification.cpp",
+        "gm/simpleaaclip.cpp",
+        "gm/simplerect.cpp",
+        "gm/skbug1719.cpp",
+        "gm/skbug_257.cpp",
+        "gm/skbug_4868.cpp",
+        "gm/skbug_5321.cpp",
+        "gm/skbug_8664.cpp",
+        "gm/skbug_8955.cpp",
+        "gm/skbug_9319.cpp",
+        "gm/skbug_9819.cpp",
+        "gm/smallarc.cpp",
+        "gm/smallpaths.cpp",
+        "gm/spritebitmap.cpp",
+        "gm/srcmode.cpp",
+        "gm/srgb.cpp",
+        "gm/stlouisarch.cpp",
+        "gm/stringart.cpp",
+        "gm/stroke_rect_shader.cpp",
+        "gm/strokedlines.cpp",
+        "gm/strokefill.cpp",
+        "gm/strokerect.cpp",
+        "gm/strokerect_anisotropic.cpp",
+        "gm/strokerects.cpp",
+        "gm/strokes.cpp",
+        "gm/stroketext.cpp",
+        "gm/subsetshader.cpp",
+        "gm/surface.cpp",
+        "gm/tablecolorfilter.cpp",
+        "gm/tallstretchedbitmaps.cpp",
+        "gm/tessellation.cpp",
+        "gm/testgradient.cpp",
+        "gm/texelsubset.cpp",
+        "gm/text_scale_skew.cpp",
+        "gm/textblob.cpp",
+        "gm/textblobblockreordering.cpp",
+        "gm/textblobcolortrans.cpp",
+        "gm/textblobgeometrychange.cpp",
+        "gm/textbloblooper.cpp",
+        "gm/textblobmixedsizes.cpp",
+        "gm/textblobrandomfont.cpp",
+        "gm/textblobshader.cpp",
+        "gm/textblobtransforms.cpp",
+        "gm/textblobuseaftergpufree.cpp",
+        "gm/texteffects.cpp",
+        "gm/thinconcavepaths.cpp",
+        "gm/thinrects.cpp",
+        "gm/thinstrokedrects.cpp",
+        "gm/tiledscaledbitmap.cpp",
+        "gm/tileimagefilter.cpp",
+        "gm/tilemodes.cpp",
+        "gm/tilemodes_alpha.cpp",
+        "gm/tilemodes_scaled.cpp",
+        "gm/tinybitmap.cpp",
+        "gm/transparency.cpp",
+        "gm/trickycubicstrokes.cpp",
+        "gm/typeface.cpp",
+        "gm/unpremul.cpp",
+        "gm/variedtext.cpp",
+        "gm/verifiers/gmverifier.cpp",
+        "gm/vertices.cpp",
+        "gm/verylargebitmap.cpp",
+        "gm/wacky_yuv_formats.cpp",
+        "gm/windowrectangles.cpp",
+        "gm/xfermodeimagefilter.cpp",
+        "gm/xfermodes.cpp",
+        "gm/xfermodes2.cpp",
+        "gm/xfermodes3.cpp",
+        "gm/yuv420_odd_dim.cpp",
+        "gm/yuvtorgbeffect.cpp",
+        "src/svg/SkSVGCanvas.cpp",
+        "src/svg/SkSVGDevice.cpp",
+        "src/xml/SkDOM.cpp",
+        "src/xml/SkXMLParser.cpp",
+        "src/xml/SkXMLWriter.cpp",
+        "third_party/etc1/etc1.cpp",
+        "tools/AndroidSkDebugToStdOut.cpp",
+        "tools/CrashHandler.cpp",
+        "tools/DDLPromiseImageHelper.cpp",
+        "tools/DDLTileHelper.cpp",
+        "tools/LsanSuppressions.cpp",
+        "tools/ProcStats.cpp",
+        "tools/Resources.cpp",
+        "tools/SkMetaData.cpp",
+        "tools/SkSharingProc.cpp",
+        "tools/SkVMBuilders.cpp",
+        "tools/ToolUtils.cpp",
+        "tools/UrlDataManager.cpp",
+        "tools/debugger/DebugCanvas.cpp",
+        "tools/debugger/DebugLayerManager.cpp",
+        "tools/debugger/DrawCommand.cpp",
+        "tools/debugger/JsonWriteBuffer.cpp",
+        "tools/flags/CommandLineFlags.cpp",
+        "tools/flags/CommonFlagsAA.cpp",
+        "tools/flags/CommonFlagsConfig.cpp",
+        "tools/flags/CommonFlagsGpu.cpp",
+        "tools/flags/CommonFlagsImages.cpp",
+        "tools/fonts/RandomScalerContext.cpp",
+        "tools/fonts/TestFontMgr.cpp",
+        "tools/fonts/TestSVGTypeface.cpp",
+        "tools/fonts/TestTypeface.cpp",
+        "tools/fonts/ToolUtilsFont.cpp",
+        "tools/gpu/GrContextFactory.cpp",
+        "tools/gpu/GrTest.cpp",
+        "tools/gpu/MemoryCache.cpp",
+        "tools/gpu/ProxyUtils.cpp",
+        "tools/gpu/TestContext.cpp",
+        "tools/gpu/TestOps.cpp",
+        "tools/gpu/YUVUtils.cpp",
+        "tools/gpu/atlastext/GLTestAtlasTextRenderer.cpp",
+        "tools/gpu/gl/GLTestContext.cpp",
+        "tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp",
+        "tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp",
+        "tools/gpu/mock/MockTestContext.cpp",
+        "tools/gpu/vk/VkTestContext.cpp",
+        "tools/gpu/vk/VkTestUtils.cpp",
+        "tools/random_parse_path.cpp",
+        "tools/timer/Timer.cpp",
+        "tools/trace/ChromeTracingTracer.cpp",
+        "tools/trace/EventTracingPriv.cpp",
+        "tools/trace/SkDebugfTracer.cpp",
+    ],
+
+    data: [
+        "resources/**/*",
+    ],
+}
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..b84e1b6
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,49 @@
+# Copyright (C) 2007 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list.  These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list.  E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/DATA/skia_resources b/DATA/skia_resources
new file mode 120000
index 0000000..35a4f7a
--- /dev/null
+++ b/DATA/skia_resources
@@ -0,0 +1 @@
+../resources
\ No newline at end of file
diff --git a/MODULE_LICENSE_BSD b/MODULE_LICENSE_BSD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_BSD
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..41570e8
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,68 @@
+// Copyright (c) 2011 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=========================================================================
+
+The SKIA library also includes a third-party dependency on a nearly
+verbatim copy of the GLU tessellator source code from SGI's OpenGL Sample
+Implementation at http://oss.sgi.com/projects/ogl-sample/. Per
+http://oss.sgi.com/projects/FreeB/, the code is covered under the SGI
+Free Software License B, version 2.0, a copy of which is included below.
+
+SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+
+Copyright (C) [dates of first publication] Silicon Graphics, Inc. All
+Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice including the dates of first publication
+and either this permission notice or a reference to HYPERLINK
+"http://oss.sgi.com/projects/FreeB/"http://oss.sgi.com/projects/FreeB/
+shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Silicon Graphics,
+Inc. shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from Silicon Graphics, Inc.
+
diff --git a/README.android b/README.android
new file mode 100644
index 0000000..fece98e
--- /dev/null
+++ b/README.android
@@ -0,0 +1,13 @@
+The Skia library is a cross-platform 2D-based renderer. The
+key places to look are in the folders:
+
+  include/  : contains public header files
+  src/      : contains src code
+
+The top level makefile is at the root: Android.mk
+
+These files originate from an upstream repository
+(skia.googlesource.com) where the project is actively developed
+and maintained. As a result some files are not relevant to
+Android, but make the merging process smoother.
+
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..9c11c3e
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,15 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsGraphicsTestCases"
+    },
+    {
+      "name": "minikin_tests"
+    }
+  ],
+  "imports": [
+    {
+      "path": "cts/tests/tests/uirendering"
+    }
+  ]
+}
diff --git a/android/include/config/SkUserConfig.h b/android/include/config/SkUserConfig.h
new file mode 100644
index 0000000..d780eca
--- /dev/null
+++ b/android/include/config/SkUserConfig.h
@@ -0,0 +1,88 @@
+// DO NOT MODIFY! This file is autogenerated by gn_to_bp.py.
+// If need to change a define, modify SkUserConfigManual.h
+#pragma once
+#include "SkUserConfigManual.h"
+
+#ifndef SK_CODEC_DECODES_JPEG
+#define SK_CODEC_DECODES_JPEG
+#endif
+
+#ifndef SK_CODEC_DECODES_PNG
+#define SK_CODEC_DECODES_PNG
+#endif
+
+#ifndef SK_CODEC_DECODES_RAW
+#define SK_CODEC_DECODES_RAW
+#endif
+
+#ifndef SK_CODEC_DECODES_WEBP
+#define SK_CODEC_DECODES_WEBP
+#endif
+
+#ifndef SK_ENABLE_ANDROID_UTILS
+#define SK_ENABLE_ANDROID_UTILS
+#endif
+
+#ifndef SK_ENABLE_SKSL_INTERPRETER
+#define SK_ENABLE_SKSL_INTERPRETER
+#endif
+
+#ifndef SK_ENCODE_JPEG
+#define SK_ENCODE_JPEG
+#endif
+
+#ifndef SK_ENCODE_PNG
+#define SK_ENCODE_PNG
+#endif
+
+#ifndef SK_ENCODE_WEBP
+#define SK_ENCODE_WEBP
+#endif
+
+#ifndef SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_APPLY_TO_A8
+#endif
+
+#ifndef SK_GAMMA_CONTRAST
+#define SK_GAMMA_CONTRAST 0.0
+#endif
+
+#ifndef SK_GAMMA_EXPONENT
+#define SK_GAMMA_EXPONENT 1.4
+#endif
+
+#ifndef SK_GL
+#define SK_GL
+#endif
+
+#ifndef SK_HAS_HEIF_LIBRARY
+#define SK_HAS_HEIF_LIBRARY
+#endif
+
+#ifndef SK_SUPPORT_PDF
+#define SK_SUPPORT_PDF
+#endif
+
+#ifndef SK_USE_LIBGIFCODEC
+#define SK_USE_LIBGIFCODEC
+#endif
+
+#ifndef SK_USE_VMA
+#define SK_USE_VMA
+#endif
+
+#ifndef SK_VULKAN
+#define SK_VULKAN
+#endif
+
+#ifndef SK_XML
+#define SK_XML
+#endif
+
+#ifndef SK_BUILD_FOR_ANDROID
+    #error "SK_BUILD_FOR_ANDROID must be defined!"
+#endif
+#if defined(SK_BUILD_FOR_IOS) || defined(SK_BUILD_FOR_MAC) || \
+    defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN)
+    #error "Only SK_BUILD_FOR_ANDROID should be defined!"
+#endif
diff --git a/gm/DATA/skia_resources b/gm/DATA/skia_resources
new file mode 120000
index 0000000..81bd1c5
--- /dev/null
+++ b/gm/DATA/skia_resources
@@ -0,0 +1 @@
+../../resources/
\ No newline at end of file
diff --git a/include/config/SkUserConfig.h b/include/config/SkUserConfig.h
deleted file mode 100644
index b06ac33..0000000
--- a/include/config/SkUserConfig.h
+++ /dev/null
@@ -1,87 +0,0 @@
-
-/*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#ifndef SkUserConfig_DEFINED
-#define SkUserConfig_DEFINED
-
-/*  SkTypes.h, the root of the public header files, includes this file
-    SkUserConfig.h after first initializing certain Skia defines, letting
-    this file change or augment those flags.
-
-    Below are optional defines that add, subtract, or change default behavior
-    in Skia. Your port can locally edit this file to enable/disable flags as
-    you choose, or these can be delared on your command line (i.e. -Dfoo).
-
-    By default, this include file will always default to having all of the flags
-    commented out, so including it will have no effect.
-*/
-
-///////////////////////////////////////////////////////////////////////////////
-
-/*  Skia has lots of debug-only code. Often this is just null checks or other
-    parameter checking, but sometimes it can be quite intrusive (e.g. check that
-    each 32bit pixel is in premultiplied form). This code can be very useful
-    during development, but will slow things down in a shipping product.
-
-    By default, these mutually exclusive flags are defined in SkTypes.h,
-    based on the presence or absence of NDEBUG, but that decision can be changed
-    here.
- */
-//#define SK_DEBUG
-//#define SK_RELEASE
-
-/*  To write debug messages to a console, skia will call SkDebugf(...) following
-    printf conventions (e.g. const char* format, ...). If you want to redirect
-    this to something other than printf, define yours here
- */
-//#define SkDebugf(...)  MyFunction(__VA_ARGS__)
-
-/*
- *  To specify a different default font cache limit, define this. If this is
- *  undefined, skia will use a built-in value.
- */
-//#define SK_DEFAULT_FONT_CACHE_LIMIT   (1024 * 1024)
-
-/*
- *  To specify the default size of the image cache, undefine this and set it to
- *  the desired value (in bytes). SkGraphics.h as a runtime API to set this
- *  value as well. If this is undefined, a built-in value will be used.
- */
-//#define SK_DEFAULT_IMAGE_CACHE_LIMIT (1024 * 1024)
-
-/*  Define this to set the upper limit for text to support LCD. Values that
-    are very large increase the cost in the font cache and draw slower, without
-    improving readability. If this is undefined, Skia will use its default
-    value (e.g. 48)
- */
-//#define SK_MAX_SIZE_FOR_LCDTEXT     48
-
-/*  Change the kN32_SkColorType ordering to BGRA to work in X windows.
- */
-//#define SK_R32_SHIFT    16
-
-
-/* Determines whether to build code that supports the GPU backend. Some classes
-   that are not GPU-specific, such as SkShader subclasses, have optional code
-   that is used allows them to interact with the GPU backend. If you'd like to
-   omit this code set SK_SUPPORT_GPU to 0. This also allows you to omit the gpu
-   directories from your include search path when you're not building the GPU
-   backend. Defaults to 1 (build the GPU code).
- */
-//#define SK_SUPPORT_GPU 1
-
-/* Skia makes use of histogram logging macros to trace the frequency of
- * events. By default, Skia provides no-op versions of these macros.
- * Skia consumers can provide their own definitions of these macros to
- * integrate with their histogram collection backend.
- */
-//#define SK_HISTOGRAM_BOOLEAN(name, value)
-//#define SK_HISTOGRAM_ENUMERATION(name, value, boundary_value)
-
-#endif
diff --git a/include/config/SkUserConfigManual.h b/include/config/SkUserConfigManual.h
new file mode 100644
index 0000000..1288404
--- /dev/null
+++ b/include/config/SkUserConfigManual.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkUserConfigManual_DEFINED
+#define SkUserConfigManual_DEFINED
+  #define GR_TEST_UTILS 1
+  #define SK_BUILD_FOR_ANDROID_FRAMEWORK
+  #define SK_DEFAULT_FONT_CACHE_LIMIT   (768 * 1024)
+  #define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE (512 * 1024)
+  #define SK_USE_FREETYPE_EMBOLDEN
+
+  // Disable these Ganesh features
+  #define SK_DISABLE_REDUCE_OPLIST_SPLITTING
+  // Check error is expensive. HWUI historically also doesn't check its allocations
+  #define GR_GL_CHECK_ALLOC_WITH_GET_ERROR 0
+
+  // Legacy flags
+  #define SK_IGNORE_GPU_DITHER
+  #define SK_SUPPORT_DEPRECATED_CLIPOPS
+  #define SK_SUPPORT_LEGACY_LAYERCLIPMASK
+
+  // Staging flags
+  #define SK_LEGACY_PATH_ARCTO_ENDPOINT
+
+  // Needed until we fix https://bug.skia.org/2440
+  #define SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
+  #define SK_SUPPORT_LEGACY_EMBOSSMASKFILTER
+  #define SK_SUPPORT_LEGACY_AA_CHOICE
+  #define SK_SUPPORT_LEGACY_AAA_CHOICE
+
+  #define SK_DISABLE_DAA  // skbug.com/6886
+
+#endif // SkUserConfigManual_DEFINED
diff --git a/linux/include/config/SkUserConfig.h b/linux/include/config/SkUserConfig.h
new file mode 100644
index 0000000..ad4f286
--- /dev/null
+++ b/linux/include/config/SkUserConfig.h
@@ -0,0 +1,85 @@
+// DO NOT MODIFY! This file is autogenerated by gn_to_bp.py.
+// If need to change a define, modify SkUserConfigManual.h
+#pragma once
+#include "SkUserConfigManual.h"
+
+#ifndef SK_CODEC_DECODES_JPEG
+#define SK_CODEC_DECODES_JPEG
+#endif
+
+#ifndef SK_CODEC_DECODES_PNG
+#define SK_CODEC_DECODES_PNG
+#endif
+
+#ifndef SK_CODEC_DECODES_RAW
+#define SK_CODEC_DECODES_RAW
+#endif
+
+#ifndef SK_CODEC_DECODES_WEBP
+#define SK_CODEC_DECODES_WEBP
+#endif
+
+#ifndef SK_ENABLE_ANDROID_UTILS
+#define SK_ENABLE_ANDROID_UTILS
+#endif
+
+#ifndef SK_ENABLE_SKSL_INTERPRETER
+#define SK_ENABLE_SKSL_INTERPRETER
+#endif
+
+#ifndef SK_ENCODE_JPEG
+#define SK_ENCODE_JPEG
+#endif
+
+#ifndef SK_ENCODE_PNG
+#define SK_ENCODE_PNG
+#endif
+
+#ifndef SK_ENCODE_WEBP
+#define SK_ENCODE_WEBP
+#endif
+
+#ifndef SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_APPLY_TO_A8
+#endif
+
+#ifndef SK_GAMMA_CONTRAST
+#define SK_GAMMA_CONTRAST 0.0
+#endif
+
+#ifndef SK_GAMMA_EXPONENT
+#define SK_GAMMA_EXPONENT 1.4
+#endif
+
+#ifndef SK_R32_SHIFT
+#define SK_R32_SHIFT 16
+#endif
+
+#ifndef SK_SUPPORT_GPU
+#define SK_SUPPORT_GPU 0
+#endif
+
+#ifndef SK_SUPPORT_PDF
+#define SK_SUPPORT_PDF
+#endif
+
+#ifndef SK_USE_LIBGIFCODEC
+#define SK_USE_LIBGIFCODEC
+#endif
+
+#ifndef SK_XML
+#define SK_XML
+#endif
+
+// Correct SK_BUILD_FOR flags that may have been set by
+// SkTypes.h/Android.bp
+#ifndef SK_BUILD_FOR_UNIX
+    #define SK_BUILD_FOR_UNIX
+#endif
+#ifdef SK_BUILD_FOR_ANDROID
+    #undef SK_BUILD_FOR_ANDROID
+#endif
+#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_IOS) || \
+    defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_WIN)
+    #error "Only SK_BUILD_FOR_UNIX should be defined!"
+#endif
diff --git a/mac/include/config/SkUserConfig.h b/mac/include/config/SkUserConfig.h
new file mode 100644
index 0000000..b19b33b
--- /dev/null
+++ b/mac/include/config/SkUserConfig.h
@@ -0,0 +1,89 @@
+// DO NOT MODIFY! This file is autogenerated by gn_to_bp.py.
+// If need to change a define, modify SkUserConfigManual.h
+#pragma once
+#include "SkUserConfigManual.h"
+
+#ifndef SK_ASSUME_GL
+#define SK_ASSUME_GL 1
+#endif
+
+#ifndef SK_CODEC_DECODES_JPEG
+#define SK_CODEC_DECODES_JPEG
+#endif
+
+#ifndef SK_CODEC_DECODES_PNG
+#define SK_CODEC_DECODES_PNG
+#endif
+
+#ifndef SK_CODEC_DECODES_RAW
+#define SK_CODEC_DECODES_RAW
+#endif
+
+#ifndef SK_CODEC_DECODES_WEBP
+#define SK_CODEC_DECODES_WEBP
+#endif
+
+#ifndef SK_ENABLE_ANDROID_UTILS
+#define SK_ENABLE_ANDROID_UTILS
+#endif
+
+#ifndef SK_ENABLE_API_AVAILABLE
+#define SK_ENABLE_API_AVAILABLE
+#endif
+
+#ifndef SK_ENABLE_SKSL_INTERPRETER
+#define SK_ENABLE_SKSL_INTERPRETER
+#endif
+
+#ifndef SK_ENCODE_JPEG
+#define SK_ENCODE_JPEG
+#endif
+
+#ifndef SK_ENCODE_PNG
+#define SK_ENCODE_PNG
+#endif
+
+#ifndef SK_ENCODE_WEBP
+#define SK_ENCODE_WEBP
+#endif
+
+#ifndef SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_APPLY_TO_A8
+#endif
+
+#ifndef SK_GAMMA_CONTRAST
+#define SK_GAMMA_CONTRAST 0.0
+#endif
+
+#ifndef SK_GAMMA_EXPONENT
+#define SK_GAMMA_EXPONENT 1.4
+#endif
+
+#ifndef SK_SUPPORT_GPU
+#define SK_SUPPORT_GPU 0
+#endif
+
+#ifndef SK_SUPPORT_PDF
+#define SK_SUPPORT_PDF
+#endif
+
+#ifndef SK_USE_LIBGIFCODEC
+#define SK_USE_LIBGIFCODEC
+#endif
+
+#ifndef SK_XML
+#define SK_XML
+#endif
+
+// Correct SK_BUILD_FOR flags that may have been set by
+// SkTypes.h/Android.bp
+#ifndef SK_BUILD_FOR_MAC
+    #define SK_BUILD_FOR_MAC
+#endif
+#ifdef SK_BUILD_FOR_ANDROID
+    #undef SK_BUILD_FOR_ANDROID
+#endif
+#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_IOS) || \
+    defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN)
+    #error "Only SK_BUILD_FOR_MAC should be defined!"
+#endif
diff --git a/third_party/libgifcodec/LICENSE.md b/third_party/libgifcodec/LICENSE.md
new file mode 100644
index 0000000..d1f5763
--- /dev/null
+++ b/third_party/libgifcodec/LICENSE.md
@@ -0,0 +1,109 @@
+MPL-1.1 / GPL-2.0 / LGPL-2.1
+============================
+
+SkGifImageReader.cpp and SkGifImageReader.h:
+
+    ***** BEGIN LICENSE BLOCK *****
+    Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+    The contents of this file are subject to the Mozilla Public License Version
+    1.1 (the "License"); you may not use this file except in compliance with
+    the License. You may obtain a copy of the License at
+    http://www.mozilla.org/MPL/
+
+    Software distributed under the License is distributed on an "AS IS" basis,
+    WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+    for the specific language governing rights and limitations under the
+    License.
+
+    The Original Code is mozilla.org code.
+
+    The Initial Developer of the Original Code is
+    Netscape Communications Corporation.
+    Portions created by the Initial Developer are Copyright (C) 1998
+    the Initial Developer. All Rights Reserved.
+
+    Contributor(s):
+      Chris Saari <saari@netscape.com>
+      Apple Computer
+
+    Alternatively, the contents of this file may be used under the terms of
+    either the GNU General Public License Version 2 or later (the "GPL"), or
+    the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+    in which case the provisions of the GPL or the LGPL are applicable instead
+    of those above. If you wish to allow use of your version of this file only
+    under the terms of either the GPL or the LGPL, and not to allow others to
+    use your version of this file under the terms of the MPL, indicate your
+    decision by deleting the provisions above and replace them with the notice
+    and other provisions required by the GPL or the LGPL. If you do not delete
+    the provisions above, a recipient may use your version of this file under
+    the terms of any one of the MPL, the GPL or the LGPL.
+
+    ***** END LICENSE BLOCK ***** */
+
+
+BSD-3-Clause
+============
+
+libgifcodec.gni, SkGifCodec.h, SkLibGifCodec.cpp, SkLibGifCodec.h:
+
+    Copyright 2019 Google LLC. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are
+    met:
+
+      * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      * Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials provided
+        with the distribution.
+
+      * Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+BSD-2-Clause
+============
+
+SkLibGifCodec.cpp:
+
+    Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    1. Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+    THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+    EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+    OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/third_party/libgifcodec/README.chromium b/third_party/libgifcodec/README.chromium
new file mode 100644
index 0000000..1ee6a0d
--- /dev/null
+++ b/third_party/libgifcodec/README.chromium
@@ -0,0 +1,9 @@
+Name: libgif codec for Skia
+Short Name: libgifcodec
+URL: https://skia.googlesource.com/libgifcodec/
+Version: unknown
+License: MPL-1.1/GPL-2.0/LGPL-2.1 + BSD-3-Clause + BSD-2-Clause
+License File: LICENSE.md
+Security Critical: yes
+Description: See file README.md
+Local Modifications: None
diff --git a/third_party/libgifcodec/README.md b/third_party/libgifcodec/README.md
new file mode 100644
index 0000000..0acefc6
--- /dev/null
+++ b/third_party/libgifcodec/README.md
@@ -0,0 +1,16 @@
+LIBGIF CODEC FOR SKIA
+=====================
+
+libgifcodec is based on a fork of libgif made by Chromium.  It was copied into
+Skia with <https://codereview.chromium.org/2045293002>, as
+<https://skia.googlesource.com/skia/+/19b91531e912283d237435d94516575b28713cba>.
+
+The header file `SkGifCodec.h` exposes two functions:
+
+  * `bool SkGifCodec::IsGif(const void*, size_t);`
+
+  * `std::unique_ptr<SkCodec> SkGifCodec::MakeFromStream(std::unique_ptr<SkStream>, SkCodec::Result*);`
+
+Which can be used by Skia's `SkCodec::MakeFromStream` to implement GIF Decoding.
+
+See [`LICENSE.md`](LICENSE.md) for the license information.
diff --git a/third_party/libgifcodec/SkGifCodec.h b/third_party/libgifcodec/SkGifCodec.h
new file mode 100644
index 0000000..532e7b1
--- /dev/null
+++ b/third_party/libgifcodec/SkGifCodec.h
@@ -0,0 +1,20 @@
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by the BSD-3-Clause license that can be
+// found in the LICENSE.md file.
+
+#ifndef SkGifCodec_DEFINED
+#define SkGifCodec_DEFINED
+
+#include "include/codec/SkCodec.h"
+
+namespace SkGifCodec {
+
+// Returns true if the span of bytes appears to be GIF encoded data.
+bool IsGif(const void*, size_t);
+
+// Assumes IsGif was called and returned true.
+// Reads enough of the stream to determine the image format.
+std::unique_ptr<SkCodec> MakeFromStream(std::unique_ptr<SkStream>, SkCodec::Result*);
+
+}  // namespace SkGifCodec
+#endif  // SkGifCodec_DEFINED
diff --git a/third_party/libgifcodec/SkGifImageReader.cpp b/third_party/libgifcodec/SkGifImageReader.cpp
new file mode 100644
index 0000000..c5900b3
--- /dev/null
+++ b/third_party/libgifcodec/SkGifImageReader.cpp
@@ -0,0 +1,958 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Chris Saari <saari@netscape.com>
+ *   Apple Computer
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+The Graphics Interchange Format(c) is the copyright property of CompuServe
+Incorporated. Only CompuServe Incorporated is authorized to define, redefine,
+enhance, alter, modify or change in any way the definition of the format.
+
+CompuServe Incorporated hereby grants a limited, non-exclusive, royalty-free
+license for the use of the Graphics Interchange Format(sm) in computer
+software; computer software utilizing GIF(sm) must acknowledge ownership of the
+Graphics Interchange Format and its Service Mark by CompuServe Incorporated, in
+User and Technical Documentation. Computer software utilizing GIF, which is
+distributed or may be distributed without User or Technical Documentation must
+display to the screen or printer a message acknowledging ownership of the
+Graphics Interchange Format and the Service Mark by CompuServe Incorporated; in
+this case, the acknowledgement may be displayed in an opening screen or leading
+banner, or a closing screen or trailing banner. A message such as the following
+may be used:
+
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated. GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+For further information, please contact :
+
+    CompuServe Incorporated
+    Graphics Technology Department
+    5000 Arlington Center Boulevard
+    Columbus, Ohio  43220
+    U. S. A.
+
+CompuServe Incorporated maintains a mailing list with all those individuals and
+organizations who wish to receive copies of this document when it is corrected
+or revised. This service is offered free of charge; please provide us with your
+mailing address.
+*/
+
+#include "SkGifImageReader.h"
+#include "SkLibGifCodec.h"
+
+#include "include/core/SkColorPriv.h"
+
+#include <algorithm>
+#include <string.h>
+
+
+// GETN(n, s) requests at least 'n' bytes available from 'q', at start of state 's'.
+//
+// Note, the hold will never need to be bigger than 256 bytes to gather up in the hold,
+// as each GIF block (except colormaps) can never be bigger than 256 bytes.
+// Colormaps are directly copied in the resp. global_colormap or dynamically allocated local_colormap.
+// So a fixed buffer in SkGifImageReader is good enough.
+// This buffer is only needed to copy left-over data from one GifWrite call to the next
+#define GETN(n, s) \
+    do { \
+        m_bytesToConsume = (n); \
+        m_state = (s); \
+    } while (0)
+
+// Get a 16-bit value stored in little-endian format.
+#define GETINT16(p)   ((p)[1]<<8|(p)[0])
+
+namespace {
+    bool is_palette_index_valid(int transparentIndex) {
+        // -1 is a signal that there is no transparent index.
+        // Otherwise, it is encoded in 8 bits, and all 256 values are considered
+        // valid since a GIF may use an index outside of the palette to be
+        // transparent.
+        return transparentIndex >= 0;
+    }
+} // anonymous namespace
+
+// Send the data to the display front-end.
+void SkGIFLZWContext::outputRow(const unsigned char* rowBegin)
+{
+    int drowStart = irow;
+    int drowEnd = irow;
+
+    // Haeberli-inspired hack for interlaced GIFs: Replicate lines while
+    // displaying to diminish the "venetian-blind" effect as the image is
+    // loaded. Adjust pixel vertical positions to avoid the appearance of the
+    // image crawling up the screen as successive passes are drawn.
+    if (m_frameContext->progressiveDisplay() && m_frameContext->interlaced() && ipass < 4) {
+        unsigned rowDup = 0;
+        unsigned rowShift = 0;
+
+        switch (ipass) {
+        case 1:
+            rowDup = 7;
+            rowShift = 3;
+            break;
+        case 2:
+            rowDup = 3;
+            rowShift = 1;
+            break;
+        case 3:
+            rowDup = 1;
+            rowShift = 0;
+            break;
+        default:
+            break;
+        }
+
+        drowStart -= rowShift;
+        drowEnd = drowStart + rowDup;
+
+        // Extend if bottom edge isn't covered because of the shift upward.
+        if ((unsigned)((m_frameContext->height() - 1) - drowEnd) <= rowShift)
+            drowEnd = m_frameContext->height() - 1;
+
+        // Clamp first and last rows to upper and lower edge of image.
+        if (drowStart < 0)
+            drowStart = 0;
+
+        if (drowEnd >= m_frameContext->height())
+            drowEnd = m_frameContext->height() - 1;
+    }
+
+    // Protect against too much image data.
+    if (drowStart >= m_frameContext->height())
+        return;
+
+    // CALLBACK: Let the client know we have decoded a row.
+    const bool writeTransparentPixels =
+            SkCodec::kNoFrame == m_frameContext->getRequiredFrame();
+    m_client->haveDecodedRow(m_frameContext->frameId(), rowBegin,
+            drowStart, drowEnd - drowStart + 1, writeTransparentPixels);
+
+    if (!m_frameContext->interlaced())
+        irow++;
+    else {
+        do {
+            switch (ipass) {
+            case 1:
+                irow += 8;
+                if (irow >= (unsigned) m_frameContext->height()) {
+                    ipass++;
+                    irow = 4;
+                }
+                break;
+
+            case 2:
+                irow += 8;
+                if (irow >= (unsigned) m_frameContext->height()) {
+                    ipass++;
+                    irow = 2;
+                }
+                break;
+
+            case 3:
+                irow += 4;
+                if (irow >= (unsigned) m_frameContext->height()) {
+                    ipass++;
+                    irow = 1;
+                }
+                break;
+
+            case 4:
+                irow += 2;
+                if (irow >= (unsigned) m_frameContext->height()) {
+                    ipass++;
+                    irow = 0;
+                }
+                break;
+
+            default:
+                break;
+            }
+        } while (irow > (unsigned) (m_frameContext->height() - 1));
+    }
+}
+
+// Perform Lempel-Ziv-Welch decoding.
+// Returns true if decoding was successful. In this case the block will have been completely consumed and/or rowsRemaining will be 0.
+// Otherwise, decoding failed; returns false in this case, which will always cause the SkGifImageReader to set the "decode failed" flag.
+bool SkGIFLZWContext::doLZW(const unsigned char* block, size_t bytesInBlock)
+{
+    if (rowIter == rowBuffer.end())
+        return true;
+    const int width = m_frameContext->width();
+
+    for (const unsigned char* ch = block; bytesInBlock-- > 0; ch++) {
+        // Feed the next byte into the decoder's 32-bit input buffer.
+        datum += ((int) *ch) << bits;
+        bits += 8;
+
+        // Check for underflow of decoder's 32-bit input buffer.
+        while (bits >= codesize) {
+            // Get the leading variable-length symbol from the data stream.
+            int code = datum & codemask;
+            datum >>= codesize;
+            bits -= codesize;
+
+            // Reset the dictionary to its original state, if requested.
+            if (code == clearCode) {
+                codesize = m_frameContext->dataSize() + 1;
+                codemask = (1 << codesize) - 1;
+                avail = clearCode + 2;
+                oldcode = -1;
+                continue;
+            }
+
+            // Check for explicit end-of-stream code.
+            if (code == (clearCode + 1)) {
+                // end-of-stream should only appear after all image data.
+                if (!rowsRemaining)
+                    return true;
+                return false;
+            }
+
+            const int tempCode = code;
+            if (code > avail) {
+                // This is an invalid code. The dictionary is just initialized
+                // and the code is incomplete. We don't know how to handle
+                // this case.
+                return false;
+            }
+
+            if (code == avail) {
+                if (oldcode != -1) {
+                    // This is a new code just being added to the dictionary.
+                    // It must encode the contents of the previous code, plus
+                    // the first character of the previous code again.
+                    // Now we know avail is the new code we can use oldcode
+                    // value to get the code related to that.
+                    code = oldcode;
+                } else {
+                    // This is an invalid code. The dictionary is just initialized
+                    // and the code is incomplete. We don't know how to handle
+                    // this case.
+                    return false;
+                }
+            }
+
+            // code length of the oldcode for new code which is
+            // avail = oldcode + firstchar of the oldcode
+            int remaining = suffixLength[code];
+
+            // Round remaining up to multiple of SK_DICTIONARY_WORD_SIZE, because that's
+            // the granularity of the chunks we copy.  The last chunk may contain
+            // some garbage but it'll be overwritten by the next code or left unused.
+            // The working buffer is padded to account for this.
+            remaining += -remaining & (SK_DICTIONARY_WORD_SIZE - 1) ;
+            unsigned char* p = rowIter + remaining;
+
+            // Place rowIter so that after writing pixels rowIter can be set to firstchar, thereby
+            // completing the code.
+            rowIter += suffixLength[code];
+
+            while (remaining > 0) {
+                p -= SK_DICTIONARY_WORD_SIZE;
+                std::copy_n(suffix[code].begin(), SK_DICTIONARY_WORD_SIZE, p);
+                code = prefix[code];
+                remaining -= SK_DICTIONARY_WORD_SIZE;
+            }
+            const int firstchar = static_cast<unsigned char>(code);  // (strictly `suffix[code][0]`)
+
+            // This completes the new code avail and writing the corresponding
+            // pixels on target.
+            if (tempCode == avail) {
+                *rowIter++ = firstchar;
+            }
+
+            // Define a new codeword in the dictionary as long as we've read
+            // more than one value from the stream.
+            if (avail < SK_MAX_DICTIONARY_ENTRIES && oldcode != -1) {
+                // now add avail to the dictionary for future reference
+                unsigned short codeLength = suffixLength[oldcode] + 1;
+                int l = (codeLength - 1) & (SK_DICTIONARY_WORD_SIZE - 1);
+                // If the suffix buffer is full (l == 0) then oldcode becomes the new
+                // prefix, otherwise copy and extend oldcode's buffer and use the same
+                // prefix as oldcode used.
+                prefix[avail] = (l == 0) ? oldcode : prefix[oldcode];
+                suffix[avail] = suffix[oldcode];
+                suffix[avail][l] = firstchar;
+                suffixLength[avail] = codeLength;
+                ++avail;
+
+                // If we've used up all the codewords of a given length
+                // increase the length of codewords by one bit, but don't
+                // exceed the specified maximum codeword size.
+                if (!(avail & codemask) && avail < SK_MAX_DICTIONARY_ENTRIES) {
+                    ++codesize;
+                    codemask += avail;
+                }
+            }
+            oldcode = tempCode;
+
+            // Output as many rows as possible.
+            unsigned char* rowBegin = rowBuffer.begin();
+            for (; rowBegin + width <= rowIter; rowBegin += width) {
+                outputRow(rowBegin);
+                rowsRemaining--;
+                if (!rowsRemaining)
+                    return true;
+            }
+
+            if (rowBegin != rowBuffer.begin()) {
+                // Move the remaining bytes to the beginning of the buffer.
+                const size_t bytesToCopy = rowIter - rowBegin;
+                memcpy(&rowBuffer.front(), rowBegin, bytesToCopy);
+                rowIter = rowBuffer.begin() + bytesToCopy;
+            }
+        }
+    }
+    return true;
+}
+
+sk_sp<SkColorTable> SkGIFColorMap::buildTable(SkStreamBuffer* streamBuffer, SkColorType colorType,
+                                              int transparentPixel) const
+{
+    if (!m_isDefined)
+        return nullptr;
+
+    const PackColorProc proc = choose_pack_color_proc(false, colorType);
+    if (m_table && proc == m_packColorProc && m_transPixel == transparentPixel) {
+        SkASSERT(transparentPixel == kNotFound || transparentPixel > m_table->count()
+                || m_table->operator[](transparentPixel) == SK_ColorTRANSPARENT);
+        // This SkColorTable has already been built with the same transparent color and
+        // packing proc. Reuse it.
+        return m_table;
+    }
+    m_packColorProc = proc;
+    m_transPixel = transparentPixel;
+
+    const size_t bytes = m_colors * SK_BYTES_PER_COLORMAP_ENTRY;
+    sk_sp<SkData> rawData(streamBuffer->getDataAtPosition(m_position, bytes));
+    if (!rawData) {
+        return nullptr;
+    }
+
+    SkASSERT(m_colors <= SK_MAX_COLORS);
+    const uint8_t* srcColormap = rawData->bytes();
+    SkPMColor colorStorage[SK_MAX_COLORS];
+    for (int i = 0; i < m_colors; i++) {
+        if (i == transparentPixel) {
+            colorStorage[i] = SK_ColorTRANSPARENT;
+        } else {
+            colorStorage[i] = proc(255, srcColormap[0], srcColormap[1], srcColormap[2]);
+        }
+        srcColormap += SK_BYTES_PER_COLORMAP_ENTRY;
+    }
+    for (int i = m_colors; i < SK_MAX_COLORS; i++) {
+        colorStorage[i] = SK_ColorTRANSPARENT;
+    }
+    m_table = sk_sp<SkColorTable>(new SkColorTable(colorStorage, SK_MAX_COLORS));
+    return m_table;
+}
+
+sk_sp<SkColorTable> SkGifImageReader::getColorTable(SkColorType colorType, int index) {
+    if (index < 0 || index >= m_frames.count()) {
+        return nullptr;
+    }
+
+    const SkGIFFrameContext* frameContext = m_frames[index].get();
+    const SkGIFColorMap& localColorMap = frameContext->localColorMap();
+    const int transPix = frameContext->transparentPixel();
+    if (localColorMap.isDefined()) {
+        return localColorMap.buildTable(&m_streamBuffer, colorType, transPix);
+    }
+    if (m_globalColorMap.isDefined()) {
+        return m_globalColorMap.buildTable(&m_streamBuffer, colorType, transPix);
+    }
+    return nullptr;
+}
+
+// Perform decoding for this frame. frameComplete will be true if the entire frame is decoded.
+// Returns false if a decoding error occurred. This is a fatal error and causes the SkGifImageReader to set the "decode failed" flag.
+// Otherwise, either not enough data is available to decode further than before, or the new data has been decoded successfully; returns true in this case.
+bool SkGIFFrameContext::decode(SkStreamBuffer* streamBuffer, SkLibGifCodec* client,
+                               bool* frameComplete)
+{
+    *frameComplete = false;
+    if (!m_lzwContext) {
+        // Wait for more data to properly initialize SkGIFLZWContext.
+        if (!isDataSizeDefined() || !isHeaderDefined())
+            return true;
+
+        m_lzwContext.reset(new SkGIFLZWContext(client, this));
+        if (!m_lzwContext->prepareToDecode()) {
+            m_lzwContext.reset();
+            return false;
+        }
+
+        m_currentLzwBlock = 0;
+    }
+
+    // Some bad GIFs have extra blocks beyond the last row, which we don't want to decode.
+    while (m_currentLzwBlock < m_lzwBlocks.count() && m_lzwContext->hasRemainingRows()) {
+        const auto& block = m_lzwBlocks[m_currentLzwBlock];
+        const size_t len = block.blockSize;
+
+        sk_sp<SkData> data(streamBuffer->getDataAtPosition(block.blockPosition, len));
+        if (!data) {
+            return false;
+        }
+        if (!m_lzwContext->doLZW(reinterpret_cast<const unsigned char*>(data->data()), len)) {
+            return false;
+        }
+        ++m_currentLzwBlock;
+    }
+
+    // If this frame is data complete then the previous loop must have completely decoded all LZW blocks.
+    // There will be no more decoding for this frame so it's time to cleanup.
+    if (isComplete()) {
+        *frameComplete = true;
+        m_lzwContext.reset();
+    }
+    return true;
+}
+
+// Decode a frame.
+// This method uses SkGIFFrameContext:decode() to decode the frame; decoding error is reported to client as a critical failure.
+// Return true if decoding has progressed. Return false if an error has occurred.
+bool SkGifImageReader::decode(int frameIndex, bool* frameComplete)
+{
+    SkGIFFrameContext* currentFrame = m_frames[frameIndex].get();
+
+    return currentFrame->decode(&m_streamBuffer, m_client, frameComplete);
+}
+
+// Parse incoming GIF data stream into internal data structures.
+SkCodec::Result SkGifImageReader::parse(SkGifImageReader::SkGIFParseQuery query)
+{
+    if (m_parseCompleted) {
+        return SkCodec::kSuccess;
+    }
+
+    if (SkGIFLoopCountQuery == query && m_loopCount != cLoopCountNotSeen) {
+        // Loop count has already been parsed.
+        return SkCodec::kSuccess;
+    }
+
+    // SkGIFSizeQuery and SkGIFFrameCountQuery are negative, so this is only meaningful when >= 0.
+    const int lastFrameToParse = (int) query;
+    if (lastFrameToParse >= 0 && m_frames.count() > lastFrameToParse
+                && m_frames[lastFrameToParse]->isComplete()) {
+        // We have already parsed this frame.
+        return SkCodec::kSuccess;
+    }
+
+    while (true) {
+        if (!m_streamBuffer.buffer(m_bytesToConsume)) {
+            // The stream does not yet have enough data.
+            return SkCodec::kIncompleteInput;
+        }
+
+        switch (m_state) {
+        case SkGIFLZW: {
+            SkASSERT(!m_frames.empty());
+            auto* frame = m_frames.back().get();
+            frame->addLzwBlock(m_streamBuffer.markPosition(), m_bytesToConsume);
+            GETN(1, SkGIFSubBlock);
+            break;
+        }
+        case SkGIFLZWStart: {
+            SkASSERT(!m_frames.empty());
+            auto* currentFrame = m_frames.back().get();
+
+            currentFrame->setDataSize(this->getOneByte());
+            GETN(1, SkGIFSubBlock);
+            break;
+        }
+
+        case SkGIFType: {
+            const char* currentComponent = m_streamBuffer.get();
+
+            // All GIF files begin with "GIF87a" or "GIF89a".
+            if (!memcmp(currentComponent, "GIF89a", 6))
+                m_version = 89;
+            else if (!memcmp(currentComponent, "GIF87a", 6))
+                m_version = 87;
+            else {
+                // This prevents attempting to continue reading this invalid stream.
+                GETN(0, SkGIFDone);
+                return SkCodec::kInvalidInput;
+            }
+            GETN(7, SkGIFGlobalHeader);
+            break;
+        }
+
+        case SkGIFGlobalHeader: {
+            const unsigned char* currentComponent =
+                reinterpret_cast<const unsigned char*>(m_streamBuffer.get());
+
+            // This is the height and width of the "screen" or frame into which
+            // images are rendered. The individual images can be smaller than
+            // the screen size and located with an origin anywhere within the
+            // screen.
+            // Note that we don't inform the client of the size yet, as it might
+            // change after we read the first frame's image header.
+            fScreenWidth = GETINT16(currentComponent);
+            fScreenHeight = GETINT16(currentComponent + 2);
+
+            const int globalColorMapColors = 2 << (currentComponent[4] & 0x07);
+
+            if ((currentComponent[4] & 0x80) && globalColorMapColors > 0) { /* global map */
+                m_globalColorMap.setNumColors(globalColorMapColors);
+                GETN(SK_BYTES_PER_COLORMAP_ENTRY * globalColorMapColors, SkGIFGlobalColormap);
+                break;
+            }
+
+            GETN(1, SkGIFImageStart);
+            break;
+        }
+
+        case SkGIFGlobalColormap: {
+            m_globalColorMap.setTablePosition(m_streamBuffer.markPosition());
+            GETN(1, SkGIFImageStart);
+            break;
+        }
+
+        case SkGIFImageStart: {
+            const char currentComponent = m_streamBuffer.get()[0];
+
+            if (currentComponent == '!') { // extension.
+                GETN(2, SkGIFExtension);
+                break;
+            }
+
+            if (currentComponent == ',') { // image separator.
+                GETN(9, SkGIFImageHeader);
+                break;
+            }
+
+            // If we get anything other than ',' (image separator), '!'
+            // (extension), or ';' (trailer), there is extraneous data
+            // between blocks. The GIF87a spec tells us to keep reading
+            // until we find an image separator, but GIF89a says such
+            // a file is corrupt. We follow Mozilla's implementation and
+            // proceed as if the file were correctly terminated, so the
+            // GIF will display.
+            GETN(0, SkGIFDone);
+            break;
+        }
+
+        case SkGIFExtension: {
+            const unsigned char* currentComponent =
+                reinterpret_cast<const unsigned char*>(m_streamBuffer.get());
+
+            size_t bytesInBlock = currentComponent[1];
+            SkGIFState exceptionState = SkGIFSkipBlock;
+
+            switch (*currentComponent) {
+            case 0xf9:
+                // The GIF spec mandates that the GIFControlExtension header block length is 4 bytes,
+                exceptionState = SkGIFControlExtension;
+                // and the parser for this block reads 4 bytes, so we must enforce that the buffer
+                // contains at least this many bytes. If the GIF specifies a different length, we
+                // allow that, so long as it's larger; the additional data will simply be ignored.
+                bytesInBlock = std::max(bytesInBlock, static_cast<size_t>(4));
+                break;
+
+            // The GIF spec also specifies the lengths of the following two extensions' headers
+            // (as 12 and 11 bytes, respectively). Because we ignore the plain text extension entirely
+            // and sanity-check the actual length of the application extension header before reading it,
+            // we allow GIFs to deviate from these values in either direction. This is important for
+            // real-world compatibility, as GIFs in the wild exist with application extension headers
+            // that are both shorter and longer than 11 bytes.
+            case 0x01:
+                // ignoring plain text extension
+                break;
+
+            case 0xff:
+                exceptionState = SkGIFApplicationExtension;
+                break;
+
+            case 0xfe:
+                exceptionState = SkGIFConsumeComment;
+                break;
+            }
+
+            if (bytesInBlock)
+                GETN(bytesInBlock, exceptionState);
+            else
+                GETN(1, SkGIFImageStart);
+            break;
+        }
+
+        case SkGIFConsumeBlock: {
+            const unsigned char currentComponent = this->getOneByte();
+            if (!currentComponent)
+                GETN(1, SkGIFImageStart);
+            else
+                GETN(currentComponent, SkGIFSkipBlock);
+            break;
+        }
+
+        case SkGIFSkipBlock: {
+            GETN(1, SkGIFConsumeBlock);
+            break;
+        }
+
+        case SkGIFControlExtension: {
+            const unsigned char* currentComponent =
+                reinterpret_cast<const unsigned char*>(m_streamBuffer.get());
+
+            addFrameIfNecessary();
+            SkGIFFrameContext* currentFrame = m_frames.back().get();
+            if (*currentComponent & 0x1)
+                currentFrame->setTransparentPixel(currentComponent[3]);
+
+            // We ignore the "user input" bit.
+
+            // NOTE: This relies on the values in the FrameDisposalMethod enum
+            // matching those in the GIF spec!
+            int rawDisposalMethod = ((*currentComponent) >> 2) & 0x7;
+            switch (rawDisposalMethod) {
+            case 1:
+            case 2:
+            case 3:
+                currentFrame->setDisposalMethod((SkCodecAnimation::DisposalMethod) rawDisposalMethod);
+                break;
+            case 4:
+                // Some specs say that disposal method 3 is "overwrite previous", others that setting
+                // the third bit of the field (i.e. method 4) is. We map both to the same value.
+                currentFrame->setDisposalMethod(SkCodecAnimation::DisposalMethod::kRestorePrevious);
+                break;
+            default:
+                // Other values use the default.
+                currentFrame->setDisposalMethod(SkCodecAnimation::DisposalMethod::kKeep);
+                break;
+            }
+            currentFrame->setDuration(GETINT16(currentComponent + 1) * 10);
+            GETN(1, SkGIFConsumeBlock);
+            break;
+        }
+
+        case SkGIFCommentExtension: {
+            const unsigned char currentComponent = this->getOneByte();
+            if (currentComponent)
+                GETN(currentComponent, SkGIFConsumeComment);
+            else
+                GETN(1, SkGIFImageStart);
+            break;
+        }
+
+        case SkGIFConsumeComment: {
+            GETN(1, SkGIFCommentExtension);
+            break;
+        }
+
+        case SkGIFApplicationExtension: {
+            // Check for netscape application extension.
+            if (m_bytesToConsume == 11) {
+                const unsigned char* currentComponent =
+                    reinterpret_cast<const unsigned char*>(m_streamBuffer.get());
+
+                if (!memcmp(currentComponent, "NETSCAPE2.0", 11) || !memcmp(currentComponent, "ANIMEXTS1.0", 11))
+                    GETN(1, SkGIFNetscapeExtensionBlock);
+            }
+
+            if (m_state != SkGIFNetscapeExtensionBlock)
+                GETN(1, SkGIFConsumeBlock);
+            break;
+        }
+
+        // Netscape-specific GIF extension: animation looping.
+        case SkGIFNetscapeExtensionBlock: {
+            const int currentComponent = this->getOneByte();
+            // SkGIFConsumeNetscapeExtension always reads 3 bytes from the stream; we should at least wait for this amount.
+            if (currentComponent)
+                GETN(std::max(3, currentComponent), SkGIFConsumeNetscapeExtension);
+            else
+                GETN(1, SkGIFImageStart);
+            break;
+        }
+
+        // Parse netscape-specific application extensions
+        case SkGIFConsumeNetscapeExtension: {
+            const unsigned char* currentComponent =
+                reinterpret_cast<const unsigned char*>(m_streamBuffer.get());
+
+            int netscapeExtension = currentComponent[0] & 7;
+
+            // Loop entire animation specified # of times. Only read the loop count during the first iteration.
+            if (netscapeExtension == 1) {
+                m_loopCount = GETINT16(currentComponent + 1);
+
+                // Zero loop count is infinite animation loop request.
+                if (!m_loopCount)
+                    m_loopCount = SkCodec::kRepetitionCountInfinite;
+
+                GETN(1, SkGIFNetscapeExtensionBlock);
+
+                if (SkGIFLoopCountQuery == query) {
+                    m_streamBuffer.flush();
+                    return SkCodec::kSuccess;
+                }
+            } else if (netscapeExtension == 2) {
+                // Wait for specified # of bytes to enter buffer.
+
+                // Don't do this, this extension doesn't exist (isn't used at all)
+                // and doesn't do anything, as our streaming/buffering takes care of it all...
+                // See: http://semmix.pl/color/exgraf/eeg24.htm
+                GETN(1, SkGIFNetscapeExtensionBlock);
+            } else {
+                // 0,3-7 are yet to be defined netscape extension codes
+                // This prevents attempting to continue reading this invalid stream.
+                GETN(0, SkGIFDone);
+                return SkCodec::kInvalidInput;
+            }
+            break;
+        }
+
+        case SkGIFImageHeader: {
+            int height, width, xOffset, yOffset;
+            const unsigned char* currentComponent =
+                reinterpret_cast<const unsigned char*>(m_streamBuffer.get());
+
+            /* Get image offsets, with respect to the screen origin */
+            xOffset = GETINT16(currentComponent);
+            yOffset = GETINT16(currentComponent + 2);
+
+            /* Get image width and height. */
+            width  = GETINT16(currentComponent + 4);
+            height = GETINT16(currentComponent + 6);
+
+            // Some GIF files have frames that don't fit in the specified
+            // overall image size. For the first frame, we can simply enlarge
+            // the image size to allow the frame to be visible.  We can't do
+            // this on subsequent frames because the rest of the decoding
+            // infrastructure assumes the image size won't change as we
+            // continue decoding, so any subsequent frames that are even
+            // larger will be cropped.
+            // Luckily, handling just the first frame is sufficient to deal
+            // with most cases, e.g. ones where the image size is erroneously
+            // set to zero, since usually the first frame completely fills
+            // the image.
+            if (currentFrameIsFirstFrame()) {
+                fScreenHeight = std::max(fScreenHeight, yOffset + height);
+                fScreenWidth = std::max(fScreenWidth, xOffset + width);
+            }
+
+            // NOTE: Chromium placed this block after setHeaderDefined, down
+            // below we returned true when asked for the size. So Chromium
+            // created an image which would fail. Is this the correct behavior?
+            // We choose to return false early, so we will not create an
+            // SkCodec.
+
+            // Work around more broken GIF files that have zero image width or
+            // height.
+            if (!height || !width) {
+                height = fScreenHeight;
+                width = fScreenWidth;
+                if (!height || !width) {
+                    // This prevents attempting to continue reading this invalid stream.
+                    GETN(0, SkGIFDone);
+                    return SkCodec::kInvalidInput;
+                }
+            }
+
+            const bool isLocalColormapDefined = SkToBool(currentComponent[8] & 0x80);
+            // The three low-order bits of currentComponent[8] specify the bits per pixel.
+            const int numColors = 2 << (currentComponent[8] & 0x7);
+            if (currentFrameIsFirstFrame()) {
+                const int transPix = m_frames.empty() ? SkGIFColorMap::kNotFound
+                                                      : m_frames[0]->transparentPixel();
+                if (is_palette_index_valid(transPix)) {
+                    m_firstFrameHasAlpha = true;
+                } else {
+                    const bool frameIsSubset = xOffset > 0 || yOffset > 0
+                            || width < fScreenWidth
+                            || height < fScreenHeight;
+                    m_firstFrameHasAlpha = frameIsSubset;
+                }
+            }
+
+            addFrameIfNecessary();
+            SkGIFFrameContext* currentFrame = m_frames.back().get();
+            currentFrame->setHeaderDefined();
+
+            if (query == SkGIFSizeQuery) {
+                // The decoder needs to stop, so we return here, before
+                // flushing the buffer. Next time through, we'll be in the same
+                // state, requiring the same amount in the buffer.
+                return SkCodec::kSuccess;
+            }
+
+
+            currentFrame->setXYWH(xOffset, yOffset, width, height);
+            currentFrame->setInterlaced(SkToBool(currentComponent[8] & 0x40));
+
+            // Overlaying interlaced, transparent GIFs over
+            // existing image data using the Haeberli display hack
+            // requires saving the underlying image in order to
+            // avoid jaggies at the transparency edges. We are
+            // unprepared to deal with that, so don't display such
+            // images progressively. Which means only the first
+            // frame can be progressively displayed.
+            // FIXME: It is possible that a non-transparent frame
+            // can be interlaced and progressively displayed.
+            currentFrame->setProgressiveDisplay(currentFrameIsFirstFrame());
+
+            if (isLocalColormapDefined) {
+                currentFrame->localColorMap().setNumColors(numColors);
+                GETN(SK_BYTES_PER_COLORMAP_ENTRY * numColors, SkGIFImageColormap);
+                break;
+            }
+
+            setAlphaAndRequiredFrame(currentFrame);
+            GETN(1, SkGIFLZWStart);
+            break;
+        }
+
+        case SkGIFImageColormap: {
+            SkASSERT(!m_frames.empty());
+            auto* currentFrame = m_frames.back().get();
+            auto& cmap = currentFrame->localColorMap();
+            cmap.setTablePosition(m_streamBuffer.markPosition());
+            setAlphaAndRequiredFrame(currentFrame);
+            GETN(1, SkGIFLZWStart);
+            break;
+        }
+
+        case SkGIFSubBlock: {
+            const size_t bytesInBlock = this->getOneByte();
+            if (bytesInBlock)
+                GETN(bytesInBlock, SkGIFLZW);
+            else {
+                // Finished parsing one frame; Process next frame.
+                SkASSERT(!m_frames.empty());
+                // Note that some broken GIF files do not have enough LZW blocks to fully
+                // decode all rows but we treat it as frame complete.
+                m_frames.back()->setComplete();
+                GETN(1, SkGIFImageStart);
+                if (lastFrameToParse >= 0 && m_frames.count() > lastFrameToParse) {
+                    m_streamBuffer.flush();
+                    return SkCodec::kSuccess;
+                }
+            }
+            break;
+        }
+
+        case SkGIFDone: {
+            m_parseCompleted = true;
+            return SkCodec::kSuccess;
+        }
+
+        default:
+            // We shouldn't ever get here.
+            // This prevents attempting to continue reading this invalid stream.
+            GETN(0, SkGIFDone);
+            return SkCodec::kInvalidInput;
+            break;
+        }   // switch
+        m_streamBuffer.flush();
+    }
+}
+
+void SkGifImageReader::addFrameIfNecessary()
+{
+    if (m_frames.empty() || m_frames.back()->isComplete()) {
+        const int i = m_frames.count();
+        m_frames.emplace_back(new SkGIFFrameContext(i));
+    }
+}
+
+SkEncodedInfo::Alpha SkGIFFrameContext::onReportedAlpha() const {
+    // Note: We could correct these after decoding - i.e. some frames may turn out to be
+    // independent and opaque if they do not use the transparent pixel, but that would require
+    // checking whether each pixel used the transparent index.
+    return is_palette_index_valid(this->transparentPixel()) ? SkEncodedInfo::kBinary_Alpha
+                                                            : SkEncodedInfo::kOpaque_Alpha;
+}
+
+// FIXME: Move this method to close to doLZW().
+bool SkGIFLZWContext::prepareToDecode()
+{
+    SkASSERT(m_frameContext->isDataSizeDefined() && m_frameContext->isHeaderDefined());
+
+    // Since we use a codesize of 1 more than the datasize, we need to ensure
+    // that our datasize is strictly less than the SK_MAX_DICTIONARY_ENTRY_BITS.
+    if (m_frameContext->dataSize() >= SK_MAX_DICTIONARY_ENTRY_BITS)
+        return false;
+    clearCode = 1 << m_frameContext->dataSize();
+    avail = clearCode + 2;
+    oldcode = -1;
+    codesize = m_frameContext->dataSize() + 1;
+    codemask = (1 << codesize) - 1;
+    datum = bits = 0;
+    ipass = m_frameContext->interlaced() ? 1 : 0;
+    irow = 0;
+
+    // We want to know the longest sequence encodable by a dictionary with
+    // SK_MAX_DICTIONARY_ENTRIES entries. If we ignore the need to encode the base
+    // values themselves at the beginning of the dictionary, as well as the need
+    // for a clear code or a termination code, we could use every entry to
+    // encode a series of multiple values. If the input value stream looked
+    // like "AAAAA..." (a long string of just one value), the first dictionary
+    // entry would encode AA, the next AAA, the next AAAA, and so forth. Thus
+    // the longest sequence would be SK_MAX_DICTIONARY_ENTRIES + 1 values.
+    //
+    // However, we have to account for reserved entries. The first |datasize|
+    // bits are reserved for the base values, and the next two entries are
+    // reserved for the clear code and termination code. In theory a GIF can
+    // set the datasize to 0, meaning we have just two reserved entries, making
+    // the longest sequence (SK_MAX_DICTIONARY_ENTRIES + 1) - 2 values long. Since
+    // each value is a byte, this is also the number of bytes in the longest
+    // encodable sequence.
+    constexpr size_t kMaxSequence = SK_MAX_DICTIONARY_ENTRIES - 1;
+    constexpr size_t kMaxBytes = (kMaxSequence + SK_DICTIONARY_WORD_SIZE - 1)
+                         & ~(SK_DICTIONARY_WORD_SIZE - 1);
+
+    // Now allocate the output buffer. We decode directly into this buffer
+    // until we have at least one row worth of data, then call outputRow().
+    // This means worst case we may have (row width - 1) bytes in the buffer
+    // and then decode a sequence |kMaxBytes| long to append.
+    rowBuffer.reset(m_frameContext->width() - 1 + kMaxBytes);
+    rowIter = rowBuffer.begin();
+    rowsRemaining = m_frameContext->height();
+
+    // Clearing the whole suffix table lets us be more tolerant of bad data.
+    for (int i = 0; i < clearCode; ++i) {
+        std::fill_n(suffix[i].begin(), SK_DICTIONARY_WORD_SIZE, 0);
+        suffix[i][0] = i;
+        suffixLength[i] = 1;
+        prefix[i] = i;  // ensure that we have a place to find firstchar
+    }
+    return true;
+}
diff --git a/third_party/libgifcodec/SkGifImageReader.h b/third_party/libgifcodec/SkGifImageReader.h
new file mode 100644
index 0000000..9b02255
--- /dev/null
+++ b/third_party/libgifcodec/SkGifImageReader.h
@@ -0,0 +1,398 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef SkGifImageReader_h
+#define SkGifImageReader_h
+
+// Define ourselves as the clientPtr.  Mozilla just hacked their C++ callback class into this old C decoder,
+// so we will too.
+class SkLibGifCodec;
+
+#include "include/codec/SkCodec.h"
+#include "include/codec/SkCodecAnimation.h"
+#include "include/core/SkData.h"
+#include "include/core/SkImageInfo.h"
+#include "include/private/SkTArray.h"
+#include "src/codec/SkCodecPriv.h"
+#include "src/codec/SkColorTable.h"
+#include "src/codec/SkFrameHolder.h"
+#include "src/codec/SkStreamBuffer.h"
+
+#include <array>
+#include <memory>
+
+typedef SkTArray<unsigned char, true> SkGIFRow;
+
+
+#define SK_MAX_DICTIONARY_ENTRY_BITS 12
+#define SK_MAX_DICTIONARY_ENTRIES    4096 // 2^SK_MAX_DICTIONARY_ENTRY_BITS
+#define SK_MAX_COLORS                256
+#define SK_BYTES_PER_COLORMAP_ENTRY  3
+#define SK_DICTIONARY_WORD_SIZE      8
+
+// List of possible parsing states.
+enum SkGIFState {
+    SkGIFType,
+    SkGIFGlobalHeader,
+    SkGIFGlobalColormap,
+    SkGIFImageStart,
+    SkGIFImageHeader,
+    SkGIFImageColormap,
+    SkGIFImageBody,
+    SkGIFLZWStart,
+    SkGIFLZW,
+    SkGIFSubBlock,
+    SkGIFExtension,
+    SkGIFControlExtension,
+    SkGIFConsumeBlock,
+    SkGIFSkipBlock,
+    SkGIFDone,
+    SkGIFCommentExtension,
+    SkGIFApplicationExtension,
+    SkGIFNetscapeExtensionBlock,
+    SkGIFConsumeNetscapeExtension,
+    SkGIFConsumeComment
+};
+
+class SkGIFFrameContext;
+class SkGIFColorMap;
+
+// LZW decoder state machine.
+class SkGIFLZWContext final : public SkNoncopyable {
+public:
+    SkGIFLZWContext(SkLibGifCodec* client, const SkGIFFrameContext* frameContext)
+        : codesize(0)
+        , codemask(0)
+        , clearCode(0)
+        , avail(0)
+        , oldcode(0)
+        , bits(0)
+        , datum(0)
+        , ipass(0)
+        , irow(0)
+        , rowsRemaining(0)
+        , rowIter(nullptr)
+        , m_client(client)
+        , m_frameContext(frameContext)
+    { }
+
+    bool prepareToDecode();
+    void outputRow(const unsigned char* rowBegin);
+    bool doLZW(const unsigned char* block, size_t bytesInBlock);
+    bool hasRemainingRows() { return SkToBool(rowsRemaining); }
+
+private:
+    // LZW decoding states and output states.
+    int codesize;
+    int codemask;
+    int clearCode; // Codeword used to trigger dictionary reset.
+    int avail; // Index of next available slot in dictionary.
+    int oldcode;
+    int bits; // Number of unread bits in "datum".
+    int datum; // 32-bit input buffer.
+    int ipass; // Interlace pass; Ranges 1-4 if interlaced.
+    size_t irow; // Current output row, starting at zero.
+    size_t rowsRemaining; // Rows remaining to be output.
+
+    unsigned short prefix[SK_MAX_DICTIONARY_ENTRIES];
+    std::array<std::array<unsigned char, SK_DICTIONARY_WORD_SIZE>,
+                SK_MAX_DICTIONARY_ENTRIES> suffix;
+    unsigned short suffixLength[SK_MAX_DICTIONARY_ENTRIES];
+    SkGIFRow rowBuffer; // Single scanline temporary buffer.
+    unsigned char* rowIter;
+
+    SkLibGifCodec* const m_client;
+    const SkGIFFrameContext* m_frameContext;
+};
+
+struct SkGIFLZWBlock {
+ public:
+  SkGIFLZWBlock(size_t position, size_t size)
+      : blockPosition(position), blockSize(size) {}
+
+  size_t blockPosition;
+  size_t blockSize;
+};
+
+class SkGIFColorMap final {
+public:
+    static constexpr int kNotFound = -1;
+
+    SkGIFColorMap()
+        : m_isDefined(false)
+        , m_position(0)
+        , m_colors(0)
+        , m_transPixel(kNotFound)
+        , m_packColorProc(nullptr)
+    {
+    }
+
+    void setNumColors(int colors) {
+        SkASSERT(!m_colors);
+        SkASSERT(!m_position);
+
+        m_colors = colors;
+    }
+
+    void setTablePosition(size_t position) {
+        SkASSERT(!m_isDefined);
+
+        m_position = position;
+        m_isDefined = true;
+    }
+
+    int numColors() const { return m_colors; }
+
+    bool isDefined() const { return m_isDefined; }
+
+    // Build RGBA table using the data stream.
+    sk_sp<SkColorTable> buildTable(SkStreamBuffer*, SkColorType dstColorType,
+                                   int transparentPixel) const;
+
+private:
+    bool m_isDefined;
+    size_t m_position;
+    int m_colors;
+    // Cached values. If these match on a new request, we can reuse m_table.
+    mutable int m_transPixel;
+    mutable PackColorProc m_packColorProc;
+    mutable sk_sp<SkColorTable> m_table;
+};
+
+class SkGifImageReader;
+
+// LocalFrame output state machine.
+class SkGIFFrameContext : public SkFrame {
+public:
+    SkGIFFrameContext(int id)
+        : INHERITED(id)
+        , m_transparentPixel(SkGIFColorMap::kNotFound)
+        , m_dataSize(0)
+        , m_progressiveDisplay(false)
+        , m_interlaced(false)
+        , m_currentLzwBlock(0)
+        , m_isComplete(false)
+        , m_isHeaderDefined(false)
+        , m_isDataSizeDefined(false)
+    {
+    }
+
+    ~SkGIFFrameContext() override
+    {
+    }
+
+    void addLzwBlock(size_t position, size_t size)
+    {
+        m_lzwBlocks.emplace_back(position, size);
+    }
+
+    bool decode(SkStreamBuffer*, SkLibGifCodec* client, bool* frameDecoded);
+
+    int transparentPixel() const { return m_transparentPixel; }
+    void setTransparentPixel(int pixel) { m_transparentPixel = pixel; }
+
+    bool isComplete() const { return m_isComplete; }
+    void setComplete() { m_isComplete = true; }
+    bool isHeaderDefined() const { return m_isHeaderDefined; }
+    void setHeaderDefined() { m_isHeaderDefined = true; }
+    bool isDataSizeDefined() const { return m_isDataSizeDefined; }
+    int dataSize() const { return m_dataSize; }
+    void setDataSize(int size)
+    {
+        m_dataSize = size;
+        m_isDataSizeDefined = true;
+    }
+    bool progressiveDisplay() const { return m_progressiveDisplay; }
+    void setProgressiveDisplay(bool progressiveDisplay) { m_progressiveDisplay = progressiveDisplay; }
+    bool interlaced() const { return m_interlaced; }
+    void setInterlaced(bool interlaced) { m_interlaced = interlaced; }
+
+    void clearDecodeState() { m_lzwContext.reset(); }
+    const SkGIFColorMap& localColorMap() const { return m_localColorMap; }
+    SkGIFColorMap& localColorMap() { return m_localColorMap; }
+
+protected:
+    SkEncodedInfo::Alpha onReportedAlpha() const override;
+
+private:
+    int m_transparentPixel; // Index of transparent pixel. Value is kNotFound if there is no transparent pixel.
+    int m_dataSize;
+
+    bool m_progressiveDisplay; // If true, do Haeberli interlace hack.
+    bool m_interlaced; // True, if scanlines arrive interlaced order.
+
+    std::unique_ptr<SkGIFLZWContext> m_lzwContext;
+    // LZW blocks for this frame.
+    SkTArray<SkGIFLZWBlock> m_lzwBlocks;
+
+    SkGIFColorMap m_localColorMap;
+
+    int m_currentLzwBlock;
+    bool m_isComplete;
+    bool m_isHeaderDefined;
+    bool m_isDataSizeDefined;
+
+    typedef SkFrame INHERITED;
+};
+
+class SkGifImageReader final : public SkFrameHolder {
+public:
+    // This takes ownership of stream.
+    SkGifImageReader(std::unique_ptr<SkStream> stream)
+        : m_client(nullptr)
+        , m_state(SkGIFType)
+        , m_bytesToConsume(6) // Number of bytes for GIF type, either "GIF87a" or "GIF89a".
+        , m_version(0)
+        , m_loopCount(cLoopCountNotSeen)
+        , m_streamBuffer(std::move(stream))
+        , m_parseCompleted(false)
+        , m_firstFrameHasAlpha(false)
+    {
+    }
+
+    ~SkGifImageReader() override
+    {
+    }
+
+    void setClient(SkLibGifCodec* client) { m_client = client; }
+
+    // Option to pass to parse(). All enums are negative, because a non-negative value is used to
+    // indicate that the Reader should parse up to and including the frame indicated.
+    enum SkGIFParseQuery {
+        // Parse enough to determine the size. Note that this parses the first frame's header,
+        // since we may decide to expand based on the frame's dimensions.
+        SkGIFSizeQuery        = -1,
+        // Parse to the end, so we know about all frames.
+        SkGIFFrameCountQuery  = -2,
+        // Parse until we see the loop count.
+        SkGIFLoopCountQuery   = -3,
+    };
+
+    // Parse incoming GIF data stream into internal data structures.
+    // Non-negative values are used to indicate to parse through that frame.
+    SkCodec::Result parse(SkGIFParseQuery);
+
+    // Decode the frame indicated by frameIndex.
+    // frameComplete will be set to true if the frame is completely decoded.
+    // The method returns false if there is an error.
+    bool decode(int frameIndex, bool* frameComplete);
+
+    int imagesCount() const
+    {
+        const int frames = m_frames.count();
+        if (!frames) {
+            return 0;
+        }
+
+        // This avoids counting an empty frame when the file is truncated (or
+        // simply not yet complete) after receiving SkGIFControlExtension (and
+        // possibly SkGIFImageHeader) but before reading the color table. This
+        // ensures that we do not count a frame before we know its required
+        // frame.
+        return m_frames.back()->reachedStartOfData() ? frames : frames - 1;
+    }
+    int loopCount() const {
+        if (cLoopCountNotSeen == m_loopCount) {
+            return 0;
+        }
+        return m_loopCount;
+    }
+
+    const SkGIFColorMap& globalColorMap() const
+    {
+        return m_globalColorMap;
+    }
+
+    const SkGIFFrameContext* frameContext(int index) const
+    {
+        return index >= 0 && index < m_frames.count()
+                ? m_frames[index].get() : nullptr;
+    }
+
+    void clearDecodeState() {
+        for (int index = 0; index < m_frames.count(); index++) {
+            m_frames[index]->clearDecodeState();
+        }
+    }
+
+    // Return the color table for frame index (which may be the global color table).
+    sk_sp<SkColorTable> getColorTable(SkColorType dstColorType, int index);
+
+    bool firstFrameHasAlpha() const { return m_firstFrameHasAlpha; }
+
+protected:
+    const SkFrame* onGetFrame(int i) const override {
+        return static_cast<const SkFrame*>(this->frameContext(i));
+    }
+
+private:
+    // Requires that one byte has been buffered into m_streamBuffer.
+    unsigned char getOneByte() const {
+        return reinterpret_cast<const unsigned char*>(m_streamBuffer.get())[0];
+    }
+
+    void addFrameIfNecessary();
+    bool currentFrameIsFirstFrame() const
+    {
+        return m_frames.empty() || (m_frames.count() == 1 && !m_frames[0]->isComplete());
+    }
+
+    // Unowned pointer
+    SkLibGifCodec* m_client;
+
+    // Parsing state machine.
+    SkGIFState m_state; // Current decoder master state.
+    size_t m_bytesToConsume; // Number of bytes to consume for next stage of parsing.
+
+    // Global (multi-image) state.
+    int m_version; // Either 89 for GIF89 or 87 for GIF87.
+    SkGIFColorMap m_globalColorMap;
+
+    static constexpr int cLoopCountNotSeen = -2;
+    int m_loopCount; // Netscape specific extension block to control the number of animation loops a GIF renders.
+
+    SkTArray<std::unique_ptr<SkGIFFrameContext>> m_frames;
+
+    SkStreamBuffer m_streamBuffer;
+    bool m_parseCompleted;
+
+    // This value can be computed before we create a SkGIFFrameContext, so we
+    // store it here instead of on m_frames[0].
+    bool m_firstFrameHasAlpha;
+};
+
+#endif
diff --git a/third_party/libgifcodec/SkLibGifCodec.cpp b/third_party/libgifcodec/SkLibGifCodec.cpp
new file mode 100644
index 0000000..b9d1799
--- /dev/null
+++ b/third_party/libgifcodec/SkLibGifCodec.cpp
@@ -0,0 +1,531 @@
+// Copyright 2015 Google Inc.
+// Use of this source code is governed by the BSD-3-Clause license that can be
+// found in the LICENSE.md file.
+
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "SkGifCodec.h"
+#include "SkLibGifCodec.h"
+
+#include "include/codec/SkCodecAnimation.h"
+#include "include/core/SkStream.h"
+#include "include/private/SkColorData.h"
+#include "src/codec/SkCodecPriv.h"
+#include "src/codec/SkColorTable.h"
+#include "src/codec/SkSwizzler.h"
+
+#include <algorithm>
+
+#define GIF87_STAMP "GIF87a"
+#define GIF89_STAMP "GIF89a"
+#define GIF_STAMP_LEN 6
+
+/*
+ * Checks the start of the stream to see if the image is a gif
+ */
+bool SkGifCodec::IsGif(const void* buf, size_t bytesRead) {
+    if (bytesRead >= GIF_STAMP_LEN) {
+        if (memcmp(GIF87_STAMP, buf, GIF_STAMP_LEN) == 0 ||
+            memcmp(GIF89_STAMP, buf, GIF_STAMP_LEN) == 0)
+        {
+            return true;
+        }
+    }
+    return false;
+}
+
+/*
+ * Error function
+ */
+static SkCodec::Result gif_error(const char* msg, SkCodec::Result result = SkCodec::kInvalidInput) {
+    SkCodecPrintf("Gif Error: %s\n", msg);
+    return result;
+}
+
+std::unique_ptr<SkCodec> SkGifCodec::MakeFromStream(std::unique_ptr<SkStream> stream,
+                                                    SkCodec::Result* result) {
+    std::unique_ptr<SkGifImageReader> reader(new SkGifImageReader(std::move(stream)));
+    *result = reader->parse(SkGifImageReader::SkGIFSizeQuery);
+    if (*result != SkCodec::kSuccess) {
+        return nullptr;
+    }
+
+    // If no images are in the data, or the first header is not yet defined, we cannot
+    // create a codec. In either case, the width and height are not yet known.
+    auto* frame = reader->frameContext(0);
+    if (!frame || !frame->isHeaderDefined()) {
+        *result = SkCodec::kInvalidInput;
+        return nullptr;
+    }
+
+    // isHeaderDefined() will not return true if the screen size is empty.
+    SkASSERT(reader->screenHeight() > 0 && reader->screenWidth() > 0);
+
+    const auto alpha = reader->firstFrameHasAlpha() ? SkEncodedInfo::kBinary_Alpha
+                                                    : SkEncodedInfo::kOpaque_Alpha;
+    // Use kPalette since Gifs are encoded with a color table.
+    // FIXME: Gifs can actually be encoded with 4-bits per pixel. Using 8 works, but we could skip
+    //        expanding to 8 bits and take advantage of the SkSwizzler to work from 4.
+    auto encodedInfo = SkEncodedInfo::Make(reader->screenWidth(), reader->screenHeight(),
+                                           SkEncodedInfo::kPalette_Color, alpha, 8);
+    return std::unique_ptr<SkCodec>(new SkLibGifCodec(std::move(encodedInfo), reader.release()));
+}
+
+bool SkLibGifCodec::onRewind() {
+    fReader->clearDecodeState();
+    return true;
+}
+
+SkLibGifCodec::SkLibGifCodec(SkEncodedInfo&& encodedInfo, SkGifImageReader* reader)
+    : INHERITED(std::move(encodedInfo), skcms_PixelFormat_RGBA_8888, nullptr)
+    , fReader(reader)
+    , fTmpBuffer(nullptr)
+    , fSwizzler(nullptr)
+    , fCurrColorTable(nullptr)
+    , fCurrColorTableIsReal(false)
+    , fFilledBackground(false)
+    , fFirstCallToIncrementalDecode(false)
+    , fDst(nullptr)
+    , fDstRowBytes(0)
+    , fRowsDecoded(0)
+{
+    reader->setClient(this);
+}
+
+int SkLibGifCodec::onGetFrameCount() {
+    fReader->parse(SkGifImageReader::SkGIFFrameCountQuery);
+    return fReader->imagesCount();
+}
+
+bool SkLibGifCodec::onGetFrameInfo(int i, SkCodec::FrameInfo* frameInfo) const {
+    if (i >= fReader->imagesCount()) {
+        return false;
+    }
+
+    const SkGIFFrameContext* frameContext = fReader->frameContext(i);
+    SkASSERT(frameContext->reachedStartOfData());
+
+    if (frameInfo) {
+        frameInfo->fDuration = frameContext->getDuration();
+        frameInfo->fRequiredFrame = frameContext->getRequiredFrame();
+        frameInfo->fFullyReceived = frameContext->isComplete();
+        frameInfo->fAlphaType = frameContext->hasAlpha() ? kUnpremul_SkAlphaType
+                                                         : kOpaque_SkAlphaType;
+        frameInfo->fDisposalMethod = frameContext->getDisposalMethod();
+    }
+    return true;
+}
+
+int SkLibGifCodec::onGetRepetitionCount() {
+    fReader->parse(SkGifImageReader::SkGIFLoopCountQuery);
+    return fReader->loopCount();
+}
+
+static constexpr SkColorType kXformSrcColorType = kRGBA_8888_SkColorType;
+
+void SkLibGifCodec::initializeColorTable(const SkImageInfo& dstInfo, int frameIndex) {
+    SkColorType colorTableColorType = dstInfo.colorType();
+    if (this->colorXform()) {
+        colorTableColorType = kXformSrcColorType;
+    }
+
+    sk_sp<SkColorTable> currColorTable = fReader->getColorTable(colorTableColorType, frameIndex);
+    fCurrColorTableIsReal = static_cast<bool>(currColorTable);
+    if (!fCurrColorTableIsReal) {
+        // This is possible for an empty frame. Create a dummy with one value (transparent).
+        SkPMColor color = SK_ColorTRANSPARENT;
+        fCurrColorTable.reset(new SkColorTable(&color, 1));
+    } else if (this->colorXform() && !this->xformOnDecode()) {
+        SkPMColor dstColors[256];
+        this->applyColorXform(dstColors, currColorTable->readColors(),
+                              currColorTable->count());
+        fCurrColorTable.reset(new SkColorTable(dstColors, currColorTable->count()));
+    } else {
+        fCurrColorTable = std::move(currColorTable);
+    }
+}
+
+
+SkCodec::Result SkLibGifCodec::prepareToDecode(const SkImageInfo& dstInfo, const Options& opts) {
+    if (opts.fSubset) {
+        return gif_error("Subsets not supported.\n", kUnimplemented);
+    }
+
+    const int frameIndex = opts.fFrameIndex;
+    if (frameIndex > 0 && kRGB_565_SkColorType == dstInfo.colorType()) {
+        // FIXME: In theory, we might be able to support this, but it's not clear that it
+        // is necessary (Chromium does not decode to 565, and Android does not decode
+        // frames beyond the first). Disabling it because it is somewhat difficult:
+        // - If there is a transparent pixel, and this frame draws on top of another frame
+        //   (if the frame is independent with a transparent pixel, we should not decode to
+        //   565 anyway, since it is not opaque), we need to skip drawing the transparent
+        //   pixels (see writeTransparentPixels in haveDecodedRow). We currently do this by
+        //   first swizzling into temporary memory, then copying into the destination. (We
+        //   let the swizzler handle it first because it may need to sample.) After
+        //   swizzling to 565, we do not know which pixels in our temporary memory
+        //   correspond to the transparent pixel, so we do not know what to skip. We could
+        //   special case the non-sampled case (no need to swizzle), but as this is
+        //   currently unused we can just not support it.
+        return gif_error("Cannot decode multiframe gif (except frame 0) as 565.\n",
+                         kInvalidConversion);
+    }
+
+    const auto* frame = fReader->frameContext(frameIndex);
+    SkASSERT(frame);
+    if (0 == frameIndex) {
+        // SkCodec does not have a way to just parse through frame 0, so we
+        // have to do so manually, here.
+        fReader->parse((SkGifImageReader::SkGIFParseQuery) 0);
+        if (!frame->reachedStartOfData()) {
+            // We have parsed enough to know that there is a color map, but cannot
+            // parse the map itself yet. Exit now, so we do not build an incorrect
+            // table.
+            return gif_error("color map not available yet\n", kIncompleteInput);
+        }
+    } else {
+        // Parsing happened in SkCodec::getPixels.
+        SkASSERT(frameIndex < fReader->imagesCount());
+        SkASSERT(frame->reachedStartOfData());
+    }
+
+    if (this->xformOnDecode()) {
+        fXformBuffer.reset(new uint32_t[dstInfo.width()]);
+        sk_bzero(fXformBuffer.get(), dstInfo.width() * sizeof(uint32_t));
+    }
+
+    fTmpBuffer.reset(new uint8_t[dstInfo.minRowBytes()]);
+
+    this->initializeColorTable(dstInfo, frameIndex);
+    this->initializeSwizzler(dstInfo, frameIndex);
+
+    SkASSERT(fCurrColorTable);
+    return kSuccess;
+}
+
+void SkLibGifCodec::initializeSwizzler(const SkImageInfo& dstInfo, int frameIndex) {
+    const SkGIFFrameContext* frame = fReader->frameContext(frameIndex);
+    // This is only called by prepareToDecode, which ensures frameIndex is in range.
+    SkASSERT(frame);
+
+    const int xBegin = frame->xOffset();
+    const int xEnd = std::min(frame->frameRect().right(), fReader->screenWidth());
+
+    // CreateSwizzler only reads left and right of the frame. We cannot use the frame's raw
+    // frameRect, since it might extend beyond the edge of the frame.
+    SkIRect swizzleRect = SkIRect::MakeLTRB(xBegin, 0, xEnd, 0);
+
+    SkImageInfo swizzlerInfo = dstInfo;
+    if (this->colorXform()) {
+        swizzlerInfo = swizzlerInfo.makeColorType(kXformSrcColorType);
+        if (kPremul_SkAlphaType == dstInfo.alphaType()) {
+            swizzlerInfo = swizzlerInfo.makeAlphaType(kUnpremul_SkAlphaType);
+        }
+    }
+
+    // The default Options should be fine:
+    // - we'll ignore if the memory is zero initialized - unless we're the first frame, this won't
+    //   matter anyway.
+    // - subsets are not supported for gif
+    // - the swizzler does not need to know about the frame.
+    // We may not be able to use the real Options anyway, since getPixels does not store it (due to
+    // a bug).
+    fSwizzler = SkSwizzler::Make(this->getEncodedInfo(), fCurrColorTable->readColors(),
+                                 swizzlerInfo, Options(), &swizzleRect);
+    SkASSERT(fSwizzler.get());
+}
+
+/*
+ * Initiates the gif decode
+ */
+SkCodec::Result SkLibGifCodec::onGetPixels(const SkImageInfo& dstInfo,
+                                        void* pixels, size_t dstRowBytes,
+                                        const Options& opts,
+                                        int* rowsDecoded) {
+    Result result = this->prepareToDecode(dstInfo, opts);
+    switch (result) {
+        case kSuccess:
+            break;
+        case kIncompleteInput:
+            // onStartIncrementalDecode treats this as incomplete, since it may
+            // provide more data later, but in this case, no more data will be
+            // provided, and there is nothing to draw. We also cannot return
+            // kIncompleteInput, which will make SkCodec attempt to fill
+            // remaining rows, but that requires an SkSwizzler, which we have
+            // not created.
+            return kInvalidInput;
+        default:
+            return result;
+    }
+
+    if (dstInfo.dimensions() != this->dimensions()) {
+        return gif_error("Scaling not supported.\n", kInvalidScale);
+    }
+
+    fDst = pixels;
+    fDstRowBytes = dstRowBytes;
+
+    return this->decodeFrame(true, opts, rowsDecoded);
+}
+
+SkCodec::Result SkLibGifCodec::onStartIncrementalDecode(const SkImageInfo& dstInfo,
+                                                     void* pixels, size_t dstRowBytes,
+                                                     const SkCodec::Options& opts) {
+    Result result = this->prepareToDecode(dstInfo, opts);
+    if (result != kSuccess) {
+        return result;
+    }
+
+    fDst = pixels;
+    fDstRowBytes = dstRowBytes;
+
+    fFirstCallToIncrementalDecode = true;
+
+    return kSuccess;
+}
+
+SkCodec::Result SkLibGifCodec::onIncrementalDecode(int* rowsDecoded) {
+    // It is possible the client has appended more data. Parse, if needed.
+    const auto& options = this->options();
+    const int frameIndex = options.fFrameIndex;
+    fReader->parse((SkGifImageReader::SkGIFParseQuery) frameIndex);
+
+    const bool firstCallToIncrementalDecode = fFirstCallToIncrementalDecode;
+    fFirstCallToIncrementalDecode = false;
+    return this->decodeFrame(firstCallToIncrementalDecode, options, rowsDecoded);
+}
+
+SkCodec::Result SkLibGifCodec::decodeFrame(bool firstAttempt, const Options& opts, int* rowsDecoded) {
+    const SkImageInfo& dstInfo = this->dstInfo();
+    const int scaledHeight = get_scaled_dimension(dstInfo.height(), fSwizzler->sampleY());
+
+    const int frameIndex = opts.fFrameIndex;
+    SkASSERT(frameIndex < fReader->imagesCount());
+    const SkGIFFrameContext* frameContext = fReader->frameContext(frameIndex);
+    if (firstAttempt) {
+        // rowsDecoded reports how many rows have been initialized, so a layer above
+        // can fill the rest. In some cases, we fill the background before decoding
+        // (or it is already filled for us), so we report rowsDecoded to be the full
+        // height.
+        bool filledBackground = false;
+        if (frameContext->getRequiredFrame() == kNoFrame) {
+            // We may need to clear to transparent for one of the following reasons:
+            // - The frameRect does not cover the full bounds. haveDecodedRow will
+            //   only draw inside the frameRect, so we need to clear the rest.
+            // - The frame is interlaced. There is no obvious way to fill
+            //   afterwards for an incomplete image. (FIXME: Does the first pass
+            //   cover all rows? If so, we do not have to fill here.)
+            // - There is no color table for this frame. In that case will not
+            //   draw anything, so we need to fill.
+            if (frameContext->frameRect() != this->bounds()
+                    || frameContext->interlaced() || !fCurrColorTableIsReal) {
+                auto fillInfo = dstInfo.makeWH(fSwizzler->fillWidth(), scaledHeight);
+                SkSampler::Fill(fillInfo, fDst, fDstRowBytes, opts.fZeroInitialized);
+                filledBackground = true;
+            }
+        } else {
+            // Not independent.
+            // SkCodec ensured that the prior frame has been decoded.
+            filledBackground = true;
+        }
+
+        fFilledBackground = filledBackground;
+        if (filledBackground) {
+            // Report the full (scaled) height, since the client will never need to fill.
+            fRowsDecoded = scaledHeight;
+        } else {
+            // This will be updated by haveDecodedRow.
+            fRowsDecoded = 0;
+        }
+    }
+
+    if (!fCurrColorTableIsReal) {
+        // Nothing to draw this frame.
+        return kSuccess;
+    }
+
+    bool frameDecoded = false;
+    const bool fatalError = !fReader->decode(frameIndex, &frameDecoded);
+    if (fatalError || !frameDecoded || fRowsDecoded != scaledHeight) {
+        if (rowsDecoded) {
+            *rowsDecoded = fRowsDecoded;
+        }
+        if (fatalError) {
+            return kErrorInInput;
+        }
+        return kIncompleteInput;
+    }
+
+    return kSuccess;
+}
+
+void SkLibGifCodec::applyXformRow(const SkImageInfo& dstInfo, void* dst, const uint8_t* src) const {
+    if (this->xformOnDecode()) {
+        SkASSERT(this->colorXform());
+        fSwizzler->swizzle(fXformBuffer.get(), src);
+
+        const int xformWidth = get_scaled_dimension(dstInfo.width(), fSwizzler->sampleX());
+        this->applyColorXform(dst, fXformBuffer.get(), xformWidth);
+    } else {
+        fSwizzler->swizzle(dst, src);
+    }
+}
+
+template <typename T>
+static void blend_line(void* dstAsVoid, const void* srcAsVoid, int width) {
+    T*       dst = reinterpret_cast<T*>(dstAsVoid);
+    const T* src = reinterpret_cast<const T*>(srcAsVoid);
+    while (width --> 0) {
+        if (*src != 0) {   // GIF pixels are either transparent (== 0) or opaque (!= 0).
+            *dst = *src;
+        }
+        src++;
+        dst++;
+    }
+}
+
+void SkLibGifCodec::haveDecodedRow(int frameIndex, const unsigned char* rowBegin,
+                                int rowNumber, int repeatCount, bool writeTransparentPixels)
+{
+    const SkGIFFrameContext* frameContext = fReader->frameContext(frameIndex);
+    // The pixel data and coordinates supplied to us are relative to the frame's
+    // origin within the entire image size, i.e.
+    // (frameContext->xOffset, frameContext->yOffset). There is no guarantee
+    // that width == (size().width() - frameContext->xOffset), so
+    // we must ensure we don't run off the end of either the source data or the
+    // row's X-coordinates.
+    const int width = frameContext->width();
+    const int xBegin = frameContext->xOffset();
+    const int yBegin = frameContext->yOffset() + rowNumber;
+    const int xEnd = std::min(xBegin + width, this->dimensions().width());
+    const int yEnd = std::min(yBegin + rowNumber + repeatCount, this->dimensions().height());
+    // FIXME: No need to make the checks on width/xBegin/xEnd for every row. We could instead do
+    // this once in prepareToDecode.
+    if (!width || (xBegin < 0) || (yBegin < 0) || (xEnd <= xBegin) || (yEnd <= yBegin))
+        return;
+
+    // yBegin is the first row in the non-sampled image. dstRow will be the row in the output,
+    // after potentially scaling it.
+    int dstRow = yBegin;
+
+    const int sampleY = fSwizzler->sampleY();
+    if (sampleY > 1) {
+        // Check to see whether this row or one that falls in the repeatCount is needed in the
+        // output.
+        bool foundNecessaryRow = false;
+        for (int i = 0; i < repeatCount; i++) {
+            const int potentialRow = yBegin + i;
+            if (fSwizzler->rowNeeded(potentialRow)) {
+                dstRow = potentialRow / sampleY;
+                const int scaledHeight = get_scaled_dimension(this->dstInfo().height(), sampleY);
+                if (dstRow >= scaledHeight) {
+                    return;
+                }
+
+                foundNecessaryRow = true;
+                repeatCount -= i;
+
+                repeatCount = (repeatCount - 1) / sampleY + 1;
+
+                // Make sure the repeatCount does not take us beyond the end of the dst
+                if (dstRow + repeatCount > scaledHeight) {
+                    repeatCount = scaledHeight - dstRow;
+                    SkASSERT(repeatCount >= 1);
+                }
+                break;
+            }
+        }
+
+        if (!foundNecessaryRow) {
+            return;
+        }
+    } else {
+        // Make sure the repeatCount does not take us beyond the end of the dst
+        SkASSERT(this->dstInfo().height() >= yBegin);
+        repeatCount = std::min(repeatCount, this->dstInfo().height() - yBegin);
+    }
+
+    if (!fFilledBackground) {
+        // At this point, we are definitely going to write the row, so count it towards the number
+        // of rows decoded.
+        // We do not consider the repeatCount, which only happens for interlaced, in which case we
+        // have already set fRowsDecoded to the proper value (reflecting that we have filled the
+        // background).
+        fRowsDecoded++;
+    }
+
+    // decodeFrame will early exit if this is false, so this method will not be
+    // called.
+    SkASSERT(fCurrColorTableIsReal);
+
+    // The swizzler takes care of offsetting into the dst width-wise.
+    void* dstLine = SkTAddOffset<void>(fDst, dstRow * fDstRowBytes);
+
+    // We may or may not need to write transparent pixels to the buffer.
+    // If we're compositing against a previous image, it's wrong, but if
+    // we're decoding an interlaced gif and displaying it "Haeberli"-style,
+    // we must write these for passes beyond the first, or the initial passes
+    // will "show through" the later ones.
+    const auto dstInfo = this->dstInfo();
+    if (writeTransparentPixels) {
+        this->applyXformRow(dstInfo, dstLine, rowBegin);
+    } else {
+        this->applyXformRow(dstInfo, fTmpBuffer.get(), rowBegin);
+
+        size_t offsetBytes = fSwizzler->swizzleOffsetBytes();
+        if (dstInfo.colorType() == kRGBA_F16_SkColorType) {
+            // Account for the fact that post-swizzling we converted to F16,
+            // which is twice as wide.
+            offsetBytes *= 2;
+        }
+        const void* src = SkTAddOffset<void>(fTmpBuffer.get(), offsetBytes);
+        void*       dst = SkTAddOffset<void>(dstLine, offsetBytes);
+
+        switch (dstInfo.colorType()) {
+            case kBGRA_8888_SkColorType:
+            case kRGBA_8888_SkColorType:
+                blend_line<uint32_t>(dst, src, fSwizzler->swizzleWidth());
+                break;
+            case kRGBA_F16_SkColorType:
+                blend_line<uint64_t>(dst, src, fSwizzler->swizzleWidth());
+                break;
+            default:
+                SkASSERT(false);
+                return;
+        }
+    }
+
+    // Tell the frame to copy the row data if need be.
+    if (repeatCount > 1) {
+        const size_t bytesPerPixel = this->dstInfo().bytesPerPixel();
+        const size_t bytesToCopy = fSwizzler->swizzleWidth() * bytesPerPixel;
+        void* copiedLine = SkTAddOffset<void>(dstLine, fSwizzler->swizzleOffsetBytes());
+        void* dst = copiedLine;
+        for (int i = 1; i < repeatCount; i++) {
+            dst = SkTAddOffset<void>(dst, fDstRowBytes);
+            memcpy(dst, copiedLine, bytesToCopy);
+        }
+    }
+}
diff --git a/third_party/libgifcodec/SkLibGifCodec.h b/third_party/libgifcodec/SkLibGifCodec.h
new file mode 100644
index 0000000..014df5f
--- /dev/null
+++ b/third_party/libgifcodec/SkLibGifCodec.h
@@ -0,0 +1,153 @@
+// Copyright 2015 Google Inc.
+// Use of this source code is governed by the BSD-3-Clause license that can be
+// found in the LICENSE.md file.
+#ifndef SkLibGifCodec_DEFINED
+#define SkLibGifCodec_DEFINED
+
+#include "SkGifImageReader.h"
+
+#include "include/codec/SkCodec.h"
+#include "include/codec/SkCodecAnimation.h"
+#include "include/core/SkColorSpace.h"
+#include "include/core/SkImageInfo.h"
+#include "src/codec/SkColorTable.h"
+#include "src/codec/SkSwizzler.h"
+
+/*
+ *
+ * This class implements the decoding for gif images
+ *
+ */
+class SkLibGifCodec : public SkCodec {
+public:
+    static bool IsGif(const void*, size_t);
+
+    /*
+     * Assumes IsGif was called and returned true
+     * Reads enough of the stream to determine the image format
+     */
+    static std::unique_ptr<SkCodec> MakeFromStream(std::unique_ptr<SkStream>, Result*);
+
+    // Callback for SkGifImageReader when a row is available.
+    void haveDecodedRow(int frameIndex, const unsigned char* rowBegin,
+                        int rowNumber, int repeatCount, bool writeTransparentPixels);
+    /*
+     * Creates an instance of the decoder
+     * Called only by NewFromStream
+     * Takes ownership of the SkGifImageReader
+     */
+    SkLibGifCodec(SkEncodedInfo&&, SkGifImageReader*);
+
+protected:
+    /*
+     * Performs the full gif decode
+     */
+    Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&,
+            int*) override;
+
+    SkEncodedImageFormat onGetEncodedFormat() const override {
+        return SkEncodedImageFormat::kGIF;
+    }
+
+    bool onRewind() override;
+
+    int onGetFrameCount() override;
+    bool onGetFrameInfo(int, FrameInfo*) const override;
+    int onGetRepetitionCount() override;
+
+    Result onStartIncrementalDecode(const SkImageInfo& /*dstInfo*/, void*, size_t,
+            const SkCodec::Options&) override;
+
+    Result onIncrementalDecode(int*) override;
+
+    const SkFrameHolder* getFrameHolder() const override {
+        return fReader.get();
+    }
+
+private:
+
+    /*
+     * Initializes the color table that we will use for decoding.
+     *
+     * @param dstInfo         Contains the requested dst color type.
+     * @param frameIndex      Frame whose color table to use.
+     */
+    void initializeColorTable(const SkImageInfo& dstInfo, int frameIndex);
+
+   /*
+    * Does necessary setup, including setting up the color table and swizzler.
+    */
+    Result prepareToDecode(const SkImageInfo& dstInfo, const Options& opts);
+
+    /*
+     * Initializes the swizzler.
+     *
+     * @param dstInfo    Output image information.  Dimensions may have been
+     *                   adjusted if the image frame size does not match the size
+     *                   indicated in the header.
+     * @param frameIndex Which frame we are decoding. This determines the frameRect
+     *                   to use.
+     */
+    void initializeSwizzler(const SkImageInfo& dstInfo, int frameIndex);
+
+    SkSampler* getSampler(bool createIfNecessary) override {
+        SkASSERT(fSwizzler);
+        return fSwizzler.get();
+    }
+
+    /*
+     * Recursive function to decode a frame.
+     *
+     * @param firstAttempt Whether this is the first call to decodeFrame since
+     *                     starting. e.g. true in onGetPixels, and true in the
+     *                     first call to onIncrementalDecode after calling
+     *                     onStartIncrementalDecode.
+     *                     When true, this method may have to initialize the
+     *                     frame, for example by filling or decoding the prior
+     *                     frame.
+     * @param opts         Options for decoding. May be different from
+     *                     this->options() for decoding prior frames. Specifies
+     *                     the frame to decode and whether the prior frame has
+     *                     already been decoded to fDst. If not, and the frame
+     *                     is not independent, this method will recursively
+     *                     decode the frame it depends on.
+     * @param rowsDecoded  Out-parameter to report the total number of rows
+     *                     that have been decoded (or at least written to, if
+     *                     it had to fill), including rows decoded by prior
+     *                     calls to onIncrementalDecode.
+     * @return             kSuccess if the frame is complete, kIncompleteInput
+     *                     otherwise.
+     */
+    Result decodeFrame(bool firstAttempt, const Options& opts, int* rowsDecoded);
+
+    /*
+     *  Swizzles and color xforms (if necessary) into dst.
+     */
+    void applyXformRow(const SkImageInfo& dstInfo, void* dst, const uint8_t* src) const;
+
+    std::unique_ptr<SkGifImageReader>   fReader;
+    std::unique_ptr<uint8_t[]>          fTmpBuffer;
+    std::unique_ptr<SkSwizzler>         fSwizzler;
+    sk_sp<SkColorTable>                 fCurrColorTable;
+    // We may create a dummy table if there is not a Map in the input data. In
+    // that case, we set this value to false, and we can skip a lot of decoding
+    // work (which would not be meaningful anyway). We create a "fake"/"dummy"
+    // one in that case, so the client and the swizzler have something to draw.
+    bool                                fCurrColorTableIsReal;
+    // Whether the background was filled.
+    bool                                fFilledBackground;
+    // True on the first call to onIncrementalDecode. This value is passed to
+    // decodeFrame.
+    bool                                fFirstCallToIncrementalDecode;
+
+    void*                               fDst;
+    size_t                              fDstRowBytes;
+
+    // Updated inside haveDecodedRow when rows are decoded, unless we filled
+    // the background, in which case it is set once and left alone.
+    int                                 fRowsDecoded;
+    std::unique_ptr<uint32_t[]>         fXformBuffer;
+
+    typedef SkCodec INHERITED;
+};
+#endif  // SkLibGifCodec_DEFINED
diff --git a/third_party/libgifcodec/libgifcodec.gni b/third_party/libgifcodec/libgifcodec.gni
new file mode 100644
index 0000000..aa94603
--- /dev/null
+++ b/third_party/libgifcodec/libgifcodec.gni
@@ -0,0 +1,14 @@
+# Copyright 2019 Google LLC.
+# Use of this source code is governed by the BSD-3-Clause license that can be
+# found in the LICENSE.md file.
+
+libgifcodec_sources = [
+  "SkGifImageReader.cpp",
+  "SkGifImageReader.h",
+  "SkLibGifCodec.cpp",
+  "SkLibGifCodec.h",
+]
+
+libgifcodec_public = [
+  "SkGifCodec.h",
+]
diff --git a/win/include/config/SkUserConfig.h b/win/include/config/SkUserConfig.h
new file mode 100644
index 0000000..7f67320
--- /dev/null
+++ b/win/include/config/SkUserConfig.h
@@ -0,0 +1,85 @@
+// DO NOT MODIFY! This file is autogenerated by gn_to_bp.py.
+// If need to change a define, modify SkUserConfigManual.h
+#pragma once
+#include "SkUserConfigManual.h"
+
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+
+#ifndef SK_CODEC_DECODES_JPEG
+#define SK_CODEC_DECODES_JPEG
+#endif
+
+#ifndef SK_CODEC_DECODES_PNG
+#define SK_CODEC_DECODES_PNG
+#endif
+
+#ifndef SK_CODEC_DECODES_WEBP
+#define SK_CODEC_DECODES_WEBP
+#endif
+
+#ifndef SK_ENABLE_ANDROID_UTILS
+#define SK_ENABLE_ANDROID_UTILS
+#endif
+
+#ifndef SK_ENABLE_SKSL_INTERPRETER
+#define SK_ENABLE_SKSL_INTERPRETER
+#endif
+
+#ifndef SK_ENCODE_JPEG
+#define SK_ENCODE_JPEG
+#endif
+
+#ifndef SK_ENCODE_PNG
+#define SK_ENCODE_PNG
+#endif
+
+#ifndef SK_ENCODE_WEBP
+#define SK_ENCODE_WEBP
+#endif
+
+#ifndef SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_APPLY_TO_A8
+#endif
+
+#ifndef SK_GAMMA_CONTRAST
+#define SK_GAMMA_CONTRAST 0.0
+#endif
+
+#ifndef SK_GAMMA_EXPONENT
+#define SK_GAMMA_EXPONENT 1.4
+#endif
+
+#ifndef SK_SUPPORT_GPU
+#define SK_SUPPORT_GPU 0
+#endif
+
+#ifndef SK_SUPPORT_PDF
+#define SK_SUPPORT_PDF
+#endif
+
+#ifndef SK_USE_LIBGIFCODEC
+#define SK_USE_LIBGIFCODEC
+#endif
+
+#ifndef SK_XML
+#define SK_XML
+#endif
+
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
+// Correct SK_BUILD_FOR flags that may have been set by
+// SkTypes.h/Android.bp
+#ifndef SK_BUILD_FOR_WIN
+    #define SK_BUILD_FOR_WIN
+#endif
+#ifdef SK_BUILD_FOR_ANDROID
+    #undef SK_BUILD_FOR_ANDROID
+#endif
+#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_IOS) || \
+    defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_UNIX)
+    #error "Only SK_BUILD_FOR_WIN should be defined!"
+#endif
