# Copyright 2012 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/buildflag_header.gni")
import("//build/config/features.gni")
import("//build/config/nacl/config.gni")
import("//ipc/features.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//testing/test.gni")
import("//third_party/protobuf/proto_library.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")

buildflag_header("ipc_buildflags") {
  header = "ipc_buildflags.h"

  flags = [ "IPC_MESSAGE_LOG_ENABLED=$enable_ipc_logging" ]
}

component("ipc") {
  sources = [
    # These are the param_traits sources needed by all platforms,
    # including ios. The rest are added in a conditional block below.
    "ipc_message_utils.cc",
    "ipc_message_utils.h",
    "ipc_mojo_param_traits.cc",
    "ipc_mojo_param_traits.h",
    "param_traits_log_macros.h",
    "param_traits_macros.h",
    "param_traits_read_macros.h",
    "param_traits_write_macros.h",
    "struct_constructor_macros.h",
  ]

  if (use_blink) {
    sources += [
      # Most sources go here since ios only needs the param_traits
      # code.
      "ipc_channel.h",
      "ipc_channel_common.cc",
      "ipc_channel_factory.cc",
      "ipc_channel_factory.h",
      "ipc_channel_handle.h",
      "ipc_channel_mojo.cc",
      "ipc_channel_mojo.h",
      "ipc_channel_proxy.cc",
      "ipc_channel_proxy.h",
      "ipc_channel_reader.cc",
      "ipc_channel_reader.h",
      "ipc_listener.cc",
      "ipc_listener.h",
      "ipc_logging.cc",
      "ipc_logging.h",
      "ipc_message_macros.h",
      "ipc_message_pipe_reader.cc",
      "ipc_message_pipe_reader.h",
      "ipc_message_start.h",
      "ipc_message_templates.h",
      "ipc_message_templates_impl.h",
      "ipc_mojo_bootstrap.cc",
      "ipc_mojo_bootstrap.h",
      "ipc_sender.h",
      "ipc_sync_channel.cc",
      "ipc_sync_channel.h",
      "ipc_sync_message_filter.cc",
      "ipc_sync_message_filter.h",
      "message_filter.cc",
      "message_filter.h",
      "message_filter_router.cc",
      "message_filter_router.h",
      "message_router.cc",
      "message_router.h",
      "trace_ipc_message.cc",
      "trace_ipc_message.h",
      "urgent_message_observer.h",
    ]
  }

  if (is_nacl) {
    sources += [
      "ipc_channel_nacl.cc",
      "ipc_channel_nacl.h",
    ]
  } else {
    sources += [ "ipc_channel.cc" ]
  }

  defines = [ "IS_IPC_IMPL" ]

  public_deps = [
    ":ipc_buildflags",
    ":message_support",
    ":mojom",
    ":native_handle_type_converters",
    ":param_traits",
    "//base",
    "//mojo/public/cpp/base",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//services/tracing/public/cpp",
  ]

  deps = [ "//base" ]

  if (enable_ipc_fuzzer) {
    public_configs = [ "//tools/ipc_fuzzer:ipc_fuzzer_config" ]
  }
}

component("message_support") {
  sources = [
    "ipc_message.cc",
    "ipc_message.h",
    "ipc_message_attachment.cc",
    "ipc_message_attachment.h",
    "ipc_message_attachment_set.cc",
    "ipc_message_attachment_set.h",
    "ipc_message_support_export.h",
    "ipc_mojo_handle_attachment.cc",
    "ipc_mojo_handle_attachment.h",
    "ipc_mojo_message_helper.cc",
    "ipc_mojo_message_helper.h",
    "ipc_platform_file.cc",
    "ipc_platform_file.h",
    "ipc_sync_message.cc",
    "ipc_sync_message.h",
  ]

  if (is_win) {
    sources += [
      "handle_attachment_win.cc",
      "handle_attachment_win.h",
      "handle_win.cc",
      "handle_win.h",
    ]
  }

  if (is_posix || is_fuchsia) {
    sources += [
      "ipc_platform_file_attachment_posix.cc",
      "ipc_platform_file_attachment_posix.h",
    ]
  }

  if (is_apple) {
    sources += [
      "mach_port_attachment_mac.cc",
      "mach_port_attachment_mac.h",
      "mach_port_mac.cc",
      "mach_port_mac.h",
    ]
  }

  if (is_fuchsia) {
    sources += [
      "handle_attachment_fuchsia.cc",
      "handle_attachment_fuchsia.h",
    ]
  }

  defines = [ "IPC_MESSAGE_SUPPORT_IMPL" ]

  public_deps = [
    ":ipc_buildflags",
    ":param_traits",
    "//base",
    "//mojo/public/cpp/system",
  ]

  if (is_win || is_mac) {
    # On Windows HandleAttachmentWin needs to generate random IDs.
    # On Mac MachPortAttachmentMac needs to generate random IDs.
    deps = [ "//crypto" ]
  }
}

source_set("native_handle_type_converters") {
  sources = [
    "native_handle_type_converters.cc",
    "native_handle_type_converters.h",
  ]
  public_deps = [
    ":message_support",
    "//mojo/public/interfaces/bindings:bindings_headers",
  ]
}

mojom_component("mojom") {
  output_prefix = "ipc_mojom"
  macro_prefix = "IPC_MOJOM"
  sources = [ "ipc.mojom" ]
  public_deps = [
    "//mojo/public/interfaces/bindings",
    "//mojo/public/mojom/base",
  ]

  cpp_typemaps = [
    {
      types = [
        {
          mojom = "IPC.mojom.Message"
          cpp = "::IPC::MessageView"
          move_only = true
        },
      ]
      traits_headers = [ "//ipc/message_mojom_traits.h" ]
      traits_sources = [
        "//ipc/message_mojom_traits.cc",
        "//ipc/message_view.cc",
        "//ipc/message_view.h",
      ]
      traits_public_deps = [ "//ipc:message_support" ]
    },
  ]

  # Don't generate a variant sources since we depend on generated internal
  # bindings types and we don't generate or build variants of those.
  disable_variants = true
}

mojom("mojom_constants") {
  sources = [ "constants.mojom" ]
}

mojom("test_interfaces") {
  testonly = true
  sources = [ "ipc_test.mojom" ]
  support_lazy_serialization = true
}

# This is provided as a separate target so other targets can provide param
# traits implementations without necessarily linking to all of IPC.
source_set("param_traits") {
  public = [ "ipc_param_traits.h" ]
}

# This is provided as a separate target so other targets can use IPC without
# necessarily linking to protobuf.
source_set("protobuf_support") {
  public = [ "ipc_message_protobuf_utils.h" ]
  public_deps = [
    ":ipc",
    "//third_party/protobuf:protobuf_lite",
  ]
}

static_library("test_sink") {
  testonly = true
  sources = [
    "ipc_security_test_util.cc",
    "ipc_security_test_util.h",
    "ipc_test_sink.cc",
    "ipc_test_sink.h",
  ]
  public_deps = [ ":ipc" ]
  deps = [
    "//base",
    "//base/test:test_support",
    "//mojo/core/test:test_support",
  ]
}

if (use_blink) {
  source_set("run_all_unittests") {
    testonly = true

    sources = [ "run_all_unittests.cc" ]

    deps = [
      "//base",
      "//base/test:test_support",
      "//mojo/core/embedder",
      "//mojo/core/test:test_support",
      "//third_party/ipcz/src:ipcz_test_support_chromium",
      "//third_party/ipcz/src:test_buildflags",
    ]
  }

  proto_library("test_proto") {
    sources = [ "test_proto.proto" ]
  }

  test("ipc_tests") {
    sources = [
      "ipc_channel_mojo_unittest.cc",
      "ipc_channel_proxy_unittest.cc",
      "ipc_channel_reader_unittest.cc",
      "ipc_fuzzing_tests.cc",
      "ipc_message_protobuf_utils_unittest.cc",
      "ipc_message_unittest.cc",
      "ipc_message_utils_unittest.cc",
      "ipc_mojo_bootstrap_unittest.cc",
      "ipc_sync_channel_unittest.cc",
      "ipc_sync_message_unittest.cc",
      "ipc_sync_message_unittest.h",
      "sync_socket_unittest.cc",
    ]

    if (is_posix || is_fuchsia) {
      sources += [ "ipc_message_attachment_set_posix_unittest.cc" ]
      if (!is_ios) {
        sources += [ "ipc_send_fds_test.cc" ]
      }
    }

    deps = [
      ":ipc",
      ":protobuf_support",
      ":run_all_unittests",
      ":test_interfaces",
      ":test_proto",
      ":test_support",
      "//base",
      "//base:i18n",
      "//base/test:test_support",
      "//crypto",
      "//mojo/core:driver_for_ipcz_tests",
      "//mojo/core/test:test_support",
      "//testing/gtest",
      "//third_party/ipcz/src:ipcz_tests_sources_chromium",
    ]

    if (is_mac) {
      deps += [ "//sandbox/mac:seatbelt" ]
    }
  }

  test("ipc_perftests") {
    sources = [
      "ipc_cpu_perftest.cc",
      "ipc_mojo_perftest.cc",
      "ipc_perftest_messages.cc",
      "ipc_perftest_messages.h",
      "ipc_perftest_util.cc",
      "ipc_perftest_util.h",
      "run_all_perftests.cc",
    ]

    deps = [
      ":ipc",
      ":test_interfaces",
      ":test_support",
      "//base",
      "//base:i18n",
      "//base/test:test_support",
      "//mojo/core/embedder",
      "//mojo/core/test:test_support",
      "//mojo/core/test:test_support_impl",
      "//testing/gtest",
    ]
  }

  static_library("test_support") {
    testonly = true
    sources = [
      "ipc_test_base.cc",
      "ipc_test_base.h",
      "ipc_test_channel_listener.cc",
      "ipc_test_channel_listener.h",
    ]
    public_deps = [
      ":ipc",
      ":test_sink",
    ]
    deps = [
      "//base",
      "//base/test:test_support",
      "//mojo/core/test:test_support",
      "//testing/gtest",
    ]
  }
}
