# 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",
    "picture_serializer.cc",
    "picture_serializer.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",
    "texture_cache.cc",
    "texture_cache.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",
    "//third_party/libpng",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}
