# 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",
  ]
}

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

  output_name = "sky_platform"

  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/DataPipeDrainer.cpp",
    "fetcher/DataPipeDrainer.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/CompositingReasons.cpp",
    "graphics/CompositingReasons.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/GraphicsContextCullSaver.h",
    "graphics/GraphicsContextRecorder.cpp",
    "graphics/GraphicsContextRecorder.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/LoggingCanvas.cpp",
    "graphics/LoggingCanvas.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/ProfilingCanvas.cpp",
    "graphics/ProfilingCanvas.h",
    "graphics/RegionTracker.cpp",
    "graphics/RegionTracker.h",
    "graphics/ReplayingCanvas.cpp",
    "graphics/ReplayingCanvas.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/SchemeRegistry.cpp",
    "weborigin/SchemeRegistry.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:for_shared_library",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/utility",
    "//mojo/services/public/interfaces/network",
    "//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",
  ]

  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'],
    #      }],
    #    ],
  }
}
