123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- # Copyright (c) 2012 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/buildflag_header.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 (!is_ios) {
- 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",
- ]
- }
- 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",
- ]
- }
- if (!is_ios) {
- 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/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_security_test_util.cc",
- "ipc_security_test_util.h",
- "ipc_test_base.cc",
- "ipc_test_base.h",
- "ipc_test_channel_listener.cc",
- "ipc_test_channel_listener.h",
- "ipc_test_sink.cc",
- "ipc_test_sink.h",
- ]
- public_deps = [ ":ipc" ]
- deps = [
- "//base",
- "//base/test:test_support",
- "//mojo/core/test:test_support",
- "//testing/gtest",
- ]
- }
- }
|