Merge latest Skia into master (45 commits)
https://skia.googlesource.com/skia.git/+log/d104266..14c8f82
Test: Presubmit checks will test this change.
BUG:26535125
Change-Id: Iacaf5c5c4973af9ea3dad93ff856f0954cfa71d5
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..9f471f0
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,959 @@
+
+###############################################################################
+#
+# THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
+#
+# For bugs, please contact scroggo@google.com or djsollen@google.com
+#
+###############################################################################
+
+BASE_PATH := $(call my-dir)
+LOCAL_PATH:= $(call my-dir)
+
+###############################################################################
+#
+# PROBLEMS WITH SKIA DEBUGGING?? READ THIS...
+#
+# The debug build results in changes to the Skia headers. This means that those
+# using libskia must also be built with the debug version of the Skia headers.
+# There are a few scenarios where this comes into play:
+#
+# (1) You're building debug code that depends on libskia.
+# (a) If libskia is built in release, then define SK_RELEASE when building
+# your sources.
+# (b) If libskia is built with debugging (see step 2), then no changes are
+# needed since your sources and libskia have been built with SK_DEBUG.
+# (2) You're building libskia in debug mode.
+# (a) RECOMMENDED: You can build the entire system in debug mode. Do this by
+# updating your build/core/config.mk to include -DSK_DEBUG on the line
+# that defines COMMON_GLOBAL_CFLAGS
+# (b) You can update all the users of libskia to define SK_DEBUG when they are
+# building their sources.
+#
+# NOTE: If neither SK_DEBUG or SK_RELEASE are defined then Skia checks NDEBUG to
+# determine which build type to use.
+###############################################################################
+
+###############################################################################
+# STATIC LIBRARY
+#
+# This target is only to be used internally for only one of two purposes...
+# (1) statically linking into testing frameworks
+# (2) as an inclusion target for the libskia.so shared library
+###############################################################################
+
+include $(CLEAR_VARS)
+LOCAL_FDO_SUPPORT := true
+ifneq ($(strip $(TARGET_FDO_CFLAGS)),)
+ # This should be the last -Oxxx specified in LOCAL_CFLAGS
+ LOCAL_CFLAGS += -O2
+endif
+
+LOCAL_ARM_MODE := thumb
+# used for testing
+#LOCAL_CFLAGS += -g -O0
+
+LOCAL_CFLAGS += \
+ -fPIC \
+ -Wvla \
+ -Wno-unused-parameter \
+ -U_FORTIFY_SOURCE \
+ -D_FORTIFY_SOURCE=1 \
+ -DSKIA_IMPLEMENTATION=1 \
+ -O2 \
+ -fexceptions
+
+LOCAL_CPPFLAGS := \
+ -std=c++11 \
+ -fno-threadsafe-statics
+
+LOCAL_SRC_FILES := \
+ src/codec/SkAndroidCodec.cpp \
+ src/codec/SkBmpCodec.cpp \
+ src/codec/SkBmpMaskCodec.cpp \
+ src/codec/SkBmpRLECodec.cpp \
+ src/codec/SkBmpStandardCodec.cpp \
+ src/codec/SkCodec.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/SkSampler.cpp \
+ src/codec/SkSampledCodec.cpp \
+ src/codec/SkStreamBuffer.cpp \
+ src/codec/SkSwizzler.cpp \
+ src/codec/SkWbmpCodec.cpp \
+ src/codec/SkWebpAdapterCodec.cpp \
+ src/codec/SkWebpCodec.cpp \
+ src/codec/SkCodecImageGenerator.cpp \
+ src/ports/SkImageGenerator_skia.cpp \
+ third_party/gif/SkGifImageReader.cpp \
+ src/android/SkBitmapRegionCodec.cpp \
+ src/android/SkBitmapRegionDecoder.cpp \
+ src/c/sk_paint.cpp \
+ src/c/sk_surface.cpp \
+ src/core/SkAAClip.cpp \
+ src/core/SkAnnotation.cpp \
+ src/core/SkAlphaRuns.cpp \
+ src/core/SkATrace.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/SkBitmapProcShader.cpp \
+ src/core/SkBitmapProcState.cpp \
+ src/core/SkBitmapProcState_matrixProcs.cpp \
+ src/core/SkBitmapProvider.cpp \
+ src/core/SkBitmapScaler.cpp \
+ src/core/SkBlitMask_D32.cpp \
+ src/core/SkBlitRow_D16.cpp \
+ src/core/SkBlitRow_D32.cpp \
+ src/core/SkBlitter.cpp \
+ src/core/SkBlitter_A8.cpp \
+ src/core/SkBlitter_ARGB32.cpp \
+ src/core/SkBlitter_PM4f.cpp \
+ src/core/SkBlitter_RGB16.cpp \
+ src/core/SkBlitter_Sprite.cpp \
+ src/core/SkBlurImageFilter.cpp \
+ src/core/SkBuffer.cpp \
+ src/core/SkCachedData.cpp \
+ src/core/SkCanvas.cpp \
+ src/core/SkChunkAlloc.cpp \
+ src/core/SkClipStack.cpp \
+ src/core/SkColor.cpp \
+ src/core/SkColorFilter.cpp \
+ src/core/SkColorFilterShader.cpp \
+ src/core/SkColorLookUpTable.cpp \
+ src/core/SkColorMatrixFilterRowMajor255.cpp \
+ src/core/SkColorShader.cpp \
+ src/core/SkColorSpace.cpp \
+ src/core/SkColorSpace_A2B.cpp \
+ src/core/SkColorSpace_XYZ.cpp \
+ src/core/SkColorSpace_ICC.cpp \
+ src/core/SkColorSpaceXform.cpp \
+ src/core/SkColorSpaceXform_A2B.cpp \
+ src/core/SkColorTable.cpp \
+ src/core/SkComposeShader.cpp \
+ src/core/SkConfig8888.cpp \
+ src/core/SkConvolver.cpp \
+ src/core/SkCpu.cpp \
+ src/core/SkCubicClipper.cpp \
+ src/core/SkData.cpp \
+ src/core/SkDataTable.cpp \
+ src/core/SkDebug.cpp \
+ src/core/SkDeque.cpp \
+ src/core/SkDevice.cpp \
+ src/core/SkDeviceLooper.cpp \
+ src/core/SkDeviceProfile.cpp \
+ src/lazy/SkDiscardableMemoryPool.cpp \
+ src/core/SkDistanceFieldGen.cpp \
+ src/core/SkDither.cpp \
+ src/core/SkDocument.cpp \
+ src/core/SkDraw.cpp \
+ src/core/SkDrawable.cpp \
+ src/core/SkDrawLooper.cpp \
+ src/core/SkEdgeBuilder.cpp \
+ src/core/SkEdgeClipper.cpp \
+ src/core/SkAnalyticEdge.cpp \
+ src/core/SkEdge.cpp \
+ src/core/SkFilterProc.cpp \
+ src/core/SkFixedAlloc.cpp \
+ src/core/SkFlattenable.cpp \
+ src/core/SkFlattenableSerialization.cpp \
+ src/core/SkFont.cpp \
+ src/core/SkFontLCDConfig.cpp \
+ src/core/SkFontMgr.cpp \
+ src/core/SkFontStyle.cpp \
+ src/core/SkFontDescriptor.cpp \
+ src/core/SkFontStream.cpp \
+ src/core/SkGeometry.cpp \
+ src/core/SkGlobalInitialization_core.cpp \
+ src/core/SkGlyphCache.cpp \
+ src/core/SkGpuBlurUtils.cpp \
+ src/core/SkGraphics.cpp \
+ src/core/SkHalf.cpp \
+ src/core/SkImageFilter.cpp \
+ src/core/SkImageFilterCache.cpp \
+ src/core/SkImageInfo.cpp \
+ src/core/SkImageCacherator.cpp \
+ src/core/SkImageGenerator.cpp \
+ src/core/SkLightingShader.cpp \
+ src/core/SkLights.cpp \
+ src/core/SkLinearBitmapPipeline.cpp \
+ src/core/SkLineClipper.cpp \
+ src/core/SkLiteDL.cpp \
+ src/core/SkLiteRecorder.cpp \
+ src/core/SkLocalMatrixImageFilter.cpp \
+ src/core/SkLocalMatrixShader.cpp \
+ src/core/SkMD5.cpp \
+ src/core/SkMallocPixelRef.cpp \
+ src/core/SkMask.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/SkMetaData.cpp \
+ src/core/SkMipMap.cpp \
+ src/core/SkMiniRecorder.cpp \
+ src/core/SkModeColorFilter.cpp \
+ src/core/SkMultiPictureDraw.cpp \
+ src/core/SkLatticeIter.cpp \
+ src/core/SkNormalBevelSource.cpp \
+ src/core/SkNormalMapSource.cpp \
+ src/core/SkNormalFlatSource.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/SkPicture.cpp \
+ src/core/SkPictureAnalyzer.cpp \
+ src/core/SkPictureContentInfo.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/SkPictureShader.cpp \
+ src/core/SkPixelRef.cpp \
+ src/core/SkPixmap.cpp \
+ src/core/SkPoint.cpp \
+ src/core/SkPoint3.cpp \
+ src/core/SkPtrRecorder.cpp \
+ src/core/SkQuadClipper.cpp \
+ src/core/SkRadialShadowMapShader.cpp \
+ src/core/SkRasterClip.cpp \
+ src/core/SkRasterPipeline.cpp \
+ src/core/SkRasterPipelineBlitter.cpp \
+ src/core/SkRasterizer.cpp \
+ src/core/SkReadBuffer.cpp \
+ src/core/SkRecord.cpp \
+ src/core/SkRecords.cpp \
+ src/core/SkRecordDraw.cpp \
+ src/core/SkRecordOpts.cpp \
+ src/core/SkRecordedDrawable.cpp \
+ src/core/SkRecorder.cpp \
+ src/core/SkRect.cpp \
+ src/core/SkRefDict.cpp \
+ src/core/SkRegion.cpp \
+ src/core/SkRegion_path.cpp \
+ src/core/SkResourceCache.cpp \
+ src/core/SkRRect.cpp \
+ src/core/SkRTree.cpp \
+ src/core/SkRWBuffer.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_Hairline.cpp \
+ src/core/SkScan_Path.cpp \
+ src/core/SkSemaphore.cpp \
+ src/core/SkShader.cpp \
+ src/core/SkSharedMutex.cpp \
+ src/core/SkSpanProcs.cpp \
+ src/core/SkSpecialImage.cpp \
+ src/core/SkSpecialSurface.cpp \
+ src/core/SkSpinlock.cpp \
+ src/core/SkSpriteBlitter_ARGB32.cpp \
+ src/core/SkSpriteBlitter_RGB16.cpp \
+ src/core/SkSpriteBlitter4f.cpp \
+ src/core/SkStream.cpp \
+ src/core/SkString.cpp \
+ src/core/SkStringUtils.cpp \
+ src/core/SkStroke.cpp \
+ src/core/SkStrokeRec.cpp \
+ src/core/SkStrokerPriv.cpp \
+ src/core/SkSwizzle.cpp \
+ src/core/SkSRGB.cpp \
+ src/core/SkTaskGroup.cpp \
+ src/core/SkTextBlob.cpp \
+ src/core/SkTime.cpp \
+ src/core/SkThreadID.cpp \
+ src/core/SkTLS.cpp \
+ src/core/SkTSearch.cpp \
+ src/core/SkTypeface.cpp \
+ src/core/SkTypefaceCache.cpp \
+ src/core/SkUnPreMultiply.cpp \
+ src/core/SkUtils.cpp \
+ src/core/SkValidatingReadBuffer.cpp \
+ src/core/SkVarAlloc.cpp \
+ src/core/SkVertState.cpp \
+ src/core/SkWriteBuffer.cpp \
+ src/core/SkWriter32.cpp \
+ src/core/SkXfermode.cpp \
+ src/core/SkXfermode4f.cpp \
+ src/core/SkXfermodeF16.cpp \
+ src/core/SkXfermodeInterpretation.cpp \
+ src/core/SkYUVPlanesCache.cpp \
+ src/core/SkShadowShader.cpp \
+ src/image/SkImage.cpp \
+ src/image/SkImage_Generator.cpp \
+ src/image/SkImage_Raster.cpp \
+ src/image/SkImageShader.cpp \
+ src/image/SkSurface.cpp \
+ src/image/SkSurface_Raster.cpp \
+ src/pipe/SkPipeCanvas.cpp \
+ src/pipe/SkPipeReader.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/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/SkPathOpsPoint.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/effects/GrCircleBlurFragmentProcessor.cpp \
+ src/effects/GrAlphaThresholdFragmentProcessor.cpp \
+ src/effects/Sk1DPathEffect.cpp \
+ src/effects/Sk2DPathEffect.cpp \
+ src/effects/SkAlphaThresholdFilter.cpp \
+ src/effects/SkArcToPathEffect.cpp \
+ src/effects/SkArithmeticMode.cpp \
+ src/effects/SkArithmeticMode_gpu.cpp \
+ src/effects/SkBlurDrawLooper.cpp \
+ src/effects/SkBlurMask.cpp \
+ src/effects/SkBlurMaskFilter.cpp \
+ src/effects/SkColorCubeFilter.cpp \
+ src/effects/SkColorFilterImageFilter.cpp \
+ src/effects/SkColorMatrix.cpp \
+ src/effects/SkColorMatrixFilter.cpp \
+ src/effects/SkComposeImageFilter.cpp \
+ src/effects/SkCornerPathEffect.cpp \
+ src/effects/SkDashPathEffect.cpp \
+ src/effects/SkDiscretePathEffect.cpp \
+ src/effects/SkDisplacementMapEffect.cpp \
+ src/effects/SkDropShadowImageFilter.cpp \
+ src/effects/SkEmbossMask.cpp \
+ src/effects/SkEmbossMaskFilter.cpp \
+ src/effects/SkImageSource.cpp \
+ src/effects/SkGammaColorFilter.cpp \
+ src/effects/SkGaussianEdgeShader.cpp \
+ src/effects/SkLayerDrawLooper.cpp \
+ src/effects/SkLayerRasterizer.cpp \
+ src/effects/SkLightingImageFilter.cpp \
+ src/effects/SkLumaColorFilter.cpp \
+ src/effects/SkMagnifierImageFilter.cpp \
+ src/effects/SkMatrixConvolutionImageFilter.cpp \
+ src/effects/SkMergeImageFilter.cpp \
+ src/effects/SkMorphologyImageFilter.cpp \
+ src/effects/SkOffsetImageFilter.cpp \
+ src/effects/SkOverdrawColorFilter.cpp \
+ src/effects/SkPackBits.cpp \
+ src/effects/SkPaintFlagsDrawFilter.cpp \
+ src/effects/SkPaintImageFilter.cpp \
+ src/effects/SkPerlinNoiseShader.cpp \
+ src/effects/SkPictureImageFilter.cpp \
+ src/effects/SkRRectsGaussianEdgeMaskFilter.cpp \
+ src/effects/SkShadowMaskFilter.cpp \
+ src/effects/SkTableColorFilter.cpp \
+ src/effects/SkTableMaskFilter.cpp \
+ src/effects/SkTileImageFilter.cpp \
+ src/effects/SkXfermodeImageFilter.cpp \
+ src/effects/gradients/Sk4fGradientBase.cpp \
+ src/effects/gradients/Sk4fLinearGradient.cpp \
+ src/effects/gradients/SkClampRange.cpp \
+ src/effects/gradients/SkGradientBitmapCache.cpp \
+ src/effects/gradients/SkGradientShader.cpp \
+ src/effects/gradients/SkLinearGradient.cpp \
+ src/effects/gradients/SkRadialGradient.cpp \
+ src/effects/gradients/SkTwoPointConicalGradient.cpp \
+ src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp \
+ src/effects/gradients/SkSweepGradient.cpp \
+ src/gpu/GrAuditTrail.cpp \
+ src/gpu/GrBatchAtlas.cpp \
+ src/gpu/GrBatchFlushState.cpp \
+ src/gpu/GrBatchTest.cpp \
+ src/gpu/GrBitmapTextureMaker.cpp \
+ src/gpu/GrBlend.cpp \
+ src/gpu/GrBlurUtils.cpp \
+ src/gpu/GrBuffer.cpp \
+ src/gpu/GrBufferAllocPool.cpp \
+ src/gpu/GrCaps.cpp \
+ src/gpu/GrClipStackClip.cpp \
+ src/gpu/GrColorSpaceXform.cpp \
+ src/gpu/GrContext.cpp \
+ src/gpu/GrCoordTransform.cpp \
+ src/gpu/GrDefaultGeoProcFactory.cpp \
+ src/gpu/GrDrawingManager.cpp \
+ src/gpu/GrFixedClip.cpp \
+ src/gpu/GrFragmentProcessor.cpp \
+ src/gpu/GrGpu.cpp \
+ src/gpu/GrGpuCommandBuffer.cpp \
+ src/gpu/GrGpuResource.cpp \
+ src/gpu/GrGpuFactory.cpp \
+ src/gpu/GrImageTextureMaker.cpp \
+ src/gpu/GrInvariantOutput.cpp \
+ src/gpu/GrMemoryPool.cpp \
+ src/gpu/GrOpList.cpp \
+ src/gpu/GrOvalRenderer.cpp \
+ src/gpu/GrPaint.cpp \
+ src/gpu/GrPath.cpp \
+ src/gpu/GrPathProcessor.cpp \
+ src/gpu/GrPathRange.cpp \
+ src/gpu/GrPathRendererChain.cpp \
+ src/gpu/GrPathRenderer.cpp \
+ src/gpu/GrPathRendering.cpp \
+ src/gpu/GrPathUtils.cpp \
+ src/gpu/GrPipeline.cpp \
+ src/gpu/GrPipelineBuilder.cpp \
+ src/gpu/GrPrimitiveProcessor.cpp \
+ src/gpu/GrProgramDesc.cpp \
+ src/gpu/GrProgramElement.cpp \
+ src/gpu/GrProcessor.cpp \
+ src/gpu/GrProcessorUnitTest.cpp \
+ src/gpu/GrProcOptInfo.cpp \
+ src/gpu/GrGpuResourceRef.cpp \
+ src/gpu/GrRectanizer_pow2.cpp \
+ src/gpu/GrRectanizer_skyline.cpp \
+ src/gpu/GrRenderTarget.cpp \
+ src/gpu/GrRenderTargetProxy.cpp \
+ src/gpu/GrReducedClip.cpp \
+ src/gpu/GrRenderTargetContext.cpp \
+ src/gpu/GrPathRenderingRenderTargetContext.cpp \
+ src/gpu/GrRenderTargetOpList.cpp \
+ src/gpu/GrResourceCache.cpp \
+ src/gpu/GrResourceProvider.cpp \
+ src/gpu/GrShaderCaps.cpp \
+ src/gpu/GrShape.cpp \
+ src/gpu/GrStencilAttachment.cpp \
+ src/gpu/GrStencilSettings.cpp \
+ src/gpu/GrStyle.cpp \
+ src/gpu/GrTessellator.cpp \
+ src/gpu/GrTextureOpList.cpp \
+ src/gpu/GrTraceMarker.cpp \
+ src/gpu/GrTestUtils.cpp \
+ src/gpu/GrShaderVar.cpp \
+ src/gpu/GrSWMaskHelper.cpp \
+ src/gpu/GrSoftwarePathRenderer.cpp \
+ src/gpu/GrSurface.cpp \
+ src/gpu/GrSurfaceContext.cpp \
+ src/gpu/GrSurfaceProxy.cpp \
+ src/gpu/GrTexture.cpp \
+ src/gpu/GrTextureAdjuster.cpp \
+ src/gpu/GrTextureContext.cpp \
+ src/gpu/GrTextureMaker.cpp \
+ src/gpu/GrTextureProducer.cpp \
+ src/gpu/GrTextureProvider.cpp \
+ src/gpu/GrTextureProxy.cpp \
+ src/gpu/GrTextureRenderTargetProxy.cpp \
+ src/gpu/GrTextureToYUVPlanes.cpp \
+ src/gpu/GrXferProcessor.cpp \
+ src/gpu/GrYUVProvider.cpp \
+ src/gpu/batches/GrAAHairLinePathRenderer.cpp \
+ src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp \
+ src/gpu/batches/GrAAConvexTessellator.cpp \
+ src/gpu/batches/GrAADistanceFieldPathRenderer.cpp \
+ src/gpu/batches/GrAAConvexPathRenderer.cpp \
+ src/gpu/batches/GrAAFillRectBatch.cpp \
+ src/gpu/batches/GrAAStrokeRectBatch.cpp \
+ src/gpu/batches/GrAnalyticRectBatch.cpp \
+ src/gpu/batches/GrAtlasTextBatch.cpp \
+ src/gpu/batches/GrCopySurfaceBatch.cpp \
+ src/gpu/batches/GrDashLinePathRenderer.cpp \
+ src/gpu/batches/GrDefaultPathRenderer.cpp \
+ src/gpu/batches/GrDrawBatch.cpp \
+ src/gpu/batches/GrDrawAtlasBatch.cpp \
+ src/gpu/batches/GrDrawPathBatch.cpp \
+ src/gpu/batches/GrDrawVerticesBatch.cpp \
+ src/gpu/batches/GrMSAAPathRenderer.cpp \
+ src/gpu/batches/GrNonAAFillRectBatch.cpp \
+ src/gpu/batches/GrNonAAFillRectPerspectiveBatch.cpp \
+ src/gpu/batches/GrNonAAStrokeRectBatch.cpp \
+ src/gpu/batches/GrNinePatch.cpp \
+ src/gpu/batches/GrOp.cpp \
+ src/gpu/batches/GrPLSPathRenderer.cpp \
+ src/gpu/batches/GrRectBatchFactory.cpp \
+ src/gpu/batches/GrRegionBatch.cpp \
+ src/gpu/batches/GrShadowRRectBatch.cpp \
+ src/gpu/batches/GrStencilAndCoverPathRenderer.cpp \
+ src/gpu/batches/GrTessellatingPathRenderer.cpp \
+ src/gpu/batches/GrVertexBatch.cpp \
+ src/gpu/effects/GrConfigConversionEffect.cpp \
+ src/gpu/effects/GrConstColorProcessor.cpp \
+ src/gpu/effects/GrCoverageSetOpXP.cpp \
+ src/gpu/effects/GrCustomXfermode.cpp \
+ src/gpu/effects/GrBezierEffect.cpp \
+ src/gpu/effects/GrConvolutionEffect.cpp \
+ src/gpu/effects/GrConvexPolyEffect.cpp \
+ src/gpu/effects/GrBicubicEffect.cpp \
+ src/gpu/effects/GrBitmapTextGeoProc.cpp \
+ src/gpu/effects/GrDashingEffect.cpp \
+ src/gpu/effects/GrDisableColorXP.cpp \
+ src/gpu/effects/GrDistanceFieldGeoProc.cpp \
+ src/gpu/effects/GrDitherEffect.cpp \
+ src/gpu/effects/GrGammaEffect.cpp \
+ src/gpu/effects/GrMatrixConvolutionEffect.cpp \
+ src/gpu/effects/GrOvalEffect.cpp \
+ src/gpu/effects/GrPorterDuffXferProcessor.cpp \
+ src/gpu/effects/GrRRectEffect.cpp \
+ src/gpu/effects/GrShadowGeoProc.cpp \
+ src/gpu/effects/GrSimpleTextureEffect.cpp \
+ src/gpu/effects/GrSingleTextureEffect.cpp \
+ src/gpu/effects/GrTextureDomain.cpp \
+ src/gpu/effects/GrTextureStripAtlas.cpp \
+ src/gpu/effects/GrXfermodeFragmentProcessor.cpp \
+ src/gpu/effects/GrYUVEffect.cpp \
+ src/gpu/instanced/InstancedRendering.cpp \
+ src/gpu/instanced/InstanceProcessor.cpp \
+ src/gpu/instanced/GLInstancedRendering.cpp \
+ src/gpu/text/GrAtlasTextBlob.cpp \
+ src/gpu/text/GrAtlasTextBlob_regenInBatch.cpp \
+ src/gpu/text/GrAtlasTextContext.cpp \
+ src/gpu/text/GrBatchFontCache.cpp \
+ src/gpu/text/GrDistanceFieldAdjustTable.cpp \
+ src/gpu/text/GrStencilAndCoverTextContext.cpp \
+ src/gpu/text/GrTextBlobCache.cpp \
+ src/gpu/text/GrTextUtils.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/GrGLGLSL.cpp \
+ src/gpu/gl/GrGLGpu.cpp \
+ src/gpu/gl/GrGLGpuProgramCache.cpp \
+ src/gpu/gl/GrGLExtensions.cpp \
+ src/gpu/gl/GrGLInterface.cpp \
+ src/gpu/gl/GrGLPath.cpp \
+ src/gpu/gl/GrGLPathRange.cpp \
+ src/gpu/gl/GrGLPathRendering.cpp \
+ src/gpu/gl/GrGLProgram.cpp \
+ src/gpu/gl/GrGLProgramDataManager.cpp \
+ src/gpu/gl/GrGLRenderTarget.cpp \
+ src/gpu/gl/GrGLStencilAttachment.cpp \
+ src/gpu/gl/GrGLTestInterface.cpp \
+ src/gpu/gl/GrGLTexture.cpp \
+ src/gpu/gl/GrGLTextureRenderTarget.cpp \
+ src/gpu/gl/GrGLUtil.cpp \
+ src/gpu/gl/GrGLUniformHandler.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/builders/GrGLSLPrettyPrint.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/GrGLSLGeometryShaderBuilder.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/GrGLSLVertexShaderBuilder.cpp \
+ src/gpu/glsl/GrGLSLXferProcessor.cpp \
+ src/gpu/SkGpuDevice.cpp \
+ src/gpu/SkGpuDevice_drawTexture.cpp \
+ src/gpu/SkGr.cpp \
+ src/image/SkImage_Gpu.cpp \
+ src/image/SkSurface_Gpu.cpp \
+ src/gpu/gl/GrGLDefaultInterface_native.cpp \
+ src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp \
+ src/gpu/vk/GrVkBackendContext.cpp \
+ src/gpu/vk/GrVkBuffer.cpp \
+ src/gpu/vk/GrVkCaps.cpp \
+ src/gpu/vk/GrVkCommandBuffer.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/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/GrVkStencilAttachment.cpp \
+ src/gpu/vk/GrVkTexture.cpp \
+ src/gpu/vk/GrVkTextureRenderTarget.cpp \
+ src/gpu/vk/GrVkTransferBuffer.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 \
+ tools/viewer/sk_app/WindowContext.cpp \
+ tools/viewer/sk_app/VulkanWindowContext.cpp \
+ tools/viewer/sk_app/android/VulkanWindowContext_android.cpp \
+ src/images/SkWEBPImageEncoder.cpp \
+ src/images/SkJPEGImageEncoder.cpp \
+ src/images/SkPNGImageEncoder.cpp \
+ src/images/SkImageEncoder.cpp \
+ src/images/SkJPEGWriteUtility.cpp \
+ src/pdf/SkDeflate.cpp \
+ src/pdf/SkJpegInfo.cpp \
+ src/pdf/SkPDFBitmap.cpp \
+ src/pdf/SkPDFCanon.cpp \
+ src/pdf/SkPDFCanvas.cpp \
+ src/pdf/SkPDFConvertType1FontStream.cpp \
+ src/pdf/SkPDFDevice.cpp \
+ src/pdf/SkPDFDocument.cpp \
+ src/pdf/SkPDFFont.cpp \
+ src/pdf/SkPDFFormXObject.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/SkPDFTypes.cpp \
+ src/pdf/SkPDFUtils.cpp \
+ src/core/SkForceCPlusPlusLinking.cpp \
+ src/fonts/SkFontMgr_indirect.cpp \
+ src/fonts/SkRemotableFontMgr.cpp \
+ src/ports/SkFontMgr_android_factory.cpp \
+ src/ports/SkGlobalInitialization_default.cpp \
+ src/ports/SkMemory_malloc.cpp \
+ src/ports/SkOSFile_posix.cpp \
+ src/ports/SkOSFile_stdio.cpp \
+ src/ports/SkOSLibrary_posix.cpp \
+ src/ports/SkDiscardableMemory_none.cpp \
+ src/ports/SkTLS_pthread.cpp \
+ src/ports/SkFontHost_FreeType.cpp \
+ src/ports/SkFontHost_FreeType_common.cpp \
+ src/ports/SkFontMgr_android.cpp \
+ src/ports/SkFontMgr_android_parser.cpp \
+ src/ports/SkFontMgr_custom.cpp \
+ src/ports/SkFontMgr_FontConfigInterface.cpp \
+ src/ports/SkDebug_android.cpp \
+ src/sfnt/SkOTTable_name.cpp \
+ src/sfnt/SkOTUtils.cpp \
+ src/utils/SkBase64.cpp \
+ src/utils/SkBitmapSourceDeserializer.cpp \
+ src/utils/SkBoundaryPatch.cpp \
+ src/utils/SkFrontBufferedStream.cpp \
+ src/utils/SkCamera.cpp \
+ src/utils/SkCanvasStack.cpp \
+ src/utils/SkCanvasStateUtils.cpp \
+ src/utils/SkCurveMeasure.cpp \
+ src/utils/SkDashPath.cpp \
+ src/utils/SkDeferredCanvas.cpp \
+ src/utils/SkDumpCanvas.cpp \
+ src/utils/SkEventTracer.cpp \
+ src/utils/SkInterpolator.cpp \
+ src/utils/SkLayer.cpp \
+ src/utils/SkMatrix22.cpp \
+ src/utils/SkMeshUtils.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/SkPatchGrid.cpp \
+ src/utils/SkPatchUtils.cpp \
+ src/utils/SkRGBAToYUV.cpp \
+ src/utils/SkShadowPaintFilterCanvas.cpp \
+ src/utils/SkTextBox.cpp \
+ src/utils/SkTextureCompressor.cpp \
+ src/utils/SkTextureCompressor_ASTC.cpp \
+ src/utils/SkTextureCompressor_R11EAC.cpp \
+ src/utils/SkTextureCompressor_LATC.cpp \
+ src/utils/SkThreadUtils_pthread.cpp \
+ src/utils/SkWhitelistTypefaces.cpp \
+ src/fonts/SkGScalerContext.cpp \
+ src/fonts/SkRandomScalerContext.cpp \
+ src/fonts/SkTestScalerContext.cpp \
+ src/codec/SkRawAdapterCodec.cpp \
+ src/codec/SkRawCodec.cpp \
+ third_party/etc1/etc1.cpp \
+ third_party/ktx/ktx.cpp \
+ src/sksl/SkSLCFGGenerator.cpp \
+ src/sksl/SkSLCompiler.cpp \
+ src/sksl/SkSLIRGenerator.cpp \
+ src/sksl/SkSLParser.cpp \
+ src/sksl/SkSLGLSLCodeGenerator.cpp \
+ src/sksl/SkSLSPIRVCodeGenerator.cpp \
+ src/sksl/SkSLUtil.cpp \
+ src/sksl/ir/SkSLSymbolTable.cpp \
+ src/sksl/ir/SkSLType.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ liblog \
+ libGLESv2 \
+ libEGL \
+ libvulkan \
+ libz \
+ libjpeg \
+ libpng \
+ libicuuc \
+ libicui18n \
+ libexpat \
+ libft2 \
+ libdng_sdk \
+ libpiex
+
+LOCAL_STATIC_LIBRARIES := \
+ libwebp-decode \
+ libwebp-encode \
+ libsfntly
+
+LOCAL_C_INCLUDES := \
+ external/libjpeg-turbo \
+ external/libpng \
+ $(LOCAL_PATH)/include/codec \
+ $(LOCAL_PATH)/include/private \
+ $(LOCAL_PATH)/src/codec \
+ $(LOCAL_PATH)/src/core \
+ $(LOCAL_PATH)/src/utils \
+ $(LOCAL_PATH)/third_party/gif \
+ $(LOCAL_PATH)/include/c \
+ $(LOCAL_PATH)/include/config \
+ $(LOCAL_PATH)/include/core \
+ $(LOCAL_PATH)/include/pathops \
+ external/webp/include \
+ $(LOCAL_PATH)/include/android \
+ $(LOCAL_PATH)/src/android \
+ $(LOCAL_PATH)/include/ports \
+ $(LOCAL_PATH)/include/utils \
+ $(LOCAL_PATH)/include/images \
+ $(LOCAL_PATH)/src/sfnt \
+ $(LOCAL_PATH)/src/image \
+ $(LOCAL_PATH)/src/opts \
+ $(LOCAL_PATH)/src/pipe \
+ $(LOCAL_PATH)/include/gpu \
+ $(LOCAL_PATH)/src/gpu \
+ $(LOCAL_PATH)/include/effects \
+ $(LOCAL_PATH)/include/client/android \
+ $(LOCAL_PATH)/src/effects \
+ $(LOCAL_PATH)/src/gpu/effects \
+ $(LOCAL_PATH)/src/sksl \
+ frameworks/native/vulkan/include \
+ $(LOCAL_PATH)/tools/viewer/sk_app \
+ $(LOCAL_PATH)/tools/viewer/sk_app/android \
+ $(LOCAL_PATH)/third_party/etc1 \
+ $(LOCAL_PATH)/third_party/ktx \
+ $(LOCAL_PATH)/src/lazy \
+ external/freetype/include \
+ external/expat/lib \
+ $(LOCAL_PATH)/include/utils/win \
+ $(LOCAL_PATH)/src/ports \
+ external/sfntly/cpp/src \
+ external/zlib \
+ external/dng_sdk \
+ external/piex
+
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/src/sksl \
+ $(LOCAL_PATH)/include/codec \
+ $(LOCAL_PATH)/include/android \
+ $(LOCAL_PATH)/include/c \
+ $(LOCAL_PATH)/include/config \
+ $(LOCAL_PATH)/include/core \
+ $(LOCAL_PATH)/include/pathops \
+ $(LOCAL_PATH)/include/effects \
+ $(LOCAL_PATH)/include/client/android \
+ $(LOCAL_PATH)/include/gpu \
+ frameworks/native/vulkan/include \
+ $(LOCAL_PATH)/tools/viewer/sk_app \
+ $(LOCAL_PATH)/tools/viewer/sk_app/android \
+ $(LOCAL_PATH)/include/images \
+ $(LOCAL_PATH)/include/ports \
+ $(LOCAL_PATH)/include/utils \
+ $(LOCAL_PATH)/src/utils
+
+LOCAL_MODULE := \
+ libskia_static
+
+LOCAL_SRC_FILES_arm += \
+ src/opts/SkBitmapProcState_opts_none.cpp \
+ src/opts/SkBlitMask_opts_arm.cpp \
+ src/opts/SkBlitRow_opts_arm.cpp
+
+LOCAL_CFLAGS_arm += \
+ -DqDNGBigEndian=0
+
+ifeq ($(ARCH_ARM_HAVE_NEON), true)
+LOCAL_SRC_FILES_arm += \
+ src/opts/SkBitmapProcState_arm_neon.cpp \
+ src/opts/SkBitmapProcState_matrixProcs_neon.cpp \
+ src/opts/SkBlitMask_opts_arm_neon.cpp \
+ src/opts/SkBlitRow_opts_arm_neon.cpp
+
+LOCAL_CFLAGS_arm += \
+ -DSK_ARM_HAS_NEON
+
+endif
+
+LOCAL_CFLAGS_x86 += \
+ -msse2 \
+ -mfpmath=sse
+
+LOCAL_SRC_FILES_x86 += \
+ src/opts/SkBitmapProcState_opts_SSE2.cpp \
+ src/opts/SkBlitRow_opts_SSE2.cpp \
+ src/opts/opts_check_x86.cpp \
+ src/opts/SkBitmapProcState_opts_SSSE3.cpp \
+ src/opts/SkOpts_ssse3.cpp \
+ src/opts/SkOpts_sse41.cpp \
+ src/opts/SkOpts_sse42.cpp \
+ src/opts/SkOpts_avx.cpp \
+ src/opts/SkOpts_hsw.cpp
+
+LOCAL_CFLAGS_x86 += \
+ -DqDNGBigEndian=0
+
+LOCAL_SRC_FILES_x86_64 += \
+ src/opts/SkBitmapProcState_opts_SSE2.cpp \
+ src/opts/SkBlitRow_opts_SSE2.cpp \
+ src/opts/opts_check_x86.cpp \
+ src/opts/SkBitmapProcState_opts_SSSE3.cpp \
+ src/opts/SkOpts_ssse3.cpp \
+ src/opts/SkOpts_sse41.cpp \
+ src/opts/SkOpts_sse42.cpp \
+ src/opts/SkOpts_avx.cpp \
+ src/opts/SkOpts_hsw.cpp
+
+ifeq ($(TARGET_ARCH_VARIANT), mips32r2dspr2-fp)
+LOCAL_CFLAGS_mips += \
+ -EL \
+ -march=mips32r2 \
+ -mdspr2
+
+LOCAL_SRC_FILES_mips += \
+ src/opts/SkBitmapProcState_opts_mips_dsp.cpp \
+ src/opts/SkBlitMask_opts_none.cpp \
+ src/opts/SkBlitRow_opts_mips_dsp.cpp
+
+else ifeq ($(TARGET_ARCH_VARIANT), mips32r2dsp-fp)
+LOCAL_CFLAGS_mips += \
+ -EL \
+ -march=mips32r2 \
+ -mdsp
+
+LOCAL_SRC_FILES_mips += \
+ src/opts/SkBitmapProcState_opts_mips_dsp.cpp \
+ src/opts/SkBlitMask_opts_none.cpp \
+ src/opts/SkBlitRow_opts_mips_dsp.cpp
+
+else
+LOCAL_CFLAGS_mips += \
+ -EL
+
+LOCAL_SRC_FILES_mips += \
+ src/opts/SkBitmapProcState_opts_none.cpp \
+ src/opts/SkBlitMask_opts_none.cpp \
+ src/opts/SkBlitRow_opts_none.cpp
+
+endif
+
+LOCAL_CFLAGS_mips64 += \
+ -EL
+
+LOCAL_SRC_FILES_mips64 += \
+ src/opts/SkBitmapProcState_opts_none.cpp \
+ src/opts/SkBlitMask_opts_none.cpp \
+ src/opts/SkBlitRow_opts_none.cpp
+
+LOCAL_SRC_FILES_arm64 += \
+ src/opts/SkBitmapProcState_arm_neon.cpp \
+ src/opts/SkBitmapProcState_matrixProcs_neon.cpp \
+ src/opts/SkBitmapProcState_opts_none.cpp \
+ src/opts/SkBlitMask_opts_arm.cpp \
+ src/opts/SkBlitMask_opts_arm_neon.cpp \
+ src/opts/SkBlitRow_opts_arm.cpp \
+ src/opts/SkBlitRow_opts_arm_neon.cpp \
+ src/opts/SkOpts_crc32.cpp
+
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+include $(BUILD_STATIC_LIBRARY)
+
+
+###############################################################################
+# SHARED LIBRARY
+###############################################################################
+
+include $(CLEAR_VARS)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE := libskia
+LOCAL_WHOLE_STATIC_LIBRARIES := libskia_static
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)/src/sksl \
+ $(LOCAL_PATH)/include/codec \
+ $(LOCAL_PATH)/include/android \
+ $(LOCAL_PATH)/include/c \
+ $(LOCAL_PATH)/include/config \
+ $(LOCAL_PATH)/include/core \
+ $(LOCAL_PATH)/include/pathops \
+ $(LOCAL_PATH)/include/effects \
+ $(LOCAL_PATH)/include/client/android \
+ $(LOCAL_PATH)/include/gpu \
+ frameworks/native/vulkan/include \
+ $(LOCAL_PATH)/tools/viewer/sk_app \
+ $(LOCAL_PATH)/tools/viewer/sk_app/android \
+ $(LOCAL_PATH)/include/images \
+ $(LOCAL_PATH)/include/ports \
+ $(LOCAL_PATH)/include/utils \
+ $(LOCAL_PATH)/src/utils
+
+include $(BASE_PATH)/skia_static_deps.mk
+include $(BUILD_SHARED_LIBRARY)
+
+#############################################################
+# Build the skia tools
+#
+
+# benchmark (timings)
+include $(BASE_PATH)/bench/Android.mk
+
+# diamond-master (one test to rule them all)
+include $(BASE_PATH)/dm/Android.mk
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/bench/Android.mk b/bench/Android.mk
new file mode 100644
index 0000000..f24a90b
--- /dev/null
+++ b/bench/Android.mk
@@ -0,0 +1,576 @@
+
+###############################################################################
+#
+# THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
+#
+# For bugs, please contact scroggo@google.com or djsollen@google.com
+#
+###############################################################################
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_CFLAGS += \
+ -fPIC \
+ -Wvla \
+ -Wno-unused-parameter \
+ -U_FORTIFY_SOURCE \
+ -D_FORTIFY_SOURCE=1 \
+ -DSKIA_IMPLEMENTATION=1 \
+ -O2
+
+LOCAL_CPPFLAGS := \
+ -std=c++11 \
+ -fno-threadsafe-statics
+
+LOCAL_SRC_FILES := \
+ ../gm/gm.cpp \
+ ../tools/LsanSuppressions.cpp \
+ AAClipBench.cpp \
+ AlternatingColorPatternBench.cpp \
+ AndroidCodecBench.cpp \
+ BenchLogger.cpp \
+ Benchmark.cpp \
+ BezierBench.cpp \
+ BigPathBench.cpp \
+ BitmapBench.cpp \
+ BitmapRectBench.cpp \
+ BitmapRegionDecoderBench.cpp \
+ BitmapScaleBench.cpp \
+ BlurBench.cpp \
+ BlurImageFilterBench.cpp \
+ BlurOccludedRRectBench.cpp \
+ BlurRectBench.cpp \
+ BlurRectsBench.cpp \
+ BlurRoundRectBench.cpp \
+ ChartBench.cpp \
+ ChecksumBench.cpp \
+ ChromeBench.cpp \
+ CmapBench.cpp \
+ CodecBench.cpp \
+ ColorCodecBench.cpp \
+ ColorCubeBench.cpp \
+ ColorFilterBench.cpp \
+ ColorPrivBench.cpp \
+ ControlBench.cpp \
+ CoverageBench.cpp \
+ DashBench.cpp \
+ DisplacementBench.cpp \
+ DrawBitmapAABench.cpp \
+ DrawLatticeBench.cpp \
+ EncoderBench.cpp \
+ FSRectBench.cpp \
+ FontCacheBench.cpp \
+ FontScalerBench.cpp \
+ GLBench.cpp \
+ GLInstancedArraysBench.cpp \
+ GLVec4ScalarBench.cpp \
+ GLVertexAttributesBench.cpp \
+ GMBench.cpp \
+ GameBench.cpp \
+ GeometryBench.cpp \
+ GrMemoryPoolBench.cpp \
+ GrMipMapBench.cpp \
+ GrResourceCacheBench.cpp \
+ GradientBench.cpp \
+ HairlinePathBench.cpp \
+ HardStopGradientBench_ScaleNumColors.cpp \
+ HardStopGradientBench_ScaleNumHardStops.cpp \
+ HardStopGradientBench_SpecialHardStops.cpp \
+ ImageBench.cpp \
+ ImageCacheBench.cpp \
+ ImageCacheBudgetBench.cpp \
+ ImageFilterCollapse.cpp \
+ ImageFilterDAGBench.cpp \
+ InterpBench.cpp \
+ LightingBench.cpp \
+ LineBench.cpp \
+ MagnifierBench.cpp \
+ MathBench.cpp \
+ Matrix44Bench.cpp \
+ MatrixBench.cpp \
+ MatrixConvolutionBench.cpp \
+ MeasureBench.cpp \
+ MemoryBench.cpp \
+ MemsetBench.cpp \
+ MergeBench.cpp \
+ MipMapBench.cpp \
+ MorphologyBench.cpp \
+ MutexBench.cpp \
+ PDFBench.cpp \
+ PatchBench.cpp \
+ PatchGridBench.cpp \
+ PathBench.cpp \
+ PathIterBench.cpp \
+ PerlinNoiseBench.cpp \
+ PictureNestingBench.cpp \
+ PictureOverheadBench.cpp \
+ PicturePlaybackBench.cpp \
+ PremulAndUnpremulAlphaOpsBench.cpp \
+ QuickRejectBench.cpp \
+ RTreeBench.cpp \
+ ReadPixBench.cpp \
+ RecordingBench.cpp \
+ RectBench.cpp \
+ RectanizerBench.cpp \
+ RectoriBench.cpp \
+ RefCntBench.cpp \
+ RegionBench.cpp \
+ RegionContainBench.cpp \
+ RepeatTileBench.cpp \
+ RotatedRectBench.cpp \
+ SKPAnimationBench.cpp \
+ SKPBench.cpp \
+ ScalarBench.cpp \
+ ShaderMaskBench.cpp \
+ ShapesBench.cpp \
+ Sk4fBench.cpp \
+ SkBlend_optsBench.cpp \
+ SkGlyphCacheBench.cpp \
+ SkLinearBitmapPipelineBench.cpp \
+ SkRasterPipelineBench.cpp \
+ SortBench.cpp \
+ StrokeBench.cpp \
+ SwizzleBench.cpp \
+ TableBench.cpp \
+ TextBench.cpp \
+ TextBlobBench.cpp \
+ TileBench.cpp \
+ TileImageFilterBench.cpp \
+ TopoSortBench.cpp \
+ VertBench.cpp \
+ WritePixelsBench.cpp \
+ WriterBench.cpp \
+ Xfer4fBench.cpp \
+ XferF16Bench.cpp \
+ XfermodeBench.cpp \
+ nanobench.cpp \
+ nanobenchAndroid.cpp \
+ pack_int_uint16_t_Bench.cpp \
+ ../gm/OverStroke.cpp \
+ ../gm/SkLinearBitmapPipelineGM.cpp \
+ ../gm/aaa.cpp \
+ ../gm/aaclip.cpp \
+ ../gm/aarectmodes.cpp \
+ ../gm/aaxfermodes.cpp \
+ ../gm/addarc.cpp \
+ ../gm/all_bitmap_configs.cpp \
+ ../gm/alphagradients.cpp \
+ ../gm/animatedGif.cpp \
+ ../gm/anisotropic.cpp \
+ ../gm/annotated_text.cpp \
+ ../gm/arcofzorro.cpp \
+ ../gm/arcto.cpp \
+ ../gm/arithmode.cpp \
+ ../gm/badpaint.cpp \
+ ../gm/beziereffects.cpp \
+ ../gm/beziers.cpp \
+ ../gm/bigblurs.cpp \
+ ../gm/bigmatrix.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/bleed.cpp \
+ ../gm/blend.cpp \
+ ../gm/blurcircles.cpp \
+ ../gm/blurcircles2.cpp \
+ ../gm/blurquickreject.cpp \
+ ../gm/blurrect.cpp \
+ ../gm/blurredclippedcircle.cpp \
+ ../gm/blurroundrect.cpp \
+ ../gm/blurs.cpp \
+ ../gm/bmpfilterqualityrepeat.cpp \
+ ../gm/bug5252.cpp \
+ ../gm/bug530095.cpp \
+ ../gm/bug615686.cpp \
+ ../gm/cgm.c \
+ ../gm/cgms.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/color4f.cpp \
+ ../gm/colorcube.cpp \
+ ../gm/coloremoji.cpp \
+ ../gm/colorfilteralpha8.cpp \
+ ../gm/colorfilterimagefilter.cpp \
+ ../gm/colorfilters.cpp \
+ ../gm/colormatrix.cpp \
+ ../gm/colorspacexform.cpp \
+ ../gm/colortype.cpp \
+ ../gm/colortypexfermode.cpp \
+ ../gm/colorwheel.cpp \
+ ../gm/complexclip.cpp \
+ ../gm/complexclip2.cpp \
+ ../gm/complexclip3.cpp \
+ ../gm/complexclip_blur_tiled.cpp \
+ ../gm/composeshader.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/croppedrects.cpp \
+ ../gm/cubicpaths.cpp \
+ ../gm/dashcircle.cpp \
+ ../gm/dashcubics.cpp \
+ ../gm/dashing.cpp \
+ ../gm/deferredtextureimage.cpp \
+ ../gm/degeneratesegments.cpp \
+ ../gm/dftext.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/drawfilter.cpp \
+ ../gm/drawlooper.cpp \
+ ../gm/drawminibitmaprect.cpp \
+ ../gm/drawregion.cpp \
+ ../gm/drawregionmodes.cpp \
+ ../gm/dropshadowimagefilter.cpp \
+ ../gm/drrect.cpp \
+ ../gm/dstreadshuffle.cpp \
+ ../gm/emboss.cpp \
+ ../gm/emptypath.cpp \
+ ../gm/encode-platform.cpp \
+ ../gm/encode.cpp \
+ ../gm/extractbitmap.cpp \
+ ../gm/fadefilter.cpp \
+ ../gm/fatpathfill.cpp \
+ ../gm/filltypes.cpp \
+ ../gm/filltypespersp.cpp \
+ ../gm/filterbitmap.cpp \
+ ../gm/filterfastbounds.cpp \
+ ../gm/filterindiabox.cpp \
+ ../gm/fontcache.cpp \
+ ../gm/fontmgr.cpp \
+ ../gm/fontscaler.cpp \
+ ../gm/fontscalerdistortable.cpp \
+ ../gm/gamma.cpp \
+ ../gm/gammacolorfilter.cpp \
+ ../gm/gammatext.cpp \
+ ../gm/gamut.cpp \
+ ../gm/gaussianedge.cpp \
+ ../gm/getpostextpath.cpp \
+ ../gm/giantbitmap.cpp \
+ ../gm/glyph_pos.cpp \
+ ../gm/glyph_pos_align.cpp \
+ ../gm/gradientDirtyLaundry.cpp \
+ ../gm/gradient_matrix.cpp \
+ ../gm/gradients.cpp \
+ ../gm/gradients_2pt_conical.cpp \
+ ../gm/gradients_no_texture.cpp \
+ ../gm/gradtext.cpp \
+ ../gm/grayscalejpg.cpp \
+ ../gm/hairlines.cpp \
+ ../gm/hairmodes.cpp \
+ ../gm/hardstop_gradients.cpp \
+ ../gm/hittestpath.cpp \
+ ../gm/image.cpp \
+ ../gm/image_pict.cpp \
+ ../gm/image_shader.cpp \
+ ../gm/imagealphathreshold.cpp \
+ ../gm/imageblur.cpp \
+ ../gm/imageblur2.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/imagegeneratorexternal.cpp \
+ ../gm/imagemagnifier.cpp \
+ ../gm/imagemakewithfilter.cpp \
+ ../gm/imagemasksubset.cpp \
+ ../gm/imageresizetiled.cpp \
+ ../gm/imagescalealigned.cpp \
+ ../gm/imagesource.cpp \
+ ../gm/imagesource2.cpp \
+ ../gm/imagetoyuvplanes.cpp \
+ ../gm/internal_links.cpp \
+ ../gm/inversepaths.cpp \
+ ../gm/labpcsdemo.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/lightingshaderbevel.cpp \
+ ../gm/linepaths.cpp \
+ ../gm/localmatriximagefilter.cpp \
+ ../gm/lumafilter.cpp \
+ ../gm/matrixconvolution.cpp \
+ ../gm/matriximagefilter.cpp \
+ ../gm/megalooper.cpp \
+ ../gm/mipmap.cpp \
+ ../gm/mixedtextblobs.cpp \
+ ../gm/modecolorfilters.cpp \
+ ../gm/morphology.cpp \
+ ../gm/multipicturedraw.cpp \
+ ../gm/nested.cpp \
+ ../gm/ninepatchstretch.cpp \
+ ../gm/nonclosedpaths.cpp \
+ ../gm/occludedrrectblur.cpp \
+ ../gm/offsetimagefilter.cpp \
+ ../gm/ovals.cpp \
+ ../gm/overdrawcolorfilter.cpp \
+ ../gm/patch.cpp \
+ ../gm/patchgrid.cpp \
+ ../gm/path_stroke_with_zero_length.cpp \
+ ../gm/pathcontourstart.cpp \
+ ../gm/patheffects.cpp \
+ ../gm/pathfill.cpp \
+ ../gm/pathinterior.cpp \
+ ../gm/pathmaskcache.cpp \
+ ../gm/pathopsinverse.cpp \
+ ../gm/pathopsskpclip.cpp \
+ ../gm/pathreverse.cpp \
+ ../gm/pdf_never_embed.cpp \
+ ../gm/perlinnoise.cpp \
+ ../gm/perspshaders.cpp \
+ ../gm/picture.cpp \
+ ../gm/pictureimagefilter.cpp \
+ ../gm/pictureimagegenerator.cpp \
+ ../gm/pictureshader.cpp \
+ ../gm/pictureshadertile.cpp \
+ ../gm/pixelsnap.cpp \
+ ../gm/plus.cpp \
+ ../gm/points.cpp \
+ ../gm/poly2poly.cpp \
+ ../gm/polygons.cpp \
+ ../gm/quadpaths.cpp \
+ ../gm/recordopts.cpp \
+ ../gm/rectangletexture.cpp \
+ ../gm/rects.cpp \
+ ../gm/repeated_bitmap.cpp \
+ ../gm/resizeimagefilter.cpp \
+ ../gm/reveal.cpp \
+ ../gm/roundrects.cpp \
+ ../gm/rrect.cpp \
+ ../gm/rrectclipdrawpaint.cpp \
+ ../gm/rrects.cpp \
+ ../gm/samplerstress.cpp \
+ ../gm/scaledstrokes.cpp \
+ ../gm/shaderbounds.cpp \
+ ../gm/shadertext.cpp \
+ ../gm/shadertext2.cpp \
+ ../gm/shadertext3.cpp \
+ ../gm/shadowmaps.cpp \
+ ../gm/shadows.cpp \
+ ../gm/shallowgradient.cpp \
+ ../gm/shapes.cpp \
+ ../gm/showmiplevels.cpp \
+ ../gm/simpleaaclip.cpp \
+ ../gm/simplerect.cpp \
+ ../gm/skbug1719.cpp \
+ ../gm/skbug_257.cpp \
+ ../gm/skbug_4868.cpp \
+ ../gm/skbug_5321.cpp \
+ ../gm/smallarc.cpp \
+ ../gm/smallimage.cpp \
+ ../gm/smallpaths.cpp \
+ ../gm/spritebitmap.cpp \
+ ../gm/srcmode.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/texdata.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/thinrects.cpp \
+ ../gm/thinstrokedrects.cpp \
+ ../gm/tiledscaledbitmap.cpp \
+ ../gm/tileimagefilter.cpp \
+ ../gm/tilemodes.cpp \
+ ../gm/tilemodes_scaled.cpp \
+ ../gm/tinybitmap.cpp \
+ ../gm/transparency.cpp \
+ ../gm/typeface.cpp \
+ ../gm/variedtext.cpp \
+ ../gm/vertices.cpp \
+ ../gm/verttext.cpp \
+ ../gm/verttext2.cpp \
+ ../gm/verylargebitmap.cpp \
+ ../gm/windowrectangles.cpp \
+ ../gm/xfermodeimagefilter.cpp \
+ ../gm/xfermodes.cpp \
+ ../gm/xfermodes2.cpp \
+ ../gm/xfermodes3.cpp \
+ ../gm/yuvtorgbeffect.cpp \
+ ../tools/debugger/SkDrawCommand.cpp \
+ ../tools/debugger/SkDebugCanvas.cpp \
+ ../tools/debugger/SkJsonWriteBuffer.cpp \
+ ../tools/debugger/SkObjectParser.cpp \
+ ../tools/AndroidSkDebugToStdOut.cpp \
+ ../tools/flags/SkCommonFlags.cpp \
+ ../tools/flags/SkCommonFlagsConfig.cpp \
+ ../tools/CrashHandler.cpp \
+ ../tools/ProcStats.cpp \
+ ../tools/ThermalManager.cpp \
+ ../tools/timer/Timer.cpp \
+ ../experimental/svg/model/SkSVGAttribute.cpp \
+ ../experimental/svg/model/SkSVGAttributeParser.cpp \
+ ../experimental/svg/model/SkSVGCircle.cpp \
+ ../experimental/svg/model/SkSVGContainer.cpp \
+ ../experimental/svg/model/SkSVGDOM.cpp \
+ ../experimental/svg/model/SkSVGEllipse.cpp \
+ ../experimental/svg/model/SkSVGLine.cpp \
+ ../experimental/svg/model/SkSVGLinearGradient.cpp \
+ ../experimental/svg/model/SkSVGNode.cpp \
+ ../experimental/svg/model/SkSVGPath.cpp \
+ ../experimental/svg/model/SkSVGPoly.cpp \
+ ../experimental/svg/model/SkSVGRect.cpp \
+ ../experimental/svg/model/SkSVGRenderContext.cpp \
+ ../experimental/svg/model/SkSVGShape.cpp \
+ ../experimental/svg/model/SkSVGStop.cpp \
+ ../experimental/svg/model/SkSVGSVG.cpp \
+ ../experimental/svg/model/SkSVGTransformableNode.cpp \
+ ../experimental/svg/model/SkSVGValue.cpp \
+ ../tools/Resources.cpp \
+ ../tools/sk_tool_utils.cpp \
+ ../tools/sk_tool_utils_font.cpp \
+ ../tools/random_parse_path.cpp \
+ ../tools/UrlDataManager.cpp \
+ ../tools/android/SkAndroidSDKCanvas.cpp \
+ ../tools/gpu/GrContextFactory.cpp \
+ ../tools/gpu/GrTest.cpp \
+ ../tools/gpu/TestContext.cpp \
+ ../tools/gpu/vk/VkTestContext.cpp \
+ ../tools/gpu/gl/GLTestContext.cpp \
+ ../tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp \
+ ../tools/gpu/gl/null/NullGLTestContext.cpp \
+ ../tools/gpu/gl/debug/DebugGLTestContext.cpp \
+ ../tools/gpu/gl/debug/GrBufferObj.cpp \
+ ../tools/gpu/gl/debug/GrFrameBufferObj.cpp \
+ ../tools/gpu/gl/debug/GrProgramObj.cpp \
+ ../tools/gpu/gl/debug/GrShaderObj.cpp \
+ ../tools/gpu/gl/debug/GrTextureObj.cpp \
+ ../tools/gpu/gl/debug/GrTextureUnitObj.cpp \
+ ../tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp \
+ ../tools/picture_utils.cpp \
+ ../tools/flags/SkCommandLineFlags.cpp \
+ ../src/xml/SkDOM.cpp \
+ ../src/xml/SkXMLParser.cpp \
+ ../src/xml/SkXMLWriter.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ liblog \
+ libhwui \
+ libpng \
+ libGLESv2 \
+ libEGL \
+ libvulkan \
+ libz \
+ libexpat
+
+LOCAL_STATIC_LIBRARIES := \
+ libskia_static \
+ libjsoncpp
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/../src/sksl \
+ $(LOCAL_PATH)/../include/c \
+ $(LOCAL_PATH)/../include/config \
+ $(LOCAL_PATH)/../include/core \
+ $(LOCAL_PATH)/../include/pathops \
+ $(LOCAL_PATH)/../include/codec \
+ $(LOCAL_PATH)/../include/android \
+ $(LOCAL_PATH)/../include/effects \
+ $(LOCAL_PATH)/../include/client/android \
+ $(LOCAL_PATH)/../include/images \
+ $(LOCAL_PATH)/../include/ports \
+ $(LOCAL_PATH)/../src/sfnt \
+ $(LOCAL_PATH)/../include/utils \
+ $(LOCAL_PATH)/../src/utils \
+ $(LOCAL_PATH)/../include/gpu \
+ frameworks/native/vulkan/include \
+ $(LOCAL_PATH)/../tools/viewer/sk_app \
+ $(LOCAL_PATH)/../tools/viewer/sk_app/android \
+ $(LOCAL_PATH)/../include/private \
+ $(LOCAL_PATH)/../src/core \
+ $(LOCAL_PATH)/../src/gpu \
+ $(LOCAL_PATH)/../tools/gpu \
+ $(LOCAL_PATH)/../tools/flags \
+ $(LOCAL_PATH)/../experimental/svg/model \
+ $(LOCAL_PATH)/../include/xml \
+ $(LOCAL_PATH)/../src/fonts \
+ $(LOCAL_PATH)/../tools \
+ external/expat/lib \
+ $(LOCAL_PATH)/../src/codec \
+ $(LOCAL_PATH)/../src/image \
+ $(LOCAL_PATH)/subset \
+ $(LOCAL_PATH)/../src/effects \
+ $(LOCAL_PATH)/../src/pdf \
+ $(LOCAL_PATH)/../gm \
+ $(LOCAL_PATH)/../tools/debugger \
+ $(LOCAL_PATH)/../src/effects/gradients \
+ $(LOCAL_PATH)/../src/images \
+ $(LOCAL_PATH)/../src/lazy \
+ $(LOCAL_PATH)/../../../frameworks/base/libs/hwui \
+ $(LOCAL_PATH)/../tools/timer \
+ $(LOCAL_PATH)/../third_party/etc1 \
+ $(LOCAL_PATH)/../tools/android \
+ external/libpng
+
+LOCAL_CFLAGS += \
+ -DSK_XML
+
+LOCAL_MODULE_TAGS := \
+ tests
+
+LOCAL_MODULE := \
+ skia_nanobench
+
+
+# Store skia's resources in the directory structure that the Android testing
+# infrastructure expects. This requires that Skia maintain a symlinked
+# subdirectory in the DATA folder that points to the top level skia resources...
+# i.e. external/skia/DATA/skia_resources --> ../resources
+LOCAL_PICKUP_FILES := $(LOCAL_PATH)/../DATA
+include $(LOCAL_PATH)/../skia_static_deps.mk
+include $(BUILD_NATIVE_TEST)
diff --git a/dm/Android.mk b/dm/Android.mk
new file mode 100644
index 0000000..8db6431
--- /dev/null
+++ b/dm/Android.mk
@@ -0,0 +1,763 @@
+
+###############################################################################
+#
+# THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
+#
+# For bugs, please contact scroggo@google.com or djsollen@google.com
+#
+###############################################################################
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_CFLAGS += \
+ -fPIC \
+ -Wvla \
+ -Wno-unused-parameter \
+ -U_FORTIFY_SOURCE \
+ -D_FORTIFY_SOURCE=1 \
+ -DSKIA_IMPLEMENTATION=1 \
+ -O2
+
+LOCAL_CPPFLAGS := \
+ -std=c++11 \
+ -fno-threadsafe-statics
+
+LOCAL_SRC_FILES := \
+ DM.cpp \
+ DMSrcSink.cpp \
+ DMJsonWriter.cpp \
+ ../gm/gm.cpp \
+ ../src/utils/SkMultiPictureDocumentReader.cpp \
+ ../tools/LsanSuppressions.cpp \
+ ../tools/debugger/SkDebugCanvas.cpp \
+ ../tools/debugger/SkDrawCommand.cpp \
+ ../tools/debugger/SkJsonWriteBuffer.cpp \
+ ../tools/debugger/SkObjectParser.cpp \
+ ../tests/Test.cpp \
+ ../tests/PathOpsAngleTest.cpp \
+ ../tests/PathOpsBoundsTest.cpp \
+ ../tests/PathOpsBuilderConicTest.cpp \
+ ../tests/PathOpsBuilderTest.cpp \
+ ../tests/PathOpsBuildUseTest.cpp \
+ ../tests/PathOpsChalkboardTest.cpp \
+ ../tests/PathOpsConicIntersectionTest.cpp \
+ ../tests/PathOpsConicLineIntersectionTest.cpp \
+ ../tests/PathOpsConicQuadIntersectionTest.cpp \
+ ../tests/PathOpsCubicConicIntersectionTest.cpp \
+ ../tests/PathOpsCubicIntersectionTest.cpp \
+ ../tests/PathOpsCubicIntersectionTestData.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/PathOpsExtendedTest.cpp \
+ ../tests/PathOpsFuzz763Test.cpp \
+ ../tests/PathOpsInverseTest.cpp \
+ ../tests/PathOpsIssue3651.cpp \
+ ../tests/PathOpsLineIntersectionTest.cpp \
+ ../tests/PathOpsLineParametetersTest.cpp \
+ ../tests/PathOpsOpCircleThreadedTest.cpp \
+ ../tests/PathOpsOpCubicThreadedTest.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/PathOpsSimplifyQuadralateralsThreadedTest.cpp \
+ ../tests/PathOpsSimplifyQuadThreadedTest.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/SubsetPath.cpp \
+ ../tests/AAClipTest.cpp \
+ ../tests/AnnotationTest.cpp \
+ ../tests/ApplyGammaTest.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/BlitRowTest.cpp \
+ ../tests/BlurTest.cpp \
+ ../tests/CPlusPlusEleven.cpp \
+ ../tests/CTest.cpp \
+ ../tests/CachedDataTest.cpp \
+ ../tests/CachedDecodingPixelRefTest.cpp \
+ ../tests/CanvasStateHelpers.cpp \
+ ../tests/CanvasStateTest.cpp \
+ ../tests/CanvasTest.cpp \
+ ../tests/ChecksumTest.cpp \
+ ../tests/ClampRangeTest.cpp \
+ ../tests/ClearTest.cpp \
+ ../tests/ClipBoundsTest.cpp \
+ ../tests/ClipCubicTest.cpp \
+ ../tests/ClipStackTest.cpp \
+ ../tests/ClipperTest.cpp \
+ ../tests/CodecAnimTest.cpp \
+ ../tests/CodecPartialTest.cpp \
+ ../tests/CodecTest.cpp \
+ ../tests/ColorFilterTest.cpp \
+ ../tests/ColorMatrixTest.cpp \
+ ../tests/ColorPrivTest.cpp \
+ ../tests/ColorSpaceTest.cpp \
+ ../tests/ColorSpaceXformTest.cpp \
+ ../tests/ColorTest.cpp \
+ ../tests/CopySurfaceTest.cpp \
+ ../tests/DFPathRendererTest.cpp \
+ ../tests/DashPathEffectTest.cpp \
+ ../tests/DataRefTest.cpp \
+ ../tests/DequeTest.cpp \
+ ../tests/DeviceLooperTest.cpp \
+ ../tests/DeviceTest.cpp \
+ ../tests/DiscardableMemoryPoolTest.cpp \
+ ../tests/DiscardableMemoryTest.cpp \
+ ../tests/DrawBitmapRectTest.cpp \
+ ../tests/DrawFilterTest.cpp \
+ ../tests/DrawPathTest.cpp \
+ ../tests/DrawTextTest.cpp \
+ ../tests/DynamicHashTest.cpp \
+ ../tests/EGLImageTest.cpp \
+ ../tests/EmptyPathTest.cpp \
+ ../tests/ExifTest.cpp \
+ ../tests/FillPathTest.cpp \
+ ../tests/FitsInTest.cpp \
+ ../tests/FixedAllocTest.cpp \
+ ../tests/FlattenDrawableTest.cpp \
+ ../tests/FlattenableCustomFactory.cpp \
+ ../tests/FlattenableFactoryToName.cpp \
+ ../tests/Float16Test.cpp \
+ ../tests/FloatingPointTextureTest.cpp \
+ ../tests/FontHostStreamTest.cpp \
+ ../tests/FontHostTest.cpp \
+ ../tests/FontMgrAndroidParserTest.cpp \
+ ../tests/FontMgrTest.cpp \
+ ../tests/FontNamesTest.cpp \
+ ../tests/FontObjTest.cpp \
+ ../tests/FrontBufferedStreamTest.cpp \
+ ../tests/GLProgramsTest.cpp \
+ ../tests/GeometryTest.cpp \
+ ../tests/GifTest.cpp \
+ ../tests/GpuColorFilterTest.cpp \
+ ../tests/GpuDrawPathTest.cpp \
+ ../tests/GpuLayerCacheTest.cpp \
+ ../tests/GpuRectanizerTest.cpp \
+ ../tests/GpuSampleLocationsTest.cpp \
+ ../tests/GrAllocatorTest.cpp \
+ ../tests/GrContextAbandonTest.cpp \
+ ../tests/GrContextFactoryTest.cpp \
+ ../tests/GrDrawTargetTest.cpp \
+ ../tests/GrGLSLPrettyPrintTest.cpp \
+ ../tests/GrGetCoeffBlendKnownComponentsTest.cpp \
+ ../tests/GrMemoryPoolTest.cpp \
+ ../tests/GrPorterDuffTest.cpp \
+ ../tests/GrShapeTest.cpp \
+ ../tests/GrSurfaceTest.cpp \
+ ../tests/GrTRecorderTest.cpp \
+ ../tests/GrTextureMipMapInvalidationTest.cpp \
+ ../tests/GrTextureStripAtlasTest.cpp \
+ ../tests/GradientTest.cpp \
+ ../tests/HashTest.cpp \
+ ../tests/ImageCacheTest.cpp \
+ ../tests/ImageFilterCacheTest.cpp \
+ ../tests/ImageFilterTest.cpp \
+ ../tests/ImageFrom565Bitmap.cpp \
+ ../tests/ImageGeneratorTest.cpp \
+ ../tests/ImageIsOpaqueTest.cpp \
+ ../tests/ImageNewShaderTest.cpp \
+ ../tests/ImageStorageTest.cpp \
+ ../tests/ImageTest.cpp \
+ ../tests/IndexedPngOverflowTest.cpp \
+ ../tests/InfRectTest.cpp \
+ ../tests/IntTextureTest.cpp \
+ ../tests/InterpolatorTest.cpp \
+ ../tests/InvalidIndexedPngTest.cpp \
+ ../tests/IsClosedSingleContourTest.cpp \
+ ../tests/LListTest.cpp \
+ ../tests/LayerDrawLooperTest.cpp \
+ ../tests/LayerRasterizerTest.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/OSPathTest.cpp \
+ ../tests/OnceTest.cpp \
+ ../tests/OverAlignedTest.cpp \
+ ../tests/PDFDeflateWStreamTest.cpp \
+ ../tests/PDFDocumentTest.cpp \
+ ../tests/PDFGlyphsToUnicodeTest.cpp \
+ ../tests/PDFInvalidBitmapTest.cpp \
+ ../tests/PDFJpegEmbedTest.cpp \
+ ../tests/PDFMetadataAttributeTest.cpp \
+ ../tests/PDFOpaqueSrcModeToSrcOverTest.cpp \
+ ../tests/PDFPrimitivesTest.cpp \
+ ../tests/PackBitsTest.cpp \
+ ../tests/PackedConfigsTextureTest.cpp \
+ ../tests/PaintBreakTextTest.cpp \
+ ../tests/PaintImageFilterTest.cpp \
+ ../tests/PaintTest.cpp \
+ ../tests/ParsePathTest.cpp \
+ ../tests/PathCoverageTest.cpp \
+ ../tests/PathMeasureTest.cpp \
+ ../tests/PathTest.cpp \
+ ../tests/PictureBBHTest.cpp \
+ ../tests/PictureShaderTest.cpp \
+ ../tests/PictureTest.cpp \
+ ../tests/PipeTest.cpp \
+ ../tests/PixelRefTest.cpp \
+ ../tests/Point3Test.cpp \
+ ../tests/PointTest.cpp \
+ ../tests/PremulAlphaRoundTripTest.cpp \
+ ../tests/PrimitiveProcessorTest.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/RefDictTest.cpp \
+ ../tests/RegionTest.cpp \
+ ../tests/RenderTargetContextTest.cpp \
+ ../tests/ResourceCacheTest.cpp \
+ ../tests/RoundRectTest.cpp \
+ ../tests/SRGBMipMapTest.cpp \
+ ../tests/SRGBReadWritePixelsTest.cpp \
+ ../tests/SRGBTest.cpp \
+ ../tests/SVGDeviceTest.cpp \
+ ../tests/ScalarTest.cpp \
+ ../tests/ScaleToSidesTest.cpp \
+ ../tests/SerializationTest.cpp \
+ ../tests/ShaderOpacityTest.cpp \
+ ../tests/ShaderTest.cpp \
+ ../tests/SizeTest.cpp \
+ ../tests/Sk4x4fTest.cpp \
+ ../tests/SkBase64Test.cpp \
+ ../tests/SkBlend_optsTest.cpp \
+ ../tests/SkColor4fTest.cpp \
+ ../tests/SkDOMTest.cpp \
+ ../tests/SkFixed15Test.cpp \
+ ../tests/SkImageTest.cpp \
+ ../tests/SkLinearBitmapPipelineTest.cpp \
+ ../tests/SkLiteDLTest.cpp \
+ ../tests/SkNxTest.cpp \
+ ../tests/SkPEGTest.cpp \
+ ../tests/SkRasterPipelineTest.cpp \
+ ../tests/SkResourceCacheTest.cpp \
+ ../tests/SkSLErrorTest.cpp \
+ ../tests/SkSLGLSLTest.cpp \
+ ../tests/SkSLMemoryLayoutTest.cpp \
+ ../tests/SkSharedMutexTest.cpp \
+ ../tests/SmallAllocatorTest.cpp \
+ ../tests/SortTest.cpp \
+ ../tests/SpecialImageTest.cpp \
+ ../tests/SpecialSurfaceTest.cpp \
+ ../tests/SrcOverTest.cpp \
+ ../tests/StreamTest.cpp \
+ ../tests/StringTest.cpp \
+ ../tests/StrokeTest.cpp \
+ ../tests/StrokerTest.cpp \
+ ../tests/SurfaceTest.cpp \
+ ../tests/SwizzlerTest.cpp \
+ ../tests/TArrayTest.cpp \
+ ../tests/TDPQueueTest.cpp \
+ ../tests/TLSTest.cpp \
+ ../tests/TemplatesTest.cpp \
+ ../tests/TessellatingPathRendererTests.cpp \
+ ../tests/TestConfigParsing.cpp \
+ ../tests/TestTest.cpp \
+ ../tests/TextBlobCacheTest.cpp \
+ ../tests/TextBlobTest.cpp \
+ ../tests/TextureCompressionTest.cpp \
+ ../tests/Time.cpp \
+ ../tests/TopoSortTest.cpp \
+ ../tests/TraceMemoryDumpTest.cpp \
+ ../tests/TracingTest.cpp \
+ ../tests/TypefaceTest.cpp \
+ ../tests/UnicodeTest.cpp \
+ ../tests/UtilsTest.cpp \
+ ../tests/VarAllocTest.cpp \
+ ../tests/VkClearTests.cpp \
+ ../tests/VkHeapTests.cpp \
+ ../tests/VkUploadPixelsTests.cpp \
+ ../tests/VkWrapTests.cpp \
+ ../tests/WindowRectanglesTest.cpp \
+ ../tests/WritePixelsTest.cpp \
+ ../tests/Writer32Test.cpp \
+ ../tests/YUVCacheTest.cpp \
+ ../tests/YUVTest.cpp \
+ ../tests/image-bitmap.cpp \
+ ../tests/skbug5221.cpp \
+ DMSrcSinkAndroid.cpp \
+ ../gm/OverStroke.cpp \
+ ../gm/SkLinearBitmapPipelineGM.cpp \
+ ../gm/aaa.cpp \
+ ../gm/aaclip.cpp \
+ ../gm/aarectmodes.cpp \
+ ../gm/aaxfermodes.cpp \
+ ../gm/addarc.cpp \
+ ../gm/all_bitmap_configs.cpp \
+ ../gm/alphagradients.cpp \
+ ../gm/animatedGif.cpp \
+ ../gm/anisotropic.cpp \
+ ../gm/annotated_text.cpp \
+ ../gm/arcofzorro.cpp \
+ ../gm/arcto.cpp \
+ ../gm/arithmode.cpp \
+ ../gm/badpaint.cpp \
+ ../gm/beziereffects.cpp \
+ ../gm/beziers.cpp \
+ ../gm/bigblurs.cpp \
+ ../gm/bigmatrix.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/bleed.cpp \
+ ../gm/blend.cpp \
+ ../gm/blurcircles.cpp \
+ ../gm/blurcircles2.cpp \
+ ../gm/blurquickreject.cpp \
+ ../gm/blurrect.cpp \
+ ../gm/blurredclippedcircle.cpp \
+ ../gm/blurroundrect.cpp \
+ ../gm/blurs.cpp \
+ ../gm/bmpfilterqualityrepeat.cpp \
+ ../gm/bug5252.cpp \
+ ../gm/bug530095.cpp \
+ ../gm/bug615686.cpp \
+ ../gm/cgm.c \
+ ../gm/cgms.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/color4f.cpp \
+ ../gm/colorcube.cpp \
+ ../gm/coloremoji.cpp \
+ ../gm/colorfilteralpha8.cpp \
+ ../gm/colorfilterimagefilter.cpp \
+ ../gm/colorfilters.cpp \
+ ../gm/colormatrix.cpp \
+ ../gm/colorspacexform.cpp \
+ ../gm/colortype.cpp \
+ ../gm/colortypexfermode.cpp \
+ ../gm/colorwheel.cpp \
+ ../gm/complexclip.cpp \
+ ../gm/complexclip2.cpp \
+ ../gm/complexclip3.cpp \
+ ../gm/complexclip_blur_tiled.cpp \
+ ../gm/composeshader.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/croppedrects.cpp \
+ ../gm/cubicpaths.cpp \
+ ../gm/dashcircle.cpp \
+ ../gm/dashcubics.cpp \
+ ../gm/dashing.cpp \
+ ../gm/deferredtextureimage.cpp \
+ ../gm/degeneratesegments.cpp \
+ ../gm/dftext.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/drawfilter.cpp \
+ ../gm/drawlooper.cpp \
+ ../gm/drawminibitmaprect.cpp \
+ ../gm/drawregion.cpp \
+ ../gm/drawregionmodes.cpp \
+ ../gm/dropshadowimagefilter.cpp \
+ ../gm/drrect.cpp \
+ ../gm/dstreadshuffle.cpp \
+ ../gm/emboss.cpp \
+ ../gm/emptypath.cpp \
+ ../gm/encode-platform.cpp \
+ ../gm/encode.cpp \
+ ../gm/extractbitmap.cpp \
+ ../gm/fadefilter.cpp \
+ ../gm/fatpathfill.cpp \
+ ../gm/filltypes.cpp \
+ ../gm/filltypespersp.cpp \
+ ../gm/filterbitmap.cpp \
+ ../gm/filterfastbounds.cpp \
+ ../gm/filterindiabox.cpp \
+ ../gm/fontcache.cpp \
+ ../gm/fontmgr.cpp \
+ ../gm/fontscaler.cpp \
+ ../gm/fontscalerdistortable.cpp \
+ ../gm/gamma.cpp \
+ ../gm/gammacolorfilter.cpp \
+ ../gm/gammatext.cpp \
+ ../gm/gamut.cpp \
+ ../gm/gaussianedge.cpp \
+ ../gm/getpostextpath.cpp \
+ ../gm/giantbitmap.cpp \
+ ../gm/glyph_pos.cpp \
+ ../gm/glyph_pos_align.cpp \
+ ../gm/gradientDirtyLaundry.cpp \
+ ../gm/gradient_matrix.cpp \
+ ../gm/gradients.cpp \
+ ../gm/gradients_2pt_conical.cpp \
+ ../gm/gradients_no_texture.cpp \
+ ../gm/gradtext.cpp \
+ ../gm/grayscalejpg.cpp \
+ ../gm/hairlines.cpp \
+ ../gm/hairmodes.cpp \
+ ../gm/hardstop_gradients.cpp \
+ ../gm/hittestpath.cpp \
+ ../gm/image.cpp \
+ ../gm/image_pict.cpp \
+ ../gm/image_shader.cpp \
+ ../gm/imagealphathreshold.cpp \
+ ../gm/imageblur.cpp \
+ ../gm/imageblur2.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/imagegeneratorexternal.cpp \
+ ../gm/imagemagnifier.cpp \
+ ../gm/imagemakewithfilter.cpp \
+ ../gm/imagemasksubset.cpp \
+ ../gm/imageresizetiled.cpp \
+ ../gm/imagescalealigned.cpp \
+ ../gm/imagesource.cpp \
+ ../gm/imagesource2.cpp \
+ ../gm/imagetoyuvplanes.cpp \
+ ../gm/internal_links.cpp \
+ ../gm/inversepaths.cpp \
+ ../gm/labpcsdemo.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/lightingshaderbevel.cpp \
+ ../gm/linepaths.cpp \
+ ../gm/localmatriximagefilter.cpp \
+ ../gm/lumafilter.cpp \
+ ../gm/matrixconvolution.cpp \
+ ../gm/matriximagefilter.cpp \
+ ../gm/megalooper.cpp \
+ ../gm/mipmap.cpp \
+ ../gm/mixedtextblobs.cpp \
+ ../gm/modecolorfilters.cpp \
+ ../gm/morphology.cpp \
+ ../gm/multipicturedraw.cpp \
+ ../gm/nested.cpp \
+ ../gm/ninepatchstretch.cpp \
+ ../gm/nonclosedpaths.cpp \
+ ../gm/occludedrrectblur.cpp \
+ ../gm/offsetimagefilter.cpp \
+ ../gm/ovals.cpp \
+ ../gm/overdrawcolorfilter.cpp \
+ ../gm/patch.cpp \
+ ../gm/patchgrid.cpp \
+ ../gm/path_stroke_with_zero_length.cpp \
+ ../gm/pathcontourstart.cpp \
+ ../gm/patheffects.cpp \
+ ../gm/pathfill.cpp \
+ ../gm/pathinterior.cpp \
+ ../gm/pathmaskcache.cpp \
+ ../gm/pathopsinverse.cpp \
+ ../gm/pathopsskpclip.cpp \
+ ../gm/pathreverse.cpp \
+ ../gm/pdf_never_embed.cpp \
+ ../gm/perlinnoise.cpp \
+ ../gm/perspshaders.cpp \
+ ../gm/picture.cpp \
+ ../gm/pictureimagefilter.cpp \
+ ../gm/pictureimagegenerator.cpp \
+ ../gm/pictureshader.cpp \
+ ../gm/pictureshadertile.cpp \
+ ../gm/pixelsnap.cpp \
+ ../gm/plus.cpp \
+ ../gm/points.cpp \
+ ../gm/poly2poly.cpp \
+ ../gm/polygons.cpp \
+ ../gm/quadpaths.cpp \
+ ../gm/recordopts.cpp \
+ ../gm/rectangletexture.cpp \
+ ../gm/rects.cpp \
+ ../gm/repeated_bitmap.cpp \
+ ../gm/resizeimagefilter.cpp \
+ ../gm/reveal.cpp \
+ ../gm/roundrects.cpp \
+ ../gm/rrect.cpp \
+ ../gm/rrectclipdrawpaint.cpp \
+ ../gm/rrects.cpp \
+ ../gm/samplerstress.cpp \
+ ../gm/scaledstrokes.cpp \
+ ../gm/shaderbounds.cpp \
+ ../gm/shadertext.cpp \
+ ../gm/shadertext2.cpp \
+ ../gm/shadertext3.cpp \
+ ../gm/shadowmaps.cpp \
+ ../gm/shadows.cpp \
+ ../gm/shallowgradient.cpp \
+ ../gm/shapes.cpp \
+ ../gm/showmiplevels.cpp \
+ ../gm/simpleaaclip.cpp \
+ ../gm/simplerect.cpp \
+ ../gm/skbug1719.cpp \
+ ../gm/skbug_257.cpp \
+ ../gm/skbug_4868.cpp \
+ ../gm/skbug_5321.cpp \
+ ../gm/smallarc.cpp \
+ ../gm/smallimage.cpp \
+ ../gm/smallpaths.cpp \
+ ../gm/spritebitmap.cpp \
+ ../gm/srcmode.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/texdata.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/thinrects.cpp \
+ ../gm/thinstrokedrects.cpp \
+ ../gm/tiledscaledbitmap.cpp \
+ ../gm/tileimagefilter.cpp \
+ ../gm/tilemodes.cpp \
+ ../gm/tilemodes_scaled.cpp \
+ ../gm/tinybitmap.cpp \
+ ../gm/transparency.cpp \
+ ../gm/typeface.cpp \
+ ../gm/variedtext.cpp \
+ ../gm/vertices.cpp \
+ ../gm/verttext.cpp \
+ ../gm/verttext2.cpp \
+ ../gm/verylargebitmap.cpp \
+ ../gm/windowrectangles.cpp \
+ ../gm/xfermodeimagefilter.cpp \
+ ../gm/xfermodes.cpp \
+ ../gm/xfermodes2.cpp \
+ ../gm/xfermodes3.cpp \
+ ../gm/yuvtorgbeffect.cpp \
+ ../tools/AndroidSkDebugToStdOut.cpp \
+ ../tools/flags/SkCommandLineFlags.cpp \
+ ../src/svg/SkSVGCanvas.cpp \
+ ../src/svg/SkSVGDevice.cpp \
+ ../experimental/svg/model/SkSVGAttribute.cpp \
+ ../experimental/svg/model/SkSVGAttributeParser.cpp \
+ ../experimental/svg/model/SkSVGCircle.cpp \
+ ../experimental/svg/model/SkSVGContainer.cpp \
+ ../experimental/svg/model/SkSVGDOM.cpp \
+ ../experimental/svg/model/SkSVGEllipse.cpp \
+ ../experimental/svg/model/SkSVGLine.cpp \
+ ../experimental/svg/model/SkSVGLinearGradient.cpp \
+ ../experimental/svg/model/SkSVGNode.cpp \
+ ../experimental/svg/model/SkSVGPath.cpp \
+ ../experimental/svg/model/SkSVGPoly.cpp \
+ ../experimental/svg/model/SkSVGRect.cpp \
+ ../experimental/svg/model/SkSVGRenderContext.cpp \
+ ../experimental/svg/model/SkSVGShape.cpp \
+ ../experimental/svg/model/SkSVGStop.cpp \
+ ../experimental/svg/model/SkSVGSVG.cpp \
+ ../experimental/svg/model/SkSVGTransformableNode.cpp \
+ ../experimental/svg/model/SkSVGValue.cpp \
+ ../tools/CrashHandler.cpp \
+ ../tools/picture_utils.cpp \
+ ../tools/ProcStats.cpp \
+ ../tools/sk_tool_utils.cpp \
+ ../tools/sk_tool_utils_font.cpp \
+ ../tools/random_parse_path.cpp \
+ ../tools/UrlDataManager.cpp \
+ ../tools/timer/Timer.cpp \
+ ../src/xml/SkDOM.cpp \
+ ../src/xml/SkXMLParser.cpp \
+ ../src/xml/SkXMLWriter.cpp \
+ ../src/xps/SkDocument_XPS_None.cpp \
+ ../tools/Resources.cpp \
+ ../experimental/SkSetPoly3To3.cpp \
+ ../experimental/SkSetPoly3To3_A.cpp \
+ ../experimental/SkSetPoly3To3_D.cpp \
+ ../tools/flags/SkCommonFlags.cpp \
+ ../tools/flags/SkCommonFlagsConfig.cpp \
+ ../tools/android/SkAndroidSDKCanvas.cpp \
+ ../tools/gpu/GrContextFactory.cpp \
+ ../tools/gpu/GrTest.cpp \
+ ../tools/gpu/TestContext.cpp \
+ ../tools/gpu/vk/VkTestContext.cpp \
+ ../tools/gpu/gl/GLTestContext.cpp \
+ ../tools/gpu/gl/command_buffer/GLTestContext_command_buffer.cpp \
+ ../tools/gpu/gl/null/NullGLTestContext.cpp \
+ ../tools/gpu/gl/debug/DebugGLTestContext.cpp \
+ ../tools/gpu/gl/debug/GrBufferObj.cpp \
+ ../tools/gpu/gl/debug/GrFrameBufferObj.cpp \
+ ../tools/gpu/gl/debug/GrProgramObj.cpp \
+ ../tools/gpu/gl/debug/GrShaderObj.cpp \
+ ../tools/gpu/gl/debug/GrTextureObj.cpp \
+ ../tools/gpu/gl/debug/GrTextureUnitObj.cpp \
+ ../tools/gpu/gl/egl/CreatePlatformGLTestContext_egl.cpp
+
+LOCAL_SHARED_LIBRARIES := \
+ liblog \
+ libpng \
+ libz \
+ libGLESv2 \
+ libEGL \
+ libvulkan \
+ libexpat
+
+LOCAL_STATIC_LIBRARIES := \
+ libskia_static \
+ libhwui_static \
+ libjsoncpp
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH)/../src/sksl \
+ $(LOCAL_PATH)/../include/c \
+ $(LOCAL_PATH)/../include/config \
+ $(LOCAL_PATH)/../include/core \
+ $(LOCAL_PATH)/../include/pathops \
+ $(LOCAL_PATH)/../include/codec \
+ $(LOCAL_PATH)/../include/android \
+ $(LOCAL_PATH)/../include/effects \
+ $(LOCAL_PATH)/../include/client/android \
+ $(LOCAL_PATH)/../include/images \
+ $(LOCAL_PATH)/../include/ports \
+ $(LOCAL_PATH)/../src/sfnt \
+ $(LOCAL_PATH)/../include/utils \
+ $(LOCAL_PATH)/../src/utils \
+ $(LOCAL_PATH)/../include/gpu \
+ frameworks/native/vulkan/include \
+ $(LOCAL_PATH)/../tools/viewer/sk_app \
+ $(LOCAL_PATH)/../tools/viewer/sk_app/android \
+ $(LOCAL_PATH)/../include/private \
+ $(LOCAL_PATH)/../src/core \
+ $(LOCAL_PATH)/../tools/gpu \
+ $(LOCAL_PATH)/../include/svg \
+ $(LOCAL_PATH)/../include/xml \
+ $(LOCAL_PATH)/../experimental/svg/model \
+ $(LOCAL_PATH)/../src/fonts \
+ $(LOCAL_PATH)/../tools \
+ $(LOCAL_PATH)/../tools/flags \
+ $(LOCAL_PATH)/../src/gpu \
+ external/expat/lib \
+ $(LOCAL_PATH)/../gm \
+ $(LOCAL_PATH)/../src/effects \
+ $(LOCAL_PATH)/../src/images \
+ $(LOCAL_PATH)/../src/lazy \
+ $(LOCAL_PATH)/../tools/debugger \
+ $(LOCAL_PATH)/../tests \
+ $(LOCAL_PATH)/../src/effects/gradients \
+ $(LOCAL_PATH)/../src/pathops \
+ $(LOCAL_PATH)/../src/pipe/utils \
+ $(LOCAL_PATH)/../src/codec \
+ $(LOCAL_PATH)/../src/image \
+ $(LOCAL_PATH)/../src/pdf \
+ $(LOCAL_PATH)/../src/ports \
+ $(LOCAL_PATH)/../third_party/etc1 \
+ external/libpng \
+ $(LOCAL_PATH)/../tools/timer \
+ $(LOCAL_PATH)/../experimental \
+ external/zlib \
+ $(LOCAL_PATH)/../tools/android
+
+LOCAL_CFLAGS += \
+ -DSK_XML
+
+LOCAL_MODULE_TAGS := \
+ tests
+
+LOCAL_MODULE := \
+ skia_dm
+
+
+# Store skia's resources in the directory structure that the Android testing
+# infrastructure expects. This requires that Skia maintain a symlinked
+# subdirectory in the DATA folder that points to the top level skia resources...
+# i.e. external/skia/DATA/skia_resources --> ../resources
+LOCAL_PICKUP_FILES := $(LOCAL_PATH)/../DATA
+include $(LOCAL_PATH)/../skia_static_deps.mk
+include frameworks/base/libs/hwui/hwui_static_deps.mk
+include $(BUILD_NATIVE_TEST)
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/core/SkRefCnt.h b/include/core/SkRefCnt.h
index 53523b4..6978927 100644
--- a/include/core/SkRefCnt.h
+++ b/include/core/SkRefCnt.h
@@ -139,6 +139,28 @@
null in on each side of the assignment, and ensuring that ref() is called
before unref(), in case the two pointers point to the same object.
*/
+
+#if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) || defined(SK_DEBUG)
+// This version heuristically detects data races, since those otherwise result
+// in redundant reference count decrements, which are exceedingly
+// difficult to debug.
+
+#define SkRefCnt_SafeAssign(dst, src) \
+ do { \
+ typedef typename std::remove_reference<decltype(dst)>::type \
+ SkRefCntPtrT; \
+ SkRefCntPtrT old_dst = *const_cast<SkRefCntPtrT volatile *>(&dst); \
+ if (src) src->ref(); \
+ if (old_dst) old_dst->unref(); \
+ if (old_dst != *const_cast<SkRefCntPtrT volatile *>(&dst)) { \
+ SkDebugf("Detected racing Skia calls at %s:%d\n", \
+ __FILE__, __LINE__); \
+ } \
+ dst = src; \
+ } while (0)
+
+#else /* !(SK_BUILD_FOR_ANDROID_FRAMEWORK || SK_DEBUG) */
+
#define SkRefCnt_SafeAssign(dst, src) \
do { \
if (src) src->ref(); \
@@ -146,6 +168,8 @@
dst = src; \
} while (0)
+#endif
+
/** Call obj->ref() and return obj. The obj must not be nullptr.
*/
diff --git a/include/config/SkUserConfig.h b/include/core/SkUserConfig.h
similarity index 72%
rename from include/config/SkUserConfig.h
rename to include/core/SkUserConfig.h
index 0729447..47c8948 100644
--- a/include/config/SkUserConfig.h
+++ b/include/core/SkUserConfig.h
@@ -1,4 +1,14 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
+//
+// This file contains Skia's upstream include/config/SkUserConfig.h as a
+// reference, followed by the actual defines set for Android.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
/*
* Copyright 2006 The Android Open Source Project
*
@@ -140,3 +150,59 @@
//#define SK_HISTOGRAM_ENUMERATION(name, value, boundary_value)
#endif
+
+// Android defines:
+#ifndef SkUserConfig_Android_DEFINED
+#define SkUserConfig_Android_DEFINED
+#ifdef ANDROID
+ #include <utils/misc.h>
+#endif
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+ #define SK_CPU_BENDIAN
+ #undef SK_CPU_LENDIAN
+#else
+ #define SK_CPU_LENDIAN
+ #undef SK_CPU_BENDIAN
+#endif
+
+#define DCT_IFAST_SUPPORTED
+#define GR_GL_CUSTOM_SETUP_HEADER "gl/GrGLConfig_chrome.h"
+#define GR_GL_USE_NEW_SHADER_SOURCE_SIGNATURE 1
+#define QT_NO_KEYWORDS
+#define SKIA
+#define SKIA_DLL
+#define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0
+#define SK_BUILD_FOR_ANDROID
+#define SK_BUILD_FOR_ANDROID_FRAMEWORK
+#define SK_CAN_USE_DLOPEN 0
+#define SK_CODEC_DECODES_RAW
+#define SK_DEFAULT_FONT_CACHE_LIMIT (768 * 1024)
+#define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE (512 * 1024)
+#define SK_FONTHOST_FREETYPE_RUNTIME_VERSION 0x020400
+#define SK_FORCE_DISTANCE_FIELD_TEXT 0
+#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_IGNORE_ETC1_SUPPORT
+#define SK_IGNORE_GPU_DITHER
+#define SK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS
+#define SK_INTERNAL
+#define SK_PDF_USE_SFNTLY
+#define SK_PRINT_CODEC_MESSAGES
+#define SK_SUPPORT_GPU 1
+#define SK_SUPPORT_LEGACY_CANVAS_IS_REFCNT
+#define SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
+#define SK_SUPPORT_LEGACY_CLIP_REGIONOPS
+#define SK_SUPPORT_LEGACY_DRAWFILTER
+#define SK_SUPPORT_LEGACY_GRADIENT_DITHERING
+#define SK_SUPPORT_LEGACY_IMAGE_ENCODER_CLASS
+#define SK_SUPPORT_LEGACY_SHADER_ISABITMAP
+#define SK_SUPPORT_LEGACY_UNBALANCED_PIXELREF_LOCKCOUNT
+#define SK_USE_FREETYPE_EMBOLDEN
+#define SK_VULKAN
+
+#endif // SkUserConfig_Android_DEFINED
diff --git a/skia_static_deps.mk b/skia_static_deps.mk
new file mode 100644
index 0000000..9bf3d25
--- /dev/null
+++ b/skia_static_deps.mk
@@ -0,0 +1,40 @@
+
+###############################################################################
+#
+# THIS FILE IS AUTOGENERATED BY GYP_TO_ANDROID.PY. DO NOT EDIT.
+#
+# For bugs, please contact scroggo@google.com or djsollen@google.com
+#
+###############################################################################
+
+
+###############################################################################
+#
+# This file contains the shared and static dependencies needed by any target
+# that attempts to statically link Skia (i.e. libskia_static build target).
+#
+# This is a workaround for the fact that the build system does not add these
+# transitive dependencies when it attempts to link libskia_static into another
+# library.
+#
+###############################################################################
+LOCAL_SHARED_LIBRARIES += \
+ liblog \
+ libGLESv2 \
+ libEGL \
+ libvulkan \
+ libz \
+ libjpeg \
+ libpng \
+ libicuuc \
+ libicui18n \
+ libexpat \
+ libft2 \
+ libdng_sdk \
+ libpiex
+
+LOCAL_STATIC_LIBRARIES += \
+ libwebp-decode \
+ libwebp-encode \
+ libsfntly
+