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

import("//build/config/ui.gni")

keyframe_animation_remove_configs = []
keyframe_animation_add_configs = [
  "//build/config:precompiled_headers",
  "//build/config/compiler:noshadowing",
  "//build/config/compiler:wexit_time_destructors",
]

if (!is_debug) {
  keyframe_animation_remove_configs +=
      [ "//build/config/compiler:default_optimization" ]
  keyframe_animation_add_configs += [ "//build/config/compiler:optimize_max" ]
}

component("keyframe") {
  sources = [
    "animation_curve.cc",
    "animation_curve.h",
    "keyframe_animation_export.h",
    "keyframe_effect.cc",
    "keyframe_effect.h",
    "keyframe_model.cc",
    "keyframe_model.h",
    "keyframed_animation_curve-inl.h",
    "keyframed_animation_curve.cc",
    "keyframed_animation_curve.h",
    "target_property.h",
    "timing_function.cc",
    "timing_function.h",
    "transition.cc",
    "transition.h",
  ]

  defines = [ "GFX_KEYFRAME_ANIMATION_IMPLEMENTATION=1" ]

  deps = [
    "//base",
    "//skia",
    "//ui/gfx/animation",
    "//ui/gfx/geometry",
    "//ui/gfx/geometry:geometry_skia",
  ]

  configs += keyframe_animation_add_configs
  configs -= keyframe_animation_remove_configs
}
