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

import("../mojo_edk.gni")

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

  sources = [
    "channel_info_forward.h",
    "configuration.h",
    "embedder.cc",
    "embedder.h",
    "embedder_internal.h",
    "entrypoints.cc",
    "system_impl_private_entrypoints.cc",

    # 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",
  ]

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

  mojo_edk_configs = [ "mojo/edk/system:system_config" ]

  public_deps = [
    ":delegates",
    ":platform",
  ]

  mojo_sdk_deps = [ "mojo/public/platform/native:system_impl_private_api" ]

  mojo_sdk_public_deps = [ "mojo/public/cpp/system" ]

  deps = [
    "//base",
  ]
}

mojo_edk_source_set("platform") {
  # This isn't really a standalone target; it must be linked into the
  # mojo_system_impl component.
  visibility = [ ":embedder" ]

  mojo_edk_visibility = [
    "mojo/edk/system",
    "mojo/edk/system:test_utils",
  ]

  sources = [
    "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_android.cc",
    "simple_platform_shared_buffer_posix.cc",
    "simple_platform_shared_buffer_win.cc",
    "simple_platform_support.cc",
    "simple_platform_support.h",
  ]

  defines = [ "MOJO_SYSTEM_IMPL_IMPLEMENTATION" ]

  mojo_edk_configs = [ "mojo/edk/system:system_config" ]

  mojo_sdk_public_deps = [ "mojo/public/cpp/system" ]

  deps = [
    "//base",
  ]

  if (is_android) {
    deps += [ "//third_party/ashmem" ]
  }

  mojo_edk_deps = [ "mojo/edk/util" ]
}

mojo_edk_source_set("delegates") {
  # This isn't really a standalone target; it must be linked into the
  # mojo_system_impl component.
  visibility = [ ":embedder" ]

  mojo_edk_visibility = [ "mojo/edk/system" ]

  sources = [
    "master_process_delegate.h",
    "process_delegate.h",
    "process_type.h",
    "slave_info.h",
    "slave_process_delegate.h",
  ]

  defines = [ "MOJO_SYSTEM_IMPL_IMPLEMENTATION" ]

  mojo_edk_configs = [ "mojo/edk/system:system_config" ]

  mojo_sdk_public_deps = [ "mojo/public/cpp/system" ]
}

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

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

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

  mojo_edk_deps = [
    "mojo/edk/test:test_support",
    "mojo/edk/system",
    "mojo/edk/system:test_utils",
    "mojo/edk/util",
  ]
}
