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

source_set("embedder") {
  # This isn't really a standalone target, it must be linked into the
  # mojo_system_impl component.
  visibility = [ "//mojo/edk/system" ]

  deps = [ "//base", ]

  defines = [
    "MOJO_SYSTEM_IMPL_IMPLEMENTATION",
    "MOJO_SYSTEM_IMPLEMENTATION",
  ]

  configs += [ "//mojo/edk/system:system_config" ]

  sources = [
    "channel_init.cc",
    "channel_init.h",
    "embedder.cc",
    "embedder.h",
    "platform_channel_pair.cc",
    "platform_channel_pair.h",
    "platform_channel_pair_posix.cc",
    "platform_channel_pair_win.cc",
    "platform_channel_utils_posix.cc",
    "platform_channel_utils_posix.h",
    "platform_handle.cc",
    "platform_handle.h",
    "platform_handle_utils.h",
    "platform_handle_utils_posix.cc",
    "platform_handle_utils_win.cc",
    "platform_handle_vector.h",
    "platform_shared_buffer.h",
    "platform_support.h",
    "scoped_platform_handle.h",
    "simple_platform_shared_buffer.cc",
    "simple_platform_shared_buffer.h",
    "simple_platform_shared_buffer_posix.cc",
    "simple_platform_shared_buffer_win.cc",
    "simple_platform_support.cc",
    "simple_platform_support.h",
    # Test-only code:
    # TODO(vtl): It's a little unfortunate that these end up in the same
    # component as non-test-only code. In the static build, this code should
    # hopefully be dead-stripped.
    "test_embedder.cc",
    "test_embedder.h",
  ]
}

source_set("embedder_unittests") {
  testonly = true
  visibility = [ "//mojo/edk/system:mojo_system_unittests" ]
  testonly = true

  deps = [
    "//base",
    "//mojo/edk/test:test_support",
    "//mojo/edk/system",
    "//testing/gtest",
  ]

  sources = [
    "embedder_unittest.cc",
    "platform_channel_pair_posix_unittest.cc",
    "simple_platform_shared_buffer_unittest.cc",
  ]
}
