# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

enable_printing = true  # TODO(brettw) pass this feature flag in somehow.
skia_support_gpu = !is_ios
skia_support_pdf = !is_ios && enable_printing

# External-facing config for dependent code.
config("skia_config") {
  include_dirs = [
    "config",
    "//third_party/skia/include/config",
    "//third_party/skia/include/core",
    "//third_party/skia/include/effects",
    "//third_party/skia/include/images",
    "//third_party/skia/include/lazy",
    "//third_party/skia/include/pathops",
    "//third_party/skia/include/pdf",
    "//third_party/skia/include/pipe",
    "//third_party/skia/include/ports",
    "//third_party/skia/include/utils",
    "//third_party/skia/src/core",
    "//third_party/skia/src/image",
    "//third_party/skia/src/ports",
    "//third_party/skia/src/sfnt",
    "//third_party/skia/src/utils",
    "//third_party/skia/src/lazy",
  ]

  defines = [
    "SK_ENABLE_INST_COUNT=0",
    "GR_GL_CUSTOM_SETUP_HEADER=\"GrGLConfig_chrome.h\"",
  ]

  if (skia_support_gpu) {
    include_dirs += [
      "//third_party/skia/include/gpu",
      "//third_party/skia/src/gpu",
    ]
    defines += "SK_SUPPORT_GPU=1"
  } else {
    defines = "SK_SUPPORT_GPU=0"
  }

  # For POSIX platforms, prefer the Mutex implementation provided by Skia
  # since it does not generate static initializers.
  if (is_posix) {
    defines += "SK_USE_POSIX_THREADS"
  }

  if (is_android) {
    defines += [
      "SK_BUILD_FOR_ANDROID",
      "USE_CHROMIUM_SKIA",
    ]
  }
}

skia_chrome_sources = [
  "ext/analysis_canvas.cc",
  "ext/analysis_canvas.h",
  "ext/benchmarking_canvas.cc",
  "ext/benchmarking_canvas.h",
  "ext/bitmap_platform_device.h",
  "ext/bitmap_platform_device_android.cc",
  "ext/bitmap_platform_device_android.h",
  "ext/bitmap_platform_device_linux.cc",
  "ext/bitmap_platform_device_linux.h",
  "ext/bitmap_platform_device_mac.cc",
  "ext/bitmap_platform_device_mac.h",
  "ext/bitmap_platform_device_win.cc",
  "ext/bitmap_platform_device_win.h",
  "ext/convolver.cc",
  "ext/convolver.h",
  "ext/google_logging.cc",
  "ext/image_operations.cc",
  "ext/image_operations.h",
  "ext/lazy_pixel_ref.cc",
  "ext/lazy_pixel_ref.h",
  "ext/lazy_pixel_ref_utils.cc",
  "ext/lazy_pixel_ref_utils.h",
  "ext/SkThread_chrome.cc",
  "ext/opacity_draw_filter.cc",
  "ext/opacity_draw_filter.h",
  "ext/paint_simplifier.cc",
  "ext/paint_simplifier.h",
  "ext/platform_canvas.cc",
  "ext/platform_canvas.h",
  "ext/platform_device.cc",
  "ext/platform_device.h",
  "ext/platform_device_linux.cc",
  "ext/platform_device_mac.cc",
  "ext/platform_device_win.cc",
  "ext/recursive_gaussian_convolution.cc",
  "ext/recursive_gaussian_convolution.h",
  "ext/refptr.h",
  "ext/SkDiscardableMemory_chrome.h",
  "ext/SkDiscardableMemory_chrome.cc",
  "ext/SkMemory_new_handler.cpp",
  "ext/skia_trace_shim.h",
  "ext/skia_utils_base.cc",
  "ext/skia_utils_base.h",
  "ext/skia_utils_ios.mm",
  "ext/skia_utils_ios.h",
  "ext/skia_utils_mac.mm",
  "ext/skia_utils_mac.h",
  "ext/skia_utils_win.cc",
  "ext/skia_utils_win.h",
  "ext/vector_canvas.cc",
  "ext/vector_canvas.h",
  "ext/vector_platform_device_emf_win.cc",
  "ext/vector_platform_device_emf_win.h",
  "ext/vector_platform_device_skia.cc",
  "ext/vector_platform_device_skia.h",
]
if (is_posix) {
  skia_chrome_sources -= "ext/SkThread_chrome.cc"
}
if (is_ios) {
  skia_chrome_sources -= "ext/vector_platform_device_skia.cc"
}
if (is_win) {
  skia_chrome_sources -= "ext/SkThread_chrome.cc"
}
if (is_android && !enable_printing) {
  skia_chrome_sources -= [
    "ext/skia_utils_base.cc",
    "ext/vector_platform_device_skia.cc"
  ]
}

# Internal-facing config for Skia library code.
config("skia_library_config") {
  defines = [
    #skia_export_defines ???) TODO

    # skia uses static initializers to initialize the serialization logic
    # of its "pictures" library. This is currently not used in chrome; if
    # it ever gets used the processes that use it need to call
    # SkGraphics::Init().
    "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0",

    # Disable this check because it is too strict for some Chromium-specific
    # subclasses of SkPixelRef. See bug: crbug.com/171776.
    "SK_DISABLE_PIXELREF_LOCKCOUNT_BALANCE_CHECK",

    "IGNORE_ROT_AA_RECT_OPT",

    # Forces Skia not to use typographic metrics with GDI.
    "SK_GDI_ALWAYS_USE_TEXTMETRICS_FOR_FONT_METRICS",
  ]

  # Settings for text blitting, chosen to approximate the system browser.
  if (is_linux) {
    defines += [
      "SK_GAMMA_EXPONENT=1.2",
      "SK_GAMMA_CONTRAST=0.2",
    ]
  } else if (is_android) {
    defines += [
      "SK_GAMMA_APPLY_TO_A8",
      "SK_GAMMA_EXPONENT=1.4",
      "SK_GAMMA_CONTRAST=0.0",
    ]
  } else if (is_win) {
    defines += [
      "SK_GAMMA_SRGB",
      "SK_GAMMA_CONTRAST=0.5",
    ]
  } else if (is_mac) {
    defines += [
      "SK_GAMMA_SRGB",
      "SK_GAMMA_CONTRAST=0.0",
    ]
  }

  if (is_android) {
    defines += [
      # Android devices are typically more memory constrained, so default to a
      # smaller glyph cache (it may be overriden at runtime when the renderer
      # starts up, depending on the actual device memory).
      "SK_DEFAULT_FONT_CACHE_LIMIT=1048576"  # 1024 * 1024
    ]
  } else {
    defines += "SK_DEFAULT_FONT_CACHE_LIMIT=20971520"  # 20 * 1024 * 1024
  }

  if (is_win) {
    include_dirs = [
      "//third_party/skia/include/utils/win",
      "//third_party/skia/src/utils/win",
    ]

    defines += "SK_FONTHOST_USES_FONTMGR"

    cflags = [
      # TODO(brettw) comment what these are.
      "/wd4244",
      "/wd4267",
      "/wd4341",
      "/wd4345",
      "/wd4390",
      "/wd4554",
      "/wd4748",
      "/wd4800",
    ]
  }
}

skia_library_sources = [
   # This section from core.gypi ------------------------------------------------

  "//third_party/skia/src/core/ARGB32_Clamp_Bilinear_BitmapShader.h",
  "//third_party/skia/src/core/Sk64.cpp",
  "//third_party/skia/src/core/SkAAClip.cpp",
  "//third_party/skia/src/core/SkAnnotation.cpp",
  "//third_party/skia/src/core/SkAdvancedTypefaceMetrics.cpp",
  "//third_party/skia/src/core/SkAlphaRuns.cpp",
  "//third_party/skia/src/core/SkAntiRun.h",
  "//third_party/skia/src/core/SkBBoxHierarchy.cpp",
  "//third_party/skia/src/core/SkBBoxHierarchy.h",
  "//third_party/skia/src/core/SkBBoxRecord.cpp",
  "//third_party/skia/src/core/SkBBoxRecord.h",
  "//third_party/skia/src/core/SkBBoxHierarchyRecord.cpp",
  "//third_party/skia/src/core/SkBBoxHierarchyRecord.h",
  "//third_party/skia/src/core/SkBitmap.cpp",
  "//third_party/skia/src/core/SkBitmapDevice.cpp",
  "//third_party/skia/src/core/SkBitmapFilter.h",
  "//third_party/skia/src/core/SkBitmapFilter.cpp",
  "//third_party/skia/src/core/SkBitmapHeap.cpp",
  "//third_party/skia/src/core/SkBitmapHeap.h",
  "//third_party/skia/src/core/SkBitmapProcShader.cpp",
  "//third_party/skia/src/core/SkBitmapProcShader.h",
  "//third_party/skia/src/core/SkBitmapProcState.cpp",
  "//third_party/skia/src/core/SkBitmapProcState.h",
  "//third_party/skia/src/core/SkBitmapProcState_matrix.h",
  "//third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp",
  "//third_party/skia/src/core/SkBitmapProcState_sample.h",
  "//third_party/skia/src/core/SkBitmapScaler.h",
  "//third_party/skia/src/core/SkBitmapScaler.cpp",
  "//third_party/skia/src/core/SkBitmapShader16BilerpTemplate.h",
  "//third_party/skia/src/core/SkBitmapShaderTemplate.h",
  "//third_party/skia/src/core/SkBitmap_scroll.cpp",
  "//third_party/skia/src/core/SkBlitBWMaskTemplate.h",
  "//third_party/skia/src/core/SkBlitMask_D32.cpp",
  "//third_party/skia/src/core/SkBlitRow_D16.cpp",
  "//third_party/skia/src/core/SkBlitRow_D32.cpp",
  "//third_party/skia/src/core/SkBlitter.h",
  "//third_party/skia/src/core/SkBlitter.cpp",
  "//third_party/skia/src/core/SkBlitter_A1.cpp",
  "//third_party/skia/src/core/SkBlitter_A8.cpp",
  "//third_party/skia/src/core/SkBlitter_ARGB32.cpp",
  "//third_party/skia/src/core/SkBlitter_RGB16.cpp",
  "//third_party/skia/src/core/SkBlitter_Sprite.cpp",
  "//third_party/skia/src/core/SkBuffer.cpp",
  "//third_party/skia/src/core/SkCanvas.cpp",
  "//third_party/skia/src/core/SkChunkAlloc.cpp",
  "//third_party/skia/src/core/SkClipStack.cpp",
  "//third_party/skia/src/core/SkColor.cpp",
  "//third_party/skia/src/core/SkColorFilter.cpp",
  "//third_party/skia/src/core/SkColorTable.cpp",
  "//third_party/skia/src/core/SkComposeShader.cpp",
  "//third_party/skia/src/core/SkConfig8888.cpp",
  "//third_party/skia/src/core/SkConfig8888.h",
  "//third_party/skia/src/core/SkConvolver.cpp",
  "//third_party/skia/src/core/SkConvolver.h",
  "//third_party/skia/src/core/SkCordic.cpp",
  "//third_party/skia/src/core/SkCordic.h",
  "//third_party/skia/src/core/SkCoreBlitters.h",
  "//third_party/skia/src/core/SkCubicClipper.cpp",
  "//third_party/skia/src/core/SkCubicClipper.h",
  "//third_party/skia/src/core/SkData.cpp",
  "//third_party/skia/src/core/SkDataTable.cpp",
  "//third_party/skia/src/core/SkDebug.cpp",
  "//third_party/skia/src/core/SkDeque.cpp",
  "//third_party/skia/src/core/SkDevice.cpp",
  "//third_party/skia/src/core/SkDeviceLooper.cpp",
  "//third_party/skia/src/core/SkDeviceProfile.cpp",
  "//third_party/skia/src/core/SkDither.cpp",
  "//third_party/skia/src/core/SkDraw.cpp",
  "//third_party/skia/src/core/SkDrawLooper.cpp",
  "//third_party/skia/src/core/SkDrawProcs.h",
  "//third_party/skia/src/core/SkEdgeBuilder.cpp",
  "//third_party/skia/src/core/SkEdgeClipper.cpp",
  "//third_party/skia/src/core/SkEdge.cpp",
  "//third_party/skia/src/core/SkEdge.h",
  "//third_party/skia/src/core/SkError.cpp",
  "//third_party/skia/src/core/SkErrorInternals.h",
  "//third_party/skia/src/core/SkFP.h",
  "//third_party/skia/src/core/SkFilterProc.cpp",
  "//third_party/skia/src/core/SkFilterProc.h",
  "//third_party/skia/src/core/SkFilterShader.cpp",
  "//third_party/skia/src/core/SkFlattenable.cpp",
  "//third_party/skia/src/core/SkFlattenableBuffers.cpp",
  "//third_party/skia/src/core/SkFlattenableSerialization.cpp",
  "//third_party/skia/src/core/SkFloat.cpp",
  "//third_party/skia/src/core/SkFloat.h",
  "//third_party/skia/src/core/SkFloatBits.cpp",
  "//third_party/skia/src/core/SkFontHost.cpp",
  "//third_party/skia/src/core/SkFontDescriptor.cpp",
  "//third_party/skia/src/core/SkFontDescriptor.h",
  "//third_party/skia/src/core/SkFontStream.cpp",
  "//third_party/skia/src/core/SkFontStream.h",
  "//third_party/skia/src/core/SkGeometry.cpp",
  "//third_party/skia/src/core/SkGlyphCache.cpp",
  "//third_party/skia/src/core/SkGlyphCache.h",
  "//third_party/skia/src/core/SkGlyphCache_Globals.h",
  "//third_party/skia/src/core/SkGraphics.cpp",
  "//third_party/skia/src/core/SkInstCnt.cpp",
  "//third_party/skia/src/core/SkImageFilter.cpp",
  "//third_party/skia/src/core/SkImageFilterUtils.cpp",
  "//third_party/skia/src/core/SkLineClipper.cpp",
  "//third_party/skia/src/core/SkMallocPixelRef.cpp",
  "//third_party/skia/src/core/SkMask.cpp",
  "//third_party/skia/src/core/SkMaskFilter.cpp",
  "//third_party/skia/src/core/SkMaskGamma.cpp",
  "//third_party/skia/src/core/SkMaskGamma.h",
  "//third_party/skia/src/core/SkMath.cpp",
  "//third_party/skia/src/core/SkMatrix.cpp",
  "//third_party/skia/src/core/SkMetaData.cpp",
  "//third_party/skia/src/core/SkMipMap.cpp",
  "//third_party/skia/src/core/SkOrderedReadBuffer.cpp",
  "//third_party/skia/src/core/SkOrderedWriteBuffer.cpp",
  "//third_party/skia/src/core/SkPackBits.cpp",
  "//third_party/skia/src/core/SkPaint.cpp",
  "//third_party/skia/src/core/SkPaintOptionsAndroid.cpp",
  "//third_party/skia/src/core/SkPaintPriv.cpp",
  "//third_party/skia/src/core/SkPaintPriv.h",
  "//third_party/skia/src/core/SkPath.cpp",
  "//third_party/skia/src/core/SkPathEffect.cpp",
  "//third_party/skia/src/core/SkPathHeap.cpp",
  "//third_party/skia/src/core/SkPathHeap.h",
  "//third_party/skia/src/core/SkPathMeasure.cpp",
  "//third_party/skia/src/core/SkPathRef.cpp",
  "//third_party/skia/src/core/SkPicture.cpp",
  "//third_party/skia/src/core/SkPictureFlat.cpp",
  "//third_party/skia/src/core/SkPictureFlat.h",
  "//third_party/skia/src/core/SkPicturePlayback.cpp",
  "//third_party/skia/src/core/SkPicturePlayback.h",
  "//third_party/skia/src/core/SkPictureRecord.cpp",
  "//third_party/skia/src/core/SkPictureRecord.h",
  "//third_party/skia/src/core/SkPictureStateTree.cpp",
  "//third_party/skia/src/core/SkPictureStateTree.h",
  "//third_party/skia/src/core/SkPixelRef.cpp",
  "//third_party/skia/src/core/SkPoint.cpp",
  "//third_party/skia/src/core/SkProcSpriteBlitter.cpp",
  "//third_party/skia/src/core/SkPtrRecorder.cpp",
  "//third_party/skia/src/core/SkQuadClipper.cpp",
  "//third_party/skia/src/core/SkQuadClipper.h",
  "//third_party/skia/src/core/SkRasterClip.cpp",
  "//third_party/skia/src/core/SkRasterizer.cpp",
  "//third_party/skia/src/core/SkRect.cpp",
  "//third_party/skia/src/core/SkRefCnt.cpp",
  "//third_party/skia/src/core/SkRefDict.cpp",
  "//third_party/skia/src/core/SkRegion.cpp",
  "//third_party/skia/src/core/SkRegionPriv.h",
  "//third_party/skia/src/core/SkRegion_path.cpp",
  "//third_party/skia/src/core/SkRRect.cpp",
  "//third_party/skia/src/core/SkRTree.h",
  "//third_party/skia/src/core/SkRTree.cpp",
  "//third_party/skia/src/core/SkScaledImageCache.cpp",
  "//third_party/skia/src/core/SkScalar.cpp",
  "//third_party/skia/src/core/SkScalerContext.cpp",
  "//third_party/skia/src/core/SkScalerContext.h",
  "//third_party/skia/src/core/SkScan.cpp",
  "//third_party/skia/src/core/SkScan.h",
  "//third_party/skia/src/core/SkScanPriv.h",
  "//third_party/skia/src/core/SkScan_AntiPath.cpp",
  "//third_party/skia/src/core/SkScan_Antihair.cpp",
  "//third_party/skia/src/core/SkScan_Hairline.cpp",
  "//third_party/skia/src/core/SkScan_Path.cpp",
  "//third_party/skia/src/core/SkShader.cpp",
  "//third_party/skia/src/core/SkSpriteBlitter_ARGB32.cpp",
  "//third_party/skia/src/core/SkSpriteBlitter_RGB16.cpp",
  "//third_party/skia/src/core/SkSinTable.h",
  "//third_party/skia/src/core/SkSpriteBlitter.h",
  "//third_party/skia/src/core/SkSpriteBlitterTemplate.h",
  "//third_party/skia/src/core/SkStream.cpp",
  "//third_party/skia/src/core/SkString.cpp",
  "//third_party/skia/src/core/SkStringUtils.cpp",
  "//third_party/skia/src/core/SkStroke.h",
  "//third_party/skia/src/core/SkStroke.cpp",
  "//third_party/skia/src/core/SkStrokeRec.cpp",
  "//third_party/skia/src/core/SkStrokerPriv.cpp",
  "//third_party/skia/src/core/SkStrokerPriv.h",
  "//third_party/skia/src/core/SkTemplatesPriv.h",
  "//third_party/skia/src/core/SkTextFormatParams.h",
  "//third_party/skia/src/core/SkTileGrid.cpp",
  "//third_party/skia/src/core/SkTileGrid.h",
  "//third_party/skia/src/core/SkTileGridPicture.cpp",
  "//third_party/skia/src/core/SkTLList.h",
  "//third_party/skia/src/core/SkTLS.cpp",
  "//third_party/skia/src/core/SkTSearch.cpp",
  "//third_party/skia/src/core/SkTSort.h",
  "//third_party/skia/src/core/SkTypeface.cpp",
  "//third_party/skia/src/core/SkTypefaceCache.cpp",
  "//third_party/skia/src/core/SkTypefaceCache.h",
  "//third_party/skia/src/core/SkUnPreMultiply.cpp",
  "//third_party/skia/src/core/SkUtils.cpp",
  "//third_party/skia/src/core/SkWriter32.cpp",
  "//third_party/skia/src/core/SkXfermode.cpp",

  "//third_party/skia/src/doc/SkDocument.cpp",

  "//third_party/skia/src/image/SkDataPixelRef.cpp",
  "//third_party/skia/src/image/SkImage.cpp",
  "//third_party/skia/src/image/SkImagePriv.cpp",
  "//third_party/skia/src/image/SkImage_Codec.cpp",
#        "//third_party/skia/src/image/SkImage_Gpu.cpp",
  "//third_party/skia/src/image/SkImage_Picture.cpp",
  "//third_party/skia/src/image/SkImage_Raster.cpp",
  "//third_party/skia/src/image/SkSurface.cpp",
#        "//third_party/skia/src/image/SkSurface_Gpu.cpp",
  "//third_party/skia/src/image/SkSurface_Picture.cpp",
  "//third_party/skia/src/image/SkSurface_Raster.cpp",

  "//third_party/skia/src/pipe/SkGPipeRead.cpp",
  "//third_party/skia/src/pipe/SkGPipeWrite.cpp",

  "//third_party/skia/include/core/Sk64.h",
  "//third_party/skia/include/core/SkAdvancedTypefaceMetrics.h",
  "//third_party/skia/include/core/SkAlpha.h",
  "//third_party/skia/include/core/SkBitmap.h",
  "//third_party/skia/include/core/SkBitmapDevice.h",
  "//third_party/skia/include/core/SkBlitRow.h",
  "//third_party/skia/include/core/SkBounder.h",
  "//third_party/skia/include/core/SkCanvas.h",
  "//third_party/skia/include/core/SkChecksum.h",
  "//third_party/skia/include/core/SkChunkAlloc.h",
  "//third_party/skia/include/core/SkClipStack.h",
  "//third_party/skia/include/core/SkColor.h",
  "//third_party/skia/include/core/SkColorFilter.h",
  "//third_party/skia/include/core/SkColorPriv.h",
  "//third_party/skia/include/core/SkColorShader.h",
  "//third_party/skia/include/core/SkComposeShader.h",
  "//third_party/skia/include/core/SkData.h",
  "//third_party/skia/include/core/SkDeque.h",
  "//third_party/skia/include/core/SkDevice.h",
  "//third_party/skia/include/core/SkDeviceProperties.h",
  "//third_party/skia/include/core/SkDither.h",
  "//third_party/skia/include/core/SkDraw.h",
  "//third_party/skia/include/core/SkDrawFilter.h",
  "//third_party/skia/include/core/SkDrawLooper.h",
  "//third_party/skia/include/core/SkEndian.h",
  "//third_party/skia/include/core/SkError.h",
  "//third_party/skia/include/core/SkFixed.h",
  "//third_party/skia/include/core/SkFlattenable.h",
  "//third_party/skia/include/core/SkFlattenableSerialization.h",
  "//third_party/skia/include/core/SkFloatBits.h",
  "//third_party/skia/include/core/SkFloatingPoint.h",
  "//third_party/skia/include/core/SkFontHost.h",
  "//third_party/skia/include/core/SkGeometry.h",
  "//third_party/skia/include/core/SkGraphics.h",
  "//third_party/skia/include/core/SkImageDecoder.h",
  "//third_party/skia/include/core/SkImageEncoder.h",
  "//third_party/skia/include/core/SkImageFilter.h",
  "//third_party/skia/include/core/SkImageFilterUtils.h",
  "//third_party/skia/include/core/SkInstCnt.h",
  "//third_party/skia/include/core/SkMallocPixelRef.h",
  "//third_party/skia/include/core/SkMask.h",
  "//third_party/skia/include/core/SkMaskFilter.h",
  "//third_party/skia/include/core/SkMath.h",
  "//third_party/skia/include/core/SkMatrix.h",
  "//third_party/skia/include/core/SkMetaData.h",
  "//third_party/skia/include/core/SkOSFile.h",
  "//third_party/skia/include/core/SkPackBits.h",
  "//third_party/skia/include/core/SkPaint.h",
  "//third_party/skia/include/core/SkPath.h",
  "//third_party/skia/include/core/SkPathEffect.h",
  "//third_party/skia/include/core/SkPathMeasure.h",
  "//third_party/skia/include/core/SkPathRef.h",
  "//third_party/skia/include/core/SkPicture.h",
  "//third_party/skia/include/core/SkPixelRef.h",
  "//third_party/skia/include/core/SkPoint.h",
  "//third_party/skia/include/core/SkRasterizer.h",
  "//third_party/skia/include/core/SkReader32.h",
  "//third_party/skia/include/core/SkRect.h",
  "//third_party/skia/include/core/SkRefCnt.h",
  "//third_party/skia/include/core/SkRegion.h",
  "//third_party/skia/include/core/SkRRect.h",
  "//third_party/skia/include/core/SkScalar.h",
  "//third_party/skia/include/core/SkScalarCompare.h",
  "//third_party/skia/include/core/SkShader.h",
  "//third_party/skia/include/core/SkStream.h",
  "//third_party/skia/include/core/SkString.h",
  "//third_party/skia/include/core/SkStringUtils.h",
  "//third_party/skia/include/core/SkStrokeRec.h",
  "//third_party/skia/include/core/SkTArray.h",
  "//third_party/skia/include/core/SkTDArray.h",
  "//third_party/skia/include/core/SkTDStack.h",
  "//third_party/skia/include/core/SkTDict.h",
  "//third_party/skia/include/core/SkTInternalLList.h",
  "//third_party/skia/include/core/SkTileGridPicture.h",
  "//third_party/skia/include/core/SkTRegistry.h",
  "//third_party/skia/include/core/SkTSearch.h",
  "//third_party/skia/include/core/SkTemplates.h",
  "//third_party/skia/include/core/SkThread.h",
  "//third_party/skia/include/core/SkThread_platform.h",
  "//third_party/skia/include/core/SkTime.h",
  "//third_party/skia/include/core/SkTLazy.h",
  "//third_party/skia/include/core/SkTrace.h",
  "//third_party/skia/include/core/SkTypeface.h",
  "//third_party/skia/include/core/SkTypes.h",
  "//third_party/skia/include/core/SkUnPreMultiply.h",
  "//third_party/skia/include/core/SkUnitMapper.h",
  "//third_party/skia/include/core/SkUtils.h",
  "//third_party/skia/include/core/SkWeakRefCnt.h",
  "//third_party/skia/include/core/SkWriter32.h",
  "//third_party/skia/include/core/SkXfermode.h",

  # Lazy decoding:
  "//third_party/skia/include/lazy/SkBitmapFactory.h",
  "//third_party/skia/include/lazy/SkImageCache.h",
  "//third_party/skia/include/lazy/SkLruImageCache.h",
  "//third_party/skia/include/lazy/SkPurgeableImageCache.h",

  "//third_party/skia/src/lazy/SkBitmapFactory.cpp",
  "//third_party/skia/src/lazy/SkLazyPixelRef.h",
  "//third_party/skia/src/lazy/SkLazyPixelRef.cpp",
  "//third_party/skia/src/lazy/SkLruImageCache.cpp",
  "//third_party/skia/src/lazy/SkPurgeableMemoryBlock.h",
  "//third_party/skia/src/lazy/SkPurgeableMemoryBlock_common.cpp",
  "//third_party/skia/src/lazy/SkPurgeableImageCache.cpp",

  # Path ops
  "//third_party/skia/include/pathops/SkPathOps.h",

  "//third_party/skia/src/pathops/SkAddIntersections.cpp",
  "//third_party/skia/src/pathops/SkDCubicIntersection.cpp",
  "//third_party/skia/src/pathops/SkDCubicLineIntersection.cpp",
  "//third_party/skia/src/pathops/SkDCubicToQuads.cpp",
  "//third_party/skia/src/pathops/SkDLineIntersection.cpp",
  "//third_party/skia/src/pathops/SkDQuadImplicit.cpp",
  "//third_party/skia/src/pathops/SkDQuadIntersection.cpp",
  "//third_party/skia/src/pathops/SkDQuadLineIntersection.cpp",
  "//third_party/skia/src/pathops/SkIntersections.cpp",
  "//third_party/skia/src/pathops/SkOpAngle.cpp",
  "//third_party/skia/src/pathops/SkOpContour.cpp",
  "//third_party/skia/src/pathops/SkOpEdgeBuilder.cpp",
  "//third_party/skia/src/pathops/SkOpSegment.cpp",
  "//third_party/skia/src/pathops/SkPathOpsBounds.cpp",
  "//third_party/skia/src/pathops/SkPathOpsCommon.cpp",
  "//third_party/skia/src/pathops/SkPathOpsCubic.cpp",
  "//third_party/skia/src/pathops/SkPathOpsDebug.cpp",
  "//third_party/skia/src/pathops/SkPathOpsLine.cpp",
  "//third_party/skia/src/pathops/SkPathOpsOp.cpp",
  "//third_party/skia/src/pathops/SkPathOpsPoint.cpp",
  "//third_party/skia/src/pathops/SkPathOpsQuad.cpp",
  "//third_party/skia/src/pathops/SkPathOpsRect.cpp",
  "//third_party/skia/src/pathops/SkPathOpsSimplify.cpp",
  "//third_party/skia/src/pathops/SkPathOpsTriangle.cpp",
  "//third_party/skia/src/pathops/SkPathOpsTypes.cpp",
  "//third_party/skia/src/pathops/SkPathWriter.cpp",
  "//third_party/skia/src/pathops/SkQuarticRoot.cpp",
  "//third_party/skia/src/pathops/SkReduceOrder.cpp",
  "//third_party/skia/src/pathops/SkAddIntersections.h",
  "//third_party/skia/src/pathops/SkDQuadImplicit.h",
  "//third_party/skia/src/pathops/SkIntersectionHelper.h",
  "//third_party/skia/src/pathops/SkIntersections.h",
  "//third_party/skia/src/pathops/SkLineParameters.h",
  "//third_party/skia/src/pathops/SkOpAngle.h",
  "//third_party/skia/src/pathops/SkOpContour.h",
  "//third_party/skia/src/pathops/SkOpEdgeBuilder.h",
  "//third_party/skia/src/pathops/SkOpSegment.h",
  "//third_party/skia/src/pathops/SkOpSpan.h",
  "//third_party/skia/src/pathops/SkPathOpsBounds.h",
  "//third_party/skia/src/pathops/SkPathOpsCommon.h",
  "//third_party/skia/src/pathops/SkPathOpsCubic.h",
  "//third_party/skia/src/pathops/SkPathOpsCurve.h",
  "//third_party/skia/src/pathops/SkPathOpsDebug.h",
  "//third_party/skia/src/pathops/SkPathOpsLine.h",
  "//third_party/skia/src/pathops/SkPathOpsPoint.h",
  "//third_party/skia/src/pathops/SkPathOpsQuad.h",
  "//third_party/skia/src/pathops/SkPathOpsRect.h",
  "//third_party/skia/src/pathops/SkPathOpsTriangle.h",
  "//third_party/skia/src/pathops/SkPathOpsTypes.h",
  "//third_party/skia/src/pathops/SkPathWriter.h",
  "//third_party/skia/src/pathops/SkQuarticRoot.h",
  "//third_party/skia/src/pathops/SkReduceOrder.h",

  # This section from skia_effects.gypi ----------------------------------------

  "//third_party/skia/src/effects/Sk1DPathEffect.cpp",
  "//third_party/skia/src/effects/Sk2DPathEffect.cpp",
  "//third_party/skia/src/effects/SkArithmeticMode.cpp",
  "//third_party/skia/src/effects/SkAvoidXfermode.cpp",
  "//third_party/skia/src/effects/SkBicubicImageFilter.cpp",
  "//third_party/skia/src/effects/SkBitmapAlphaThresholdShader.cpp",
  "//third_party/skia/src/effects/SkBitmapSource.cpp",
  "//third_party/skia/src/effects/SkBlurDrawLooper.cpp",
  "//third_party/skia/src/effects/SkBlurMask.cpp",
  "//third_party/skia/src/effects/SkBlurMask.h",
  "//third_party/skia/src/effects/SkBlurImageFilter.cpp",
  "//third_party/skia/src/effects/SkBlurMaskFilter.cpp",
  "//third_party/skia/src/effects/SkColorFilters.cpp",
  "//third_party/skia/src/effects/SkColorFilterImageFilter.cpp",
  "//third_party/skia/src/effects/SkColorMatrix.cpp",
  "//third_party/skia/src/effects/SkColorMatrixFilter.cpp",
  "//third_party/skia/src/effects/SkComposeImageFilter.cpp",
  "//third_party/skia/src/effects/SkCornerPathEffect.cpp",
  "//third_party/skia/src/effects/SkDashPathEffect.cpp",
  "//third_party/skia/src/effects/SkDiscretePathEffect.cpp",
  "//third_party/skia/src/effects/SkDisplacementMapEffect.cpp",
  "//third_party/skia/src/effects/SkDropShadowImageFilter.cpp",
  "//third_party/skia/src/effects/SkEmbossMask.cpp",
  "//third_party/skia/src/effects/SkEmbossMask.h",
  "//third_party/skia/src/effects/SkEmbossMask_Table.h",
  "//third_party/skia/src/effects/SkEmbossMaskFilter.cpp",
  "//third_party/skia/src/effects/SkGpuBlurUtils.h",
  "//third_party/skia/src/effects/SkGpuBlurUtils.cpp",
  "//third_party/skia/src/effects/SkKernel33MaskFilter.cpp",
  "//third_party/skia/src/effects/SkLayerDrawLooper.cpp",
  "//third_party/skia/src/effects/SkLayerRasterizer.cpp",
  "//third_party/skia/src/effects/SkLerpXfermode.cpp",
  "//third_party/skia/src/effects/SkLightingImageFilter.cpp",
  "//third_party/skia/src/effects/SkLumaXfermode.cpp",
  "//third_party/skia/src/effects/SkMagnifierImageFilter.cpp",
  "//third_party/skia/src/effects/SkMatrixConvolutionImageFilter.cpp",
  "//third_party/skia/src/effects/SkMergeImageFilter.cpp",
  "//third_party/skia/src/effects/SkMorphologyImageFilter.cpp",
  "//third_party/skia/src/effects/SkOffsetImageFilter.cpp",
  "//third_party/skia/src/effects/SkPaintFlagsDrawFilter.cpp",
  "//third_party/skia/src/effects/SkPerlinNoiseShader.cpp",
  "//third_party/skia/src/effects/SkPixelXorXfermode.cpp",
  "//third_party/skia/src/effects/SkPorterDuff.cpp",
  "//third_party/skia/src/effects/SkRectShaderImageFilter.cpp",
  "//third_party/skia/src/effects/SkStippleMaskFilter.cpp",
  "//third_party/skia/src/effects/SkTableColorFilter.cpp",
  "//third_party/skia/src/effects/SkTableMaskFilter.cpp",
  "//third_party/skia/src/effects/SkTestImageFilters.cpp",
  "//third_party/skia/src/effects/SkTileImageFilter.cpp",
  "//third_party/skia/src/effects/SkTransparentShader.cpp",
  "//third_party/skia/src/effects/SkXfermodeImageFilter.cpp",

  "//third_party/skia/src/effects/gradients/SkBitmapCache.cpp",
  "//third_party/skia/src/effects/gradients/SkBitmapCache.h",
  "//third_party/skia/src/effects/gradients/SkClampRange.cpp",
  "//third_party/skia/src/effects/gradients/SkClampRange.h",
  "//third_party/skia/src/effects/gradients/SkRadialGradient_Table.h",
  "//third_party/skia/src/effects/gradients/SkGradientShader.cpp",
  "//third_party/skia/src/effects/gradients/SkGradientShaderPriv.h",
  "//third_party/skia/src/effects/gradients/SkLinearGradient.cpp",
  "//third_party/skia/src/effects/gradients/SkLinearGradient.h",
  "//third_party/skia/src/effects/gradients/SkRadialGradient.cpp",
  "//third_party/skia/src/effects/gradients/SkRadialGradient.h",
  "//third_party/skia/src/effects/gradients/SkTwoPointRadialGradient.cpp",
  "//third_party/skia/src/effects/gradients/SkTwoPointRadialGradient.h",
  "//third_party/skia/src/effects/gradients/SkTwoPointConicalGradient.cpp",
  "//third_party/skia/src/effects/gradients/SkTwoPointConicalGradient.h",
  "//third_party/skia/src/effects/gradients/SkSweepGradient.cpp",
  "//third_party/skia/src/effects/gradients/SkSweepGradient.h",

  "//third_party/skia/include/effects/Sk1DPathEffect.h",
  "//third_party/skia/include/effects/Sk2DPathEffect.h",
  "//third_party/skia/include/effects/SkXfermodeImageFilter.h",
  "//third_party/skia/include/effects/SkArithmeticMode.h",
  "//third_party/skia/include/effects/SkAvoidXfermode.h",
  "//third_party/skia/include/effects/SkBitmapAlphaThresholdShader.h",
  "//third_party/skia/include/effects/SkBitmapSource.h",
  "//third_party/skia/include/effects/SkBlurDrawLooper.h",
  "//third_party/skia/include/effects/SkBlurImageFilter.h",
  "//third_party/skia/include/effects/SkBlurMaskFilter.h",
  "//third_party/skia/include/effects/SkColorMatrix.h",
  "//third_party/skia/include/effects/SkColorMatrixFilter.h",
  "//third_party/skia/include/effects/SkColorFilterImageFilter.h",
  "//third_party/skia/include/effects/SkCornerPathEffect.h",
  "//third_party/skia/include/effects/SkDashPathEffect.h",
  "//third_party/skia/include/effects/SkDiscretePathEffect.h",
  "//third_party/skia/include/effects/SkDisplacementMapEffect.h",
  "//third_party/skia/include/effects/SkDrawExtraPathEffect.h",
  "//third_party/skia/include/effects/SkDropShadowImageFilter.h",
  "//third_party/skia/include/effects/SkEmbossMaskFilter.h",
  "//third_party/skia/include/effects/SkGradientShader.h",
  "//third_party/skia/include/effects/SkKernel33MaskFilter.h",
  "//third_party/skia/include/effects/SkLayerDrawLooper.h",
  "//third_party/skia/include/effects/SkLayerRasterizer.h",
  "//third_party/skia/include/effects/SkLerpXfermode.h",
  "//third_party/skia/include/effects/SkLightingImageFilter.h",
  "//third_party/skia/include/effects/SkLumaXfermode.h",
  "//third_party/skia/include/effects/SkOffsetImageFilter.h",
  "//third_party/skia/include/effects/SkMorphologyImageFilter.h",
  "//third_party/skia/include/effects/SkPaintFlagsDrawFilter.h",
  "//third_party/skia/include/effects/SkPerlinNoiseShader.h",
  "//third_party/skia/include/effects/SkPixelXorXfermode.h",
  "//third_party/skia/include/effects/SkPorterDuff.h",
  "//third_party/skia/include/effects/SkRectShaderImageFilter.h",
  "//third_party/skia/include/effects/SkStippleMaskFilter.h",
  "//third_party/skia/include/effects/SkTableColorFilter.h",
  "//third_party/skia/include/effects/SkTableMaskFilter.h",
  "//third_party/skia/include/effects/SkTileImageFilter.h",
  "//third_party/skia/include/effects/SkTransparentShader.h",
  "//third_party/skia/include/effects/SkMagnifierImageFilter.h",

  # This section from pdf.gypi -------------------------------------------------

  "//third_party/skia/include/pdf/SkPDFDevice.h",
  "//third_party/skia/include/pdf/SkPDFDocument.h",

  "//third_party/skia/src/pdf/SkPDFCatalog.cpp",
  "//third_party/skia/src/pdf/SkPDFCatalog.h",
  "//third_party/skia/src/pdf/SkPDFDevice.cpp",
  "//third_party/skia/src/pdf/SkPDFDocument.cpp",
  "//third_party/skia/src/pdf/SkPDFFont.cpp",
  "//third_party/skia/src/pdf/SkPDFFont.h",
  "//third_party/skia/src/pdf/SkPDFFontImpl.h",
  "//third_party/skia/src/pdf/SkPDFFormXObject.cpp",
  "//third_party/skia/src/pdf/SkPDFFormXObject.h",
  "//third_party/skia/src/pdf/SkPDFGraphicState.cpp",
  "//third_party/skia/src/pdf/SkPDFGraphicState.h",
  "//third_party/skia/src/pdf/SkPDFImage.cpp",
  "//third_party/skia/src/pdf/SkPDFImage.h",
  "//third_party/skia/src/pdf/SkPDFPage.cpp",
  "//third_party/skia/src/pdf/SkPDFPage.h",
  "//third_party/skia/src/pdf/SkPDFResourceDict.cpp",
  "//third_party/skia/src/pdf/SkPDFResourceDict.h",
  "//third_party/skia/src/pdf/SkPDFShader.cpp",
  "//third_party/skia/src/pdf/SkPDFShader.h",
  "//third_party/skia/src/pdf/SkPDFStream.cpp",
  "//third_party/skia/src/pdf/SkPDFStream.h",
  "//third_party/skia/src/pdf/SkPDFTypes.cpp",
  "//third_party/skia/src/pdf/SkPDFTypes.h",
  "//third_party/skia/src/pdf/SkPDFUtils.cpp",
  "//third_party/skia/src/pdf/SkPDFUtils.h",
  "//third_party/skia/src/pdf/SkTSet.h",


  # This section from skia_library.gypi ----------------------------------------

  # this should likely be moved into src/utils in skia
  "//third_party/skia/src/core/SkFlate.cpp",

  "//third_party/skia/include/images/SkImageRef_GlobalPool.h",
  "//third_party/skia/include/images/SkImageRef.h",
  "//third_party/skia/include/images/SkMovie.h",
  "//third_party/skia/include/images/SkPageFlipper.h",
  "//third_party/skia/include/ports/SkTypeface_win.h",
  "//third_party/skia/include/utils/mac/SkCGUtils.h",
  "//third_party/skia/include/utils/SkDeferredCanvas.h",
  "//third_party/skia/include/utils/SkMatrix44.h",
  "//third_party/skia/include/utils/SkNullCanvas.h",
  "//third_party/skia/include/utils/SkNWayCanvas.h",
  "//third_party/skia/include/utils/SkPictureUtils.h",
  "//third_party/skia/include/utils/SkProxyCanvas.h",
  "//third_party/skia/include/utils/SkRTConf.h",
  "//third_party/skia/src/fonts/SkFontMgr_fontconfig.cpp",
  "//third_party/skia/src/images/SkScaledBitmapSampler.cpp",
  "//third_party/skia/src/images/SkScaledBitmapSampler.h",
  "//third_party/skia/src/opts/opts_check_SSE2.cpp",
  "//third_party/skia/src/ports/SkFontConfigInterface_android.cpp",
  "//third_party/skia/src/ports/SkFontConfigInterface_direct.cpp",
  "//third_party/skia/src/ports/SkFontConfigParser_android.cpp",
  "//third_party/skia/src/ports/SkFontHost_fontconfig.cpp",
  "//third_party/skia/src/ports/SkFontHost_FreeType_common.cpp",
  "//third_party/skia/src/ports/SkFontHost_FreeType_common.h",
  "//third_party/skia/src/ports/SkFontHost_FreeType.cpp",
  "//third_party/skia/src/ports/SkFontHost_mac.cpp",
  "//third_party/skia/src/ports/SkFontHost_win.cpp",
  "//third_party/skia/src/ports/SkFontHost_win_dw.cpp",
  "//third_party/skia/src/ports/SkFontMgr_default_gdi.cpp",
  "//third_party/skia/src/ports/SkGlobalInitialization_chromium.cpp",
  "//third_party/skia/src/ports/SkImageDecoder_empty.cpp",
  "//third_party/skia/src/ports/SkOSFile_posix.cpp",
  "//third_party/skia/src/ports/SkOSFile_stdio.cpp",
  "//third_party/skia/src/ports/SkOSFile_win.cpp",
  "//third_party/skia/src/ports/SkPurgeableMemoryBlock_none.cpp",
  "//third_party/skia/src/ports/SkThread_pthread.cpp",
  "//third_party/skia/src/ports/SkThread_win.cpp",
  "//third_party/skia/src/ports/SkTime_Unix.cpp",
  "//third_party/skia/src/ports/SkTLS_pthread.cpp",
  "//third_party/skia/src/ports/SkTLS_win.cpp",
  "//third_party/skia/src/sfnt/SkOTTable_name.cpp",
  "//third_party/skia/src/sfnt/SkOTTable_name.h",
  "//third_party/skia/src/sfnt/SkOTUtils.cpp",
  "//third_party/skia/src/sfnt/SkOTUtils.h",
  "//third_party/skia/src/utils/debugger/SkDebugCanvas.cpp",
  "//third_party/skia/src/utils/debugger/SkDebugCanvas.h",
  "//third_party/skia/src/utils/debugger/SkDrawCommand.cpp",
  "//third_party/skia/src/utils/debugger/SkDrawCommand.h",
  "//third_party/skia/src/utils/debugger/SkObjectParser.cpp",
  "//third_party/skia/src/utils/debugger/SkObjectParser.h",
  "//third_party/skia/src/utils/mac/SkCreateCGImageRef.cpp",
  "//third_party/skia/src/utils/SkBase64.cpp",
  "//third_party/skia/src/utils/SkBase64.h",
  "//third_party/skia/src/utils/SkBitSet.cpp",
  "//third_party/skia/src/utils/SkBitSet.h",
  "//third_party/skia/src/utils/SkDeferredCanvas.cpp",
  "//third_party/skia/src/utils/SkMatrix44.cpp",
  "//third_party/skia/src/utils/SkNullCanvas.cpp",
  "//third_party/skia/src/utils/SkNWayCanvas.cpp",
  "//third_party/skia/src/utils/SkPictureUtils.cpp",
  "//third_party/skia/src/utils/SkProxyCanvas.cpp",
  "//third_party/skia/src/utils/SkRTConf.cpp",
  "//third_party/skia/src/utils/win/SkDWriteFontFileStream.cpp",
  "//third_party/skia/src/utils/win/SkDWriteFontFileStream.h",
  "//third_party/skia/src/utils/win/SkDWriteGeometrySink.cpp",
  "//third_party/skia/src/utils/win/SkDWriteGeometrySink.h",
  "//third_party/skia/src/utils/win/SkHRESULT.cpp",
]
if (skia_support_gpu) {
  skia_library_sources += [
    "//third_party/skia/include/gpu/gl/GrGLConfig.h",
    "//third_party/skia/include/gpu/gl/GrGLExtensions.h",
    "//third_party/skia/include/gpu/gl/GrGLFunctions.h",
    "//third_party/skia/include/gpu/gl/GrGLInterface.h",
    "//third_party/skia/include/gpu/gl/SkGLContextHelper.h",
    "//third_party/skia/include/gpu/GrAARectRenderer.h",
    "//third_party/skia/include/gpu/GrBackendEffectFactory.h",
    "//third_party/skia/include/gpu/GrClipData.h",
    "//third_party/skia/include/gpu/GrColor.h",
    "//third_party/skia/include/gpu/GrContextFactory.h",
    "//third_party/skia/include/gpu/GrConfig.h",
    "//third_party/skia/include/gpu/GrContext.h",
    "//third_party/skia/include/gpu/GrCoordTransform.h",
    "//third_party/skia/include/gpu/GrEffect.h",
    "//third_party/skia/include/gpu/GrEffectStage.h",
    "//third_party/skia/include/gpu/GrEffectUnitTest.h",
    "//third_party/skia/include/gpu/GrFontScaler.h",
    "//third_party/skia/include/gpu/GrGlyph.h",
    "//third_party/skia/include/gpu/GrKey.h",
    "//third_party/skia/include/gpu/GrNoncopyable.h",
    "//third_party/skia/include/gpu/GrOvalRenderer.h",
    "//third_party/skia/include/gpu/GrPaint.h",
    "//third_party/skia/include/gpu/GrPathRendererChain.h",
    "//third_party/skia/include/gpu/GrPoint.h",
    "//third_party/skia/include/gpu/GrRect.h",
    "//third_party/skia/include/gpu/GrRefCnt.h",
    "//third_party/skia/include/gpu/GrRenderTarget.h",
    "//third_party/skia/include/gpu/GrResource.h",
    "//third_party/skia/include/gpu/GrSurface.h",
    "//third_party/skia/include/gpu/GrTBackendEffectFactory.h",
    "//third_party/skia/include/gpu/GrTextContext.h",
    "//third_party/skia/include/gpu/GrTextureAccess.h",
    "//third_party/skia/include/gpu/GrTexture.h",
    "//third_party/skia/include/gpu/GrTypes.h",
    "//third_party/skia/include/gpu/GrUserConfig.h",
    "//third_party/skia/include/gpu/SkGpuDevice.h",
    "//third_party/skia/include/gpu/SkGr.h",
    "//third_party/skia/include/gpu/SkGrPixelRef.h",
    "//third_party/skia/include/gpu/SkGrTexturePixelRef.h",
    "//third_party/skia/src/gpu/effects/Gr1DKernelEffect.h",
    "//third_party/skia/src/gpu/effects/GrBezierEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrBezierEffect.h",
    "//third_party/skia/src/gpu/effects/GrBicubicEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrBicubicEffect.h",
    "//third_party/skia/src/gpu/effects/GrConfigConversionEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrConfigConversionEffect.h",
    "//third_party/skia/src/gpu/effects/GrConvolutionEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrConvolutionEffect.h",
    "//third_party/skia/src/gpu/effects/GrSimpleTextureEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrSimpleTextureEffect.h",
    "//third_party/skia/src/gpu/effects/GrSingleTextureEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrSingleTextureEffect.h",
    "//third_party/skia/src/gpu/effects/GrTextureDomainEffect.cpp",
    "//third_party/skia/src/gpu/effects/GrTextureDomainEffect.h",
    "//third_party/skia/src/gpu/effects/GrTextureStripAtlas.cpp",
    "//third_party/skia/src/gpu/effects/GrTextureStripAtlas.h",
    "//third_party/skia/src/gpu/gl/GrGLBufferImpl.cpp",
    "//third_party/skia/src/gpu/gl/GrGLBufferImpl.h",
    "//third_party/skia/src/gpu/gl/GrGLCaps.cpp",
    "//third_party/skia/src/gpu/gl/GrGLCaps.h",
    "//third_party/skia/src/gpu/gl/GrGLContext.cpp",
    "//third_party/skia/src/gpu/gl/GrGLContext.h",
    "//third_party/skia/src/gpu/gl/GrGLCoordTransform.cpp",
    "//third_party/skia/src/gpu/gl/GrGLCoordTransform.h",
    "//third_party/skia/src/gpu/gl/GrGLCreateNativeInterface_none.cpp",
    "//third_party/skia/src/gpu/gl/GrGLDefaultInterface_none.cpp",
    "//third_party/skia/src/gpu/gl/GrGLDefines.h",
    "//third_party/skia/src/gpu/gl/GrGLEffect.h",
    "//third_party/skia/src/gpu/gl/GrGLExtensions.cpp",
    "//third_party/skia/src/gpu/gl/GrGLIndexBuffer.cpp",
    "//third_party/skia/src/gpu/gl/GrGLIndexBuffer.h",
    "//third_party/skia/src/gpu/gl/GrGLInterface.cpp",
    "//third_party/skia/src/gpu/gl/GrGLIRect.h",
    "//third_party/skia/src/gpu/gl/GrGLNoOpInterface.cpp",
    "//third_party/skia/src/gpu/gl/GrGLNoOpInterface.h",
    "//third_party/skia/src/gpu/gl/GrGLPath.cpp",
    "//third_party/skia/src/gpu/gl/GrGLPath.h",
    "//third_party/skia/src/gpu/gl/GrGLProgram.cpp",
    "//third_party/skia/src/gpu/gl/GrGLProgramDesc.cpp",
    "//third_party/skia/src/gpu/gl/GrGLProgramDesc.h",
    #"//third_party/skia/src/gpu/gl/GrGLProgramEffects.cpp",
    #"//third_party/skia/src/gpu/gl/GrGLProgramEffects.h",
    "//third_party/skia/src/gpu/gl/GrGLProgram.h",
    "//third_party/skia/src/gpu/gl/GrGLRenderTarget.cpp",
    "//third_party/skia/src/gpu/gl/GrGLRenderTarget.h",
    "//third_party/skia/src/gpu/gl/GrGLShaderBuilder.cpp",
    "//third_party/skia/src/gpu/gl/GrGLShaderBuilder.h",
    "//third_party/skia/src/gpu/gl/GrGLShaderVar.h",
    "//third_party/skia/src/gpu/gl/GrGLSL.cpp",
    "//third_party/skia/src/gpu/gl/GrGLSL.h",
    "//third_party/skia/src/gpu/gl/GrGLSL_impl.h",
    "//third_party/skia/src/gpu/gl/GrGLStencilBuffer.cpp",
    "//third_party/skia/src/gpu/gl/GrGLStencilBuffer.h",
    "//third_party/skia/src/gpu/gl/GrGLTexture.cpp",
    "//third_party/skia/src/gpu/gl/GrGLTexture.h",
    "//third_party/skia/src/gpu/gl/GrGLUniformHandle.h",
    "//third_party/skia/src/gpu/gl/GrGLUniformManager.cpp",
    "//third_party/skia/src/gpu/gl/GrGLUniformManager.h",
    "//third_party/skia/src/gpu/gl/GrGLUtil.cpp",
    "//third_party/skia/src/gpu/gl/GrGLUtil.h",
    "//third_party/skia/src/gpu/gl/GrGLVertexArray.cpp",
    "//third_party/skia/src/gpu/gl/GrGLVertexArray.h",
    "//third_party/skia/src/gpu/gl/GrGLVertexBuffer.cpp",
    "//third_party/skia/src/gpu/gl/GrGLVertexBuffer.h",
    "//third_party/skia/src/gpu/gl/GrGpuGL.cpp",
    "//third_party/skia/src/gpu/gl/GrGpuGL.h",
    "//third_party/skia/src/gpu/gl/GrGpuGL_program.cpp",
    "//third_party/skia/src/gpu/gl/SkGLContextHelper.cpp"
    "//third_party/skia/src/gpu/GrAAConvexPathRenderer.cpp",
    "//third_party/skia/src/gpu/GrAAConvexPathRenderer.h",
    "//third_party/skia/src/gpu/GrAAHairLinePathRenderer.cpp",
    "//third_party/skia/src/gpu/GrAAHairLinePathRenderer.h",
    "//third_party/skia/src/gpu/GrAARectRenderer.cpp",
    "//third_party/skia/src/gpu/GrAddPathRenderers_default.cpp",
    "//third_party/skia/src/gpu/GrAllocator.h",
    "//third_party/skia/src/gpu/GrAllocPool.cpp",
    "//third_party/skia/src/gpu/GrAllocPool.h",
    "//third_party/skia/src/gpu/GrAtlas.cpp",
    "//third_party/skia/src/gpu/GrAtlas.h",
    "//third_party/skia/src/gpu/GrBinHashKey.h",
    "//third_party/skia/src/gpu/GrBlend.cpp",
    "//third_party/skia/src/gpu/GrBlend.h",
    "//third_party/skia/src/gpu/GrBufferAllocPool.cpp",
    "//third_party/skia/src/gpu/GrBufferAllocPool.h",
    "//third_party/skia/src/gpu/GrCacheID.cpp",
    "//third_party/skia/src/gpu/GrClipData.cpp",
    "//third_party/skia/src/gpu/GrClipMaskCache.cpp",
    "//third_party/skia/src/gpu/GrClipMaskCache.h",
    "//third_party/skia/src/gpu/GrClipMaskManager.cpp",
    "//third_party/skia/src/gpu/GrClipMaskManager.h",
    "//third_party/skia/src/gpu/GrContext.cpp",
    "//third_party/skia/src/gpu/GrDefaultPathRenderer.cpp",
    "//third_party/skia/src/gpu/GrDefaultPathRenderer.h",
    "//third_party/skia/src/gpu/GrDrawState.cpp",
    "//third_party/skia/src/gpu/GrDrawState.h",
    "//third_party/skia/src/gpu/GrDrawTargetCaps.h",
    "//third_party/skia/src/gpu/GrDrawTarget.cpp",
    "//third_party/skia/src/gpu/GrDrawTarget.h",
    "//third_party/skia/src/gpu/GrEffect.cpp",
    "//third_party/skia/src/gpu/GrGeometryBuffer.cpp",
    "//third_party/skia/src/gpu/GrGeometryBuffer.h",
    "//third_party/skia/src/gpu/GrGpu.cpp",
    "//third_party/skia/src/gpu/GrGpuFactory.cpp",
    "//third_party/skia/src/gpu/GrGpu.h",
    "//third_party/skia/src/gpu/GrIndexBuffer.h",
    "//third_party/skia/src/gpu/GrInOrderDrawBuffer.cpp",
    "//third_party/skia/src/gpu/GrInOrderDrawBuffer.h",
    "//third_party/skia/src/gpu/GrMemory.cpp",
    "//third_party/skia/src/gpu/GrMemoryPool.cpp",
    "//third_party/skia/src/gpu/GrMemoryPool.h",
    "//third_party/skia/src/gpu/GrOvalRenderer.cpp",
    "//third_party/skia/src/gpu/GrPaint.cpp",
    "//third_party/skia/src/gpu/GrPath.cpp",
    "//third_party/skia/src/gpu/GrPath.h",
    "//third_party/skia/src/gpu/GrPathRendererChain.cpp",
    "//third_party/skia/src/gpu/GrPathRenderer.cpp",
    "//third_party/skia/src/gpu/GrPathRenderer.h",
    "//third_party/skia/src/gpu/GrPathUtils.cpp",
    "//third_party/skia/src/gpu/GrPathUtils.h",
    "//third_party/skia/src/gpu/GrPlotMgr.h",
    "//third_party/skia/src/gpu/GrRectanizer.cpp",
    "//third_party/skia/src/gpu/GrRectanizer.h",
    "//third_party/skia/src/gpu/GrRectanizer_skyline.cpp",
    "//third_party/skia/src/gpu/GrRedBlackTree.h",
    "//third_party/skia/src/gpu/GrReducedClip.cpp",
    "//third_party/skia/src/gpu/GrReducedClip.h",
    "//third_party/skia/src/gpu/GrRenderTarget.cpp",
    "//third_party/skia/src/gpu/GrResourceCache.cpp",
    "//third_party/skia/src/gpu/GrResourceCache.h",
    "//third_party/skia/src/gpu/GrResource.cpp",
    "//third_party/skia/src/gpu/GrSoftwarePathRenderer.cpp",
    "//third_party/skia/src/gpu/GrSoftwarePathRenderer.h",
    "//third_party/skia/src/gpu/GrStencilAndCoverPathRenderer.cpp",
    "//third_party/skia/src/gpu/GrStencilAndCoverPathRenderer.h",
    "//third_party/skia/src/gpu/GrStencilBuffer.cpp",
    "//third_party/skia/src/gpu/GrStencilBuffer.h",
    "//third_party/skia/src/gpu/GrStencil.cpp",
    "//third_party/skia/src/gpu/GrStencil.h",
    "//third_party/skia/src/gpu/GrSurface.cpp",
    "//third_party/skia/src/gpu/GrSWMaskHelper.cpp",
    "//third_party/skia/src/gpu/GrSWMaskHelper.h",
    "//third_party/skia/src/gpu/GrTBSearch.h",
    "//third_party/skia/src/gpu/GrTemplates.h",
    "//third_party/skia/src/gpu/GrTextContext.cpp",
    "//third_party/skia/src/gpu/GrTextStrike.cpp",
    "//third_party/skia/src/gpu/GrTextStrike.h",
    "//third_party/skia/src/gpu/GrTextStrike_impl.h",
    "//third_party/skia/src/gpu/GrTextureAccess.cpp",
    "//third_party/skia/src/gpu/GrTexture.cpp",
    "//third_party/skia/src/gpu/GrTHashCache.h",
    "//third_party/skia/src/gpu/gr_unittests.cpp",
    "//third_party/skia/src/gpu/GrVertexBuffer.h",
    "//third_party/skia/src/gpu/SkGpuDevice.cpp",
    "//third_party/skia/src/gpu/SkGr.cpp",
    "//third_party/skia/src/gpu/SkGrFontScaler.cpp",
    "//third_party/skia/src/gpu/SkGrPixelRef.cpp",
    "//third_party/skia/src/gpu/SkGrTexturePixelRef.cpp",
    "//third_party/skia/src/image/SkImage_Gpu.cpp",
    "//third_party/skia/src/image/SkSurface_Gpu.cpp",
  ]
}
if (is_win) {
  skia_library_sources -= [
    "//third_party/skia/src/ports/SkOSFile_posix.cpp",
    "//third_party/skia/src/ports/SkThread_pthread.cpp",
    "//third_party/skia/src/ports/SkTime_Unix.cpp",
    "//third_party/skia/src/ports/SkTLS_pthread.cpp",
    "//third_party/skia/src/ports/SkFontConfigInterface_direct.cpp",
    "//third_party/skia/src/fonts/SkFontMgr_fontconfig.cpp",
  ]
} else {
  skia_library_sources -= [
    "//third_party/skia/src/ports/SkFontHost_win.cpp",
    "//third_party/skia/src/ports/SkFontHost_win_dw.cpp",
    "//third_party/skia/src/ports/SkFontMgr_default_gdi.cpp",
    "//third_party/skia/src/ports/SkOSFile_win.cpp",
    "//third_party/skia/src/ports/SkThread_win.cpp",
    "//third_party/skia/src/ports/SkTLS_win.cpp",
  ]
}
if (!is_android) {
  skia_library_sources -= [
    "//third_party/skia/src/ports/SkFontConfigInterface_android.cpp",
    "//third_party/skia/src/ports/SkFontConfigParser_android.cpp",
  ]
}
if (!is_mac) {
  skia_library_sources -= [
    "//third_party/skia/src/ports/SkFontHost_mac.cpp",
  ]
}

if (!is_linux) {
  skia_library_sources -= [
    "//third_party/skia/src/ports/SkFontHost_FreeType.cpp",
    "//third_party/skia/src/ports/SkFontHost_FreeType_common.cpp",
    "//third_party/skia/src/ports/SkFontHost_fontconfig.cpp",
  ]
} else if (!is_android) {
  skia_library_sources -= [
    "//third_party/skia/src/ports/SkFontConfigInterface_direct.cpp",
    "//third_party/skia/src/fonts/SkFontMgr_fontconfig.cpp",
  ]
}

  # [ "target_arch == "arm" and arm_version >= 7 and arm_neon == 1", {
  #   "defines": [
  #     "__ARM_HAVE_NEON",
  #   ],
  # }],
  # [ "target_arch == "arm" and arm_version >= 7 and arm_neon_optional == 1", {
  #   "defines": [
  #     "__ARM_HAVE_OPTIONAL_NEON_SUPPORT",
  #   ],
  # }],
  # [ "OS == "android" and target_arch == "arm"", {
  #   "sources": [
  #     "//third_party/skia/src/core/SkUtilsArm.cpp",
  #   ],
  #   "includes": [
  #     "../build/android/cpufeatures.gypi",
  #   ],
  # }],
  # [ "target_arch == "arm" or target_arch == "mipsel"", {
  #   "sources!": [
  #     "//third_party/skia/src/opts/opts_check_SSE2.cpp"
  #   ],
  # }],
  # [ "use_glib == 1", {
  #   "dependencies": [
  #     "../build/linux/system.gyp:fontconfig",
  #     "../build/linux/system.gyp:freetype2",
  #     "../build/linux/system.gyp:pangocairo",
  #     "//third_party/icu/icu.gyp:icuuc",
  #   ],
  #   "cflags": [
  #     "-Wno-unused",
  #     "-Wno-unused-function",
  #   ],
  # }],
  # [ "use_glib == 0", {
  #   "sources!": [
  #     "//third_party/skia/src/ports/SkFontConfigInterface_direct.cpp",
  #     "//third_party/skia/src/fonts/SkFontMgr_fontconfig.cpp",
  #   ],
  # }],
  # }],
  # [ "OS == "android"", {
  #   "dependencies": [
  #     "//third_party/expat/expat.gyp:expat",
  #     "//third_party/freetype/freetype.gyp:ft2",
  #   ],
  #   # This exports a hard dependency because it needs to run its
  #   # symlink action in order to expose the skia header files.
  #   "hard_dependency": 1,
  #   "include_dirs": [
  #     "//third_party/expat/files/lib",
  #   ],
  # }],
  # [ "OS == "ios"", {
  #   "defines": [
  #     "SK_BUILD_FOR_IOS",
  #     "SK_USE_MAC_CORE_TEXT",
  #   ],
  #   "include_dirs": [
  #     "//third_party/skia/include/utils/ios",
  #     "//third_party/skia/include/utils/mac",
  #   ],
  #   "link_settings": {
  #     "libraries": [
  #       "$(SDKROOT)/System/Library/Frameworks/ImageIO.framework",
  #     ],
  #   },
  #   "sources": [
  #     # This file is used on both iOS and Mac, so it should be removed
  #     #  from the ios and mac conditions and moved into the main sources
  #     #  list.
  #     "//third_party/skia/src/utils/mac/SkStream_mac.cpp",
  #   ],
  #   "sources/": [
  #     ["exclude", "opts_check_SSE2\\.cpp$"],
  #   ],

  # TODO(brettw)
  # if (is_clang) remove -Wstring-conversion

  # Pull in specific Mac files for iOS (which have been filtered out
  # by file name rules).
  #[ "OS == "ios"", {
  #  "sources/": [
  #    ["include", "SkFontHost_mac\\.cpp$",],
  #    ["include", "SkStream_mac\\.cpp$",],
  #    ["include", "SkCreateCGImageRef\\.cpp$",],
  #  ],
  #}],

if (component_mode == "static_library") {
  group("skia") {
    deps = [
      ":skia_library",
      ":skia_chrome",
    ]
    forward_dependent_configs_from = deps
  }

  static_library("skia_library") {
    external = true
    sources = skia_library_sources

    deps = [
      ":skia_opts",
      "//third_party/zlib",
    ]

    if (skia_support_pdf) {
      deps += "//third_party/sfntly"
    } else {
      # TODO(brettw) remove PDF sources.
    }

    configs -= "//build/config/compiler:chromium_code"
    configs += [
      ":skia_config",
      ":skia_library_config",
      "//build/config/compiler:no_chromium_code"
    ]

    if (is_linux) {
      configs += [
        "//build/config/linux:fontconfig",
        "//build/config/linux:freetype2",
        "//build/config/linux:pangocairo",
      ]
      deps += [
        "//third_party/icu:icuuc",
      ]
    }
  }

  config("skia_chrome_config") {
    include_dirs = [ "ext" ]
  }

  static_library("skia_chrome") {
    external = true
    sources = skia_chrome_sources

    configs -= "//build/config/compiler:chromium_code"
    configs += [
      ":skia_config",
      "//build/config/compiler:no_chromium_code",
    ]
    direct_dependent_configs = [ ":skia_chrome_config" ]

    deps = [
      ":skia_library",
      ":skia_chrome_opts",
      "//base",
      "//base/third_party/dynamic_annotations",
    ]

    #  # TODO(scottmg): http://crbug.com/177306
    #  ["clang==1", {
    #    "xcode_settings": {
    #      "WARNING_CFLAGS!": [
    #        # Don"t warn about string->bool used in asserts.
    #        "-Wstring-conversion",
    #      ],
    #    },
    #    "cflags!": [
    #      "-Wstring-conversion",
    #    ],
    #  }],
    #],
  #
    #"target_conditions": [
    #  # Pull in specific linux files for android (which have been filtered out
    #  # by file name rules).
    #  [ "OS == "android"", {
    #    "sources/": [
    #      ["include", "ext/platform_device_linux\\.cc$"],
    #    ],
    #  }],
  }
} else {
  config("skia_shared_library_config") {
    defines = [
      "SKIA_DLL",
    ]
  }

  shared_library("skia") {
    sources = skia_library_sources + skia_chrome_sources

    defines = [ "SKIA_IMPLEMENTATION=1", ]

    configs -= "//build/config/compiler:chromium_code"
    configs += [
      ":skia_config",
      ":skia_library_config",
      "//build/config/compiler:no_chromium_code",
    ]

    direct_dependent_configs = [ ":skia_shared_library_config" ]

    deps = [
      ":skia_chrome_opts",
      ":skia_opts",
      "//base",
      "//base/third_party/dynamic_annotations",
      "//third_party/zlib",
    ]

    if (is_linux) {
      configs += [
        "//build/config/linux:fontconfig",
        "//build/config/linux:freetype2",
        "//build/config/linux:pangocairo",
      ]
      deps += [
        "//third_party/icu:icuuc",
      ]
    }

    if (skia_support_pdf) {
      deps += "//third_party/sfntly"
    }
  }
}


if (is_linux && !is_android) {
    # TODO(brettw) && arch != "arm" && arch != "mipsel"
  sse_cflags = [ "-msse2" ]
} else {
  sse_cflags = []
}


static_library("skia_chrome_opts") {
  sources = [
    "ext/convolver_SSE2.cc",
  ]

  configs -= "//build/config/compiler:chromium_code"
  configs += [
    ":skia_config",
    "//build/config/compiler:no_chromium_code"
  ]

  cflags = sse_cflags

  #'target_arch == "mipsel"',{
  #        'cflags': [
  #          '-fomit-frame-pointer',
  #        ],
  #        'sources': [
  #          'ext/convolver_mips_dspr2.cc',
  #        ],
  #      }],
}

static_library("skia_opts") {
  # TODO(brettw) ARM and MIPS.
  sources = [
    "//third_party/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp",
    "//third_party/skia/src/opts/SkBlitRect_opts_SSE2.cpp",
    "//third_party/skia/src/opts/SkBlitRow_opts_SSE2.cpp",
    "//third_party/skia/src/opts/SkUtils_opts_SSE2.cpp",
    "//third_party/skia/src/opts/SkBitmapFilter_opts_SSE2.cpp",
  ]

  configs -= "//build/config/compiler:chromium_code"
  configs += [
    ":skia_config",
    "//build/config/compiler:no_chromium_code"
  ]

  cflags = sse_cflags

  deps = [ ":skia_opts_ssse3" ]
}

static_library("skia_opts_ssse3") {
  # TODO(brettw) ARM and MIPS.
  sources = [
    "//third_party/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp",
  ]

  configs -= "//build/config/compiler:chromium_code"
  configs += [
    ":skia_config",
    "//build/config/compiler:no_chromium_code"
  ]

  if (is_linux) {
    cflags = [ "-msse3" ]
  } else if (is_mac) {
    cflags = [ "-mssse3" ] # Note the third 's'.
  }
}