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

source_set("flow") {
  sources = [
    "compositor_context.cc",
    "compositor_context.h",
    "debug_print.cc",
    "debug_print.h",
    "embedded_views.cc",
    "embedded_views.h",
    "instrumentation.cc",
    "instrumentation.h",
    "layers/backdrop_filter_layer.cc",
    "layers/backdrop_filter_layer.h",
    "layers/clip_path_layer.cc",
    "layers/clip_path_layer.h",
    "layers/clip_rect_layer.cc",
    "layers/clip_rect_layer.h",
    "layers/clip_rrect_layer.cc",
    "layers/clip_rrect_layer.h",
    "layers/color_filter_layer.cc",
    "layers/color_filter_layer.h",
    "layers/container_layer.cc",
    "layers/container_layer.h",
    "layers/layer.cc",
    "layers/layer.h",
    "layers/layer_tree.cc",
    "layers/layer_tree.h",
    "layers/opacity_layer.cc",
    "layers/opacity_layer.h",
    "layers/performance_overlay_layer.cc",
    "layers/performance_overlay_layer.h",
    "layers/physical_shape_layer.cc",
    "layers/physical_shape_layer.h",
    "layers/picture_layer.cc",
    "layers/picture_layer.h",
    "layers/platform_view_layer.cc",
    "layers/platform_view_layer.h",
    "layers/shader_mask_layer.cc",
    "layers/shader_mask_layer.h",
    "layers/texture_layer.cc",
    "layers/texture_layer.h",
    "layers/transform_layer.cc",
    "layers/transform_layer.h",
    "matrix_decomposition.cc",
    "matrix_decomposition.h",
    "paint_utils.cc",
    "paint_utils.h",
    "raster_cache.cc",
    "raster_cache.h",
    "raster_cache_key.cc",
    "raster_cache_key.h",
    "skia_gpu_object.cc",
    "skia_gpu_object.h",
    "texture.cc",
    "texture.h",
  ]

  public_configs = [ "$flutter_root:config" ]

  public_deps = []

  deps = [
    "$flutter_root/common",
    "$flutter_root/fml",
    "$flutter_root/synchronization",
    "//third_party/skia",
  ]

  if (is_fuchsia) {
    sources += [
      "export_node.cc",
      "export_node.h",
      "layers/child_scene_layer.cc",
      "layers/child_scene_layer.h",
      "scene_update_context.cc",
      "scene_update_context.h",
    ]

    public_deps += [
      "//sdk/fidl/fuchsia.ui.scenic",
      "//garnet/public/lib/ui/scenic/cpp",
      "//topaz/public/dart-pkg/zircon",
    ]

    public_deps += [ "//zircon/public/lib/zx" ]
  }
}

executable("flow_unittests") {
  testonly = true

  sources = [
    "matrix_decomposition_unittests.cc",
    "raster_cache_unittests.cc",
  ]

  deps = [
    ":flow",
    "$flutter_root/testing",
    "//third_party/dart/runtime:libdart_jit",  # for tracing
    "//third_party/skia",
  ]
}
