• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9# This is the root build file for GN. GN will start processing by loading this
10# file, and recursively load all dependencies until all dependencies are either
11# resolved or known not to exist (which will cause the build to fail). So if
12# you add a new build file, there must be some path of dependencies from this
13# file to your new one or GN won't know about it.
14
15import("//build/config/linux/pkg_config.gni")
16import("//build/config/sanitizers/sanitizers.gni")
17import("webrtc.gni")
18if (rtc_enable_protobuf) {
19  import("//third_party/protobuf/proto_library.gni")
20}
21if (is_android) {
22  import("//build/config/android/config.gni")
23  import("//build/config/android/rules.gni")
24}
25
26if (!build_with_chromium) {
27  # This target should (transitively) cause everything to be built; if you run
28  # 'ninja default' and then 'ninja all', the second build should do no work.
29  group("default") {
30    testonly = true
31    deps = [ ":webrtc" ]
32    if (rtc_build_examples) {
33      deps += [ "examples" ]
34    }
35    if (rtc_build_tools) {
36      deps += [ "rtc_tools" ]
37    }
38    if (rtc_include_tests) {
39      deps += [
40        ":rtc_unittests",
41        ":slow_tests",
42        ":video_engine_tests",
43        ":voip_unittests",
44        ":webrtc_nonparallel_tests",
45        ":webrtc_perf_tests",
46        "common_audio:common_audio_unittests",
47        "common_video:common_video_unittests",
48        "examples:examples_unittests",
49        "media:rtc_media_unittests",
50        "modules:modules_tests",
51        "modules:modules_unittests",
52        "modules/audio_coding:audio_coding_tests",
53        "modules/audio_processing:audio_processing_tests",
54        "modules/remote_bitrate_estimator:rtp_to_text",
55        "modules/rtp_rtcp:test_packet_masks_metrics",
56        "modules/video_capture:video_capture_internal_impl",
57        "pc:peerconnection_unittests",
58        "pc:rtc_pc_unittests",
59        "rtc_tools:rtp_generator",
60        "rtc_tools:video_replay",
61        "stats:rtc_stats_unittests",
62        "system_wrappers:system_wrappers_unittests",
63        "test",
64        "video:screenshare_loopback",
65        "video:sv_loopback",
66        "video:video_loopback",
67      ]
68      if (!is_asan) {
69        # Do not build :webrtc_lib_link_test because lld complains on some OS
70        # (e.g. when target_os = "mac") when is_asan=true. For more details,
71        # see bugs.webrtc.org/11027#c5.
72        deps += [ ":webrtc_lib_link_test" ]
73      }
74      if (is_android) {
75        deps += [
76          "examples:android_examples_junit_tests",
77          "sdk/android:android_instrumentation_test_apk",
78          "sdk/android:android_sdk_junit_tests",
79        ]
80      } else {
81        deps += [ "modules/video_capture:video_capture_tests" ]
82      }
83      if (rtc_enable_protobuf) {
84        deps += [
85          "audio:low_bandwidth_audio_test",
86          "logging:rtc_event_log_rtp_dump",
87          "tools_webrtc/perf:webrtc_dashboard_upload",
88        ]
89      }
90    }
91  }
92}
93
94# Abseil Flags by default doesn't register command line flags on mobile
95# platforms, WebRTC tests requires them (e.g. on simualtors) so this
96# config will be applied to testonly targets globally (see webrtc.gni).
97config("absl_flags_configs") {
98  defines = [ "ABSL_FLAGS_STRIP_NAMES=0" ]
99}
100
101config("library_impl_config") {
102  # Build targets that contain WebRTC implementation need this macro to
103  # be defined in order to correctly export symbols when is_component_build
104  # is true.
105  # For more info see: rtc_base/build/rtc_export.h.
106  defines = [ "WEBRTC_LIBRARY_IMPL" ]
107}
108
109# Contains the defines and includes in common.gypi that are duplicated both as
110# target_defaults and direct_dependent_settings.
111config("common_inherited_config") {
112  defines = []
113  cflags = []
114  ldflags = []
115
116  if (rtc_enable_symbol_export || is_component_build) {
117    defines = [ "WEBRTC_ENABLE_SYMBOL_EXPORT" ]
118  }
119
120  if (build_with_mozilla) {
121    defines += [ "WEBRTC_MOZILLA_BUILD" ]
122  }
123
124  if (!rtc_builtin_ssl_root_certificates) {
125    defines += [ "WEBRTC_EXCLUDE_BUILT_IN_SSL_ROOT_CERTS" ]
126  }
127
128  if (rtc_disable_check_msg) {
129    defines += [ "RTC_DISABLE_CHECK_MSG" ]
130  }
131
132  # Some tests need to declare their own trace event handlers. If this define is
133  # not set, the first time TRACE_EVENT_* is called it will store the return
134  # value for the current handler in an static variable, so that subsequent
135  # changes to the handler for that TRACE_EVENT_* will be ignored.
136  # So when tests are included, we set this define, making it possible to use
137  # different event handlers in different tests.
138  if (rtc_include_tests) {
139    defines += [ "WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1" ]
140  } else {
141    defines += [ "WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0" ]
142  }
143  if (build_with_chromium) {
144    defines += [ "WEBRTC_CHROMIUM_BUILD" ]
145    include_dirs = [
146      # The overrides must be included first as that is the mechanism for
147      # selecting the override headers in Chromium.
148      "../webrtc_overrides",
149
150      # Allow includes to be prefixed with webrtc/ in case it is not an
151      # immediate subdirectory of the top-level.
152      ".",
153
154      # Just like the root WebRTC directory is added to include path, the
155      # corresponding directory tree with generated files needs to be added too.
156      # Note: this path does not change depending on the current target, e.g.
157      # it is always "//gen/third_party/webrtc" when building with Chromium.
158      # See also: http://cs.chromium.org/?q=%5C"default_include_dirs
159      # https://gn.googlesource.com/gn/+/master/docs/reference.md#target_gen_dir
160      target_gen_dir,
161    ]
162  }
163  if (is_posix || is_fuchsia) {
164    defines += [ "WEBRTC_POSIX" ]
165  }
166  if (is_ios) {
167    defines += [
168      "WEBRTC_MAC",
169      "WEBRTC_IOS",
170    ]
171  }
172  if (is_linux) {
173    defines += [ "WEBRTC_LINUX" ]
174  }
175  if (is_mac) {
176    defines += [ "WEBRTC_MAC" ]
177  }
178  if (is_fuchsia) {
179    defines += [ "WEBRTC_FUCHSIA" ]
180  }
181  if (is_win) {
182    defines += [ "WEBRTC_WIN" ]
183  }
184  if (is_android) {
185    defines += [
186      "WEBRTC_LINUX",
187      "WEBRTC_ANDROID",
188    ]
189
190    if (build_with_mozilla) {
191      defines += [ "WEBRTC_ANDROID_OPENSLES" ]
192    }
193  }
194  if (is_chromeos) {
195    defines += [ "CHROMEOS" ]
196  }
197
198  if (rtc_sanitize_coverage != "") {
199    assert(is_clang, "sanitizer coverage requires clang")
200    cflags += [ "-fsanitize-coverage=${rtc_sanitize_coverage}" ]
201    ldflags += [ "-fsanitize-coverage=${rtc_sanitize_coverage}" ]
202  }
203
204  if (is_ubsan) {
205    cflags += [ "-fsanitize=float-cast-overflow" ]
206  }
207}
208
209# TODO(bugs.webrtc.org/9693): Remove the possibility to suppress this warning
210# as soon as WebRTC compiles without it.
211config("no_exit_time_destructors") {
212  if (is_clang) {
213    cflags = [ "-Wno-exit-time-destructors" ]
214  }
215}
216
217# TODO(bugs.webrtc.org/9693): Remove the possibility to suppress this warning
218# as soon as WebRTC compiles without it.
219config("no_global_constructors") {
220  if (is_clang) {
221    cflags = [ "-Wno-global-constructors" ]
222  }
223}
224
225config("rtc_prod_config") {
226  # Ideally, WebRTC production code (but not test code) should have these flags.
227  if (is_clang) {
228    cflags = [
229      "-Wexit-time-destructors",
230      "-Wglobal-constructors",
231    ]
232  }
233}
234
235config("common_config") {
236  cflags = []
237  cflags_c = []
238  cflags_cc = []
239  cflags_objc = []
240  defines = []
241
242  if (rtc_enable_protobuf) {
243    defines += [ "WEBRTC_ENABLE_PROTOBUF=1" ]
244  } else {
245    defines += [ "WEBRTC_ENABLE_PROTOBUF=0" ]
246  }
247
248  if (rtc_include_internal_audio_device) {
249    defines += [ "WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE" ]
250  }
251
252  if (rtc_libvpx_build_vp9) {
253    defines += [ "RTC_ENABLE_VP9" ]
254  }
255
256  if (rtc_enable_sctp) {
257    defines += [ "HAVE_SCTP" ]
258  }
259
260  if (rtc_enable_external_auth) {
261    defines += [ "ENABLE_EXTERNAL_AUTH" ]
262  }
263
264  if (rtc_use_h264) {
265    defines += [ "WEBRTC_USE_H264" ]
266  }
267
268  if (rtc_use_absl_mutex) {
269    defines += [ "WEBRTC_ABSL_MUTEX" ]
270  }
271
272  if (rtc_disable_logging) {
273    defines += [ "RTC_DISABLE_LOGGING" ]
274  }
275
276  if (rtc_disable_trace_events) {
277    defines += [ "RTC_DISABLE_TRACE_EVENTS" ]
278  }
279
280  if (rtc_disable_metrics) {
281    defines += [ "RTC_DISABLE_METRICS" ]
282  }
283
284  if (rtc_exclude_transient_suppressor) {
285    defines += [ "WEBRTC_EXCLUDE_TRANSIENT_SUPPRESSOR" ]
286  }
287
288  if (rtc_exclude_audio_processing_module) {
289    defines += [ "WEBRTC_EXCLUDE_AUDIO_PROCESSING_MODULE" ]
290  }
291
292  cflags = []
293
294  if (build_with_chromium) {
295    defines += [
296      # NOTICE: Since common_inherited_config is used in public_configs for our
297      # targets, there's no point including the defines in that config here.
298      # TODO(kjellander): Cleanup unused ones and move defines closer to the
299      # source when webrtc:4256 is completed.
300      "HAVE_WEBRTC_VIDEO",
301      "LOGGING_INSIDE_WEBRTC",
302    ]
303  } else {
304    if (is_posix || is_fuchsia) {
305      cflags_c += [
306        # TODO(bugs.webrtc.org/9029): enable commented compiler flags.
307        # Some of these flags should also be added to cflags_objc.
308
309        # "-Wextra",  (used when building C++ but not when building C)
310        # "-Wmissing-prototypes",  (C/Obj-C only)
311        # "-Wmissing-declarations",  (ensure this is always used C/C++, etc..)
312        "-Wstrict-prototypes",
313
314        # "-Wpointer-arith",  (ensure this is always used C/C++, etc..)
315        # "-Wbad-function-cast",  (C/Obj-C only)
316        # "-Wnested-externs",  (C/Obj-C only)
317      ]
318      cflags_objc += [ "-Wstrict-prototypes" ]
319      cflags_cc = [
320        "-Wnon-virtual-dtor",
321
322        # This is enabled for clang; enable for gcc as well.
323        "-Woverloaded-virtual",
324      ]
325    }
326
327    if (is_clang) {
328      cflags += [
329        "-Wc++11-narrowing",
330        "-Wimplicit-fallthrough",
331        "-Wthread-safety",
332        "-Winconsistent-missing-override",
333        "-Wundef",
334      ]
335
336      # use_xcode_clang only refers to the iOS toolchain, host binaries use
337      # chromium's clang always.
338      if (!is_nacl &&
339          (!use_xcode_clang || current_toolchain == host_toolchain)) {
340        # Flags NaCl (Clang 3.7) and Xcode 7.3 (Clang clang-703.0.31) do not
341        # recognize.
342        cflags += [ "-Wunused-lambda-capture" ]
343      }
344    }
345
346    if (is_win && !is_clang) {
347      # MSVC warning suppressions (needed to use Abseil).
348      # TODO(bugs.webrtc.org/9274): Remove these warnings as soon as MSVC allows
349      # external headers warning suppression (or fix them upstream).
350      cflags += [ "/wd4702" ]  # unreachable code
351
352      # MSVC 2019 warning suppressions for C++17 compiling
353      cflags +=
354          [ "/wd5041" ]  # out-of-line definition for constexpr static data
355                         # member is not needed and is deprecated in C++17
356    }
357  }
358
359  if (current_cpu == "arm64") {
360    defines += [ "WEBRTC_ARCH_ARM64" ]
361    defines += [ "WEBRTC_HAS_NEON" ]
362  }
363
364  if (current_cpu == "arm") {
365    defines += [ "WEBRTC_ARCH_ARM" ]
366    if (arm_version >= 7) {
367      defines += [ "WEBRTC_ARCH_ARM_V7" ]
368      if (arm_use_neon) {
369        defines += [ "WEBRTC_HAS_NEON" ]
370      }
371    }
372  }
373
374  if (current_cpu == "mipsel") {
375    defines += [ "MIPS32_LE" ]
376    if (mips_float_abi == "hard") {
377      defines += [ "MIPS_FPU_LE" ]
378    }
379    if (mips_arch_variant == "r2") {
380      defines += [ "MIPS32_R2_LE" ]
381    }
382    if (mips_dsp_rev == 1) {
383      defines += [ "MIPS_DSP_R1_LE" ]
384    } else if (mips_dsp_rev == 2) {
385      defines += [
386        "MIPS_DSP_R1_LE",
387        "MIPS_DSP_R2_LE",
388      ]
389    }
390  }
391
392  if (is_android && !is_clang) {
393    # The Android NDK doesn"t provide optimized versions of these
394    # functions. Ensure they are disabled for all compilers.
395    cflags += [
396      "-fno-builtin-cos",
397      "-fno-builtin-sin",
398      "-fno-builtin-cosf",
399      "-fno-builtin-sinf",
400    ]
401  }
402
403  if (use_fuzzing_engine && optimize_for_fuzzing) {
404    # Used in Chromium's overrides to disable logging
405    defines += [ "WEBRTC_UNSAFE_FUZZER_MODE" ]
406  }
407
408  if (!build_with_chromium && rtc_win_undef_unicode) {
409    cflags += [
410      "/UUNICODE",
411      "/U_UNICODE",
412    ]
413  }
414}
415
416config("common_objc") {
417  frameworks = [ "Foundation.framework" ]
418
419  if (rtc_use_metal_rendering) {
420    defines = [ "RTC_SUPPORTS_METAL" ]
421  }
422}
423
424if (!build_with_chromium) {
425  # Target to build all the WebRTC production code.
426  rtc_static_library("webrtc") {
427    # Only the root target and the test should depend on this.
428    visibility = [
429      "//:default",
430      "//:webrtc_lib_link_test",
431    ]
432
433    sources = []
434    complete_static_lib = true
435    suppressed_configs += [ "//build/config/compiler:thin_archive" ]
436    defines = []
437
438    deps = [
439      ":webrtc_common",
440      "api:create_peerconnection_factory",
441      "api:libjingle_peerconnection_api",
442      "api:rtc_error",
443      "api:transport_api",
444      "api/crypto",
445      "api/rtc_event_log:rtc_event_log_factory",
446      "api/task_queue",
447      "api/task_queue:default_task_queue_factory",
448      "audio",
449      "call",
450      "common_audio",
451      "common_video",
452      "logging:rtc_event_log_api",
453      "media",
454      "modules",
455      "modules/video_capture:video_capture_internal_impl",
456      "p2p:rtc_p2p",
457      "pc:libjingle_peerconnection",
458      "pc:peerconnection",
459      "pc:rtc_pc",
460      "pc:rtc_pc_base",
461      "rtc_base",
462      "sdk",
463      "video",
464    ]
465
466    if (rtc_include_builtin_audio_codecs) {
467      deps += [
468        "api/audio_codecs:builtin_audio_decoder_factory",
469        "api/audio_codecs:builtin_audio_encoder_factory",
470      ]
471    }
472
473    if (rtc_include_builtin_video_codecs) {
474      deps += [
475        "api/video_codecs:builtin_video_decoder_factory",
476        "api/video_codecs:builtin_video_encoder_factory",
477      ]
478    }
479
480    if (build_with_mozilla) {
481      deps += [
482        "api/video:video_frame",
483        "api/video:video_rtp_headers",
484      ]
485    } else {
486      deps += [
487        "api",
488        "logging",
489        "p2p",
490        "pc",
491        "stats",
492      ]
493    }
494
495    if (rtc_enable_protobuf) {
496      deps += [ "logging:rtc_event_log_proto" ]
497    }
498  }
499
500  if (rtc_include_tests && !is_asan) {
501    rtc_executable("webrtc_lib_link_test") {
502      testonly = true
503
504      sources = [ "webrtc_lib_link_test.cc" ]
505      deps = [
506        # NOTE: Don't add deps here. If this test fails to link, it means you
507        # need to add stuff to the webrtc static lib target above.
508        ":webrtc",
509      ]
510    }
511  }
512}
513
514rtc_source_set("webrtc_common") {
515  # Client code SHOULD NOT USE THIS TARGET, but for now it needs to be public
516  # because there exists client code that uses it.
517  # TODO(bugs.webrtc.org/9808): Move to private visibility as soon as that
518  # client code gets updated.
519  visibility = [ "*" ]
520  sources = [ "common_types.h" ]
521}
522
523if (use_libfuzzer || use_afl) {
524  # This target is only here for gn to discover fuzzer build targets under
525  # webrtc/test/fuzzers/.
526  group("webrtc_fuzzers_dummy") {
527    testonly = true
528    deps = [ "test/fuzzers:webrtc_fuzzer_main" ]
529  }
530}
531
532if (rtc_include_tests) {
533  rtc_test("rtc_unittests") {
534    testonly = true
535
536    deps = [
537      ":webrtc_common",
538      "api:compile_all_headers",
539      "api:rtc_api_unittests",
540      "api/audio/test:audio_api_unittests",
541      "api/audio_codecs/test:audio_codecs_api_unittests",
542      "api/transport:stun_unittest",
543      "api/video/test:rtc_api_video_unittests",
544      "api/video_codecs/test:video_codecs_api_unittests",
545      "call:fake_network_pipe_unittests",
546      "p2p:libstunprober_unittests",
547      "p2p:rtc_p2p_unittests",
548      "rtc_base:rtc_base_approved_unittests",
549      "rtc_base:rtc_base_unittests",
550      "rtc_base:rtc_json_unittests",
551      "rtc_base:rtc_numerics_unittests",
552      "rtc_base:rtc_operations_chain_unittests",
553      "rtc_base:rtc_task_queue_unittests",
554      "rtc_base:sigslot_unittest",
555      "rtc_base:weak_ptr_unittests",
556      "rtc_base/experiments:experiments_unittests",
557      "rtc_base/synchronization:sequence_checker_unittests",
558      "rtc_base/task_utils:pending_task_safety_flag_unittests",
559      "rtc_base/task_utils:to_queued_task_unittests",
560      "sdk:sdk_tests",
561      "test:rtp_test_utils",
562      "test:test_main",
563      "test/network:network_emulation_unittests",
564    ]
565
566    if (rtc_enable_protobuf) {
567      deps += [ "logging:rtc_event_log_tests" ]
568    }
569
570    if (is_android) {
571      # Do not use Chromium's launcher. native_unittests defines its own JNI_OnLoad.
572      use_default_launcher = false
573
574      deps += [
575        "sdk/android:native_unittests",
576        "sdk/android:native_unittests_java",
577        "//testing/android/native_test:native_test_support",
578      ]
579      shard_timeout = 900
580    }
581
582    if (is_ios || is_mac) {
583      deps += [ "sdk:rtc_unittests_objc" ]
584    }
585  }
586
587  rtc_test("benchmarks") {
588    testonly = true
589    deps = [
590      "rtc_base/synchronization:mutex_benchmark",
591      "test:benchmark_main",
592    ]
593  }
594
595  # This runs tests that must run in real time and therefore can take some
596  # time to execute. They are in a separate executable to avoid making the
597  # regular unittest suite too slow to run frequently.
598  rtc_test("slow_tests") {
599    testonly = true
600    deps = [
601      "rtc_base/task_utils:repeating_task_unittests",
602      "test:test_main",
603    ]
604  }
605
606  # TODO(pbos): Rename test suite, this is no longer "just" for video targets.
607  video_engine_tests_resources = [
608    "resources/foreman_cif_short.yuv",
609    "resources/voice_engine/audio_long16.pcm",
610  ]
611
612  if (is_ios) {
613    bundle_data("video_engine_tests_bundle_data") {
614      testonly = true
615      sources = video_engine_tests_resources
616      outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
617    }
618  }
619
620  rtc_test("video_engine_tests") {
621    testonly = true
622    deps = [
623      "audio:audio_tests",
624
625      # TODO(eladalon): call_tests aren't actually video-specific, so we
626      # should move them to a more appropriate test suite.
627      "call:call_tests",
628      "call/adaptation:resource_adaptation_tests",
629      "test:test_common",
630      "test:test_main",
631      "test:video_test_common",
632      "video:video_tests",
633      "video/adaptation:video_adaptation_tests",
634    ]
635    data = video_engine_tests_resources
636    if (is_android) {
637      deps += [ "//testing/android/native_test:native_test_native_code" ]
638      shard_timeout = 900
639    }
640    if (is_ios) {
641      deps += [ ":video_engine_tests_bundle_data" ]
642    }
643  }
644
645  webrtc_perf_tests_resources = [
646    "resources/ConferenceMotion_1280_720_50.yuv",
647    "resources/audio_coding/speech_mono_16kHz.pcm",
648    "resources/audio_coding/speech_mono_32_48kHz.pcm",
649    "resources/audio_coding/testfile32kHz.pcm",
650    "resources/difficult_photo_1850_1110.yuv",
651    "resources/foreman_cif.yuv",
652    "resources/paris_qcif.yuv",
653    "resources/photo_1850_1110.yuv",
654    "resources/presentation_1850_1110.yuv",
655    "resources/voice_engine/audio_long16.pcm",
656    "resources/web_screenshot_1850_1110.yuv",
657  ]
658
659  if (is_ios) {
660    bundle_data("webrtc_perf_tests_bundle_data") {
661      testonly = true
662      sources = webrtc_perf_tests_resources
663      outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
664    }
665  }
666
667  rtc_test("webrtc_perf_tests") {
668    testonly = true
669    deps = [
670      "audio:audio_perf_tests",
671      "call:call_perf_tests",
672      "modules/audio_coding:audio_coding_perf_tests",
673      "modules/audio_processing:audio_processing_perf_tests",
674      "pc:peerconnection_perf_tests",
675      "test:test_main",
676      "video:video_full_stack_tests",
677      "video:video_pc_full_stack_tests",
678    ]
679
680    data = webrtc_perf_tests_resources
681    if (is_android) {
682      deps += [ "//testing/android/native_test:native_test_native_code" ]
683      shard_timeout = 4500
684    }
685    if (is_ios) {
686      deps += [ ":webrtc_perf_tests_bundle_data" ]
687    }
688  }
689
690  rtc_test("webrtc_nonparallel_tests") {
691    testonly = true
692    deps = [ "rtc_base:rtc_base_nonparallel_tests" ]
693    if (is_android) {
694      deps += [ "//testing/android/native_test:native_test_support" ]
695      shard_timeout = 900
696    }
697  }
698
699  rtc_test("voip_unittests") {
700    testonly = true
701    deps = [
702      "api/voip:voip_engine_factory_unittests",
703      "audio/voip/test:audio_channel_unittests",
704      "audio/voip/test:audio_egress_unittests",
705      "audio/voip/test:audio_ingress_unittests",
706      "audio/voip/test:voip_core_unittests",
707      "test:test_main",
708    ]
709  }
710}
711
712# ---- Poisons ----
713#
714# Here is one empty dummy target for each poison type (needed because
715# "being poisonous with poison type foo" is implemented as "depends on
716# //:poison_foo").
717#
718# The set of poison_* targets needs to be kept in sync with the
719# `all_poison_types` list in webrtc.gni.
720#
721group("poison_audio_codecs") {
722}
723
724group("poison_default_task_queue") {
725}
726
727group("poison_rtc_json") {
728}
729
730group("poison_software_video_codecs") {
731}
732