| # Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 
 | # | 
 | # Use of this source code is governed by a BSD-style license | 
 | # that can be found in the LICENSE file in the root of the source | 
 | # tree. An additional intellectual property rights grant can be found | 
 | # in the file PATENTS.  All contributing project authors may | 
 | # be found in the AUTHORS file in the root of the source tree. | 
 |  | 
 | # TODO(kjellander): Rebase this to webrtc/build/common.gypi changes after r6330. | 
 |  | 
 | import("//build/config/linux/pkg_config.gni") | 
 | import("//build/config/sanitizers/sanitizers.gni") | 
 | import("build/webrtc.gni") | 
 | import("//third_party/protobuf/proto_library.gni") | 
 | if (is_android) { | 
 |   import("//build/config/android/config.gni") | 
 |   import("//build/config/android/rules.gni") | 
 | } | 
 |  | 
 | # Contains the defines and includes in common.gypi that are duplicated both as | 
 | # target_defaults and direct_dependent_settings. | 
 | config("common_inherited_config") { | 
 |   defines = [] | 
 |   cflags = [] | 
 |   ldflags = [] | 
 |   if (build_with_mozilla) { | 
 |     defines += [ "WEBRTC_MOZILLA_BUILD" ] | 
 |   } | 
 |   if (build_with_chromium) { | 
 |     defines = [ | 
 |       # TODO(kjellander): Cleanup unused ones and move defines closer to | 
 |       # the source when webrtc:4256 is completed. | 
 |       "FEATURE_ENABLE_SSL", | 
 |       "FEATURE_ENABLE_VOICEMAIL", | 
 |       "EXPAT_RELATIVE_PATH", | 
 |       "GTEST_RELATIVE_PATH", | 
 |       "NO_MAIN_THREAD_WRAPPING", | 
 |       "NO_SOUND_SYSTEM", | 
 |       "WEBRTC_CHROMIUM_BUILD", | 
 |     ] | 
 |     include_dirs = [ | 
 |       # The overrides must be included first as that is the mechanism for | 
 |       # selecting the override headers in Chromium. | 
 |       "../webrtc_overrides", | 
 |  | 
 |       # Allow includes to be prefixed with webrtc/ in case it is not an | 
 |       # immediate subdirectory of the top-level. | 
 |       "..", | 
 |     ] | 
 |   } | 
 |   if (is_posix) { | 
 |     defines += [ "WEBRTC_POSIX" ] | 
 |   } | 
 |   if (is_ios) { | 
 |     defines += [ | 
 |       "WEBRTC_MAC", | 
 |       "WEBRTC_IOS", | 
 |     ] | 
 |   } | 
 |   if (is_linux) { | 
 |     defines += [ "WEBRTC_LINUX" ] | 
 |   } | 
 |   if (is_mac) { | 
 |     defines += [ "WEBRTC_MAC" ] | 
 |   } | 
 |   if (is_win) { | 
 |     defines += [ | 
 |       "WEBRTC_WIN", | 
 |       "_CRT_SECURE_NO_WARNINGS",  # Suppress warnings about _vsnprinf | 
 |     ] | 
 |   } | 
 |   if (is_android) { | 
 |     defines += [ | 
 |       "WEBRTC_LINUX", | 
 |       "WEBRTC_ANDROID", | 
 |     ] | 
 |   } | 
 |   if (is_chromeos) { | 
 |     defines += [ "CHROMEOS" ] | 
 |   } | 
 |  | 
 |   if (rtc_sanitize_coverage != "") { | 
 |     assert(is_clang, "sanitizer coverage requires clang") | 
 |     cflags += [ "-fsanitize-coverage=${rtc_sanitize_coverage}" ] | 
 |     ldflags += [ "-fsanitize-coverage=${rtc_sanitize_coverage}" ] | 
 |   } | 
 |  | 
 |   # TODO(GYP): Support these in GN. | 
 |   # if (is_bsd) { | 
 |   #   defines += [ "BSD" ] | 
 |   # } | 
 |   # if (is_openbsd) { | 
 |   #   defines += [ "OPENBSD" ] | 
 |   # } | 
 |   # if (is_freebsd) { | 
 |   #   defines += [ "FREEBSD" ] | 
 |   # } | 
 | } | 
 |  | 
 | config("common_config") { | 
 |   cflags = [] | 
 |   cflags_cc = [] | 
 |   defines = [] | 
 |  | 
 |   if (rtc_restrict_logging) { | 
 |     defines += [ "WEBRTC_RESTRICT_LOGGING" ] | 
 |   } | 
 |  | 
 |   if (rtc_include_internal_audio_device) { | 
 |     defines += [ "WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE" ] | 
 |   } | 
 |  | 
 |   if (rtc_relative_path) { | 
 |     defines += [ "EXPAT_RELATIVE_PATH" ] | 
 |   } | 
 |  | 
 |   if (!rtc_libvpx_build_vp9) { | 
 |     defines += [ "RTC_DISABLE_VP9" ] | 
 |   } | 
 |  | 
 |   if (build_with_chromium) { | 
 |     defines += [ | 
 |       # NOTICE: Since common_inherited_config is used in public_configs for our | 
 |       # targets, there's no point including the defines in that config here. | 
 |       # TODO(kjellander): Cleanup unused ones and move defines closer to the | 
 |       # source when webrtc:4256 is completed. | 
 |       "ENABLE_EXTERNAL_AUTH", | 
 |       "HAVE_OPENSSL_SSL_H", | 
 |       "HAVE_SCTP", | 
 |       "HAVE_SRTP", | 
 |       "HAVE_WEBRTC_VIDEO", | 
 |       "HAVE_WEBRTC_VOICE", | 
 |       "LOGGING_INSIDE_WEBRTC", | 
 |       "SSL_USE_OPENSSL", | 
 |       "USE_WEBRTC_DEV_BRANCH", | 
 |     ] | 
 |   } else { | 
 |     if (is_posix) { | 
 |       # Enable more warnings: -Wextra is currently disabled in Chromium. | 
 |       cflags = [ | 
 |         "-Wextra", | 
 |  | 
 |         # Repeat some flags that get overridden by -Wextra. | 
 |         "-Wno-unused-parameter", | 
 |         "-Wno-missing-field-initializers", | 
 |         "-Wno-strict-overflow", | 
 |       ] | 
 |       cflags_cc = [ | 
 |         "-Wnon-virtual-dtor", | 
 |  | 
 |         # This is enabled for clang; enable for gcc as well. | 
 |         "-Woverloaded-virtual", | 
 |       ] | 
 |     } | 
 |  | 
 |     if (is_clang) { | 
 |       cflags += [ | 
 |         "-Wimplicit-fallthrough", | 
 |         "-Wthread-safety", | 
 |         "-Winconsistent-missing-override", | 
 |         "-Wundef", | 
 |       ] | 
 |     } | 
 |   } | 
 |  | 
 |   if (current_cpu == "arm64") { | 
 |     defines += [ "WEBRTC_ARCH_ARM64" ] | 
 |     defines += [ "WEBRTC_HAS_NEON" ] | 
 |   } | 
 |  | 
 |   if (current_cpu == "arm") { | 
 |     defines += [ "WEBRTC_ARCH_ARM" ] | 
 |     if (arm_version >= 7) { | 
 |       defines += [ "WEBRTC_ARCH_ARM_V7" ] | 
 |       if (arm_use_neon) { | 
 |         defines += [ "WEBRTC_HAS_NEON" ] | 
 |       } | 
 |     } | 
 |   } | 
 |  | 
 |   if (current_cpu == "mipsel") { | 
 |     defines += [ "MIPS32_LE" ] | 
 |     if (mips_float_abi == "hard") { | 
 |       defines += [ "MIPS_FPU_LE" ] | 
 |     } | 
 |     if (mips_arch_variant == "r2") { | 
 |       defines += [ "MIPS32_R2_LE" ] | 
 |     } | 
 |     if (mips_dsp_rev == 1) { | 
 |       defines += [ "MIPS_DSP_R1_LE" ] | 
 |     } else if (mips_dsp_rev == 2) { | 
 |       defines += [ | 
 |         "MIPS_DSP_R1_LE", | 
 |         "MIPS_DSP_R2_LE", | 
 |       ] | 
 |     } | 
 |   } | 
 |  | 
 |   if (is_android && !is_clang) { | 
 |     # The Android NDK doesn"t provide optimized versions of these | 
 |     # functions. Ensure they are disabled for all compilers. | 
 |     cflags += [ | 
 |       "-fno-builtin-cos", | 
 |       "-fno-builtin-sin", | 
 |       "-fno-builtin-cosf", | 
 |       "-fno-builtin-sinf", | 
 |     ] | 
 |   } | 
 |  | 
 |   if (use_libfuzzer || use_drfuzz || use_afl) { | 
 |     # Used in Chromium's overrides to disable logging | 
 |     defines += [ "WEBRTC_UNSAFE_FUZZER_MODE" ] | 
 |   } | 
 | } | 
 |  | 
 | config("common_objc") { | 
 |   libs = [ "Foundation.framework" ] | 
 |   precompiled_header = "sdk/objc/WebRTC-Prefix.pch" | 
 |   precompiled_source = "sdk/objc/WebRTC-Prefix.pch" | 
 | } | 
 |  | 
 | if (!build_with_chromium) { | 
 |   # Target to build all the WebRTC production code. | 
 |   rtc_static_library("webrtc") { | 
 |     # Only the root target should depend on this. | 
 |     visibility = [ "//:default" ] | 
 |  | 
 |     sources = [ | 
 |       # TODO(kjellander): Remove this whenever possible. GN's static_library | 
 |       # target type requires at least one object to avoid errors linking. | 
 |       "build/no_op_function.cc", | 
 |  | 
 |       # TODO(ossu): Keep this here until donwstream projects have updated. | 
 |       # http://bugs.webrtc.org/6716 | 
 |       "call.h", | 
 |       "config.h", | 
 |  | 
 |       # TODO(aleloi): remove transport.h and the transport api | 
 |       # dependency once clients have updated to the new transport | 
 |       # location in webrtc/api/call/transport.h See | 
 |       # http://bugs.webrtc.org/6785. | 
 |       "transport.h", | 
 |     ] | 
 |  | 
 |     defines = [] | 
 |  | 
 |     deps = [ | 
 |       ":webrtc_common", | 
 |       "api", | 
 |       "api:transport_api", | 
 |       "audio", | 
 |       "base", | 
 |       "call", | 
 |       "common_audio", | 
 |       "common_video", | 
 |       "libjingle/xmllite", | 
 |       "libjingle/xmpp", | 
 |       "logging", | 
 |       "media", | 
 |       "modules", | 
 |       "modules/video_capture:video_capture_internal_impl", | 
 |       "p2p", | 
 |       "pc", | 
 |       "sdk", | 
 |       "stats", | 
 |       "system_wrappers", | 
 |       "video", | 
 |       "voice_engine", | 
 |     ] | 
 |  | 
 |     if (rtc_enable_protobuf) { | 
 |       defines += [ "ENABLE_RTC_EVENT_LOG" ] | 
 |       deps += [ "logging:rtc_event_log_proto" ] | 
 |     } | 
 |   } | 
 |  | 
 |   if (rtc_include_tests) { | 
 |     # Target to build all the WebRTC tests (but not examples or tools). | 
 |     # Executable in order to get a target that links all WebRTC code. | 
 |     rtc_executable("webrtc_tests") { | 
 |       testonly = true | 
 |  | 
 |       # Only the root target should depend on this. | 
 |       visibility = [ "//:default" ] | 
 |  | 
 |       deps = [ | 
 |         ":rtc_unittests", | 
 |         ":video_engine_tests", | 
 |         ":webrtc_nonparallel_tests", | 
 |         ":webrtc_perf_tests", | 
 |         "api:peerconnection_unittests", | 
 |         "common_audio:common_audio_unittests", | 
 |         "common_video:common_video_unittests", | 
 |         "libjingle:xmllite_xmpp_unittests", | 
 |         "media:rtc_media_unittests", | 
 |         "modules:modules_tests", | 
 |         "modules:modules_unittests", | 
 |         "modules/audio_coding:audio_coding_tests", | 
 |         "modules/audio_processing:audio_processing_tests", | 
 |         "modules/rtp_rtcp:test_packet_masks_metrics", | 
 |         "modules/video_capture:video_capture_internal_impl", | 
 |         "pc:rtc_pc_unittests", | 
 |         "stats:rtc_stats_unittests", | 
 |         "system_wrappers:system_wrappers_unittests", | 
 |         "test", | 
 |         "video:screenshare_loopback", | 
 |         "video:video_loopback", | 
 |         "video:video_tests", | 
 |         "voice_engine:voe_cmd_test", | 
 |         "voice_engine:voice_engine_unittests", | 
 |       ] | 
 |       if (is_android) { | 
 |         deps += [ | 
 |           ":android_junit_tests", | 
 |           "//webrtc/sdk/android:libjingle_peerconnection_android_unittest", | 
 |         ] | 
 |       } else { | 
 |         deps += [ "modules/video_capture:video_capture_tests" ] | 
 |       } | 
 |       if (!is_ios) { | 
 |         deps += [ | 
 |           "modules/audio_device:audio_device_tests", | 
 |           "voice_engine:voe_auto_test", | 
 |         ] | 
 |       } | 
 |     } | 
 |   } | 
 | } | 
 |  | 
 | rtc_static_library("webrtc_common") { | 
 |   sources = [ | 
 |     "common_types.cc", | 
 |     "common_types.h", | 
 |     "config.cc", | 
 |     "config.h", | 
 |     "typedefs.h", | 
 |     "voice_engine_configurations.h", | 
 |   ] | 
 |  | 
 |   if (!build_with_chromium && is_clang) { | 
 |     # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
 |     suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
 |   } | 
 | } | 
 |  | 
 | if (use_libfuzzer || use_drfuzz || use_afl) { | 
 |   # This target is only here for gn to discover fuzzer build targets under | 
 |   # webrtc/test/fuzzers/. | 
 |   group("webrtc_fuzzers_dummy") { | 
 |     testonly = true | 
 |     deps = [ | 
 |       "test/fuzzers:webrtc_fuzzer_main", | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | if (rtc_include_tests) { | 
 |   config("rtc_unittests_config") { | 
 |     # GN orders flags on a target before flags from configs. The default config | 
 |     # adds -Wall, and this flag have to be after -Wall -- so they need to | 
 |     # come from a config and can"t be on the target directly. | 
 |     if (is_clang) { | 
 |       cflags = [ | 
 |         "-Wno-missing-braces", | 
 |         "-Wno-sign-compare", | 
 |         "-Wno-unused-const-variable", | 
 |       ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_test("rtc_unittests") { | 
 |     testonly = true | 
 |     sources = [ | 
 |       "api/fakemetricsobserver.cc", | 
 |       "base/analytics/exp_filter_unittest.cc", | 
 |       "base/analytics/percentile_filter_unittest.cc", | 
 |       "base/array_view_unittest.cc", | 
 |       "base/atomicops_unittest.cc", | 
 |       "base/autodetectproxy_unittest.cc", | 
 |       "base/base64_unittest.cc", | 
 |       "base/basictypes_unittest.cc", | 
 |       "base/bind_unittest.cc", | 
 |       "base/bitbuffer_unittest.cc", | 
 |       "base/buffer_unittest.cc", | 
 |       "base/bufferqueue_unittest.cc", | 
 |       "base/bytebuffer_unittest.cc", | 
 |       "base/byteorder_unittest.cc", | 
 |       "base/callback_unittest.cc", | 
 |       "base/copyonwritebuffer_unittest.cc", | 
 |       "base/crc32_unittest.cc", | 
 |       "base/criticalsection_unittest.cc", | 
 |       "base/event_tracer_unittest.cc", | 
 |       "base/event_unittest.cc", | 
 |       "base/file_unittest.cc", | 
 |       "base/filerotatingstream_unittest.cc", | 
 |       "base/fileutils_unittest.cc", | 
 |       "base/function_view_unittest.cc", | 
 |       "base/helpers_unittest.cc", | 
 |       "base/httpbase_unittest.cc", | 
 |       "base/httpcommon_unittest.cc", | 
 |       "base/httpserver_unittest.cc", | 
 |       "base/ipaddress_unittest.cc", | 
 |       "base/logging_unittest.cc", | 
 |       "base/md5digest_unittest.cc", | 
 |       "base/messagedigest_unittest.cc", | 
 |       "base/messagequeue_unittest.cc", | 
 |       "base/mod_ops_unittest.cc", | 
 |       "base/nat_unittest.cc", | 
 |       "base/network_unittest.cc", | 
 |       "base/onetimeevent_unittest.cc", | 
 |       "base/optional_unittest.cc", | 
 |       "base/optionsfile_unittest.cc", | 
 |       "base/pathutils_unittest.cc", | 
 |       "base/platform_thread_unittest.cc", | 
 |       "base/proxy_unittest.cc", | 
 |       "base/proxydetect_unittest.cc", | 
 |       "base/random_unittest.cc", | 
 |       "base/rate_limiter_unittest.cc", | 
 |       "base/rate_statistics_unittest.cc", | 
 |       "base/ratelimiter_unittest.cc", | 
 |       "base/ratetracker_unittest.cc", | 
 |       "base/refcountedobject_unittest.cc", | 
 |       "base/rollingaccumulator_unittest.cc", | 
 |       "base/rtccertificate_unittest.cc", | 
 |       "base/rtccertificategenerator_unittest.cc", | 
 |       "base/safe_compare_unittest.cc", | 
 |       "base/scopedptrcollection_unittest.cc", | 
 |       "base/sequenced_task_checker_unittest.cc", | 
 |       "base/sha1digest_unittest.cc", | 
 |       "base/sharedexclusivelock_unittest.cc", | 
 |       "base/signalthread_unittest.cc", | 
 |       "base/sigslot_unittest.cc", | 
 |       "base/sigslottester_unittest.cc", | 
 |       "base/stream_unittest.cc", | 
 |       "base/stringencode_unittest.cc", | 
 |       "base/stringutils_unittest.cc", | 
 |       "base/swap_queue_unittest.cc", | 
 |  | 
 |       # TODO(ronghuawu): Reenable this test. | 
 |       # "systeminfo_unittest.cc", | 
 |       "base/task_queue_unittest.cc", | 
 |       "base/task_unittest.cc", | 
 |       "base/testclient_unittest.cc", | 
 |       "base/thread_annotations_unittest.cc", | 
 |       "base/thread_checker_unittest.cc", | 
 |       "base/thread_unittest.cc", | 
 |       "base/timestampaligner_unittest.cc", | 
 |       "base/timeutils_unittest.cc", | 
 |       "base/urlencode_unittest.cc", | 
 |       "base/weak_ptr_unittest.cc", | 
 |       "p2p/base/asyncstuntcpsocket_unittest.cc", | 
 |       "p2p/base/dtlstransportchannel_unittest.cc", | 
 |       "p2p/base/fakeportallocator.h", | 
 |       "p2p/base/faketransportcontroller.h", | 
 |       "p2p/base/jseptransport_unittest.cc", | 
 |       "p2p/base/p2ptransportchannel_unittest.cc", | 
 |       "p2p/base/port_unittest.cc", | 
 |       "p2p/base/portallocator_unittest.cc", | 
 |       "p2p/base/pseudotcp_unittest.cc", | 
 |       "p2p/base/relayport_unittest.cc", | 
 |       "p2p/base/relayserver_unittest.cc", | 
 |       "p2p/base/stun_unittest.cc", | 
 |       "p2p/base/stunport_unittest.cc", | 
 |       "p2p/base/stunrequest_unittest.cc", | 
 |       "p2p/base/stunserver_unittest.cc", | 
 |       "p2p/base/tcpport_unittest.cc", | 
 |       "p2p/base/testrelayserver.h", | 
 |       "p2p/base/teststunserver.h", | 
 |       "p2p/base/testturnserver.h", | 
 |       "p2p/base/transportcontroller_unittest.cc", | 
 |       "p2p/base/transportdescriptionfactory_unittest.cc", | 
 |       "p2p/base/turnport_unittest.cc", | 
 |       "p2p/base/turnserver_unittest.cc", | 
 |       "p2p/base/udptransportchannel_unittest.cc", | 
 |       "p2p/client/basicportallocator_unittest.cc", | 
 |       "p2p/stunprober/stunprober_unittest.cc", | 
 |     ] | 
 |  | 
 |     if (is_win) { | 
 |       sources += [ | 
 |         "base/win32_unittest.cc", | 
 |         "base/win32regkey_unittest.cc", | 
 |         "base/win32window_unittest.cc", | 
 |       ] | 
 |     } | 
 |  | 
 |     if (is_mac) { | 
 |       sources += [ "base/macutils_unittest.cc" ] | 
 |     } | 
 |  | 
 |     if (is_posix) { | 
 |       sources += [ | 
 |         "base/ssladapter_unittest.cc", | 
 |         "base/sslidentity_unittest.cc", | 
 |         "base/sslstreamadapter_unittest.cc", | 
 |       ] | 
 |     } | 
 |     if (rtc_use_quic) { | 
 |       sources += [ | 
 |         "p2p/quic/quicconnectionhelper_unittest.cc", | 
 |         "p2p/quic/quicsession_unittest.cc", | 
 |         "p2p/quic/quictransport_unittest.cc", | 
 |         "p2p/quic/quictransportchannel_unittest.cc", | 
 |         "p2p/quic/reliablequicstream_unittest.cc", | 
 |       ] | 
 |     } | 
 |  | 
 |     configs += [ ":rtc_unittests_config" ] | 
 |  | 
 |     if (!build_with_chromium && is_clang) { | 
 |       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
 |       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
 |     } | 
 |  | 
 |     deps = [ | 
 |       "base:rtc_analytics", | 
 |       "base:rtc_base", | 
 |       "base:rtc_base_tests_utils", | 
 |       "base:rtc_task_queue", | 
 |       "p2p:libstunprober", | 
 |       "p2p:rtc_p2p", | 
 |       "//testing/gmock", | 
 |       "//testing/gtest", | 
 |     ] | 
 |  | 
 |     if (rtc_enable_protobuf) { | 
 |       deps += [ "logging:rtc_event_log_tests" ] | 
 |     } | 
 |  | 
 |     if (is_android) { | 
 |       deps += [ "//testing/android/native_test:native_test_support" ] | 
 |       shard_timeout = 900 | 
 |     } | 
 |  | 
 |     if (is_ios || is_mac) { | 
 |       deps += [ | 
 |         "sdk:rtc_sdk_peerconnection_objc", | 
 |         "system_wrappers:system_wrappers_default", | 
 |         "//third_party/ocmock", | 
 |       ] | 
 |       sources += [ | 
 |         "sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm", | 
 |         "sdk/objc/Framework/UnitTests/RTCDataChannelConfigurationTest.mm", | 
 |         "sdk/objc/Framework/UnitTests/RTCIceCandidateTest.mm", | 
 |         "sdk/objc/Framework/UnitTests/RTCIceServerTest.mm", | 
 |         "sdk/objc/Framework/UnitTests/RTCMediaConstraintsTest.mm", | 
 |         "sdk/objc/Framework/UnitTests/RTCSessionDescriptionTest.mm", | 
 |         "sdk/objc/Framework/UnitTests/avformatmappertests.mm", | 
 |       ] | 
 |  | 
 |       # TODO(tkchin): Cleanup this warning. | 
 |       cflags = [ "-Wno-objc-property-no-attribute" ] | 
 |  | 
 |       # |-ObjC| flag needed to make sure category method implementations | 
 |       # are included: | 
 |       # https://developer.apple.com/library/mac/qa/qa1490/_index.html | 
 |       ldflags = [ "-ObjC" ] | 
 |     } | 
 |   } | 
 |  | 
 |   # TODO(pbos): Rename test suite, this is no longer "just" for video targets. | 
 |   video_engine_tests_resources = [ | 
 |     "//resources/foreman_cif_short.yuv", | 
 |     "//resources/voice_engine/audio_long16.pcm", | 
 |   ] | 
 |  | 
 |   if (is_ios) { | 
 |     bundle_data("video_engine_tests_bundle_data") { | 
 |       testonly = true | 
 |       sources = video_engine_tests_resources | 
 |       outputs = [ | 
 |         "{{bundle_resources_dir}}/{{source_file_part}}", | 
 |       ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_test("video_engine_tests") { | 
 |     testonly = true | 
 |     deps = [ | 
 |       "audio:audio_tests", | 
 |       "call:call_tests", | 
 |       "modules/video_capture", | 
 |       "test:test_common", | 
 |       "test:test_main", | 
 |       "video:video_tests", | 
 |     ] | 
 |     data = video_engine_tests_resources | 
 |     if (!build_with_chromium && is_clang) { | 
 |       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
 |       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
 |     } | 
 |     if (is_android) { | 
 |       deps += [ "//testing/android/native_test:native_test_native_code" ] | 
 |       shard_timeout = 900 | 
 |     } | 
 |     if (is_ios) { | 
 |       deps += [ ":video_engine_tests_bundle_data" ] | 
 |     } | 
 |   } | 
 |  | 
 |   webrtc_perf_tests_resources = [ | 
 |     "//resources/audio_coding/speech_mono_16kHz.pcm", | 
 |     "//resources/audio_coding/testfile32kHz.pcm", | 
 |     "//resources/ConferenceMotion_1280_720_50.yuv", | 
 |     "//resources/difficult_photo_1850_1110.yuv", | 
 |     "//resources/foreman_cif.yuv", | 
 |     "//resources/google-wifi-3mbps.rx", | 
 |     "//resources/paris_qcif.yuv", | 
 |     "//resources/photo_1850_1110.yuv", | 
 |     "//resources/presentation_1850_1110.yuv", | 
 |     "//resources/verizon4g-downlink.rx", | 
 |     "//resources/voice_engine/audio_long16.pcm", | 
 |     "//resources/web_screenshot_1850_1110.yuv", | 
 |   ] | 
 |  | 
 |   if (is_ios) { | 
 |     bundle_data("webrtc_perf_tests_bundle_data") { | 
 |       testonly = true | 
 |       sources = webrtc_perf_tests_resources | 
 |       outputs = [ | 
 |         "{{bundle_resources_dir}}/{{source_file_part}}", | 
 |       ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_test("webrtc_perf_tests") { | 
 |     testonly = true | 
 |     configs += [ ":rtc_unittests_config" ] | 
 |  | 
 |     sources = [ | 
 |       "call/call_perf_tests.cc", | 
 |       "call/rampup_tests.cc", | 
 |       "call/rampup_tests.h", | 
 |       "modules/audio_coding/codecs/opus/opus_complexity_unittest.cc", | 
 |       "modules/audio_coding/neteq/test/neteq_performance_unittest.cc", | 
 |       "modules/audio_processing/audio_processing_performance_unittest.cc", | 
 |       "modules/audio_processing/level_controller/level_controller_complexity_unittest.cc", | 
 |       "modules/audio_processing/residual_echo_detector_complexity_unittest.cc", | 
 |       "modules/remote_bitrate_estimator/remote_bitrate_estimators_test.cc", | 
 |       "video/full_stack_tests.cc", | 
 |     ] | 
 |     deps = [ | 
 |       "modules/audio_coding:neteq_test_support", | 
 |       "modules/audio_processing", | 
 |       "modules/audio_processing:audioproc_test_utils", | 
 |       "modules/remote_bitrate_estimator:bwe_simulator_lib", | 
 |       "modules/rtp_rtcp", | 
 |       "test:test_common", | 
 |       "test:test_main", | 
 |       "test:test_renderer", | 
 |       "video:video_quality_test", | 
 |       "voice_engine", | 
 |       "//testing/gmock", | 
 |       "//testing/gtest", | 
 |     ] | 
 |  | 
 |     if (rtc_enable_intelligibility_enhancer) { | 
 |       defines = [ "WEBRTC_INTELLIGIBILITY_ENHANCER=1" ] | 
 |     } else { | 
 |       defines = [ "WEBRTC_INTELLIGIBILITY_ENHANCER=0" ] | 
 |     } | 
 |  | 
 |     data = webrtc_perf_tests_resources | 
 |     if (is_android) { | 
 |       deps += [ "//testing/android/native_test:native_test_native_code" ] | 
 |       shard_timeout = 2700 | 
 |     } | 
 |     if (is_ios) { | 
 |       deps += [ ":webrtc_perf_tests_bundle_data" ] | 
 |     } | 
 |     if (!build_with_chromium && is_clang) { | 
 |       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
 |       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
 |     } | 
 |     if (rtc_use_h264) { | 
 |       defines += [ "WEBRTC_USE_H264" ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_test("webrtc_nonparallel_tests") { | 
 |     testonly = true | 
 |     configs += [ ":rtc_unittests_config" ] | 
 |     sources = [ | 
 |       "base/nullsocketserver_unittest.cc", | 
 |       "base/physicalsocketserver_unittest.cc", | 
 |       "base/socket_unittest.cc", | 
 |       "base/socket_unittest.h", | 
 |       "base/socketaddress_unittest.cc", | 
 |       "base/virtualsocket_unittest.cc", | 
 |     ] | 
 |     deps = [ | 
 |       "base:rtc_base", | 
 |       "base:rtc_base_tests_utils", | 
 |       "//testing/gtest", | 
 |     ] | 
 |     if (is_win) { | 
 |       sources += [ "base/win32socketserver_unittest.cc" ] | 
 |     } | 
 |     if (is_android) { | 
 |       deps += [ "//testing/android/native_test:native_test_support" ] | 
 |       shard_timeout = 900 | 
 |     } | 
 |  | 
 |     if (!build_with_chromium && is_clang) { | 
 |       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
 |       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
 |     } | 
 |   } | 
 |  | 
 |   if (is_android) { | 
 |     junit_binary("android_junit_tests") { | 
 |       java_files = [ | 
 |         "androidjunit/src/org/webrtc/CameraEnumerationTest.java", | 
 |         "examples/androidjunit/src/org/appspot/apprtc/DirectRTCClientTest.java", | 
 |         "examples/androidjunit/src/org/appspot/apprtc/TCPChannelClientTest.java", | 
 |       ] | 
 |  | 
 |       deps = [ | 
 |         "//base:base_java_test_support", | 
 |         "//webrtc/examples:AppRTCMobile_javalib", | 
 |         "//webrtc/sdk/android:libjingle_peerconnection_java", | 
 |       ] | 
 |     } | 
 |   } | 
 | } |