# Copyright 2015 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/module_args/mojo.gni")
import("$mojo_sdk_root/mojo/public/mojo_sdk.gni")

mojo_sdk_source_set("cpp") {
  restrict_external_deps = false
  sources = [
    "circular_buffer_media_pipe_adapter.cc",
    "circular_buffer_media_pipe_adapter.h",
    "fifo_allocator.cc",
    "fifo_allocator.h",
    "linear_transform.cc",
    "linear_transform.h",
    "local_time.h",
    "mapped_shared_buffer.cc",
    "mapped_shared_buffer.h",
    "shared_media_buffer_allocator.cc",
    "shared_media_buffer_allocator.h",
  ]

  if (is_posix) {
    sources += [
      "platform/posix/local_time.cc",
      "platform/posix/local_time.h",
    ]
  } else {
    sources += [ "platform/generic/local_time.h" ]
  }

  deps = [
    "$mojo_sdk_root/mojo/public/cpp/environment",
    "$mojo_sdk_root/mojo/public/cpp/utility",
    "$mojo_sdk_root/mojo/services/media/common/interfaces",
  ]
}
