| # 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", |
| ":init_webrtc", |
| ":metrics", |
| ":task_queue_factory", |
| "//third_party/webrtc/api:array_view", |
| "//third_party/webrtc/api:async_dns_resolver", |
| "//third_party/webrtc/api:candidate", |
| "//third_party/webrtc/api:dtls_transport_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:libjingle_logging_api", |
| "//third_party/webrtc/api:libjingle_peerconnection_api", |
| "//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: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:scoped_refptr", |
| "//third_party/webrtc/api:transport_api", |
| "//third_party/webrtc/api:turn_customizer", |
| "//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_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/metronome", |
| "//third_party/webrtc/api/rtc_event_log:rtc_event_log_factory", |
| "//third_party/webrtc/api/task_queue:task_queue", |
| "//third_party/webrtc/api/transport:enums", |
| "//third_party/webrtc/api/transport:field_trial_based_config", |
| "//third_party/webrtc/api/transport/rtp:rtp_source", |
| "//third_party/webrtc/api/units:time_delta", |
| "//third_party/webrtc/api/units:timestamp", |
| "//third_party/webrtc/api/video:recordable_encoded_frame", |
| "//third_party/webrtc/api/video:video_bitrate_allocation", |
| "//third_party/webrtc/api/video:video_frame", |
| "//third_party/webrtc/api/video:video_frame_metadata", |
| "//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/common_video", |
| "//third_party/webrtc/common_video: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_media", |
| "//third_party/webrtc/media:rtc_media_base", |
| "//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", |
| "//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/audio_processing/aec_dump: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:webrtc_h264", |
| "//third_party/webrtc/p2p:libstunprober", |
| "//third_party/webrtc/p2p:rtc_p2p", |
| "//third_party/webrtc/pc:ice_server_parsing", |
| "//third_party/webrtc/pc:libjingle_peerconnection", |
| "//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: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_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:threading", |
| "//third_party/webrtc/rtc_base:timestamp_aligner", |
| "//third_party/webrtc/rtc_base:timeutils", |
| "//third_party/webrtc/rtc_base/network:received_packet", |
| "//third_party/webrtc/rtc_base/system:rtc_export", |
| "//third_party/webrtc/rtc_base/third_party/base64", |
| "//third_party/webrtc/rtc_base/third_party/sigslot", |
| "//third_party/webrtc/rtc_base/third_party/sigslot:sigslot", |
| "//third_party/webrtc/stats", |
| "//third_party/webrtc/stats:rtc_stats", |
| "//third_party/webrtc/stats:rtc_stats_test_utils", |
| "//third_party/webrtc/system_wrappers", |
| ] |
| 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/api/video:encoded_image", |
| "//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_castos || is_cast_android || is_nacl) { |
| # For chromecast and NaCL, provide a default field trial implementation. |
| webrtc_public_deps += [ "//third_party/webrtc/system_wrappers:field_trial" ] |
| } else { |
| # Other Chromium flavors get a custom implementation. |
| # See the default value of "rtc_exclude_field_trial_default" |
| # in https://cs.chromium.org/chromium/src/third_party/webrtc/webrtc.gni |
| # for how that is done. |
| webrtc_public_deps += [ ":field_trial" ] |
| } |
| if ((is_linux || is_chromeos) && rtc_use_pipewire) { |
| webrtc_public_deps += [ "//third_party/webrtc/modules/portal" ] |
| } |
| |
| 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:event_tracer", |
| "//third_party/webrtc/rtc_base:logging", |
| "//third_party/webrtc/rtc_base/system:rtc_export", |
| "//third_party/webrtc/system_wrappers", |
| ] |
| } |
| |
| source_set("metrics") { |
| # TODO(mbonadei): Migrate WebRTC deps to webrtc_component and uncomment. |
| # visibility = [ ":*" ] |
| sources = [ "metrics.cc" ] |
| deps = [ "//base" ] |
| } |
| |
| source_set("field_trial") { |
| # TODO(mbonadei): Migrate WebRTC deps to webrtc_component and uncomment. |
| # visibility = [ ":*" ] |
| sources = [ "field_trial.cc" ] |
| deps = [ "//base" ] |
| } |
| |
| # 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("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:gtest", |
| ] |
| } |
| |
| source_set("system_time") { |
| # TODO(mbonadei): Migrate WebRTC deps to webrtc_component and uncomment. |
| # visibility = [ ":*" ] |
| sources = [ "rtc_base/system_time.cc" ] |
| deps = [ "//base" ] |
| } |
| |
| 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:array_view", |
| "//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/p2p:rtc_p2p", |
| "//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", |
| ] |
| } |