# Copyright 2018 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_overrides/build.gni") # Source files that depend on nothing (all your base/ are belong to us). source_set("base") { defines = [] sources = [ "base/error.cc", "base/error.h", "base/interface_info.cc", "base/interface_info.h", "base/ip_address.cc", "base/ip_address.h", "base/location.cc", "base/location.h", "base/tls_connect_options.h", "base/tls_credentials.cc", "base/tls_credentials.h", "base/tls_listen_options.h", "base/trace_logging_activation.cc", "base/trace_logging_activation.h", "base/trace_logging_types.h", "base/trivial_clock_traits.cc", "base/trivial_clock_traits.h", "base/udp_packet.cc", "base/udp_packet.h", ] public_configs = [ "../build:openscreen_include_dirs" ] } # Public API source files. These may depend on nothing except :base. source_set("api") { defines = [] sources = [ "api/export.h", "api/logging.h", "api/network_interface.h", "api/scoped_wake_lock.cc", "api/scoped_wake_lock.h", "api/serial_delete_ptr.h", "api/task_runner.h", "api/time.h", "api/tls_connection.cc", "api/tls_connection.h", "api/tls_connection_factory.cc", "api/tls_connection_factory.h", "api/trace_logging_platform.cc", "api/trace_logging_platform.h", "api/udp_socket.cc", "api/udp_socket.h", ] public_deps = [ ":base" ] } # The following target is only activated in standalone builds (see :platform). if (!build_with_chromium) { source_set("standalone_impl") { defines = [] sources = [ "impl/logging.h", "impl/network_interface.cc", "impl/network_interface.h", "impl/socket_handle.h", "impl/socket_handle_waiter.cc", "impl/socket_handle_waiter.h", "impl/socket_state.h", "impl/stream_socket.h", "impl/task_runner.cc", "impl/task_runner.h", "impl/text_trace_logging_platform.cc", "impl/text_trace_logging_platform.h", "impl/time.cc", "impl/tls_write_buffer.cc", "impl/tls_write_buffer.h", ] public_configs = [ "//util:trace_logging_config" ] if (is_linux) { sources += [ "impl/network_interface_linux.cc", "impl/scoped_wake_lock_linux.cc", "impl/scoped_wake_lock_linux.h", ] } else if (is_mac) { defines += [ # Required, to use the new IPv6 Sockets options introduced by RFC 3542. "__APPLE_USE_RFC_3542", ] frameworks = [ "CoreFoundation.framework", "IOKit.framework", ] sources += [ "impl/network_interface_mac.cc", "impl/scoped_wake_lock_mac.cc", "impl/scoped_wake_lock_mac.h", ] } if (is_posix) { sources += [ "impl/logging_posix.cc", "impl/logging_test.h", "impl/platform_client_posix.cc", "impl/platform_client_posix.h", "impl/scoped_pipe.h", "impl/socket_address_posix.cc", "impl/socket_address_posix.h", "impl/socket_handle_posix.cc", "impl/socket_handle_posix.h", "impl/socket_handle_waiter_posix.cc", "impl/socket_handle_waiter_posix.h", "impl/stream_socket_posix.cc", "impl/stream_socket_posix.h", "impl/timeval_posix.cc", "impl/timeval_posix.h", "impl/tls_connection_factory_posix.cc", "impl/tls_connection_factory_posix.h", "impl/tls_connection_posix.cc", "impl/tls_connection_posix.h", "impl/tls_data_router_posix.cc", "impl/tls_data_router_posix.h", "impl/udp_socket_posix.cc", "impl/udp_socket_posix.h", "impl/udp_socket_reader_posix.cc", "impl/udp_socket_reader_posix.h", ] } deps = [ ":api", "../third_party/abseil", "../third_party/boringssl", "../util", ] } } # The main target, which either assumes an embedder will link-in the platform # API implementation elsewhere, or links-in the :standalone_impl in the build. source_set("platform") { public_deps = [ ":api" ] if (!build_with_chromium) { deps = [ ":standalone_impl" ] } } # Test helpers, referenced in other Open Screen BUILD.gn test targets. source_set("test") { testonly = true sources = [ "test/fake_clock.cc", "test/fake_clock.h", "test/fake_task_runner.cc", "test/fake_task_runner.h", "test/fake_udp_socket.cc", "test/fake_udp_socket.h", "test/mock_tls_connection.h", "test/mock_udp_socket.h", "test/paths.h", "test/paths_internal.h", "test/trace_logging_helpers.h", ] if (is_posix) { sources += [ "test/paths_posix.cc" ] } if (is_linux) { sources += [ "test/paths_internal_linux.cc" ] } else if (is_mac) { sources += [ "test/paths_internal_mac.cc" ] } else if (build_with_chromium) { # NOTE: This is used to resolve a linking issue when compiling in Chromium # for other platforms, but nothing in here is called. sources += [ "test/paths_internal_other.cc" ] } public_deps = [ ":api", ":base", ] deps = [ ":platform", "../third_party/abseil", "../third_party/googletest:gmock", "../util", ] } source_set("unittests") { testonly = true sources = [ "api/serial_delete_ptr_unittest.cc", "api/time_unittest.cc", "base/error_unittest.cc", "base/ip_address_unittest.cc", "base/location_unittest.cc", "base/udp_packet_unittest.cc", ] # The socket integration tests assume that you can Bind with UDP sockets, # which is simply not true when we are built inside of Chromium. if (!build_with_chromium) { sources += [ "api/socket_integration_unittest.cc" ] } # The unit tests in impl/ assume the standalone implementation is being used. # Exclude them if an embedder is providing the implementation. if (!build_with_chromium) { sources += [ "impl/task_runner_unittest.cc", "impl/time_unittest.cc", ] if (is_posix) { sources += [ "impl/logging_unittest.cc", "impl/scoped_pipe_unittest.cc", "impl/socket_address_posix_unittest.cc", "impl/socket_handle_waiter_posix_unittest.cc", "impl/timeval_posix_unittest.cc", "impl/tls_data_router_posix_unittest.cc", "impl/tls_write_buffer_unittest.cc", "impl/udp_socket_reader_posix_unittest.cc", ] } } deps = [ ":platform", ":test", "../third_party/abseil", "../third_party/boringssl", "../third_party/googletest:gmock", "../third_party/googletest:gtest", "../util", ] }