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

source_set("compositor") {
  sources = [
    "layer.cc",
    "layer.h",
    "layer_client.cc",
    "layer_client.h",
    "layer_host.cc",
    "layer_host.h",
    "layer_host_client.cc",
    "layer_host_client.h",
    "rasterizer.cc",
    "rasterizer.h",
    "rasterizer_bitmap.cc",
    "rasterizer_bitmap.h",
    "rasterizer_ganesh.cc",
    "rasterizer_ganesh.h",
    "resource_manager.cc",
    "resource_manager.h",
    "surface_allocator.cc",
    "surface_allocator.h",
    "surface_holder.cc",
    "surface_holder.h",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/converters/geometry",
    "//mojo/converters/surfaces",
    "//mojo/gpu",
    "//mojo/public/c/gles2",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/environment",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/utility",
    "//mojo/public/interfaces/application",
    "//mojo/services/geometry/public/interfaces",
    "//mojo/services/surfaces/public/cpp",
    "//mojo/services/surfaces/public/interfaces",
    "//mojo/services/surfaces/public/interfaces:surface_id",
    "//mojo/skia",
    "//skia",
    "//ui/gfx/geometry",
  ]
}
