# 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("//build/config/nacl/config.gni") import("//testing/test.gni") import("../../../mojo/public/tools/bindings/mojom.gni") if (is_android) { import("//build/config/android/config.gni") import("//build/config/android/rules.gni") } component("system") { output_name = "mojo_system_impl" sources = [ "atomic_flag.h", "broker.h", "broker_host.cc", "broker_host.h", "broker_win.cc", "channel.cc", "channel.h", "channel_win.cc", "configuration.cc", "configuration.h", "core.cc", "core.h", "data_pipe_consumer_dispatcher.cc", "data_pipe_consumer_dispatcher.h", "data_pipe_control_message.cc", "data_pipe_control_message.h", "data_pipe_producer_dispatcher.cc", "data_pipe_producer_dispatcher.h", "dispatcher.cc", "dispatcher.h", "handle_signals_state.h", "handle_table.cc", "handle_table.h", "mapping_table.cc", "mapping_table.h", "message_pipe_dispatcher.cc", "message_pipe_dispatcher.h", "node_channel.cc", "node_channel.h", "node_controller.cc", "node_controller.h", "options_validation.h", "platform_handle_dispatcher.cc", "platform_handle_dispatcher.h", "request_context.cc", "request_context.h", "shared_buffer_dispatcher.cc", "shared_buffer_dispatcher.h", "user_message_impl.cc", "user_message_impl.h", "watch.cc", "watch.h", "watcher_dispatcher.cc", "watcher_dispatcher.h", "watcher_set.cc", "watcher_set.h", ] if (is_mac && !is_ios) { sources += [ "mach_port_relay.cc", "mach_port_relay.h", ] } if (is_fuchsia) { sources += [ "channel_fuchsia.cc" ] } else if (is_posix) { sources += [ "broker_posix.cc", "channel_posix.cc", ] } if (is_nacl && !is_nacl_nonsfi) { sources -= [ "broker_host.cc", "broker_posix.cc", "channel_posix.cc", ] } defines = [ "MOJO_SYSTEM_IMPL_IMPLEMENTATION" ] public_deps = [ "//mojo/edk/embedder", "//mojo/edk/embedder:platform", "//mojo/edk/system/ports", "//mojo/public/c/system", "//mojo/public/cpp/system", ] deps = [ "//base", ] if (!is_nacl) { deps += [ "//crypto" ] } if (is_win) { cflags = [ "/wd4324" ] # Structure was padded due to __declspec(align()), # which is uninteresting. } # Use target_os == "chromeos" instead of is_chromeos because we need to # build NaCl targets (i.e. IRT) for ChromeOS the same as the rest of ChromeOS. if (is_android || target_os == "chromeos") { defines += [ "MOJO_EDK_LEGACY_PROTOCOL" ] } allow_circular_includes_from = [ "//mojo/edk/embedder" ] } group("tests") { testonly = true deps = [ ":mojo_system_unittests", ] if (!is_ios) { deps += [ ":mojo_message_pipe_perftests" ] } } source_set("test_utils") { testonly = true sources = [ "test_utils.cc", "test_utils.h", ] public_deps = [ "//mojo/public/c/system", "//mojo/public/cpp/system", ] deps = [ "//base", "//base/test:test_support", "//mojo/edk/test:test_support", "//testing/gtest:gtest", ] } test("mojo_system_unittests") { sources = [ "channel_unittest.cc", "core_test_base.cc", "core_test_base.h", "core_unittest.cc", "handle_table_unittest.cc", "message_pipe_unittest.cc", "message_unittest.cc", "options_validation_unittest.cc", "platform_handle_dispatcher_unittest.cc", "shared_buffer_dispatcher_unittest.cc", "shared_buffer_unittest.cc", "signals_unittest.cc", "watcher_unittest.cc", ] if (!is_ios) { sources += [ "data_pipe_unittest.cc", "multiprocess_message_pipe_unittest.cc", "platform_wrapper_unittest.cc", ] } deps = [ ":test_utils", "//base", "//base/test:test_support", "//mojo/edk/embedder:embedder_unittests", "//mojo/edk/system", "//mojo/edk/system/ports:tests", "//mojo/edk/test:run_all_unittests", "//mojo/edk/test:test_support", "//mojo/public/cpp/system", "//testing/gmock", "//testing/gtest", ] allow_circular_includes_from = [ "//mojo/edk/embedder:embedder_unittests" ] } if (!is_ios) { test("mojo_message_pipe_perftests") { sources = [ "message_pipe_perftest.cc", ] deps = [ ":test_utils", "//base", "//base/test:test_support", "//mojo/edk/system", "//mojo/edk/test:run_all_perftests", "//mojo/edk/test:test_support", "//testing/gtest", ] } }