# Copyright 2017 The Fuchsia 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/cpp/sdk_source_set.gni")
import("//src/sys/build/components.gni")

sdk_source_set("cpp") {
  category = "partner"

  sdk_name = "media_cpp"

  sources = [
    "type_converters.cc",
    "type_converters.h",
  ]

  include_base = "//sdk"

  public_deps = [
    ":no_converters",
    "//sdk/fidl/fuchsia.media",
  ]

  public_configs = [ "//sdk/config" ]
}

sdk_source_set("no_converters") {
  category = "partner"

  sdk_name = "media_cpp_no_converters"

  sources = [
    "timeline_function.cc",
    "timeline_function.h",
    "timeline_rate.cc",
    "timeline_rate.h",
  ]

  include_base = "//sdk"

  public_configs = [ "//sdk/config" ]
}

executable("test_bin") {
  testonly = true
  output_name = "media_lib_timeline_tests"

  sources = [
    "test/timeline_function_test.cc",
    "test/timeline_rate_test.cc",
  ]

  deps = [
    ":cpp",
    "//src/lib/fxl/test:gtest_main",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

fuchsia_unittest_package("media_lib_timeline_tests") {
  deps = [ ":test_bin" ]
}
