# 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("surface_id") {
  sources = [
    "surface_id.h",
  ]

  deps = [
    "//base",
  ]
}

component("surfaces") {
  output_name = "cc_surfaces"
  sources = [
    "display.cc",
    "display.h",
    "display_client.h",
    "surface.cc",
    "surface.h",
    "surface_aggregator.cc",
    "surface_aggregator.h",
    "surface_factory.cc",
    "surface_factory.h",
    "surface_factory_client.h",
    "surface_id_allocator.cc",
    "surface_id_allocator.h",
    "surface_manager.cc",
    "surface_manager.h",
    "surface_resource_holder.cc",
    "surface_resource_holder.h",
    "surfaces_export.h",
  ]

  defines = [ "CC_SURFACES_IMPLEMENTATION=1" ]

  deps = [
    ":surface_id",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//skia",
    "//ui/events:events_base",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  if (is_android && !is_debug) {
    configs -= [ "//build/config/compiler:optimize" ]
    configs += [ "//build/config/compiler:optimize_max" ]
  }
}
