# Copyright 2014 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.

import("//build/config/ui.gni")
import("//sky/engine/build/scripts/scripts.gni")
import("//sky/engine/config.gni")

# Most targets in this file are private actions so use that as the default.
visibility = [ ":*" ]

sky_platform_output_dir = "$root_gen_dir/sky/platform"

action("font_family_names") {
  script = "../build/scripts/make_names.py"

  font_family_names_in = "fonts/FontFamilyNames.in"
  inputs = make_names_files + [ font_family_names_in ]

  outputs = [
    "$sky_platform_output_dir/FontFamilyNames.cpp",
    "$sky_platform_output_dir/FontFamilyNames.h",
  ]

  args = [
    rebase_path(font_family_names_in, root_build_dir),
    "--output_dir",
    rebase_path(sky_platform_output_dir, root_build_dir),
  ]
}

action("runtime_enabled_features") {
  script = "../build/scripts/make_runtime_features.py"

  runtime_enabled_features_in = "RuntimeEnabledFeatures.in"
  inputs = scripts_for_in_files + [
             runtime_enabled_features_in,
             "../build/scripts/templates/RuntimeEnabledFeatures.cpp.tmpl",
             "../build/scripts/templates/RuntimeEnabledFeatures.h.tmpl",
           ]

  outputs = [
    "$sky_platform_output_dir/RuntimeEnabledFeatures.cpp",
    "$sky_platform_output_dir/RuntimeEnabledFeatures.h",
  ]

  args = [
    rebase_path(runtime_enabled_features_in, root_build_dir),
    "--output_dir",
    rebase_path(sky_platform_output_dir, root_build_dir),
  ]
}

action("color_data") {
  script = "../build/scripts/gperf.py"

  color_data_gperf = "ColorData.gperf"
  inputs = [
    color_data_gperf,
  ]

  output_file = "$sky_platform_output_dir/ColorData.cpp"
  outputs = [
    output_file,
  ]

  args = [
    gperf_exe,
    "--key-positions=*",
    "-D",
    "-s",
    "2",
    rebase_path(color_data_gperf, root_build_dir),
    "--output-file=" + rebase_path(output_file, root_build_dir),
  ]
}

group("make_platform_generated") {
  visibility += [ ":*" ]
  deps = [
    ":color_data",
    ":font_family_names",
    ":runtime_enabled_features",
  ]
}

source_set("platform") {
  visibility += [ "//sky/*" ]

  sources = [
    "animation/AnimationUtilities.h",
    "animation/AnimationValue.h",
    "animation/KeyframeValueList.cpp",
    "animation/KeyframeValueList.h",
    "animation/TimingFunction.cpp",
    "animation/TimingFunction.h",
    "animation/UnitBezier.h",
    "AsyncMethodRunner.h",
    "CalculationValue.h",
    "CheckedInt.h",
    "clipboard/ClipboardMimeTypes.cpp",
    "clipboard/ClipboardMimeTypes.h",
    "clipboard/ClipboardUtilities.cpp",
    "clipboard/ClipboardUtilities.h",
    "clipboard/ClipboardUtilitiesPosix.cpp",
    "Clock.cpp",
    "Clock.h",
    "ColorSuggestion.h",
    "ContentType.cpp",
    "ContentType.h",
    "Cursor.cpp",
    "Cursor.h",
    "DateComponents.cpp",
    "DateComponents.h",
    "Decimal.cpp",
    "Decimal.h",
    "EventDispatchForbiddenScope.h",
    "EventTracer.cpp",
    "EventTracer.h",
    "exported/linux/WebFontInfo.cpp",
    "exported/linux/WebFontRenderStyle.cpp",
    "exported/Platform.cpp",
    "exported/ServiceProvider.cpp",
    "exported/WebActiveGestureAnimation.cpp",
    "exported/WebActiveGestureAnimation.h",
    "exported/WebArrayBuffer.cpp",
    "exported/WebCommon.cpp",
    "exported/WebConvertableToTraceFormat.cpp",
    "exported/WebCString.cpp",
    "exported/WebCursorInfo.cpp",
    "exported/WebData.cpp",
    "exported/WebFilterKeyframe.cpp",
    "exported/WebHTTPBody.cpp",
    "exported/WebHTTPLoadInfo.cpp",
    "exported/WebImageSkia.cpp",
    "exported/WebString.cpp",
    "exported/WebTransformKeyframe.cpp",
    "exported/WebURL.cpp",
    "exported/WebURLError.cpp",
    "exported/WebURLLoadTiming.cpp",
    "exported/WebURLRequest.cpp",
    "exported/WebURLRequestPrivate.h",
    "exported/WebURLResponse.cpp",
    "exported/WebURLResponsePrivate.h",
    "exported/WrappedResourceRequest.h",
    "exported/WrappedResourceResponse.h",
    "fetcher/MojoFetcher.cpp",
    "fetcher/MojoFetcher.h",
    "FloatConversion.h",
    "fonts/AlternateFontFamily.h",
    "fonts/android/FontCacheAndroid.cpp",
    "fonts/Character.cpp",
    "fonts/Character.h",
    "fonts/CustomFontData.h",
    "fonts/FixedPitchFontType.h",
    "fonts/Font.cpp",
    "fonts/Font.h",
    "fonts/FontBaseline.h",
    "fonts/FontCache.cpp",
    "fonts/FontCache.h",
    "fonts/FontCacheClient.h",
    "fonts/FontCacheKey.h",
    "fonts/FontCustomPlatformData.h",
    "fonts/FontData.cpp",
    "fonts/FontData.h",
    "fonts/FontDataCache.cpp",
    "fonts/FontDataCache.h",
    "fonts/FontDescription.cpp",
    "fonts/FontDescription.h",
    "fonts/FontFaceCreationParams.h",
    "fonts/FontFallbackList.cpp",
    "fonts/FontFallbackList.h",
    "fonts/FontFamily.cpp",
    "fonts/FontFamily.h",
    "fonts/FontFeatureSettings.cpp",
    "fonts/FontFeatureSettings.h",
    "fonts/FontMetrics.h",
    "fonts/FontOrientation.h",
    "fonts/FontPlatformData.cpp",
    "fonts/FontPlatformData.h",
    "fonts/FontPlatformFeatures.h",
    "fonts/FontRenderStyle.h",
    "fonts/FontSelector.h",
    "fonts/FontSmoothingMode.h",
    "fonts/FontTraits.h",
    "fonts/FontWidthVariant.h",
    "fonts/GenericFontFamilySettings.cpp",
    "fonts/GenericFontFamilySettings.h",
    "fonts/Glyph.h",
    "fonts/GlyphBuffer.h",
    "fonts/GlyphMetricsMap.h",
    "fonts/GlyphPage.h",
    "fonts/GlyphPageTreeNode.cpp",
    "fonts/GlyphPageTreeNode.h",
    "fonts/harfbuzz/FontHarfBuzz.cpp",
    "fonts/harfbuzz/HarfBuzzFace.cpp",
    "fonts/harfbuzz/HarfBuzzFace.h",
    "fonts/harfbuzz/HarfBuzzFaceSkia.cpp",
    "fonts/harfbuzz/HarfBuzzShaper.cpp",
    "fonts/harfbuzz/HarfBuzzShaper.h",
    "fonts/Latin1TextIterator.h",
    "fonts/linux/FontCacheLinux.cpp",
    "fonts/linux/FontPlatformDataLinux.cpp",
    "fonts/opentype/OpenTypeSanitizer.cpp",
    "fonts/opentype/OpenTypeSanitizer.h",
    "fonts/opentype/OpenTypeTypes.h",
    "fonts/opentype/OpenTypeVerticalData.cpp",
    "fonts/opentype/OpenTypeVerticalData.h",
    "fonts/SegmentedFontData.cpp",
    "fonts/SegmentedFontData.h",
    "fonts/SimpleFontData.cpp",
    "fonts/SimpleFontData.h",
    "fonts/skia/FontCacheSkia.cpp",
    "fonts/skia/FontCustomPlatformDataSkia.cpp",
    "fonts/skia/FontPlatformDataSkia.cpp",
    "fonts/skia/SimpleFontDataSkia.cpp",
    "fonts/TextBlob.h",
    "fonts/TextRenderingMode.h",
    "fonts/TypesettingFeatures.h",
    "fonts/VDMXParser.cpp",
    "fonts/VDMXParser.h",
    "fonts/WidthCache.h",
    "fonts/WidthIterator.cpp",
    "fonts/WidthIterator.h",
    "geometry/FloatBox.h",
    "geometry/FloatBoxExtent.h",
    "geometry/FloatPoint.cpp",
    "geometry/FloatPoint.h",
    "geometry/FloatPoint3D.cpp",
    "geometry/FloatPoint3D.h",
    "geometry/FloatQuad.cpp",
    "geometry/FloatQuad.h",
    "geometry/FloatRect.cpp",
    "geometry/FloatRect.h",
    "geometry/FloatRoundedRect.cpp",
    "geometry/FloatRoundedRect.h",
    "geometry/FloatSize.cpp",
    "geometry/FloatSize.h",
    "geometry/IntPoint.h",
    "geometry/IntRect.cpp",
    "geometry/IntRect.h",
    "geometry/IntRectExtent.h",
    "geometry/IntSize.h",
    "geometry/IntSizeHash.h",
    "geometry/LayoutBoxExtent.cpp",
    "geometry/LayoutBoxExtent.h",
    "geometry/LayoutPoint.h",
    "geometry/LayoutRect.cpp",
    "geometry/LayoutRect.h",
    "geometry/LayoutSize.h",
    "geometry/Region.cpp",
    "geometry/Region.h",
    "geometry/RoundedRect.cpp",
    "geometry/RoundedRect.h",
    "geometry/TransformState.cpp",
    "geometry/TransformState.h",
    "graphics/BitmapImage.cpp",
    "graphics/BitmapImage.h",
    "graphics/Canvas2DImageBufferSurface.h",
    "graphics/Canvas2DLayerBridge.cpp",
    "graphics/Canvas2DLayerBridge.h",
    "graphics/Canvas2DLayerManager.cpp",
    "graphics/Canvas2DLayerManager.h",
    "graphics/Color.cpp",
    "graphics/Color.h",
    "graphics/ColorSpace.cpp",
    "graphics/ColorSpace.h",
    "graphics/CrossfadeGeneratedImage.cpp",
    "graphics/CrossfadeGeneratedImage.h",
    "graphics/DashArray.h",
    "graphics/DecodingImageGenerator.cpp",
    "graphics/DecodingImageGenerator.h",
    "graphics/DeferredImageDecoder.cpp",
    "graphics/DeferredImageDecoder.h",
    "graphics/DisplayList.cpp",
    "graphics/DisplayList.h",
    "graphics/DrawLooperBuilder.cpp",
    "graphics/DrawLooperBuilder.h",
    "graphics/filters/DistantLightSource.cpp",
    "graphics/filters/DistantLightSource.h",
    "graphics/filters/FEBlend.cpp",
    "graphics/filters/FEBlend.h",
    "graphics/filters/FEColorMatrix.cpp",
    "graphics/filters/FEColorMatrix.h",
    "graphics/filters/FEComponentTransfer.cpp",
    "graphics/filters/FEComponentTransfer.h",
    "graphics/filters/FEComposite.cpp",
    "graphics/filters/FEComposite.h",
    "graphics/filters/FEConvolveMatrix.cpp",
    "graphics/filters/FEConvolveMatrix.h",
    "graphics/filters/FEDiffuseLighting.cpp",
    "graphics/filters/FEDiffuseLighting.h",
    "graphics/filters/FEDisplacementMap.cpp",
    "graphics/filters/FEDisplacementMap.h",
    "graphics/filters/FEDropShadow.cpp",
    "graphics/filters/FEDropShadow.h",
    "graphics/filters/FEFlood.cpp",
    "graphics/filters/FEFlood.h",
    "graphics/filters/FEGaussianBlur.cpp",
    "graphics/filters/FEGaussianBlur.h",
    "graphics/filters/FELighting.cpp",
    "graphics/filters/FELighting.h",
    "graphics/filters/FEMerge.cpp",
    "graphics/filters/FEMerge.h",
    "graphics/filters/FEMorphology.cpp",
    "graphics/filters/FEMorphology.h",
    "graphics/filters/FEOffset.cpp",
    "graphics/filters/FEOffset.h",
    "graphics/filters/FESpecularLighting.cpp",
    "graphics/filters/FESpecularLighting.h",
    "graphics/filters/FETile.cpp",
    "graphics/filters/FETile.h",
    "graphics/filters/FETurbulence.cpp",
    "graphics/filters/FETurbulence.h",
    "graphics/filters/Filter.h",
    "graphics/filters/FilterEffect.cpp",
    "graphics/filters/FilterEffect.h",
    "graphics/filters/FilterOperation.cpp",
    "graphics/filters/FilterOperation.h",
    "graphics/filters/FilterOperations.cpp",
    "graphics/filters/FilterOperations.h",
    "graphics/filters/LightSource.cpp",
    "graphics/filters/LightSource.h",
    "graphics/filters/ParallelJobs.h",
    "graphics/filters/PointLightSource.cpp",
    "graphics/filters/PointLightSource.h",
    "graphics/filters/ReferenceFilter.cpp",
    "graphics/filters/ReferenceFilter.h",
    "graphics/filters/SkiaImageFilterBuilder.cpp",
    "graphics/filters/SkiaImageFilterBuilder.h",
    "graphics/filters/SourceAlpha.cpp",
    "graphics/filters/SourceAlpha.h",
    "graphics/filters/SourceGraphic.cpp",
    "graphics/filters/SourceGraphic.h",
    "graphics/filters/SpotLightSource.cpp",
    "graphics/filters/SpotLightSource.h",
    "graphics/FrameData.cpp",
    "graphics/FrameData.h",
    "graphics/GeneratedImage.cpp",
    "graphics/GeneratedImage.h",
    "graphics/gpu/DrawingBuffer.cpp",
    "graphics/gpu/DrawingBuffer.h",
    "graphics/gpu/Extensions3DUtil.cpp",
    "graphics/gpu/Extensions3DUtil.h",
    "graphics/gpu/WebGLImageBufferSurface.cpp",
    "graphics/gpu/WebGLImageBufferSurface.h",
    "graphics/gpu/WebGLImageConversion.cpp",
    "graphics/gpu/WebGLImageConversion.h",
    "graphics/Gradient.cpp",
    "graphics/Gradient.h",
    "graphics/GradientGeneratedImage.cpp",
    "graphics/GradientGeneratedImage.h",
    "graphics/GraphicsContext.cpp",
    "graphics/GraphicsContext.h",
    "graphics/GraphicsContextAnnotation.h",
    "graphics/GraphicsContextState.cpp",
    "graphics/GraphicsContextState.h",
    "graphics/GraphicsContextStateSaver.h",
    "graphics/GraphicsTypes.cpp",
    "graphics/GraphicsTypes.h",
    "graphics/GraphicsTypes3D.h",
    "graphics/Image.cpp",
    "graphics/Image.h",
    "graphics/ImageBuffer.cpp",
    "graphics/ImageBuffer.h",
    "graphics/ImageBufferClient.h",
    "graphics/ImageBufferSurface.cpp",
    "graphics/ImageBufferSurface.h",
    "graphics/ImageDecodingStore.cpp",
    "graphics/ImageDecodingStore.h",
    "graphics/ImageFilter.cpp",
    "graphics/ImageFilter.h",
    "graphics/ImageFrameGenerator.cpp",
    "graphics/ImageFrameGenerator.h",
    "graphics/ImageObserver.cpp",
    "graphics/ImageObserver.h",
    "graphics/ImageOrientation.cpp",
    "graphics/ImageOrientation.h",
    "graphics/ImageSource.cpp",
    "graphics/ImageSource.h",
    "graphics/InterceptingCanvas.h",
    "graphics/OpaqueRectTrackingContentLayerDelegate.cpp",
    "graphics/OpaqueRectTrackingContentLayerDelegate.h",
    "graphics/Path.cpp",
    "graphics/Path.h",
    "graphics/PathTraversalState.cpp",
    "graphics/PathTraversalState.h",
    "graphics/Pattern.cpp",
    "graphics/Pattern.h",
    "graphics/RegionTracker.cpp",
    "graphics/RegionTracker.h",
    "graphics/skia/GaneshUtils.cpp",
    "graphics/skia/GaneshUtils.h",
    "graphics/skia/NativeImageSkia.cpp",
    "graphics/skia/NativeImageSkia.h",
    "graphics/skia/SkiaUtils.cpp",
    "graphics/skia/SkiaUtils.h",
    "graphics/skia/SkSizeHash.h",
    "graphics/StrokeData.cpp",
    "graphics/StrokeData.h",
    "graphics/ThreadSafeDataTransport.cpp",
    "graphics/ThreadSafeDataTransport.h",
    "graphics/UnacceleratedImageBufferSurface.cpp",
    "graphics/UnacceleratedImageBufferSurface.h",
    "heap/Handle.h",
    "HostWindow.h",
    "image-decoders/bmp/BMPImageDecoder.cpp",
    "image-decoders/bmp/BMPImageDecoder.h",
    "image-decoders/bmp/BMPImageReader.cpp",
    "image-decoders/bmp/BMPImageReader.h",
    "image-decoders/gif/GIFImageDecoder.cpp",
    "image-decoders/gif/GIFImageDecoder.h",
    "image-decoders/gif/GIFImageReader.cpp",
    "image-decoders/gif/GIFImageReader.h",
    "image-decoders/ico/ICOImageDecoder.cpp",
    "image-decoders/ico/ICOImageDecoder.h",
    "image-decoders/ImageDecoder.cpp",
    "image-decoders/ImageDecoder.h",
    "image-decoders/ImageFrame.cpp",
    "image-decoders/ImageFrame.h",
    "image-decoders/jpeg/JPEGImageDecoder.cpp",
    "image-decoders/jpeg/JPEGImageDecoder.h",
    "image-decoders/png/PNGImageDecoder.cpp",
    "image-decoders/png/PNGImageDecoder.h",
    "image-encoders/skia/JPEGImageEncoder.cpp",
    "image-encoders/skia/JPEGImageEncoder.h",
    "image-encoders/skia/PNGImageEncoder.cpp",
    "image-encoders/skia/PNGImageEncoder.h",
    "JSONValues.cpp",
    "JSONValues.h",
    "KeyboardCodes.h",
    "Language.cpp",
    "Language.h",
    "LayoutTestSupport.cpp",
    "LayoutTestSupport.h",
    "LayoutUnit.h",
    "Length.cpp",
    "Length.h",
    "LengthBox.cpp",
    "LengthBox.h",
    "LengthFunctions.cpp",
    "LengthFunctions.h",
    "LengthPoint.h",
    "LengthSize.h",
    "LifecycleContext.h",
    "LifecycleNotifier.h",
    "LifecycleObserver.h",
    "Logging.cpp",
    "Logging.h",
    "MIMETypeRegistry.cpp",
    "MIMETypeRegistry.h",
    "network/FormData.cpp",
    "network/FormData.h",
    "network/FormDataBuilder.cpp",
    "network/FormDataBuilder.h",
    "network/HTTPHeaderMap.cpp",
    "network/HTTPHeaderMap.h",
    "network/HTTPParsers.cpp",
    "network/HTTPParsers.h",
    "network/HTTPRequest.cpp",
    "network/HTTPRequest.h",
    "network/ParsedContentType.cpp",
    "network/ParsedContentType.h",
    "network/ProxyServer.cpp",
    "network/ProxyServer.h",
    "network/ResourceError.cpp",
    "network/ResourceError.h",
    "network/ResourceLoadInfo.h",
    "network/ResourceLoadPriority.h",
    "network/ResourceLoadTiming.h",
    "network/ResourceRequest.cpp",
    "network/ResourceRequest.h",
    "network/ResourceResponse.cpp",
    "network/ResourceResponse.h",
    "NotImplemented.cpp",
    "NotImplemented.h",
    "ParsingUtilities.h",
    "Partitions.cpp",
    "Partitions.h",
    "PlatformEvent.h",
    "PlatformExport.h",
    "PlatformGestureEvent.h",
    "PlatformKeyboardEvent.cpp",
    "PlatformKeyboardEvent.h",
    "PlatformMouseEvent.h",
    "PlatformScreen.cpp",
    "PlatformScreen.h",
    "PlatformThreadData.cpp",
    "PlatformThreadData.h",
    "PlatformTouchEvent.h",
    "PlatformTouchPoint.h",
    "PlatformWheelEvent.h",
    "PurgeableVector.cpp",
    "PurgeableVector.h",
    "RefCountedSupplement.h",
    "ScriptForbiddenScope.cpp",
    "ScriptForbiddenScope.h",
    "scroll/ScrollableArea.cpp",
    "scroll/ScrollableArea.h",
    "scroll/ScrollAnimator.cpp",
    "scroll/ScrollAnimator.h",
    "scroll/Scrollbar.cpp",
    "scroll/Scrollbar.h",
    "scroll/ScrollTypes.h",
    "SharedBuffer.cpp",
    "SharedBuffer.h",
    "SharedBufferChunkReader.cpp",
    "SharedBufferChunkReader.h",
    "SharedTimer.cpp",
    "SharedTimer.h",
    "Supplementable.h",
    "text/BidiCharacterRun.cpp",
    "text/BidiCharacterRun.h",
    "text/BidiContext.cpp",
    "text/BidiContext.h",
    "text/BidiResolver.h",
    "text/BidiRunList.h",
    "text/BidiTextRun.cpp",
    "text/BidiTextRun.h",
    "text/DateTimeFormat.cpp",
    "text/DateTimeFormat.h",
    "text/DecodeEscapeSequences.h",
    "text/LineEnding.cpp",
    "text/LineEnding.h",
    "text/LocaleToScriptMapping.cpp",
    "text/LocaleToScriptMapping.h",
    "text/NonCJKGlyphOrientation.h",
    "text/ParserUtilities.h",
    "text/QuotedPrintable.cpp",
    "text/QuotedPrintable.h",
    "text/SegmentedString.cpp",
    "text/SegmentedString.h",
    "text/StringTruncator.cpp",
    "text/StringTruncator.h",
    "text/SuffixTree.h",
    "text/SurrogatePairAwareTextIterator.cpp",
    "text/SurrogatePairAwareTextIterator.h",
    "text/TextBoundaries.cpp",
    "text/TextBoundaries.h",
    "text/TextBreakIterator.cpp",
    "text/TextBreakIterator.h",
    "text/TextBreakIteratorICU.cpp",
    "text/TextBreakIteratorInternalICU.cpp",
    "text/TextBreakIteratorInternalICU.h",
    "text/TextCheckerClient.h",
    "text/TextChecking.h",
    "text/TextDecoration.h",
    "text/TextDirection.h",
    "text/TextPath.h",
    "text/TextRun.cpp",
    "text/TextRun.h",
    "text/TextRunIterator.h",
    "text/TextStream.cpp",
    "text/TextStream.h",
    "text/UnicodeBidi.h",
    "text/UnicodeRange.cpp",
    "text/UnicodeRange.h",
    "text/UnicodeUtilities.cpp",
    "text/UnicodeUtilities.h",
    "ThreadTimers.cpp",
    "ThreadTimers.h",
    "Timer.cpp",
    "Timer.h",
    "TracedValue.cpp",
    "TracedValue.h",
    "TraceEvent.h",
    "transforms/AffineTransform.cpp",
    "transforms/AffineTransform.h",
    "transforms/IdentityTransformOperation.h",
    "transforms/InterpolatedTransformOperation.cpp",
    "transforms/InterpolatedTransformOperation.h",
    "transforms/Matrix3DTransformOperation.cpp",
    "transforms/Matrix3DTransformOperation.h",
    "transforms/MatrixTransformOperation.cpp",
    "transforms/MatrixTransformOperation.h",
    "transforms/PerspectiveTransformOperation.cpp",
    "transforms/PerspectiveTransformOperation.h",
    "transforms/RotateTransformOperation.cpp",
    "transforms/RotateTransformOperation.h",
    "transforms/ScaleTransformOperation.cpp",
    "transforms/ScaleTransformOperation.h",
    "transforms/SkewTransformOperation.cpp",
    "transforms/SkewTransformOperation.h",
    "transforms/TransformationMatrix.cpp",
    "transforms/TransformationMatrix.h",
    "transforms/TransformOperation.h",
    "transforms/TransformOperations.cpp",
    "transforms/TransformOperations.h",
    "transforms/TranslateTransformOperation.cpp",
    "transforms/TranslateTransformOperation.h",
    "UserGestureIndicator.cpp",
    "UserGestureIndicator.h",
    "weborigin/KnownPorts.cpp",
    "weborigin/KnownPorts.h",
    "weborigin/KURL.cpp",
    "weborigin/KURL.h",
    "weborigin/KURLHash.h",
    "weborigin/Referrer.h",
    "weborigin/ReferrerPolicy.h",
    "weborigin/SecurityPolicy.cpp",
    "weborigin/SecurityPolicy.h",
    "WebThread.cpp",
    "Widget.cpp",
    "Widget.h",
    "WindowsKeyboardCodes.h",
  ]

  # Add in the generated files.
  sources += get_target_outputs(":font_family_names") +
             get_target_outputs(":runtime_enabled_features") +
             get_target_outputs(":color_data")

  configs += [
    "//sky/engine:config",
    "//sky/engine:non_test_config",
  ]

  defines = [
    "BLINK_PLATFORM_IMPLEMENTATION=1",
    "INSIDE_BLINK",
  ]

  include_dirs = [ "$root_build_dir" ]

  deps = [
    ":make_platform_generated",
    "//base:base",
    "//gpu/command_buffer/client:gles2_c_lib",
    "//mojo/application",
    "//mojo/common",
    "//mojo/environment:chromium",
    "//mojo/public/c/system",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/utility",
    "//mojo/services/network/public/interfaces",
    "//skia",
    "//sky/engine/wtf",
    "//third_party/harfbuzz-ng",
    "//third_party/iccjpeg",
    "//third_party/icu",
    "//third_party/libpng",
    "//third_party/ots",
    "//third_party/qcms",
    "//third_party:jpeg",
    "//url",
    "//v8",
  ]

  forward_dependent_configs_from = [
    "//gpu/command_buffer/client:gles2_c_lib",
    "//skia",
    "//third_party:jpeg",
    "//third_party/iccjpeg",
    "//third_party/libpng",
    "//third_party/ots",
    "//third_party/qcms",
    "//url",
    "//v8",
  ]

  if (is_android) {
    # Add in some Linux files also shared with Android.
    set_sources_assignment_filter([])
    sources += [
      "exported/linux/WebFontRenderStyle.cpp",
      "fonts/linux/FontPlatformDataLinux.cpp",
    ]
    set_sources_assignment_filter(sources_assignment_filter)
  }

  if (is_linux) {
    direct_dependent_configs = [ "//build/config/linux:fontconfig" ]
  }

  if (cpu_arch == "arm") {
    deps += [ ":sky_arm_neon" ]
  }
}

test("platform_unittests") {
  visibility += [ "//sky/*" ]
  output_name = "sky_platform_unittests"

  sources = [
    "ClockTest.cpp",
    "DecimalTest.cpp",
    "LayoutUnitTest.cpp",
    "LifecycleContextTest.cpp",
    "PurgeableVectorTest.cpp",
    "SharedBufferTest.cpp",
    "TestingPlatformSupport.cpp",
    "TestingPlatformSupport.h",
    "TracedValueTest.cpp",
    "animation/TimingFunctionTest.cpp",
    "animation/UnitBezierTest.cpp",
    "clipboard/ClipboardUtilitiesTest.cpp",
    "fonts/FontCacheTest.cpp",
    "fonts/FontDescriptionTest.cpp",
    "fonts/FontTest.cpp",
    "fonts/GlyphBufferTest.cpp",
    "fonts/GlyphPageTreeNodeTest.cpp",
    "fonts/android/FontCacheAndroidTest.cpp",
    "geometry/FloatBoxTest.cpp",
    "geometry/FloatBoxTestHelpers.cpp",
    "geometry/FloatRoundedRectTest.cpp",
    "geometry/RegionTest.cpp",
    "geometry/RoundedRectTest.cpp",
    "graphics/GraphicsContextTest.cpp",
    "graphics/ThreadSafeDataTransportTest.cpp",
    "graphics/filters/FilterOperationsTest.cpp",
    "graphics/filters/ImageFilterBuilderTest.cpp",
    "graphics/gpu/DrawingBufferTest.cpp",
    "image-decoders/ImageDecoderTest.cpp",
    "mac/ScrollElasticityControllerTest.mm",
    "network/HTTPParsersTest.cpp",
    "testing/TreeTestHelpers.cpp",
    "testing/TreeTestHelpers.h",
    "testing/RunAllTests.cpp",
    "transforms/TransformOperationsTest.cpp",
    "transforms/TransformationMatrixTest.cpp",
    "text/BidiResolverTest.cpp",
    "text/SegmentedStringTest.cpp",
    "text/UnicodeUtilitiesTest.cpp",
    "weborigin/KURLTest.cpp",
    "weborigin/SecurityPolicyTest.cpp",
  ]

  configs += [ "//sky/engine:config" ]

  deps = [
    ":platform",
    "//base",
    "//base/allocator",
    "//base/test:test_support",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//sky/engine/wtf",
    "//sky/engine/wtf:test_support",
    "//url",
  ]

  # TODO(abarth): This is a lie - this test is not embedded in an environment
  # that injects the system thunks, so system calls don't actually work. This
  # just tricks the linker into thinking that an implementation of these calls
  # will be injected at runtime so the link succeeds.
  deps += [ "//mojo/public/platform/native:system" ]

  defines = [ "INSIDE_BLINK" ]

  include_dirs = [ "$root_build_dir" ]
}

if (cpu_arch == "arm") {
  source_set("sky_arm_neon") {
    sources = [
      "graphics/cpu/arm/WebGLImageConversionNEON.h",
      "graphics/cpu/arm/filters/FEBlendNEON.h",
      "graphics/cpu/arm/filters/FECompositeArithmeticNEON.h",
      "graphics/cpu/arm/filters/FEGaussianBlurNEON.h",
      "graphics/cpu/arm/filters/NEONHelpers.h",
    ]
    # The *NEON.cpp files fail to compile when -mthumb is passed. Force
    # them to build in ARM mode.
    # See https://bugs.webkit.org/show_bug.cgi?id=62916.
    # TODO(GYP)
    #'cflags': ['-marm'],
    #    'conditions': [
    #      ['OS=="android"', {
    #        'cflags!': ['-mthumb'],
    #      }],
    #    ],
  }
}
