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

config("config") {
  include_dirs = [ "forwarding_headers" ]
}

config("private_config") {
  include_dirs = [ "src/src" ]
  visibility = [ ":motion_animator_objc" ]
}

source_set("motion_animator_objc") {
  sources = [
    "src/src/CATransaction+MotionAnimator.h",
    "src/src/CATransaction+MotionAnimator.m",
    "src/src/MDMAnimatableKeyPaths.h",
    "src/src/MDMAnimatableKeyPaths.m",
    "src/src/MDMCoreAnimationTraceable.h",
    "src/src/MDMMotionAnimator.h",
    "src/src/MDMMotionAnimator.m",
    "src/src/MotionAnimator.h",
    "src/src/private/CABasicAnimation+MotionAnimator.h",
    "src/src/private/CABasicAnimation+MotionAnimator.m",
    "src/src/private/CAMediaTimingFunction+MotionAnimator.h",
    "src/src/private/CAMediaTimingFunction+MotionAnimator.m",
    "src/src/private/MDMAnimationRegistrar.h",
    "src/src/private/MDMAnimationRegistrar.m",
    "src/src/private/MDMBlockAnimations.h",
    "src/src/private/MDMBlockAnimations.m",
    "src/src/private/MDMDragCoefficient.h",
    "src/src/private/MDMDragCoefficient.m",
    "src/src/private/MDMRegisteredAnimation.h",
    "src/src/private/MDMRegisteredAnimation.m",
    "src/src/private/MDMUIKitValueCoercion.h",
    "src/src/private/MDMUIKitValueCoercion.m",
  ]
  public = [
    "src/src/CATransaction+MotionAnimator.h",
    "src/src/MDMAnimatableKeyPaths.h",
    "src/src/MDMCoreAnimationTraceable.h",
    "src/src/MDMMotionAnimator.h",
    "src/src/MotionAnimator.h",
  ]

  libs = [
    "CoreGraphics.framework",
    "Foundation.framework",
    "QuartzCore.framework",
    "UIKit.framework",
  ]
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    ":private_config",
    "//build/config/compiler:enable_arc",
    "//build/config/compiler:no_chromium_code",
  ]
  public_configs = [
    ":config",
    "//build/config/compiler:default_include_dirs",
  ]

  public_deps = [
    "//ios/third_party/motion_interchange_objc",
  ]
}
