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

component("geometry") {
  sources = [
    "../gfx_export.h",
    "box_f.cc",
    "box_f.h",
    "cubic_bezier.h",
    "cubic_bezier.cc",
    "insets.cc",
    "insets.h",
    "insets_base.h",
    "insets_f.cc",
    "insets_f.h",
    "matrix3_f.cc",
    "matrix3_f.h",
    "point.cc",
    "point.h",
    "point3_f.cc",
    "point3_f.h",
    "point_conversions.cc",
    "point_conversions.h",
    "point_f.cc",
    "point_f.h",
    "quad_f.cc",
    "quad_f.h",
    "rect.cc",
    "rect.h",
    "rect_conversions.cc",
    "rect_conversions.h",
    "rect_f.cc",
    "rect_f.h",
    "r_tree.h",
    "r_tree_base.cc",
    "r_tree_base.h",
    "safe_integer_conversions.h",
    "scroll_offset.cc",
    "scroll_offset.h",
    "size.cc",
    "size.h",
    "size_conversions.cc",
    "size_conversions.h",
    "size_f.cc",
    "size_f.h",
    "vector2d.cc",
    "vector2d.h",
    "vector2d_conversions.cc",
    "vector2d_conversions.h",
    "vector2d_f.cc",
    "vector2d_f.h",
    "vector3d_f.cc",
    "vector3d_f.h",
  ]

  defines = [ "GFX_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//ui/gfx:gfx_export",
  ]

  # TODO(jdduke): Revisit optimization after gauging benefit, crbug/419051.
  if (is_android && !is_debug) {
    configs -= [ "//build/config/compiler:optimize" ]
    configs += [ "//build/config/compiler:optimize_max" ]
  }
}
