Roll external/skia f4c057af0..90019be56 (2 commits)

https://skia.googlesource.com/skia.git/+log/f4c057af0..90019be56

2019-05-01 reed@google.com Fixes for saveBehind/drawBehind
2019-05-01 reed@google.com Add secret draw-behind method

The AutoRoll server is located here: https://autoroll-internal.skia.org/r/android-next-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

Bug: 132354626
Bug: 129117085
Test: Presubmit checks will test this change.
Merged-In: I5b45b4581e20082a9875e6ee10ec51f24a7701db
Change-Id: Ifa794096cfcc6909256cb7f52627eaf9be0c10a8
Exempt-From-Owner-Approval: The autoroll bot does not require owner approval.
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..3d2ab6d
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,2499 @@
+// 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-implicit-fallthrough",
+        "-Wno-missing-field-initializers",
+        "-Wno-thread-safety-analysis",
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+        "-fvisibility=hidden",
+    ],
+
+    cppflags:[
+        "-fexceptions",
+    ],
+
+    export_include_dirs: [
+        "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/",
+    ],
+
+    local_include_dirs: [
+        "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/private/",
+        "include/svg/",
+        "include/utils/",
+        "include/utils/mac/",
+        "src/c/",
+        "src/codec/",
+        "src/core/",
+        "src/effects/",
+        "src/fonts/",
+        "src/gpu/",
+        "src/image/",
+        "src/images/",
+        "src/lazy/",
+        "src/opts/",
+        "src/pathops/",
+        "src/pdf/",
+        "src/ports/",
+        "src/sfnt/",
+        "src/shaders/",
+        "src/shaders/gradients/",
+        "src/sksl/",
+        "src/utils/",
+        "src/utils/win/",
+        "src/xml/",
+        "third_party/etc1/",
+        "third_party/gif/",
+        "third_party/skcms",
+    ],
+
+    srcs: [
+        "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/SkGifCodec.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/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/SkBitmapProvider.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/SkColorMatrixFilterRowMajor255.cpp",
+        "src/core/SkColorSpace.cpp",
+        "src/core/SkColorSpaceXformCanvas.cpp",
+        "src/core/SkColorSpaceXformSteps.cpp",
+        "src/core/SkColorSpaceXformer.cpp",
+        "src/core/SkContourMeasure.cpp",
+        "src/core/SkConvertPixels.cpp",
+        "src/core/SkCoverageDelta.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_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/SkFontPriv.cpp",
+        "src/core/SkFontStream.cpp",
+        "src/core/SkGaussFilter.cpp",
+        "src/core/SkGeometry.cpp",
+        "src/core/SkGlobalInitialization_core.cpp",
+        "src/core/SkGlyph.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/SkImageFilter.cpp",
+        "src/core/SkImageFilterCache.cpp",
+        "src/core/SkImageGenerator.cpp",
+        "src/core/SkImageInfo.cpp",
+        "src/core/SkLatticeIter.cpp",
+        "src/core/SkLineClipper.cpp",
+        "src/core/SkLiteDL.cpp",
+        "src/core/SkLiteRecorder.cpp",
+        "src/core/SkLocalMatrixImageFilter.cpp",
+        "src/core/SkMD5.cpp",
+        "src/core/SkMallocPixelRef.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/SkMultiPictureDraw.cpp",
+        "src/core/SkNormalFlatSource.cpp",
+        "src/core/SkNormalMapSource.cpp",
+        "src/core/SkNormalSource.cpp",
+        "src/core/SkOpts.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/SkScalar.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_DAAPath.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/SkStrike.cpp",
+        "src/core/SkStrikeCache.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/SkTLS.cpp",
+        "src/core/SkTSearch.cpp",
+        "src/core/SkTaskGroup.cpp",
+        "src/core/SkTextBlob.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/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/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/SkToSRGBColorFilter.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/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/SkPDFConvertType1FontStream.cpp",
+        "src/pdf/SkPDFDevice.cpp",
+        "src/pdf/SkPDFDocument.cpp",
+        "src/pdf/SkPDFFont.cpp",
+        "src/pdf/SkPDFFormXObject.cpp",
+        "src/pdf/SkPDFGradientShader.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/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/SkLightingShader.cpp",
+        "src/shaders/SkLights.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/svg/SkSVGCanvas.cpp",
+        "src/svg/SkSVGDevice.cpp",
+        "src/utils/Sk3D.cpp",
+        "src/utils/SkAnimCodecPlayer.cpp",
+        "src/utils/SkBase64.cpp",
+        "src/utils/SkCamera.cpp",
+        "src/utils/SkCanvasStack.cpp",
+        "src/utils/SkCanvasStateUtils.cpp",
+        "src/utils/SkDashPath.cpp",
+        "src/utils/SkEventTracer.cpp",
+        "src/utils/SkFloatToDecimal.cpp",
+        "src/utils/SkFrontBufferedStream.cpp",
+        "src/utils/SkInterpolator.cpp",
+        "src/utils/SkJSON.cpp",
+        "src/utils/SkJSONWriter.cpp",
+        "src/utils/SkMatrix22.cpp",
+        "src/utils/SkMetaData.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/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/mac/SkStream_mac.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/etc1/etc1.cpp",
+        "third_party/gif/SkGifImageReader.cpp",
+        "third_party/skcms/skcms.cc",
+    ],
+
+    arch: {
+        arm: {
+            srcs: [
+                
+            ],
+
+            neon: {
+                srcs: [
+                    
+                ],
+            },
+        },
+
+        arm64: {
+            srcs: [
+                "src/opts/SkOpts_crc32.cpp",
+            ],
+        },
+
+        mips: {
+            srcs: [
+                
+            ],
+        },
+
+        mips64: {
+            srcs: [
+                
+            ],
+        },
+
+        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/GrBlurUtils.cpp",
+          "src/gpu/GrBufferAllocPool.cpp",
+          "src/gpu/GrCaps.cpp",
+          "src/gpu/GrClipStackClip.cpp",
+          "src/gpu/GrColorSpaceInfo.cpp",
+          "src/gpu/GrColorSpaceXform.cpp",
+          "src/gpu/GrContext.cpp",
+          "src/gpu/GrContextPriv.cpp",
+          "src/gpu/GrContextThreadSafeProxy.cpp",
+          "src/gpu/GrContext_Base.cpp",
+          "src/gpu/GrDDLContext.cpp",
+          "src/gpu/GrDefaultGeoProcFactory.cpp",
+          "src/gpu/GrDeinstantiateProxyTracker.cpp",
+          "src/gpu/GrDistanceFieldGenFromVector.cpp",
+          "src/gpu/GrDrawOpAtlas.cpp",
+          "src/gpu/GrDrawOpTest.cpp",
+          "src/gpu/GrDrawingManager.cpp",
+          "src/gpu/GrDriverBugWorkarounds.cpp",
+          "src/gpu/GrFixedClip.cpp",
+          "src/gpu/GrFragmentProcessor.cpp",
+          "src/gpu/GrGpu.cpp",
+          "src/gpu/GrGpuBuffer.cpp",
+          "src/gpu/GrGpuCommandBuffer.cpp",
+          "src/gpu/GrGpuResource.cpp",
+          "src/gpu/GrImageContext.cpp",
+          "src/gpu/GrImageTextureMaker.cpp",
+          "src/gpu/GrLegacyDirectContext.cpp",
+          "src/gpu/GrMemoryPool.cpp",
+          "src/gpu/GrOnFlushResourceProvider.cpp",
+          "src/gpu/GrOpFlushState.cpp",
+          "src/gpu/GrOpList.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/GrPathUtils.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/GrProxyProvider.cpp",
+          "src/gpu/GrQuad.cpp",
+          "src/gpu/GrRecordingContext.cpp",
+          "src/gpu/GrRectanizer_pow2.cpp",
+          "src/gpu/GrRectanizer_skyline.cpp",
+          "src/gpu/GrReducedClip.cpp",
+          "src/gpu/GrRenderTarget.cpp",
+          "src/gpu/GrRenderTargetContext.cpp",
+          "src/gpu/GrRenderTargetOpList.cpp",
+          "src/gpu/GrRenderTargetProxy.cpp",
+          "src/gpu/GrResourceAllocator.cpp",
+          "src/gpu/GrResourceCache.cpp",
+          "src/gpu/GrResourceProvider.cpp",
+          "src/gpu/GrSKSLPrettyPrint.cpp",
+          "src/gpu/GrSWMaskHelper.cpp",
+          "src/gpu/GrSamplePatternDictionary.cpp",
+          "src/gpu/GrShaderCaps.cpp",
+          "src/gpu/GrShaderVar.cpp",
+          "src/gpu/GrShape.cpp",
+          "src/gpu/GrSoftwarePathRenderer.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/GrTessellator.cpp",
+          "src/gpu/GrTestUtils.cpp",
+          "src/gpu/GrTexture.cpp",
+          "src/gpu/GrTextureAdjuster.cpp",
+          "src/gpu/GrTextureContext.cpp",
+          "src/gpu/GrTextureMaker.cpp",
+          "src/gpu/GrTextureOpList.cpp",
+          "src/gpu/GrTextureProducer.cpp",
+          "src/gpu/GrTextureProxy.cpp",
+          "src/gpu/GrTextureRenderTargetProxy.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/GrCCCoverageProcessor_GSImpl.cpp",
+          "src/gpu/ccpr/GrCCCoverageProcessor_VSImpl.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/effects/GrAARectEffect.cpp",
+          "src/gpu/effects/GrAlphaThresholdFragmentProcessor.cpp",
+          "src/gpu/effects/GrBezierEffect.cpp",
+          "src/gpu/effects/GrBicubicEffect.cpp",
+          "src/gpu/effects/GrBitmapTextGeoProc.cpp",
+          "src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp",
+          "src/gpu/effects/GrCircleBlurFragmentProcessor.cpp",
+          "src/gpu/effects/GrCircleEffect.cpp",
+          "src/gpu/effects/GrConfigConversionEffect.cpp",
+          "src/gpu/effects/GrConstColorProcessor.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/GrEllipseEffect.cpp",
+          "src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp",
+          "src/gpu/effects/GrLumaColorFilterEffect.cpp",
+          "src/gpu/effects/GrMagnifierEffect.cpp",
+          "src/gpu/effects/GrMatrixConvolutionEffect.cpp",
+          "src/gpu/effects/GrMixerEffect.cpp",
+          "src/gpu/effects/GrOvalEffect.cpp",
+          "src/gpu/effects/GrOverrideInputFragmentProcessor.cpp",
+          "src/gpu/effects/GrPorterDuffXferProcessor.cpp",
+          "src/gpu/effects/GrPremulInputFragmentProcessor.cpp",
+          "src/gpu/effects/GrRRectBlurEffect.cpp",
+          "src/gpu/effects/GrRRectEffect.cpp",
+          "src/gpu/effects/GrRectBlurEffect.cpp",
+          "src/gpu/effects/GrSRGBEffect.cpp",
+          "src/gpu/effects/GrShadowGeoProc.cpp",
+          "src/gpu/effects/GrSimpleTextureEffect.cpp",
+          "src/gpu/effects/GrSkSLFP.cpp",
+          "src/gpu/effects/GrTextureDomain.cpp",
+          "src/gpu/effects/GrXfermodeFragmentProcessor.cpp",
+          "src/gpu/effects/GrYUVtoRGBEffect.cpp",
+          "src/gpu/gl/GrGLAssembleInterface.cpp",
+          "src/gpu/gl/GrGLBuffer.cpp",
+          "src/gpu/gl/GrGLCaps.cpp",
+          "src/gpu/gl/GrGLContext.cpp",
+          "src/gpu/gl/GrGLCreateNullInterface.cpp",
+          "src/gpu/gl/GrGLExtensions.cpp",
+          "src/gpu/gl/GrGLGLSL.cpp",
+          "src/gpu/gl/GrGLGpu.cpp",
+          "src/gpu/gl/GrGLGpuCommandBuffer.cpp",
+          "src/gpu/gl/GrGLGpuProgramCache.cpp",
+          "src/gpu/gl/GrGLInterface.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/GrGLTestInterface.cpp",
+          "src/gpu/gl/GrGLTexture.cpp",
+          "src/gpu/gl/GrGLTextureRenderTarget.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/GrGLSLUtil.cpp",
+          "src/gpu/glsl/GrGLSLVarying.cpp",
+          "src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp",
+          "src/gpu/glsl/GrGLSLXferProcessor.cpp",
+          "src/gpu/gradients/GrClampedGradientEffect.cpp",
+          "src/gpu/gradients/GrDualIntervalGradientColorizer.cpp",
+          "src/gpu/gradients/GrGradientBitmapCache.cpp",
+          "src/gpu/gradients/GrGradientShader.cpp",
+          "src/gpu/gradients/GrLinearGradientLayout.cpp",
+          "src/gpu/gradients/GrRadialGradientLayout.cpp",
+          "src/gpu/gradients/GrSingleIntervalGradientColorizer.cpp",
+          "src/gpu/gradients/GrSweepGradientLayout.cpp",
+          "src/gpu/gradients/GrTextureGradientColorizer.cpp",
+          "src/gpu/gradients/GrTiledGradientEffect.cpp",
+          "src/gpu/gradients/GrTwoPointConicalGradientLayout.cpp",
+          "src/gpu/gradients/GrUnrolledBinaryGradientColorizer.cpp",
+          "src/gpu/mock/GrMockGpu.cpp",
+          "src/gpu/ops/GrAAConvexPathRenderer.cpp",
+          "src/gpu/ops/GrAAConvexTessellator.cpp",
+          "src/gpu/ops/GrAAFillRRectOp.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/GrCopySurfaceOp.cpp",
+          "src/gpu/ops/GrDashLinePathRenderer.cpp",
+          "src/gpu/ops/GrDashOp.cpp",
+          "src/gpu/ops/GrDebugMarkerOp.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/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/GrSemaphoreOp.cpp",
+          "src/gpu/ops/GrShadowRRectOp.cpp",
+          "src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp",
+          "src/gpu/ops/GrSmallPathRenderer.cpp",
+          "src/gpu/ops/GrStencilAndCoverPathRenderer.cpp",
+          "src/gpu/ops/GrStencilPathOp.cpp",
+          "src/gpu/ops/GrStrokeRectOp.cpp",
+          "src/gpu/ops/GrTessellatingPathRenderer.cpp",
+          "src/gpu/ops/GrTextureOp.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/GrTextBlobVertexRegenerator.cpp",
+          "src/gpu/text/GrTextContext.cpp",
+          "src/gpu/vk/GrVkAMDMemoryAllocator.cpp",
+          "src/gpu/vk/GrVkBuffer.cpp",
+          "src/gpu/vk/GrVkBufferView.cpp",
+          "src/gpu/vk/GrVkCaps.cpp",
+          "src/gpu/vk/GrVkCommandBuffer.cpp",
+          "src/gpu/vk/GrVkCommandPool.cpp",
+          "src/gpu/vk/GrVkCopyManager.cpp",
+          "src/gpu/vk/GrVkCopyPipeline.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/GrVkGpuCommandBuffer.cpp",
+          "src/gpu/vk/GrVkImage.cpp",
+          "src/gpu/vk/GrVkImageView.cpp",
+          "src/gpu/vk/GrVkIndexBuffer.cpp",
+          "src/gpu/vk/GrVkInterface.cpp",
+          "src/gpu/vk/GrVkMemory.cpp",
+          "src/gpu/vk/GrVkPipeline.cpp",
+          "src/gpu/vk/GrVkPipelineLayout.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/gpu/vk/GrVkVertexBuffer.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/ports/SkTLS_pthread.cpp",
+          "src/sksl/SkSLCFGGenerator.cpp",
+          "src/sksl/SkSLCPPCodeGenerator.cpp",
+          "src/sksl/SkSLCPPUniformCTypes.cpp",
+          "src/sksl/SkSLCompiler.cpp",
+          "src/sksl/SkSLGLSLCodeGenerator.cpp",
+          "src/sksl/SkSLHCodeGenerator.cpp",
+          "src/sksl/SkSLIRGenerator.cpp",
+          "src/sksl/SkSLInterpreter.cpp",
+          "src/sksl/SkSLJIT.cpp",
+          "src/sksl/SkSLLexer.cpp",
+          "src/sksl/SkSLMetalCodeGenerator.cpp",
+          "src/sksl/SkSLOutputStream.cpp",
+          "src/sksl/SkSLParser.cpp",
+          "src/sksl/SkSLPipelineStageCodeGenerator.cpp",
+          "src/sksl/SkSLSPIRVCodeGenerator.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/xps/SkXPSDevice.cpp",
+          "src/xps/SkXPSDocument.cpp",
+          "third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp",
+        ],
+        local_include_dirs: [
+          "include/config/android",
+          "third_party/vulkanmemoryallocator/",
+        ],
+        export_include_dirs: [
+          "include/config/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",
+          "src/ports/SkTLS_pthread.cpp",
+          "src/xps/SkXPSDevice.cpp",
+          "src/xps/SkXPSDocument.cpp",
+        ],
+        local_include_dirs: [
+          "include/config/linux",
+        ],
+        export_include_dirs: [
+          "include/config/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",
+          "src/ports/SkTLS_pthread.cpp",
+          "src/xps/SkXPSDevice.cpp",
+          "src/xps/SkXPSDocument.cpp",
+        ],
+        local_include_dirs: [
+          "include/config/mac",
+        ],
+        export_include_dirs: [
+          "include/config/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",
+          "src/ports/SkTLS_win.cpp",
+        ],
+        local_include_dirs: [
+          "include/config/win",
+        ],
+        export_include_dirs: [
+          "include/config/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: {
+        // clang-r353983 emits error when building Skia for Windows. Do not
+        // build it for now until the compiler issue is addressed.
+        // 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: [
+        "experimental/svg/model/",
+        "gm/",
+        "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/private/",
+        "include/svg/",
+        "include/third_party/vulkan/",
+        "include/utils/",
+        "include/utils/mac/",
+        "modules/skottie/include/",
+        "modules/skottie/utils/",
+        "modules/sksg/include/",
+        "src/c/",
+        "src/codec/",
+        "src/core/",
+        "src/effects/",
+        "src/fonts/",
+        "src/gpu/",
+        "src/image/",
+        "src/images/",
+        "src/lazy/",
+        "src/opts/",
+        "src/pathops/",
+        "src/pdf/",
+        "src/ports/",
+        "src/sfnt/",
+        "src/shaders/",
+        "src/shaders/gradients/",
+        "src/sksl/",
+        "src/utils/",
+        "src/utils/win/",
+        "src/xml/",
+        "tests/",
+        "third_party/etc1/",
+        "third_party/gif/",
+        "third_party/skcms",
+        "tools/",
+        "tools/debugger/",
+        "tools/flags/",
+        "tools/fonts/",
+        "tools/gpu/",
+        "tools/timer/",
+        "tools/trace/",
+    ],
+
+    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/SkSVGTransformableNode.cpp",
+        "experimental/svg/model/SkSVGUse.cpp",
+        "experimental/svg/model/SkSVGValue.cpp",
+        "gm/3dgm.cpp",
+        "gm/OverStroke.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/animatedGif.cpp",
+        "gm/animatedimageblurs.cpp",
+        "gm/anisotropic.cpp",
+        "gm/annotated_text.cpp",
+        "gm/arcofzorro.cpp",
+        "gm/arcto.cpp",
+        "gm/arithmode.cpp",
+        "gm/atlastext.cpp",
+        "gm/b_119394958.cpp",
+        "gm/backdrop.cpp",
+        "gm/badpaint.cpp",
+        "gm/beziereffects.cpp",
+        "gm/beziers.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/cgm.c",
+        "gm/cgms.cpp",
+        "gm/circle_sizes.cpp",
+        "gm/circles.cpp",
+        "gm/circulararcs.cpp",
+        "gm/circularclips.cpp",
+        "gm/clip_error.cpp",
+        "gm/clip_strokerect.cpp",
+        "gm/clipdrawdraw.cpp",
+        "gm/clippedbitmapshaders.cpp",
+        "gm/clockwise.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/concavepaths.cpp",
+        "gm/conicpaths.cpp",
+        "gm/constcolorprocessor.cpp",
+        "gm/convex_all_line_paths.cpp",
+        "gm/convexpaths.cpp",
+        "gm/convexpolyclip.cpp",
+        "gm/convexpolyeffect.cpp",
+        "gm/copyTo4444.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_918512.cpp",
+        "gm/crbug_938592.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/drawlooper.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/emboss.cpp",
+        "gm/emptypath.cpp",
+        "gm/encode-alpha-jpeg.cpp",
+        "gm/encode-platform.cpp",
+        "gm/encode-srgb.cpp",
+        "gm/encode.cpp",
+        "gm/etc1.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/fwidth_squircle.cpp",
+        "gm/gamma.cpp",
+        "gm/gammatext.cpp",
+        "gm/getpostextpath.cpp",
+        "gm/giantbitmap.cpp",
+        "gm/glyph_pos.cpp",
+        "gm/gm.cpp",
+        "gm/gradientDirtyLaundry.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/inversepaths.cpp",
+        "gm/jpg_color_cube.cpp",
+        "gm/largeglyphblur.cpp",
+        "gm/lattice.cpp",
+        "gm/lcdblendmodes.cpp",
+        "gm/lcdoverlap.cpp",
+        "gm/lcdtext.cpp",
+        "gm/lighting.cpp",
+        "gm/lightingshader.cpp",
+        "gm/lightingshader2.cpp",
+        "gm/linepaths.cpp",
+        "gm/localmatriximagefilter.cpp",
+        "gm/localmatriximageshader.cpp",
+        "gm/localmatrixshader.cpp",
+        "gm/lumafilter.cpp",
+        "gm/mac_aa_explorer.cpp",
+        "gm/makeRasterImage.cpp",
+        "gm/makecolorspace.cpp",
+        "gm/mandoline.cpp",
+        "gm/manypaths.cpp",
+        "gm/matrixconvolution.cpp",
+        "gm/matriximagefilter.cpp",
+        "gm/megalooper.cpp",
+        "gm/mipmap.cpp",
+        "gm/mixedtextblobs.cpp",
+        "gm/mixercolorfilter.cpp",
+        "gm/modecolorfilters.cpp",
+        "gm/morphology.cpp",
+        "gm/multipicturedraw.cpp",
+        "gm/nested.cpp",
+        "gm/ninepatchstretch.cpp",
+        "gm/nonclosedpaths.cpp",
+        "gm/offsetimagefilter.cpp",
+        "gm/orientation.cpp",
+        "gm/ovals.cpp",
+        "gm/overdrawcolorfilter.cpp",
+        "gm/p3.cpp",
+        "gm/patch.cpp",
+        "gm/path_stroke_with_zero_length.cpp",
+        "gm/pathcontourstart.cpp",
+        "gm/patheffects.cpp",
+        "gm/pathfill.cpp",
+        "gm/pathinterior.cpp",
+        "gm/pathmaskcache.cpp",
+        "gm/pathmeasure.cpp",
+        "gm/pathopsinverse.cpp",
+        "gm/pathopsskpclip.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/quadpaths.cpp",
+        "gm/radial_gradient_precision.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/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/shadows.cpp",
+        "gm/shadowutils.cpp",
+        "gm/shallowgradient.cpp",
+        "gm/shapes.cpp",
+        "gm/shapes_as_paths.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/skinning.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/strokerects.cpp",
+        "gm/strokes.cpp",
+        "gm/stroketext.cpp",
+        "gm/subsetshader.cpp",
+        "gm/surface.cpp",
+        "gm/tablecolorfilter.cpp",
+        "gm/tallstretchedbitmaps.cpp",
+        "gm/testgradient.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/texturedomaineffect.cpp",
+        "gm/thinconcavepaths.cpp",
+        "gm/thinrects.cpp",
+        "gm/thinstrokedrects.cpp",
+        "gm/tiledscaledbitmap.cpp",
+        "gm/tileimagefilter.cpp",
+        "gm/tilemodes.cpp",
+        "gm/tilemodes_scaled.cpp",
+        "gm/tinybitmap.cpp",
+        "gm/tosrgb_colorfilter.cpp",
+        "gm/transparency.cpp",
+        "gm/trickycubicstrokes.cpp",
+        "gm/typeface.cpp",
+        "gm/unpremul.cpp",
+        "gm/variedtext.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/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/BadIcoTest.cpp",
+        "tests/BitSetTest.cpp",
+        "tests/BitmapCopyTest.cpp",
+        "tests/BitmapGetColorTest.cpp",
+        "tests/BitmapTest.cpp",
+        "tests/BlendTest.cpp",
+        "tests/BlitMaskClip.cpp",
+        "tests/BlurTest.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/CopySurfaceTest.cpp",
+        "tests/CubicMapTest.cpp",
+        "tests/DashPathEffectTest.cpp",
+        "tests/DataRefTest.cpp",
+        "tests/DefaultPathRendererTest.cpp",
+        "tests/DeferredDisplayListTest.cpp",
+        "tests/DequeTest.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/DynamicHashTest.cpp",
+        "tests/EGLImageTest.cpp",
+        "tests/EmptyPathTest.cpp",
+        "tests/EncodeTest.cpp",
+        "tests/EncodedInfoTest.cpp",
+        "tests/ExifTest.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/FrontBufferedStreamTest.cpp",
+        "tests/GLProgramsTest.cpp",
+        "tests/GeometryTest.cpp",
+        "tests/GifTest.cpp",
+        "tests/GlyphRunTest.cpp",
+        "tests/GpuDrawPathTest.cpp",
+        "tests/GpuLayerCacheTest.cpp",
+        "tests/GpuRectanizerTest.cpp",
+        "tests/GrAHardwareBufferTest.cpp",
+        "tests/GrAllocatorTest.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/GrQuadListTest.cpp",
+        "tests/GrSKSLPrettyPrintTest.cpp",
+        "tests/GrShapeTest.cpp",
+        "tests/GrSurfaceTest.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/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/MD5Test.cpp",
+        "tests/MallocPixelRefTest.cpp",
+        "tests/MaskCacheTest.cpp",
+        "tests/MathTest.cpp",
+        "tests/Matrix44Test.cpp",
+        "tests/MatrixClipCollapseTest.cpp",
+        "tests/MatrixTest.cpp",
+        "tests/MemoryTest.cpp",
+        "tests/MemsetTest.cpp",
+        "tests/MessageBusTest.cpp",
+        "tests/MetaDataTest.cpp",
+        "tests/MipMapTest.cpp",
+        "tests/NonlinearBlendingTest.cpp",
+        "tests/OSPathTest.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/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/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/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/SizeTest.cpp",
+        "tests/SkBase64Test.cpp",
+        "tests/SkColor4fTest.cpp",
+        "tests/SkColorSpaceXformStepsTest.cpp",
+        "tests/SkDOMTest.cpp",
+        "tests/SkFixed15Test.cpp",
+        "tests/SkGaussFilterTest.cpp",
+        "tests/SkImageTest.cpp",
+        "tests/SkLiteDLTest.cpp",
+        "tests/SkNxTest.cpp",
+        "tests/SkPEGTest.cpp",
+        "tests/SkRasterPipelineTest.cpp",
+        "tests/SkRemoteGlyphCacheTest.cpp",
+        "tests/SkResourceCacheTest.cpp",
+        "tests/SkSLErrorTest.cpp",
+        "tests/SkSLFPTest.cpp",
+        "tests/SkSLGLSLTest.cpp",
+        "tests/SkSLJITTest.cpp",
+        "tests/SkSLMemoryLayoutTest.cpp",
+        "tests/SkSLMetalTest.cpp",
+        "tests/SkSLSPIRVTest.cpp",
+        "tests/SkSharedMutexTest.cpp",
+        "tests/SkUTFTest.cpp",
+        "tests/SkVxTest.cpp",
+        "tests/SortTest.cpp",
+        "tests/SpecialImageTest.cpp",
+        "tests/SpecialSurfaceTest.cpp",
+        "tests/SrcOverTest.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/TableColorFilterTest.cpp",
+        "tests/TemplatesTest.cpp",
+        "tests/TessellatingPathRendererTests.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/ToSRGBColorFilter.cpp",
+        "tests/TopoSortTest.cpp",
+        "tests/TraceMemoryDumpTest.cpp",
+        "tests/TracingTest.cpp",
+        "tests/TransferPixelsTest.cpp",
+        "tests/TypefaceTest.cpp",
+        "tests/UnicodeTest.cpp",
+        "tests/UtilsTest.cpp",
+        "tests/VerticesTest.cpp",
+        "tests/VkBackendSurfaceTest.cpp",
+        "tests/VkDrawableTest.cpp",
+        "tests/VkHardwareBufferTest.cpp",
+        "tests/VkMakeCopyPipelineTest.cpp",
+        "tests/VkPriorityExtensionTest.cpp",
+        "tests/VkWrapTests.cpp",
+        "tests/VptrTest.cpp",
+        "tests/WindowRectanglesTest.cpp",
+        "tests/WritePixelsTest.cpp",
+        "tests/Writer32Test.cpp",
+        "tests/YUVCacheTest.cpp",
+        "tests/YUVTest.cpp",
+        "tests/image-bitmap.cpp",
+        "tests/skbug5221.cpp",
+        "tests/skbug6389.cpp",
+        "tests/skbug6653.cpp",
+        "tools/AndroidSkDebugToStdOut.cpp",
+        "tools/CrashHandler.cpp",
+        "tools/DDLPromiseImageHelper.cpp",
+        "tools/DDLTileHelper.cpp",
+        "tools/LsanSuppressions.cpp",
+        "tools/ProcStats.cpp",
+        "tools/Resources.cpp",
+        "tools/UrlDataManager.cpp",
+        "tools/debugger/SkDebugCanvas.cpp",
+        "tools/debugger/SkDrawCommand.cpp",
+        "tools/debugger/SkJsonWriteBuffer.cpp",
+        "tools/flags/SkCommandLineFlags.cpp",
+        "tools/flags/SkCommonFlags.cpp",
+        "tools/flags/SkCommonFlagsConfig.cpp",
+        "tools/fonts/SkRandomScalerContext.cpp",
+        "tools/fonts/SkTestFontMgr.cpp",
+        "tools/fonts/SkTestSVGTypeface.cpp",
+        "tools/fonts/SkTestTypeface.cpp",
+        "tools/fonts/sk_tool_utils_font.cpp",
+        "tools/gpu/GrContextFactory.cpp",
+        "tools/gpu/GrTest.cpp",
+        "tools/gpu/MemoryCache.cpp",
+        "tools/gpu/ProxyUtils.cpp",
+        "tools/gpu/TestContext.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/gl/null/NullGLTestContext.cpp",
+        "tools/gpu/mock/MockTestContext.cpp",
+        "tools/gpu/vk/VkTestContext.cpp",
+        "tools/gpu/vk/VkTestUtils.cpp",
+        "tools/random_parse_path.cpp",
+        "tools/sk_tool_utils.cpp",
+        "tools/timer/Timer.cpp",
+        "tools/trace/SkChromeTracingTracer.cpp",
+        "tools/trace/SkDebugfTracer.cpp",
+        "tools/trace/SkEventTracingPriv.cpp",
+    ],
+
+    shared_libs: [
+        "libbinder",
+        "libutils",
+    ],
+}
+
+cc_test {
+    name: "skia_nanobench",
+
+    defaults: [
+        "skia_tool_deps"
+    ],
+
+    local_include_dirs: [
+        "bench/",
+        "experimental/svg/model/",
+        "gm/",
+        "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/private/",
+        "include/svg/",
+        "include/third_party/vulkan/",
+        "include/utils/",
+        "include/utils/mac/",
+        "modules/sksg/include/",
+        "src/c/",
+        "src/codec/",
+        "src/core/",
+        "src/effects/",
+        "src/fonts/",
+        "src/gpu/",
+        "src/image/",
+        "src/images/",
+        "src/lazy/",
+        "src/opts/",
+        "src/pathops/",
+        "src/pdf/",
+        "src/ports/",
+        "src/sfnt/",
+        "src/shaders/",
+        "src/shaders/gradients/",
+        "src/sksl/",
+        "src/utils/",
+        "src/utils/win/",
+        "src/xml/",
+        "third_party/etc1/",
+        "third_party/gif/",
+        "tools/",
+        "tools/debugger/",
+        "tools/flags/",
+        "tools/fonts/",
+        "tools/gpu/",
+        "tools/timer/",
+        "tools/trace/",
+    ],
+
+    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/BlurRoundRectBench.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/ColorCanvasDrawBitmapBench.cpp",
+        "bench/ColorFilterBench.cpp",
+        "bench/ColorPrivBench.cpp",
+        "bench/ColorSpaceXformBench.cpp",
+        "bench/CompositingImagesBench.cpp",
+        "bench/ControlBench.cpp",
+        "bench/CoverageBench.cpp",
+        "bench/CubicKLMBench.cpp",
+        "bench/CubicMapBench.cpp",
+        "bench/DashBench.cpp",
+        "bench/DisplacementBench.cpp",
+        "bench/DrawBitmapAABench.cpp",
+        "bench/DrawLatticeBench.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/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/RectoriBench.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/SortBench.cpp",
+        "bench/StreamBench.cpp",
+        "bench/StrokeBench.cpp",
+        "bench/SwizzleBench.cpp",
+        "bench/TableBench.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/SkSVGTransformableNode.cpp",
+        "experimental/svg/model/SkSVGUse.cpp",
+        "experimental/svg/model/SkSVGValue.cpp",
+        "gm/3dgm.cpp",
+        "gm/OverStroke.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/animatedGif.cpp",
+        "gm/animatedimageblurs.cpp",
+        "gm/anisotropic.cpp",
+        "gm/annotated_text.cpp",
+        "gm/arcofzorro.cpp",
+        "gm/arcto.cpp",
+        "gm/arithmode.cpp",
+        "gm/atlastext.cpp",
+        "gm/b_119394958.cpp",
+        "gm/backdrop.cpp",
+        "gm/badpaint.cpp",
+        "gm/beziereffects.cpp",
+        "gm/beziers.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/cgm.c",
+        "gm/cgms.cpp",
+        "gm/circle_sizes.cpp",
+        "gm/circles.cpp",
+        "gm/circulararcs.cpp",
+        "gm/circularclips.cpp",
+        "gm/clip_error.cpp",
+        "gm/clip_strokerect.cpp",
+        "gm/clipdrawdraw.cpp",
+        "gm/clippedbitmapshaders.cpp",
+        "gm/clockwise.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/concavepaths.cpp",
+        "gm/conicpaths.cpp",
+        "gm/constcolorprocessor.cpp",
+        "gm/convex_all_line_paths.cpp",
+        "gm/convexpaths.cpp",
+        "gm/convexpolyclip.cpp",
+        "gm/convexpolyeffect.cpp",
+        "gm/copyTo4444.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_918512.cpp",
+        "gm/crbug_938592.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/drawlooper.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/emboss.cpp",
+        "gm/emptypath.cpp",
+        "gm/encode-alpha-jpeg.cpp",
+        "gm/encode-platform.cpp",
+        "gm/encode-srgb.cpp",
+        "gm/encode.cpp",
+        "gm/etc1.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/fwidth_squircle.cpp",
+        "gm/gamma.cpp",
+        "gm/gammatext.cpp",
+        "gm/getpostextpath.cpp",
+        "gm/giantbitmap.cpp",
+        "gm/glyph_pos.cpp",
+        "gm/gm.cpp",
+        "gm/gradientDirtyLaundry.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/inversepaths.cpp",
+        "gm/jpg_color_cube.cpp",
+        "gm/largeglyphblur.cpp",
+        "gm/lattice.cpp",
+        "gm/lcdblendmodes.cpp",
+        "gm/lcdoverlap.cpp",
+        "gm/lcdtext.cpp",
+        "gm/lighting.cpp",
+        "gm/lightingshader.cpp",
+        "gm/lightingshader2.cpp",
+        "gm/linepaths.cpp",
+        "gm/localmatriximagefilter.cpp",
+        "gm/localmatriximageshader.cpp",
+        "gm/localmatrixshader.cpp",
+        "gm/lumafilter.cpp",
+        "gm/mac_aa_explorer.cpp",
+        "gm/makeRasterImage.cpp",
+        "gm/makecolorspace.cpp",
+        "gm/mandoline.cpp",
+        "gm/manypaths.cpp",
+        "gm/matrixconvolution.cpp",
+        "gm/matriximagefilter.cpp",
+        "gm/megalooper.cpp",
+        "gm/mipmap.cpp",
+        "gm/mixedtextblobs.cpp",
+        "gm/mixercolorfilter.cpp",
+        "gm/modecolorfilters.cpp",
+        "gm/morphology.cpp",
+        "gm/multipicturedraw.cpp",
+        "gm/nested.cpp",
+        "gm/ninepatchstretch.cpp",
+        "gm/nonclosedpaths.cpp",
+        "gm/offsetimagefilter.cpp",
+        "gm/orientation.cpp",
+        "gm/ovals.cpp",
+        "gm/overdrawcolorfilter.cpp",
+        "gm/p3.cpp",
+        "gm/patch.cpp",
+        "gm/path_stroke_with_zero_length.cpp",
+        "gm/pathcontourstart.cpp",
+        "gm/patheffects.cpp",
+        "gm/pathfill.cpp",
+        "gm/pathinterior.cpp",
+        "gm/pathmaskcache.cpp",
+        "gm/pathmeasure.cpp",
+        "gm/pathopsinverse.cpp",
+        "gm/pathopsskpclip.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/quadpaths.cpp",
+        "gm/radial_gradient_precision.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/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/shadows.cpp",
+        "gm/shadowutils.cpp",
+        "gm/shallowgradient.cpp",
+        "gm/shapes.cpp",
+        "gm/shapes_as_paths.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/skinning.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/strokerects.cpp",
+        "gm/strokes.cpp",
+        "gm/stroketext.cpp",
+        "gm/subsetshader.cpp",
+        "gm/surface.cpp",
+        "gm/tablecolorfilter.cpp",
+        "gm/tallstretchedbitmaps.cpp",
+        "gm/testgradient.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/texturedomaineffect.cpp",
+        "gm/thinconcavepaths.cpp",
+        "gm/thinrects.cpp",
+        "gm/thinstrokedrects.cpp",
+        "gm/tiledscaledbitmap.cpp",
+        "gm/tileimagefilter.cpp",
+        "gm/tilemodes.cpp",
+        "gm/tilemodes_scaled.cpp",
+        "gm/tinybitmap.cpp",
+        "gm/tosrgb_colorfilter.cpp",
+        "gm/transparency.cpp",
+        "gm/trickycubicstrokes.cpp",
+        "gm/typeface.cpp",
+        "gm/unpremul.cpp",
+        "gm/variedtext.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/yuvtorgbeffect.cpp",
+        "src/svg/SkSVGCanvas.cpp",
+        "src/svg/SkSVGDevice.cpp",
+        "src/xml/SkDOM.cpp",
+        "src/xml/SkXMLParser.cpp",
+        "src/xml/SkXMLWriter.cpp",
+        "tools/AndroidSkDebugToStdOut.cpp",
+        "tools/CrashHandler.cpp",
+        "tools/DDLPromiseImageHelper.cpp",
+        "tools/DDLTileHelper.cpp",
+        "tools/LsanSuppressions.cpp",
+        "tools/ProcStats.cpp",
+        "tools/Resources.cpp",
+        "tools/UrlDataManager.cpp",
+        "tools/debugger/SkDebugCanvas.cpp",
+        "tools/debugger/SkDrawCommand.cpp",
+        "tools/debugger/SkJsonWriteBuffer.cpp",
+        "tools/flags/SkCommandLineFlags.cpp",
+        "tools/flags/SkCommonFlags.cpp",
+        "tools/flags/SkCommonFlagsConfig.cpp",
+        "tools/fonts/SkRandomScalerContext.cpp",
+        "tools/fonts/SkTestFontMgr.cpp",
+        "tools/fonts/SkTestSVGTypeface.cpp",
+        "tools/fonts/SkTestTypeface.cpp",
+        "tools/fonts/sk_tool_utils_font.cpp",
+        "tools/gpu/GrContextFactory.cpp",
+        "tools/gpu/GrTest.cpp",
+        "tools/gpu/MemoryCache.cpp",
+        "tools/gpu/ProxyUtils.cpp",
+        "tools/gpu/TestContext.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/gl/null/NullGLTestContext.cpp",
+        "tools/gpu/mock/MockTestContext.cpp",
+        "tools/gpu/vk/VkTestContext.cpp",
+        "tools/gpu/vk/VkTestUtils.cpp",
+        "tools/random_parse_path.cpp",
+        "tools/sk_tool_utils.cpp",
+        "tools/timer/Timer.cpp",
+        "tools/trace/SkChromeTracingTracer.cpp",
+        "tools/trace/SkDebugfTracer.cpp",
+        "tools/trace/SkEventTracingPriv.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..3106369
--- /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..b06305e
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,10 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsUiRenderingTestCases"
+    },
+    {
+      "name": "CtsGraphicsTestCases"
+    }
+  ]
+}
\ No newline at end of file
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 a6497ca..0000000
--- a/include/config/SkUserConfig.h
+++ /dev/null
@@ -1,130 +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, does the following trick:
-
-    #include "SkPreConfig.h"
-    #include "SkUserConfig.h"
-    #include "SkPostConfig.h"
-
-    SkPreConfig.h runs first, and it is responsible for initializing certain
-    skia defines.
-
-    SkPostConfig.h runs last, and its job is to just check that the final
-    defines are consistent (i.e. that we don't have mutually conflicting
-    defines).
-
-    SkUserConfig.h (this file) runs in the middle. It gets to change or augment
-    the list of flags initially set in preconfig, and then postconfig checks
-    that everything still makes sense.
-
-    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 SkPreConfig.h,
-    based on the presence or absence of NDEBUG, but that decision can be changed
-    here.
- */
-//#define SK_DEBUG
-//#define SK_RELEASE
-
-/*  Skia has certain debug-only code that is extremely intensive even for debug
-    builds.  This code is useful for diagnosing specific issues, but is not
-    generally applicable, therefore it must be explicitly enabled to avoid
-    the performance impact. By default these flags are undefined, but can be
-    enabled by uncommenting them below.
- */
-//#define SK_DEBUG_GLYPH_CACHE
-//#define SK_DEBUG_PATH
-
-/*  preconfig will have attempted to determine the endianness of the system,
-    but you can change these mutually exclusive flags here.
- */
-//#define SK_CPU_BENDIAN
-//#define SK_CPU_LENDIAN
-
-/*  Most compilers use the same bit endianness for bit flags in a byte as the
-    system byte endianness, and this is the default. If for some reason this
-    needs to be overridden, specify which of the mutually exclusive flags to
-    use. For example, some atom processors in certain configurations have big
-    endian byte order but little endian bit orders.
-*/
-//#define SK_UINT8_BITFIELD_BENDIAN
-//#define SK_UINT8_BITFIELD_LENDIAN
-
-
-/*  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 ordering to work in X windows.
- */
-#ifdef SK_SAMPLES_FOR_X
-        #define SK_R32_SHIFT    16
-        #define SK_G32_SHIFT    8
-        #define SK_B32_SHIFT    0
-        #define SK_A32_SHIFT    24
-#endif
-
-
-/* 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..534ea12
--- /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_EXPLICIT_GPU_RESOURCE_ALLOCATION
+  #define SK_DISABLE_RENDER_TARGET_SORTING
+  // 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_DRAWLOOPER
+  #define SK_SUPPORT_LEGACY_TILEMODE_ENUM
+  
+  // 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_A8_MASKBLITTER
+  #define SK_SUPPORT_LEGACY_AAA_CHOICE
+
+  #define SK_DISABLE_DAA  // skbug.com/6886
+
+#endif // SkUserConfigManual_DEFINED
diff --git a/include/config/android/SkUserConfig.h b/include/config/android/SkUserConfig.h
new file mode 100644
index 0000000..f8a81d0
--- /dev/null
+++ b/include/config/android/SkUserConfig.h
@@ -0,0 +1,25 @@
+// 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"
+#define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0
+#define SK_CODEC_DECODES_RAW
+#define SK_ENABLE_DISCRETE_GPU
+#define SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_CONTRAST 0.0
+#define SK_GAMMA_EXPONENT 1.4
+#define SK_HAS_HEIF_LIBRARY
+#define SK_HAS_JPEG_LIBRARY
+#define SK_HAS_PNG_LIBRARY
+#define SK_HAS_WEBP_LIBRARY
+#define SK_SUPPORT_PDF
+#define SK_VULKAN
+#define SK_XML
+
+#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/include/config/linux/SkUserConfig.h b/include/config/linux/SkUserConfig.h
new file mode 100644
index 0000000..756f605
--- /dev/null
+++ b/include/config/linux/SkUserConfig.h
@@ -0,0 +1,30 @@
+// 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"
+#define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0
+#define SK_CODEC_DECODES_RAW
+#define SK_ENABLE_DISCRETE_GPU
+#define SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_CONTRAST 0.0
+#define SK_GAMMA_EXPONENT 1.4
+#define SK_HAS_JPEG_LIBRARY
+#define SK_HAS_PNG_LIBRARY
+#define SK_HAS_WEBP_LIBRARY
+#define SK_SAMPLES_FOR_X
+#define SK_SUPPORT_GPU 0
+#define SK_SUPPORT_PDF
+#define SK_XML
+
+// Correct SK_BUILD_FOR flags that may have been set by
+// SkPreConfig.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/include/config/mac/SkUserConfig.h b/include/config/mac/SkUserConfig.h
new file mode 100644
index 0000000..b590784
--- /dev/null
+++ b/include/config/mac/SkUserConfig.h
@@ -0,0 +1,29 @@
+// 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"
+#define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0
+#define SK_CODEC_DECODES_RAW
+#define SK_ENABLE_DISCRETE_GPU
+#define SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_CONTRAST 0.0
+#define SK_GAMMA_EXPONENT 1.4
+#define SK_HAS_JPEG_LIBRARY
+#define SK_HAS_PNG_LIBRARY
+#define SK_HAS_WEBP_LIBRARY
+#define SK_SUPPORT_GPU 0
+#define SK_SUPPORT_PDF
+#define SK_XML
+
+// Correct SK_BUILD_FOR flags that may have been set by
+// SkPreConfig.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/include/config/win/SkUserConfig.h b/include/config/win/SkUserConfig.h
new file mode 100644
index 0000000..09a1edb
--- /dev/null
+++ b/include/config/win/SkUserConfig.h
@@ -0,0 +1,30 @@
+// 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"
+#define NOMINMAX
+#define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0
+#define SK_ENABLE_DISCRETE_GPU
+#define SK_GAMMA_APPLY_TO_A8
+#define SK_GAMMA_CONTRAST 0.0
+#define SK_GAMMA_EXPONENT 1.4
+#define SK_HAS_JPEG_LIBRARY
+#define SK_HAS_PNG_LIBRARY
+#define SK_HAS_WEBP_LIBRARY
+#define SK_SUPPORT_GPU 0
+#define SK_SUPPORT_PDF
+#define SK_XML
+#define _CRT_SECURE_NO_WARNINGS
+
+// Correct SK_BUILD_FOR flags that may have been set by
+// SkPreConfig.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
diff --git a/src/core/SkBlitter_Sprite.cpp b/src/core/SkBlitter_Sprite.cpp
index dc582e4..14d7853 100644
--- a/src/core/SkBlitter_Sprite.cpp
+++ b/src/core/SkBlitter_Sprite.cpp
@@ -136,6 +136,7 @@
             p.append(SkRasterPipeline::scale_1_float, &fPaintColor.fA);
         }
 
+        // TODO: use this knowledge when creating SkColorSpaceXformSteps above.
         bool is_opaque = fSource.isOpaque() && fPaintColor.fA == 1.0f;
         fBlitter = SkCreateRasterPipelineBlitter(fDst, paint, p, is_opaque, fAlloc);
     }