# Copyright 2017 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/config/cast.gni") import("//third_party/webrtc/webrtc.gni") if (is_android) { import("//build/config/android/rules.gni") } webrtc_configs = [ "//third_party/webrtc:common_config" ] webrtc_public_configs = [ "//third_party/webrtc:common_inherited_config" ] webrtc_public_deps = [ ":bridge_ice_controller", ":environment", ":init_webrtc", ":metrics", ":task_queue_factory", "//third_party/webrtc/api:async_dns_resolver", "//third_party/webrtc/api:candidate", "//third_party/webrtc/api:create_modular_peer_connection_factory", "//third_party/webrtc/api:data_channel_interface", "//third_party/webrtc/api:datagram_connection", "//third_party/webrtc/api:datagram_connection_factory", "//third_party/webrtc/api:dtls_transport_interface", "//third_party/webrtc/api:dtmf_sender_interface", "//third_party/webrtc/api:enable_media", "//third_party/webrtc/api:field_trials_view", "//third_party/webrtc/api:frame_transformer_factory", "//third_party/webrtc/api:frame_transformer_interface", "//third_party/webrtc/api:ice_transport_factory", "//third_party/webrtc/api:ice_transport_interface", "//third_party/webrtc/api:jsep", "//third_party/webrtc/api:libjingle_logging_api", "//third_party/webrtc/api:local_network_access_permission", "//third_party/webrtc/api:location", "//third_party/webrtc/api:make_ref_counted", "//third_party/webrtc/api:media_stream_interface", "//third_party/webrtc/api:packet_socket_factory", "//third_party/webrtc/api:peer_connection_interface", "//third_party/webrtc/api:priority", "//third_party/webrtc/api:rtc_error", "//third_party/webrtc/api:rtc_stats_api", "//third_party/webrtc/api:rtp_headers", "//third_party/webrtc/api:rtp_packet_info", "//third_party/webrtc/api:rtp_parameters", "//third_party/webrtc/api:rtp_receiver_interface", "//third_party/webrtc/api:rtp_sender_interface", "//third_party/webrtc/api:rtp_transceiver_interface", "//third_party/webrtc/api:scoped_refptr", "//third_party/webrtc/api:sctp_transport_interface", "//third_party/webrtc/api:set_local_description_observer_interface", "//third_party/webrtc/api:set_remote_description_observer_interface", "//third_party/webrtc/api:simulated_network_api", "//third_party/webrtc/api:transport_api", "//third_party/webrtc/api:turn_customizer", "//third_party/webrtc/api:video_track_source_proxy_factory", "//third_party/webrtc/api/adaptation:resource_adaptation_api", "//third_party/webrtc/api/audio:aec3_config", "//third_party/webrtc/api/audio:aec3_factory", "//third_party/webrtc/api/audio:audio_processing", "//third_party/webrtc/api/audio:builtin_audio_processing_builder", "//third_party/webrtc/api/audio:neural_residual_echo_estimator_creator", "//third_party/webrtc/api/audio:tflite_model_handle", "//third_party/webrtc/api/audio_codecs:audio_codecs_api", "//third_party/webrtc/api/audio_codecs/L16:audio_decoder_L16", "//third_party/webrtc/api/audio_codecs/L16:audio_encoder_L16", "//third_party/webrtc/api/audio_codecs/g711:audio_decoder_g711", "//third_party/webrtc/api/audio_codecs/g711:audio_encoder_g711", "//third_party/webrtc/api/audio_codecs/g722:audio_decoder_g722", "//third_party/webrtc/api/audio_codecs/g722:audio_encoder_g722", "//third_party/webrtc/api/audio_codecs/opus:audio_decoder_multiopus", "//third_party/webrtc/api/audio_codecs/opus:audio_decoder_opus", "//third_party/webrtc/api/audio_codecs/opus:audio_encoder_multiopus", "//third_party/webrtc/api/audio_codecs/opus:audio_encoder_opus", "//third_party/webrtc/api/environment", "//third_party/webrtc/api/environment:environment_factory", "//third_party/webrtc/api/metronome", "//third_party/webrtc/api/rtc_event_log:rtc_event_log_factory", "//third_party/webrtc/api/task_queue", "//third_party/webrtc/api/transport:ecn_marking", "//third_party/webrtc/api/transport:enums", "//third_party/webrtc/api/transport:goog_cc", "//third_party/webrtc/api/transport:network_control", "//third_party/webrtc/api/transport/rtp:rtp_source", "//third_party/webrtc/api/units:data_rate", "//third_party/webrtc/api/units:time_delta", "//third_party/webrtc/api/units:timestamp", "//third_party/webrtc/api/video:adapted_video_track_source", "//third_party/webrtc/api/video:encoded_image", "//third_party/webrtc/api/video:recordable_encoded_frame", "//third_party/webrtc/api/video:resolution", "//third_party/webrtc/api/video:video_adapter", "//third_party/webrtc/api/video:video_bitrate_allocation", "//third_party/webrtc/api/video:video_broadcaster", "//third_party/webrtc/api/video:video_common", "//third_party/webrtc/api/video:video_frame", "//third_party/webrtc/api/video:video_frame_metadata", "//third_party/webrtc/api/video:video_frame_type", "//third_party/webrtc/api/video:video_rtp_headers", "//third_party/webrtc/api/video_codecs:builtin_video_decoder_factory", "//third_party/webrtc/api/video_codecs:rtc_software_fallback_wrappers", "//third_party/webrtc/api/video_codecs:video_codecs_api", "//third_party/webrtc/call:simulated_network", "//third_party/webrtc/common_video", "//third_party/webrtc/media:codec", "//third_party/webrtc/media:media_channel", "//third_party/webrtc/media:media_constants", "//third_party/webrtc/media:rtc_audio_video", "//third_party/webrtc/media:rtc_internal_video_codecs", "//third_party/webrtc/media:rtc_simulcast_encoder_adapter", "//third_party/webrtc/media:rtp_utils", "//third_party/webrtc/media:turn_utils", "//third_party/webrtc/modules/audio_device", "//third_party/webrtc/modules/audio_device:audio_device_api", "//third_party/webrtc/modules/audio_processing:api", "//third_party/webrtc/modules/audio_processing:audio_processing_statistics", "//third_party/webrtc/modules/audio_processing/aec_dump", "//third_party/webrtc/modules/desktop_capture", "//third_party/webrtc/modules/desktop_capture:primitives", "//third_party/webrtc/modules/video_coding:video_codec_interface", "//third_party/webrtc/modules/video_coding:video_coding_utility", "//third_party/webrtc/modules/video_coding:webrtc_h264", "//third_party/webrtc/modules/video_coding/svc:scalability_mode_util", "//third_party/webrtc/modules/video_coding/svc:scalability_structures", "//third_party/webrtc/modules/video_coding/svc:simulcast_to_svc_converter", "//third_party/webrtc/p2p:basic_packet_socket_factory", "//third_party/webrtc/p2p:basic_port_allocator", "//third_party/webrtc/p2p:connection", "//third_party/webrtc/p2p:ice_controller_interface", "//third_party/webrtc/p2p:ice_switch_reason", "//third_party/webrtc/p2p:ice_transport_internal", "//third_party/webrtc/p2p:p2p_constants", "//third_party/webrtc/p2p:p2p_transport_channel", "//third_party/webrtc/p2p:packet_transport_internal", "//third_party/webrtc/p2p:port", "//third_party/webrtc/p2p:port_allocator", "//third_party/webrtc/p2p:port_interface", "//third_party/webrtc/p2p:transport_description", "//third_party/webrtc/pc:ice_server_parsing", "//third_party/webrtc/pc:media_session", "//third_party/webrtc/pc:rtc_pc", "//third_party/webrtc/pc:session_description", "//third_party/webrtc/pc:webrtc_sdp", "//third_party/webrtc/rtc_base:async_dns_resolver", "//third_party/webrtc/rtc_base:async_packet_socket", "//third_party/webrtc/rtc_base:byte_order", "//third_party/webrtc/rtc_base:crypto_random", "//third_party/webrtc/rtc_base:data_rate_limiter", "//third_party/webrtc/rtc_base:event_tracer", "//third_party/webrtc/rtc_base:ip_address", "//third_party/webrtc/rtc_base:logging", "//third_party/webrtc/rtc_base:mdns_responder_interface", "//third_party/webrtc/rtc_base:net_helper", "//third_party/webrtc/rtc_base:net_helpers", "//third_party/webrtc/rtc_base:net_test_helpers", "//third_party/webrtc/rtc_base:network", "//third_party/webrtc/rtc_base:refcount", "//third_party/webrtc/rtc_base:rtc_certificate_generator", "//third_party/webrtc/rtc_base:socket", "//third_party/webrtc/rtc_base:socket_address", "//third_party/webrtc/rtc_base:socket_factory", "//third_party/webrtc/rtc_base:socket_server", "//third_party/webrtc/rtc_base:ssl", "//third_party/webrtc/rtc_base:ssl_adapter", "//third_party/webrtc/rtc_base:threading", "//third_party/webrtc/rtc_base:timestamp_aligner", "//third_party/webrtc/rtc_base:timeutils", "//third_party/webrtc/rtc_base:weak_ptr", "//third_party/webrtc/rtc_base/network:received_packet", "//third_party/webrtc/rtc_base/system:rtc_export", "//third_party/webrtc/stats:rtc_stats_test_utils", "//third_party/webrtc/system_wrappers", "//third_party/webrtc/video:null_video_decoder", ] if (defined(rtc_exclude_system_time) && rtc_exclude_system_time) { webrtc_public_deps += [ ":system_time" ] } if (is_castos || is_cast_android) { webrtc_public_deps += [ "//third_party/webrtc/api:enable_media_with_defaults", "//third_party/webrtc/api:network_state_predictor_api", "//third_party/webrtc/api/audio:audio_frame_api", "//third_party/webrtc/api/transport:goog_cc", "//third_party/webrtc/api/transport:network_control", "//third_party/webrtc/call:call_interfaces", "//third_party/webrtc/modules/audio_device:audio_device_default", "//third_party/webrtc/modules/audio_mixer:audio_mixer_impl", "//third_party/webrtc/modules/video_coding:codec_globals_headers", ] } if ((is_linux || is_chromeos) && rtc_use_pipewire) { webrtc_public_deps += [ "//third_party/webrtc/modules/portal", "//third_party/webrtc/modules/video_capture:video_capture_internal_impl", "//third_party/webrtc/modules/video_capture:video_capture_module", ] } component("webrtc_component") { configs += webrtc_configs public_configs = webrtc_public_configs public_deps = webrtc_public_deps } source_set("init_webrtc") { visibility = [ ":*" ] sources = [ "init_webrtc.cc", "init_webrtc.h", ] configs += [ "//third_party/webrtc:common_config", "//third_party/webrtc:library_impl_config", ] public_configs = [ "//third_party/webrtc:common_inherited_config", # TODO(mbonadei): Abseil config propagation is needed because # WebRTC's BUILD.gn files don't use `public_deps`, there are # good reasons for this, but they may disappear in the future. # In that case it is ok to remove these two lines. "//third_party/abseil-cpp:absl_include_config", "//third_party/abseil-cpp:absl_define_config", ] deps = [ "//base", "//third_party/webrtc/rtc_base:cpu_info", "//third_party/webrtc/rtc_base:event_tracer", "//third_party/webrtc/rtc_base:logging", "//third_party/webrtc/rtc_base/system:rtc_export", ] } source_set("metrics") { # TODO(mbonadei): Migrate WebRTC deps to webrtc_component and uncomment. # visibility = [ ":*" ] sources = [ "metrics.cc" ] deps = [ "//base" ] } source_set("field_trial") { visibility = [ ":environment" ] sources = [ "field_trial.cc", "field_trial.h", ] configs += [ "//third_party/webrtc:library_impl_config" ] deps = [ "//base", "//third_party/webrtc/api:field_trials_view", "//third_party/webrtc/rtc_base/system:rtc_export", ] } # If you want to depend on this target you should depend on :webrtc_component # instead (which has a public dependency on this target). source_set("task_queue_factory") { visibility = [ ":*" ] sources = [ # Tested in # third_party/blink/renderer/platform/peerconnection/coalesced_tasks_test.cc "coalesced_tasks.cc", "coalesced_tasks.h", # Tested in # third_party/blink/renderer/platform/peerconnection/metronome_source_test.cc "metronome_source.cc", "metronome_source.h", "timer_based_tick_provider.cc", "timer_based_tick_provider.h", # Tested in # third_party/blink/renderer/platform/peerconnection/task_queue_factory_test.cc "task_queue_factory.cc", "task_queue_factory.h", # Tested in # third_party/blink/renderer/platform/peerconnection/low_precision_timer_test.cc "low_precision_timer.cc", "low_precision_timer.h", ] configs += [ "//third_party/webrtc:library_impl_config" ] deps = [ "//base", "//third_party/webrtc/api:location", "//third_party/webrtc/api/metronome", "//third_party/webrtc/api/task_queue", "//third_party/webrtc/api/task_queue:pending_task_safety_flag", "//third_party/webrtc/api/units:time_delta", "//third_party/webrtc/rtc_base/system:rtc_export", ] } source_set("environment") { visibility = [ ":*" ] sources = [ "environment.cc", "environment.h", ] configs += [ "//third_party/webrtc:library_impl_config" ] deps = [ ":field_trial", ":task_queue_factory", "//third_party/webrtc/api/environment", "//third_party/webrtc/api/environment:environment_factory", "//third_party/webrtc/rtc_base/system:rtc_export", ] } source_set("logging_test") { testonly = true sources = [ "test/logging_test.cc" ] deps = [ ":webrtc_component", "//base/test:test_support", "//testing/gtest", ] } source_set("metronome_like_task_queue_test") { configs += webrtc_configs public_configs = webrtc_public_configs testonly = true sources = [ "test/metronome_like_task_queue_test.cc", "test/metronome_like_task_queue_test.h", ] deps = [ ":webrtc_component", "//base", "//base/test:test_support", "//testing/gtest", ] } source_set("system_time") { # TODO(mbonadei): Migrate WebRTC deps to webrtc_component and uncomment. # visibility = [ ":*" ] sources = [ "rtc_base/system_time.cc" ] deps = [ "//base", "//third_party/webrtc/rtc_base:timeutils", ] } source_set("bridge_ice_controller") { visibility = [ ":*" ] sources = [ # Tested in # third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc "p2p/base/bridge_ice_controller.cc", "p2p/base/bridge_ice_controller.h", "p2p/base/bridge_ice_transport_factory.cc", "p2p/base/bridge_ice_transport_factory.h", "p2p/base/ice_connection.cc", "p2p/base/ice_connection.h", "p2p/base/ice_controller_observer.h", "p2p/base/ice_interaction_interface.h", "p2p/base/ice_ping_proposal.cc", "p2p/base/ice_ping_proposal.h", "p2p/base/ice_proposal.h", "p2p/base/ice_prune_proposal.cc", "p2p/base/ice_prune_proposal.h", "p2p/base/ice_switch_proposal.cc", "p2p/base/ice_switch_proposal.h", ] configs += [ "//third_party/webrtc:library_impl_config" ] deps = [ "//base", "//third_party/abseil-cpp:absl", "//third_party/webrtc/api:candidate", "//third_party/webrtc/api:ice_transport_interface", "//third_party/webrtc/api:make_ref_counted", "//third_party/webrtc/api:rtc_error", "//third_party/webrtc/api:scoped_refptr", "//third_party/webrtc/api/units:timestamp", "//third_party/webrtc/p2p:active_ice_controller_factory_interface", "//third_party/webrtc/p2p:active_ice_controller_interface", "//third_party/webrtc/p2p:basic_ice_controller", "//third_party/webrtc/p2p:connection", "//third_party/webrtc/p2p:default_ice_transport_factory", "//third_party/webrtc/p2p:ice_agent_interface", "//third_party/webrtc/p2p:ice_controller_interface", "//third_party/webrtc/p2p:ice_switch_reason", "//third_party/webrtc/p2p:ice_transport_internal", "//third_party/webrtc/p2p:p2p_transport_channel", "//third_party/webrtc/p2p:transport_description", "//third_party/webrtc/rtc_base:logging", "//third_party/webrtc/rtc_base:stringutils", "//third_party/webrtc/rtc_base/system:rtc_export", ] } source_set("ice_controller_test_utils") { testonly = true sources = [ "p2p/base/fake_connection_factory.cc", "p2p/base/fake_connection_factory.h", "rtc_base/fake_socket_factory.cc", "rtc_base/fake_socket_factory.h", ] deps = [ ":webrtc_component", "//base", ] }