Harald Alvestrand 137991396d Make a switch to disable DTLS 1.0, TLS 1.0 and TLS 1.1 downgrade in WebRTC.
This reverts commit af1f8655b2cb69af382396ea642eb0a2bf04bb4d

Landing the change with default set to
"enabled" (DTLS 1.0 will continue to work by default),
so that flipping the default can be a separate CL.

Original change's description:
> Revert "Disable DTLS 1.0, TLS 1.0 and TLS 1.1 downgrade in WebRTC."
>
> This reverts commit 7276b974b78ea4f409d8738b1b6f1515f7a8968e.
>
> Reason for revert: Changing to a later Chrome release.
>
> Original change's description:
> > Disable DTLS 1.0, TLS 1.0 and TLS 1.1 downgrade in WebRTC.
> >
> > This change disables DTLS 1.0, TLS 1.0 and TLS 1.1 in WebRTC by default. This
> > is part of a larger effort at Google to remove old TLS protocols:
> > https://security.googleblog.com/2018/10/modernizing-transport-security.html
> >
> > For the M74 timeline I have added a disabled by default field trial
> > WebRTC-LegacyTlsProtocols which can be enabled to support these cipher suites
> > as consumers move away from these legacy cipher protocols but it will be off
> > in Chrome.
> >
> > This is compliant with the webrtc-security-arch specification which states:
> >
> >    All Implementations MUST implement DTLS 1.2 with the
> >    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 cipher suite and the P-256
> >    curve [FIPS186].  Earlier drafts of this specification required DTLS
> >    1.0 with the cipher suite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, and
> >    at the time of this writing some implementations do not support DTLS
> >    1.2; endpoints which support only DTLS 1.2 might encounter
> >    interoperability issues.  The DTLS-SRTP protection profile
> >    SRTP_AES128_CM_HMAC_SHA1_80 MUST be supported for SRTP.
> >    Implementations MUST favor cipher suites which support (Perfect
> >    Forward Secrecy) PFS over non-PFS cipher suites and SHOULD favor AEAD
> >    over non-AEAD cipher suites.
> >
> > Bug: webrtc:10261
> > Change-Id: I847c567592911cc437f095376ad67585b4355fc0
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125141
> > Commit-Queue: Benjamin Wright <benwright@webrtc.org>
> > Reviewed-by: David Benjamin <davidben@webrtc.org>
> > Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#27006}
>
> TBR=steveanton@webrtc.org,davidben@webrtc.org,qingsi@webrtc.org,benwright@webrtc.org
>
> # Not skipping CQ checks because original CL landed > 1 day ago.
>
> Bug: webrtc:10261
> Change-Id: I34727e65c069e1fb2ad71838828ad0a22b5fe811
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130367
> Commit-Queue: Benjamin Wright <benwright@webrtc.org>
> Reviewed-by: Benjamin Wright <benwright@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27403}

Bug: webrtc:10261
Change-Id: I28c6819d37665976e396df280b4abf48fb91d533
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169851
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30733}
2020-03-09 19:23:44 +00:00

1382 lines
32 KiB
Plaintext

# 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.
import("//build/config/crypto.gni")
import("//build/config/ui.gni")
import("../webrtc.gni")
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
config("rtc_base_chromium_config") {
defines = [ "NO_MAIN_THREAD_WRAPPING" ]
}
if (!rtc_build_ssl) {
config("external_ssl_library") {
assert(rtc_ssl_root != "",
"You must specify rtc_ssl_root when rtc_build_ssl==0.")
include_dirs = [ rtc_ssl_root ]
}
}
rtc_source_set("protobuf_utils") {
sources = [ "protobuf_utils.h" ]
if (rtc_enable_protobuf) {
public_configs = [ "//third_party/protobuf:protobuf_config" ]
deps = [ "//third_party/protobuf:protobuf_lite" ]
}
}
rtc_source_set("compile_assert_c") {
sources = [ "compile_assert_c.h" ]
}
rtc_source_set("ignore_wundef") {
sources = [ "ignore_wundef.h" ]
}
# The subset of rtc_base approved for use outside of libjingle.
# TODO(bugs.webrtc.org/9838): Create small and focused build targets and remove
# the old concept of rtc_base and rtc_base_approved.
rtc_library("rtc_base_approved") {
visibility = [ "*" ]
deps = [
":checks",
":rtc_task_queue",
":safe_compare",
":type_traits",
"../api:array_view",
"../api:scoped_refptr",
"system:arch",
"system:rtc_export",
"system:unused",
"third_party/base64",
"//third_party/abseil-cpp/absl/types:optional",
]
public_deps = [] # no-presubmit-check TODO(webrtc:8603)
sources = [
"bind.h",
"bit_buffer.cc",
"bit_buffer.h",
"buffer.h",
"buffer_queue.cc",
"buffer_queue.h",
"byte_buffer.cc",
"byte_buffer.h",
"byte_order.h",
"copy_on_write_buffer.cc",
"copy_on_write_buffer.h",
"event_tracer.cc",
"event_tracer.h",
"location.cc",
"location.h",
"message_buffer_reader.h",
"numerics/histogram_percentile_counter.cc",
"numerics/histogram_percentile_counter.h",
"numerics/mod_ops.h",
"numerics/moving_max_counter.h",
"numerics/sample_counter.cc",
"numerics/sample_counter.h",
"one_time_event.h",
"race_checker.cc",
"race_checker.h",
"random.cc",
"random.h",
"rate_statistics.cc",
"rate_statistics.h",
"rate_tracker.cc",
"rate_tracker.h",
"swap_queue.h",
"timestamp_aligner.cc",
"timestamp_aligner.h",
"trace_event.h",
"zero_memory.cc",
"zero_memory.h",
]
if (is_win) {
sources += [
"win/windows_version.cc",
"win/windows_version.h",
]
data_deps = [ "//build/win:runtime_libs" ]
}
if (is_nacl) {
public_deps += # no-presubmit-check TODO(webrtc:8603)
[ "//native_client_sdk/src/libraries/nacl_io" ]
}
if (is_android) {
libs = [ "log" ]
}
public_deps += [ # no-presubmit-check TODO(webrtc:8603)
":atomicops",
":criticalsection",
":logging",
":macromagic",
":platform_thread",
":platform_thread_types",
":refcount",
":rtc_event",
":safe_conversions",
":stringutils",
":thread_checker",
":timeutils",
]
}
rtc_source_set("macromagic") {
# TODO(bugs.webrtc.org/9606): This should not be public.
visibility = [ "*" ]
sources = [
"arraysize.h",
"constructor_magic.h",
"format_macros.h",
"stringize_macros.h",
"thread_annotations.h",
]
deps = [ "system:arch" ]
}
rtc_library("platform_thread_types") {
sources = [
"platform_thread_types.cc",
"platform_thread_types.h",
]
}
rtc_source_set("refcount") {
visibility = [ "*" ]
sources = [
"ref_count.h",
"ref_counted_object.h",
"ref_counter.h",
]
deps = [ ":macromagic" ]
}
rtc_library("criticalsection") {
sources = [
"critical_section.cc",
"critical_section.h",
]
deps = [
":atomicops",
":checks",
":macromagic",
":platform_thread_types",
"system:rtc_export",
"system:unused",
]
}
rtc_library("platform_thread") {
visibility = [
":rtc_base_approved",
":rtc_task_queue_libevent",
":rtc_task_queue_win",
":rtc_task_queue_stdlib",
"synchronization:sequence_checker",
]
sources = [
"platform_thread.cc",
"platform_thread.h",
]
deps = [
":atomicops",
":checks",
":macromagic",
":platform_thread_types",
":rtc_event",
":thread_checker",
":timeutils",
"//third_party/abseil-cpp/absl/strings",
]
}
rtc_library("rtc_event") {
if (build_with_chromium) {
sources = [
"../../webrtc_overrides/rtc_base/event.cc",
"../../webrtc_overrides/rtc_base/event.h",
]
deps = [
":checks",
"system:rtc_export", # Only Chromium's rtc::Event use RTC_EXPORT.
"//base", # Dependency on chromium's waitable_event.
]
} else {
sources = [
"event.cc",
"event.h",
]
deps = [
":checks",
"synchronization:yield_policy",
"system:warn_current_thread_is_deadlocked",
"//third_party/abseil-cpp/absl/types:optional",
]
}
}
rtc_library("logging") {
visibility = [ "*" ]
libs = []
deps = [
":checks",
":criticalsection",
":macromagic",
":platform_thread_types",
":stringutils",
":timeutils",
"//third_party/abseil-cpp/absl/base:core_headers",
"//third_party/abseil-cpp/absl/meta:type_traits",
"//third_party/abseil-cpp/absl/strings",
]
if (build_with_chromium) {
# Dependency on chromium's logging (in //base).
deps += [ "//base" ]
sources = [
"../../webrtc_overrides/rtc_base/logging.cc",
"../../webrtc_overrides/rtc_base/logging.h",
]
} else {
configs += [
"..:no_exit_time_destructors",
"..:no_global_constructors",
]
sources = [
"logging.cc",
"logging.h",
]
deps += [ "system:inline" ]
if (is_mac) {
libs += [ "Foundation.framework" ]
}
# logging.h needs the deprecation header while downstream projects are
# removing code that depends on logging implementation details.
deps += [ ":deprecation" ]
if (is_android) {
libs += [ "log" ]
}
}
}
rtc_source_set("thread_checker") {
sources = [ "thread_checker.h" ]
deps = [
":deprecation",
"synchronization:sequence_checker",
]
}
rtc_source_set("atomicops") {
sources = [ "atomic_ops.h" ]
}
rtc_library("checks") {
# TODO(bugs.webrtc.org/9607): This should not be public.
visibility = [ "*" ]
libs = []
sources = [
"checks.cc",
"checks.h",
]
deps = [
":safe_compare",
"system:inline",
"system:rtc_export",
"//third_party/abseil-cpp/absl/meta:type_traits",
"//third_party/abseil-cpp/absl/strings",
]
if (is_android) {
libs += [ "log" ]
}
}
rtc_library("rate_limiter") {
sources = [
"rate_limiter.cc",
"rate_limiter.h",
]
deps = [
":rtc_base_approved",
"../system_wrappers",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("sanitizer") {
sources = [ "sanitizer.h" ]
deps = [ "//third_party/abseil-cpp/absl/meta:type_traits" ]
}
rtc_source_set("bounded_inline_vector") {
public = [ "bounded_inline_vector.h" ]
sources = [ "bounded_inline_vector_impl.h" ]
deps = [ ":checks" ]
}
rtc_source_set("divide_round") {
sources = [ "numerics/divide_round.h" ]
deps = [
":checks",
":safe_compare",
]
}
rtc_source_set("safe_compare") {
sources = [ "numerics/safe_compare.h" ]
deps = [ ":type_traits" ]
}
rtc_source_set("safe_minmax") {
sources = [ "numerics/safe_minmax.h" ]
deps = [
":checks",
":safe_compare",
":type_traits",
]
}
rtc_source_set("safe_conversions") {
sources = [
"numerics/safe_conversions.h",
"numerics/safe_conversions_impl.h",
]
deps = [ ":checks" ]
}
rtc_library("timeutils") {
visibility = [ "*" ]
sources = [
"time_utils.cc",
"time_utils.h",
]
deps = [
":checks",
":safe_conversions",
":stringutils",
"system:rtc_export",
]
libs = []
if (is_win) {
libs += [ "winmm.lib" ]
}
}
rtc_library("stringutils") {
sources = [
"string_encode.cc",
"string_encode.h",
"string_to_number.cc",
"string_to_number.h",
"string_utils.cc",
"string_utils.h",
"strings/string_builder.cc",
"strings/string_builder.h",
]
deps = [
":checks",
":macromagic",
":safe_minmax",
"../api:array_view",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_library("audio_format_to_string") {
sources = [
"strings/audio_format_to_string.cc",
"strings/audio_format_to_string.h",
]
deps = [
":stringutils",
"../api/audio_codecs:audio_codecs_api",
]
}
rtc_source_set("type_traits") {
sources = [ "type_traits.h" ]
}
rtc_source_set("deprecation") {
sources = [ "deprecation.h" ]
}
rtc_library("rtc_task_queue") {
visibility = [ "*" ]
sources = [
"task_queue.cc",
"task_queue.h",
]
deps = [
":macromagic",
"../api/task_queue",
"system:rtc_export",
"task_utils:to_queued_task",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_source_set("rtc_operations_chain") {
visibility = [ "*" ]
sources = [
"operations_chain.cc",
"operations_chain.h",
]
deps = [
":checks",
":macromagic",
":refcount",
"../api:scoped_refptr",
"synchronization:sequence_checker",
]
}
if (rtc_enable_libevent) {
rtc_library("rtc_task_queue_libevent") {
visibility = [ "../api/task_queue:default_task_queue_factory" ]
sources = [
"task_queue_libevent.cc",
"task_queue_libevent.h",
]
deps = [
":checks",
":criticalsection",
":logging",
":macromagic",
":platform_thread",
":platform_thread_types",
":safe_conversions",
":timeutils",
"../api/task_queue",
"//third_party/abseil-cpp/absl/container:inlined_vector",
"//third_party/abseil-cpp/absl/strings",
]
if (rtc_build_libevent) {
deps += [ "//base/third_party/libevent" ]
}
}
}
if (is_mac || is_ios) {
rtc_library("rtc_task_queue_gcd") {
visibility = [ "../api/task_queue:default_task_queue_factory" ]
sources = [
"task_queue_gcd.cc",
"task_queue_gcd.h",
]
deps = [
":checks",
":logging",
"../api/task_queue",
"//third_party/abseil-cpp/absl/strings",
]
}
}
if (is_win) {
rtc_library("rtc_task_queue_win") {
visibility = [ "../api/task_queue:default_task_queue_factory" ]
sources = [
"task_queue_win.cc",
"task_queue_win.h",
]
deps = [
":checks",
":criticalsection",
":logging",
":macromagic",
":platform_thread",
":rtc_event",
":safe_conversions",
":timeutils",
"../api/task_queue",
"//third_party/abseil-cpp/absl/strings",
]
}
}
rtc_library("rtc_task_queue_stdlib") {
sources = [
"task_queue_stdlib.cc",
"task_queue_stdlib.h",
]
deps = [
":checks",
":criticalsection",
":logging",
":macromagic",
":platform_thread",
":rtc_event",
":safe_conversions",
":timeutils",
"../api/task_queue",
"//third_party/abseil-cpp/absl/strings",
]
}
rtc_library("weak_ptr") {
sources = [
"weak_ptr.cc",
"weak_ptr.h",
]
deps = [
":refcount",
"../api:scoped_refptr",
"synchronization:sequence_checker",
]
}
rtc_library("rtc_numerics") {
sources = [
"numerics/event_based_exponential_moving_average.cc",
"numerics/event_based_exponential_moving_average.h",
"numerics/event_rate_counter.cc",
"numerics/event_rate_counter.h",
"numerics/exp_filter.cc",
"numerics/exp_filter.h",
"numerics/math_utils.h",
"numerics/moving_average.cc",
"numerics/moving_average.h",
"numerics/moving_median_filter.h",
"numerics/percentile_filter.h",
"numerics/running_statistics.h",
"numerics/sample_stats.cc",
"numerics/sample_stats.h",
"numerics/samples_stats_counter.cc",
"numerics/samples_stats_counter.h",
"numerics/sequence_number_util.h",
]
deps = [
":checks",
":rtc_base_approved",
":safe_compare",
"../api:array_view",
"../api/units:data_rate",
"../api/units:time_delta",
"../api/units:timestamp",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/types:optional",
]
}
config("rtc_json_suppressions") {
if (!is_win || is_clang) {
cflags_cc = [
# TODO(bugs.webrtc.org/10770): Update jsoncpp API usage and remove
# -Wno-deprecated-declarations.
"-Wno-deprecated-declarations",
# TODO(bugs.webrtc.org/10814): Remove -Wno-undef as soon as it get
# removed upstream.
"-Wno-undef",
]
}
}
rtc_library("rtc_json") {
public_configs = [ ":rtc_json_suppressions" ]
poisonous = [ "rtc_json" ]
defines = []
sources = [
"strings/json.cc",
"strings/json.h",
]
deps = [ ":stringutils" ]
all_dependent_configs = [ "//third_party/jsoncpp:jsoncpp_config" ]
if (rtc_build_json) {
public_deps = # no-presubmit-check TODO(webrtc:8603)
[ "//third_party/jsoncpp" ]
} else {
include_dirs = [ "$rtc_jsoncpp_root" ]
# When defined changes the include path for json.h to where it is
# expected to be when building json outside of the standalone build.
defines += [ "WEBRTC_EXTERNAL_JSON" ]
}
}
rtc_source_set("net_helpers") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "net_helpers.cc",
# "net_helpers.h",
# ]
}
rtc_source_set("async_resolver_interface") {
visibility = [ "*" ]
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "async_resolver_interface.cc",
# "async_resolver_interface.h",
# ]
}
rtc_source_set("ip_address") {
visibility = [ "*" ]
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "ip_address.cc",
# "ip_address.h",
# ]
}
rtc_source_set("socket_address") {
visibility = [ "*" ]
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "socket_address.cc",
# "socket_address.h",
# ]
}
rtc_source_set("null_socket_server") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "null_socket_server.cc",
# "null_socket_server.h",
# ]
}
rtc_source_set("socket_server") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "socket_server.h",
# ]
}
rtc_source_set("threading") {
visibility = [ "*" ]
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "asyncresolver.cc",
# "asyncresolver.h",
# "defaultsocketserver.cc",
# "defaultsocketserver.h",
# "message_handler.cc",
# "message_handler.h",
# "network_monitor.cc",
# "network_monitor.h",
# "physical_socket_server.cc",
# "physical_socket_server.h",
# "signal_thread.cc",
# "signal_thread.h",
# "thread.cc",
# "thread.h",
# ]
}
rtc_source_set("socket_factory") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "socket_factory.h",
# ]
}
rtc_source_set("async_socket") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "async_socket.cc",
# "async_socket.h",
# ]
}
rtc_source_set("socket") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "socket.cc",
# "socket.h",
# ]
}
rtc_source_set("network_constants") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "network_constants.h",
# ]
}
if (is_android) {
rtc_source_set("ifaddrs_android") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "ifaddrs_android.cc",
# "ifaddrs_android.h",
# ]
}
}
if (is_win) {
rtc_source_set("win32") {
# TODO(bugs.webrtc.org/9987): This build target will soon contain
# the following files:
# sources = [
# "win32.cc",
# "win32.h",
# ]
}
}
rtc_library("rtc_base") {
visibility = [ "*" ]
cflags = []
cflags_cc = []
libs = []
defines = []
deps = [
":checks",
":stringutils",
"../api:array_view",
"../api:function_view",
"../api:scoped_refptr",
"../api/task_queue",
"../system_wrappers:field_trial",
"network:sent_packet",
"system:file_wrapper",
"system:rtc_export",
"task_utils:to_queued_task",
"third_party/base64",
"third_party/sigslot",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
public_deps = [ ":rtc_base_approved" ] # no-presubmit-check TODO(webrtc:8603)
public_configs = []
sources = [
"async_invoker.cc",
"async_invoker.h",
"async_invoker_inl.h",
"async_packet_socket.cc",
"async_packet_socket.h",
"async_resolver_interface.cc",
"async_resolver_interface.h",
"async_socket.cc",
"async_socket.h",
"async_tcp_socket.cc",
"async_tcp_socket.h",
"async_udp_socket.cc",
"async_udp_socket.h",
"crc32.cc",
"crc32.h",
"crypt_string.cc",
"crypt_string.h",
"data_rate_limiter.cc",
"data_rate_limiter.h",
"dscp.h",
"file_rotating_stream.cc",
"file_rotating_stream.h",
"helpers.cc",
"helpers.h",
"http_common.cc",
"http_common.h",
"ip_address.cc",
"ip_address.h",
"keep_ref_until_done.h",
"mdns_responder_interface.h",
"message_digest.cc",
"message_digest.h",
"message_handler.cc",
"message_handler.h",
"net_helper.cc",
"net_helper.h",
"net_helpers.cc",
"net_helpers.h",
"network.cc",
"network.h",
"network_constants.h",
"network_monitor.cc",
"network_monitor.h",
"network_route.h",
"null_socket_server.cc",
"null_socket_server.h",
"openssl.h",
"openssl_adapter.cc",
"openssl_adapter.h",
"openssl_certificate.cc",
"openssl_certificate.h",
"openssl_digest.cc",
"openssl_digest.h",
"openssl_identity.cc",
"openssl_identity.h",
"openssl_session_cache.cc",
"openssl_session_cache.h",
"openssl_stream_adapter.cc",
"openssl_stream_adapter.h",
"openssl_utility.cc",
"openssl_utility.h",
"physical_socket_server.cc",
"physical_socket_server.h",
"proxy_info.cc",
"proxy_info.h",
"rtc_certificate.cc",
"rtc_certificate.h",
"rtc_certificate_generator.cc",
"rtc_certificate_generator.h",
"signal_thread.cc",
"signal_thread.h",
"sigslot_repeater.h",
"socket.cc",
"socket.h",
"socket_adapters.cc",
"socket_adapters.h",
"socket_address.cc",
"socket_address.h",
"socket_address_pair.cc",
"socket_address_pair.h",
"socket_factory.h",
"socket_server.h",
"ssl_adapter.cc",
"ssl_adapter.h",
"ssl_certificate.cc",
"ssl_certificate.h",
"ssl_fingerprint.cc",
"ssl_fingerprint.h",
"ssl_identity.cc",
"ssl_identity.h",
"ssl_stream_adapter.cc",
"ssl_stream_adapter.h",
"stream.cc",
"stream.h",
"thread.cc",
"thread.h",
"thread_message.h",
"unique_id_generator.cc",
"unique_id_generator.h",
]
if (build_with_chromium) {
include_dirs = [ "../../boringssl/src/include" ]
public_configs += [ ":rtc_base_chromium_config" ]
} else {
sources += [
"callback.h",
"log_sinks.cc",
"log_sinks.h",
"numerics/math_utils.h",
"rolling_accumulator.h",
"ssl_roots.h",
]
deps += [ ":rtc_numerics" ]
if (is_win) {
sources += [ "win32_socket_init.h" ]
if (current_os != "winuwp") {
sources += [
"win32_socket_server.cc",
"win32_socket_server.h",
]
}
}
} # !build_with_chromium
if (rtc_build_ssl) {
deps += [ "//third_party/boringssl" ]
} else {
configs += [ ":external_ssl_library" ]
}
if (is_android) {
sources += [
"ifaddrs_android.cc",
"ifaddrs_android.h",
]
libs += [
"log",
"GLESv2",
]
}
if (is_ios || is_mac) {
sources += [ "mac_ifaddrs_converter.cc" ]
deps += [ "system:cocoa_threading" ]
}
if (is_linux) {
libs += [
"dl",
"rt",
]
}
if (is_ios) {
libs += [
"CFNetwork.framework",
"Foundation.framework",
"Security.framework",
"SystemConfiguration.framework",
"UIKit.framework",
]
}
if (is_win) {
sources += [
"win32.cc",
"win32.h",
"win32_window.cc",
"win32_window.h",
]
libs += [
"crypt32.lib",
"iphlpapi.lib",
"secur32.lib",
]
defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
}
if (is_posix || is_fuchsia) {
sources += [
"ifaddrs_converter.cc",
"ifaddrs_converter.h",
]
}
if (is_nacl) {
public_deps += # no-presubmit-check TODO(webrtc:8603)
[ "//native_client_sdk/src/libraries/nacl_io" ]
defines += [ "timezone=_timezone" ]
sources -= [ "ifaddrs_converter.cc" ]
}
}
rtc_source_set("gtest_prod") {
sources = [ "gtest_prod_util.h" ]
}
rtc_library("gunit_helpers") {
testonly = true
sources = [
"gunit.cc",
"gunit.h",
]
deps = [
":logging",
":rtc_base",
":rtc_base_tests_utils",
":stringutils",
"../test:test_support",
"//third_party/abseil-cpp/absl/strings",
]
}
rtc_library("testclient") {
testonly = true
sources = [
"test_client.cc",
"test_client.h",
]
deps = [
":criticalsection",
":gunit_helpers",
":macromagic",
":rtc_base",
":rtc_base_tests_utils",
":timeutils",
]
}
rtc_library("rtc_base_tests_utils") {
testonly = true
sources = [
"cpu_time.cc",
"cpu_time.h",
"fake_clock.cc",
"fake_clock.h",
"fake_mdns_responder.h",
"fake_network.h",
"fake_ssl_identity.cc",
"fake_ssl_identity.h",
"firewall_socket_server.cc",
"firewall_socket_server.h",
"memory_stream.cc",
"memory_stream.h",
"memory_usage.cc",
"memory_usage.h",
"nat_server.cc",
"nat_server.h",
"nat_socket_factory.cc",
"nat_socket_factory.h",
"nat_types.cc",
"nat_types.h",
"proxy_server.cc",
"proxy_server.h",
"server_socket_adapters.cc",
"server_socket_adapters.h",
"sigslot_tester.h",
"socket_stream.cc",
"socket_stream.h",
"test_base64.h",
"test_certificate_verifier.h",
"test_echo_server.cc",
"test_echo_server.h",
"test_utils.cc",
"test_utils.h",
"virtual_socket_server.cc",
"virtual_socket_server.h",
]
deps = [
":checks",
":rtc_base",
"../api/units:time_delta",
"../api/units:timestamp",
"memory:fifo_buffer",
"third_party/sigslot",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_library("task_queue_for_test") {
testonly = true
sources = [
"task_queue_for_test.cc",
"task_queue_for_test.h",
]
deps = [
":checks",
":macromagic",
":rtc_base_approved",
":rtc_event",
":rtc_task_queue",
"../api/task_queue",
"../api/task_queue:default_task_queue_factory",
"task_utils:to_queued_task",
"//third_party/abseil-cpp/absl/strings",
]
}
if (rtc_include_tests) {
rtc_library("sigslot_unittest") {
testonly = true
sources = [ "sigslot_unittest.cc" ]
deps = [
":gunit_helpers",
":rtc_base",
":rtc_base_tests_utils",
"../test:test_support",
"third_party/sigslot",
]
}
rtc_library("rtc_base_nonparallel_tests") {
testonly = true
sources = [
"cpu_time_unittest.cc",
"file_rotating_stream_unittest.cc",
"null_socket_server_unittest.cc",
"physical_socket_server_unittest.cc",
"socket_address_unittest.cc",
"socket_unittest.cc",
"socket_unittest.h",
]
deps = [
":checks",
":gunit_helpers",
":rtc_base",
":rtc_base_tests_utils",
":testclient",
"../system_wrappers",
"../test:fileutils",
"../test:test_main",
"../test:test_support",
"third_party/sigslot",
"//testing/gtest",
"//third_party/abseil-cpp/absl/memory",
]
if (is_win) {
sources += [ "win32_socket_server_unittest.cc" ]
}
}
rtc_library("rtc_base_approved_unittests") {
testonly = true
sources = [
"atomic_ops_unittest.cc",
"base64_unittest.cc",
"bind_unittest.cc",
"bit_buffer_unittest.cc",
"bounded_inline_vector_unittest.cc",
"buffer_queue_unittest.cc",
"buffer_unittest.cc",
"byte_buffer_unittest.cc",
"byte_order_unittest.cc",
"checks_unittest.cc",
"copy_on_write_buffer_unittest.cc",
"critical_section_unittest.cc",
"event_tracer_unittest.cc",
"event_unittest.cc",
"logging_unittest.cc",
"numerics/divide_round_unittest.cc",
"numerics/histogram_percentile_counter_unittest.cc",
"numerics/mod_ops_unittest.cc",
"numerics/moving_max_counter_unittest.cc",
"numerics/safe_compare_unittest.cc",
"numerics/safe_minmax_unittest.cc",
"numerics/sample_counter_unittest.cc",
"one_time_event_unittest.cc",
"platform_thread_unittest.cc",
"random_unittest.cc",
"rate_limiter_unittest.cc",
"rate_statistics_unittest.cc",
"rate_tracker_unittest.cc",
"ref_counted_object_unittest.cc",
"sanitizer_unittest.cc",
"string_encode_unittest.cc",
"string_to_number_unittest.cc",
"string_utils_unittest.cc",
"stringize_macros_unittest.cc",
"strings/string_builder_unittest.cc",
"swap_queue_unittest.cc",
"thread_annotations_unittest.cc",
"thread_checker_unittest.cc",
"time_utils_unittest.cc",
"timestamp_aligner_unittest.cc",
"virtual_socket_unittest.cc",
"zero_memory_unittest.cc",
]
if (is_win) {
sources += [ "win/windows_version_unittest.cc" ]
}
deps = [
":bounded_inline_vector",
":checks",
":divide_round",
":gunit_helpers",
":rate_limiter",
":rtc_base",
":rtc_base_approved",
":rtc_base_tests_utils",
":rtc_task_queue",
":safe_compare",
":safe_minmax",
":sanitizer",
":stringutils",
":testclient",
"../api:array_view",
"../api:scoped_refptr",
"../api/units:time_delta",
"../system_wrappers",
"../test:fileutils",
"../test:test_main",
"../test:test_support",
"memory:unittests",
"task_utils:to_queued_task",
"third_party/base64",
"third_party/sigslot",
"//third_party/abseil-cpp/absl/base:core_headers",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_library("rtc_task_queue_unittests") {
testonly = true
sources = [ "task_queue_unittest.cc" ]
deps = [
":gunit_helpers",
":rtc_base_approved",
":rtc_base_tests_utils",
":rtc_task_queue",
":task_queue_for_test",
"../test:test_main",
"../test:test_support",
"//third_party/abseil-cpp/absl/memory",
]
}
rtc_library("rtc_operations_chain_unittests") {
testonly = true
sources = [ "operations_chain_unittest.cc" ]
deps = [
":rtc_base",
":rtc_base_approved",
":rtc_event",
":rtc_operations_chain",
"../test:test_support",
]
}
rtc_library("weak_ptr_unittests") {
testonly = true
sources = [ "weak_ptr_unittest.cc" ]
deps = [
":gunit_helpers",
":rtc_base_approved",
":rtc_base_tests_utils",
":rtc_event",
":task_queue_for_test",
":weak_ptr",
"../test:test_main",
"../test:test_support",
]
}
rtc_library("rtc_numerics_unittests") {
testonly = true
sources = [
"numerics/event_based_exponential_moving_average_unittest.cc",
"numerics/exp_filter_unittest.cc",
"numerics/moving_average_unittest.cc",
"numerics/moving_median_filter_unittest.cc",
"numerics/percentile_filter_unittest.cc",
"numerics/running_statistics_unittest.cc",
"numerics/samples_stats_counter_unittest.cc",
"numerics/sequence_number_util_unittest.cc",
]
deps = [
":rtc_base_approved",
":rtc_numerics",
"../test:test_main",
"../test:test_support",
"//third_party/abseil-cpp/absl/algorithm:container",
]
}
rtc_library("rtc_json_unittests") {
testonly = true
sources = [ "strings/json_unittest.cc" ]
deps = [
":gunit_helpers",
":rtc_base_tests_utils",
":rtc_json",
"../test:test_main",
"../test:test_support",
]
}
rtc_library("rtc_base_unittests") {
testonly = true
defines = []
sources = [
"callback_unittest.cc",
"crc32_unittest.cc",
"data_rate_limiter_unittest.cc",
"fake_clock_unittest.cc",
"helpers_unittest.cc",
"ip_address_unittest.cc",
"memory_usage_unittest.cc",
"message_digest_unittest.cc",
"nat_unittest.cc",
"network_unittest.cc",
"proxy_unittest.cc",
"rolling_accumulator_unittest.cc",
"rtc_certificate_generator_unittest.cc",
"rtc_certificate_unittest.cc",
"signal_thread_unittest.cc",
"sigslot_tester_unittest.cc",
"test_client_unittest.cc",
"thread_unittest.cc",
"unique_id_generator_unittest.cc",
]
if (is_win) {
sources += [
"win32_unittest.cc",
"win32_window_unittest.cc",
]
}
if (is_posix || is_fuchsia) {
sources += [
"openssl_adapter_unittest.cc",
"openssl_session_cache_unittest.cc",
"openssl_utility_unittest.cc",
"ssl_adapter_unittest.cc",
"ssl_identity_unittest.cc",
"ssl_stream_adapter_unittest.cc",
]
}
deps = [
":checks",
":gunit_helpers",
":rtc_base_tests_utils",
":stringutils",
":testclient",
"../api:array_view",
"../api/task_queue",
"../api/task_queue:task_queue_test",
"../test:field_trial",
"../test:fileutils",
"../test:rtc_expect_death",
"../test:test_main",
"../test:test_support",
"memory:fifo_buffer",
"synchronization:synchronization_unittests",
"task_utils:to_queued_task",
"third_party/sigslot",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
public_deps = [ ":rtc_base" ] # no-presubmit-check TODO(webrtc:8603)
if (build_with_chromium) {
include_dirs = [ "../../boringssl/src/include" ]
}
if (rtc_build_ssl) {
deps += [ "//third_party/boringssl" ]
} else {
configs += [ ":external_ssl_library" ]
}
}
}
if (is_android) {
rtc_android_library("base_java") {
visibility = [ "*" ]
sources = [
"java/src/org/webrtc/ContextUtils.java",
"java/src/org/webrtc/Loggable.java",
"java/src/org/webrtc/Logging.java",
"java/src/org/webrtc/Size.java",
"java/src/org/webrtc/ThreadUtils.java",
]
deps = [
"//third_party/android_deps:com_android_support_support_annotations_java",
]
}
}