blob: bc9b9296b5e760b2a956e50d65dc5abacd14f695 [file] [log] [blame]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
Henrik Kjellander73e21802017-06-20 08:38:58 +02002#
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
Henrik Kjellanderc0362762017-06-29 08:03:04 +02009import("//build/config/crypto.gni")
10import("//build/config/ui.gni")
Henrik Kjellander73e21802017-06-20 08:38:58 +020011import("../webrtc.gni")
12
13if (is_android) {
14 import("//build/config/android/config.gni")
15 import("//build/config/android/rules.gni")
16}
Henrik Kjellanderc0362762017-06-29 08:03:04 +020017if (is_win) {
18 import("//build/config/clang/clang.gni")
19}
Henrik Kjellander73e21802017-06-20 08:38:58 +020020
Henrik Kjellanderc0362762017-06-29 08:03:04 +020021group("base") {
22 public_deps = [
23 ":rtc_base",
24 ":rtc_base_approved",
25 ":rtc_task_queue",
26 ":sequenced_task_checker",
27 ":weak_ptr",
28 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +020029 if (is_android) {
30 public_deps += [ ":base_java" ]
31 }
32}
33
Henrik Kjellanderc0362762017-06-29 08:03:04 +020034config("rtc_base_chromium_config") {
35 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
36}
37
38config("rtc_base_all_dependent_config") {
39 if (is_ios) {
40 libs = [
41 "CFNetwork.framework",
42 "Security.framework",
43 "SystemConfiguration.framework",
44 "UIKit.framework",
45 ]
46 }
47 if (is_mac) {
48 libs = [
49 "Cocoa.framework",
50 "Foundation.framework",
51 "IOKit.framework",
52 "Security.framework",
53 "SystemConfiguration.framework",
54 ]
55 }
56}
57
58if (!rtc_build_ssl) {
59 config("external_ssl_library") {
60 assert(rtc_ssl_root != "",
61 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
62 include_dirs = [ rtc_ssl_root ]
63 }
64}
65
66source_set("protobuf_utils") {
67 sources = [
68 "protobuf_utils.h",
69 ]
70 if (rtc_enable_protobuf) {
71 public_deps = [
72 "//third_party/protobuf:protobuf_lite",
73 ]
74 }
75}
76
77source_set("compile_assert_c") {
78 sources = [
79 "compile_assert_c.h",
80 ]
81}
82
mbonadeibc378472017-09-11 03:43:34 -070083rtc_source_set("rtc_base_approved") {
84 public_deps = [
85 ":rtc_base_approved_generic",
86 ]
87 if (is_mac && !build_with_chromium) {
88 public_deps += [ ":rtc_base_approved_objc" ]
89 }
90}
91
Henrik Kjellanderc0362762017-06-29 08:03:04 +020092# The subset of rtc_base approved for use outside of libjingle.
mbonadeibc378472017-09-11 03:43:34 -070093rtc_source_set("rtc_base_approved_generic") {
94 visibility = [
95 ":rtc_base_approved",
96 ":rtc_base_approved_objc",
97 ]
98
Henrik Kjellanderc0362762017-06-29 08:03:04 +020099 # TODO(kjellander): Remove (bugs.webrtc.org/7480)
100 # Enabling GN check triggers a cyclic dependency caused by rate_limiter.cc:
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800101 # :rtc_base_approved -> ../system_wrappers -> :rtc_base_approved
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200102 check_includes = false
103 defines = []
104 libs = []
105 deps = []
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200106
107 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200108 "arraysize.h",
109 "atomicops.h",
110 "base64.cc",
111 "base64.h",
112 "basictypes.h",
113 "bind.h",
114 "bitbuffer.cc",
115 "bitbuffer.h",
Alex Narest78609d52017-10-20 10:37:47 +0200116 "bitrateallocationstrategy.cc",
117 "bitrateallocationstrategy.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200118 "buffer.h",
119 "bufferqueue.cc",
120 "bufferqueue.h",
121 "bytebuffer.cc",
122 "bytebuffer.h",
123 "byteorder.h",
124 "checks.cc",
125 "checks.h",
126 "constructormagic.h",
127 "copyonwritebuffer.cc",
128 "copyonwritebuffer.h",
129 "criticalsection.cc",
130 "criticalsection.h",
131 "deprecation.h",
132 "event.cc",
133 "event.h",
134 "event_tracer.cc",
135 "event_tracer.h",
136 "file.cc",
137 "file.h",
138 "flags.cc",
139 "flags.h",
140 "format_macros.h",
141 "function_view.h",
Ilya Nikolaevskiyed23be92017-10-12 12:38:01 +0200142 "histogram_percentile_counter.cc",
143 "histogram_percentile_counter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200144 "ignore_wundef.h",
145 "location.cc",
146 "location.h",
147 "mod_ops.h",
ilnika79cc282017-08-23 05:24:10 -0700148 "moving_max_counter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200149 "onetimeevent.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200150 "pathutils.cc",
151 "pathutils.h",
152 "platform_file.cc",
153 "platform_file.h",
154 "platform_thread.cc",
155 "platform_thread.h",
156 "platform_thread_types.h",
157 "ptr_util.h",
158 "race_checker.cc",
159 "race_checker.h",
160 "random.cc",
161 "random.h",
162 "rate_limiter.cc",
163 "rate_limiter.h",
164 "rate_statistics.cc",
165 "rate_statistics.h",
166 "ratetracker.cc",
167 "ratetracker.h",
168 "refcount.h",
169 "refcountedobject.h",
Niels Möller9155e492017-10-23 11:22:30 +0200170 "refcounter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200171 "safe_compare.h",
172 "safe_conversions.h",
173 "safe_conversions_impl.h",
174 "safe_minmax.h",
175 "sanitizer.h",
176 "scoped_ref_ptr.h",
177 "string_to_number.cc",
178 "string_to_number.h",
179 "stringencode.cc",
180 "stringencode.h",
181 "stringize_macros.h",
182 "stringutils.cc",
183 "stringutils.h",
184 "swap_queue.h",
185 "template_util.h",
186 "thread_annotations.h",
187 "thread_checker.h",
188 "thread_checker_impl.cc",
189 "thread_checker_impl.h",
190 "timestampaligner.cc",
191 "timestampaligner.h",
192 "timeutils.cc",
193 "timeutils.h",
194 "trace_event.h",
195 "type_traits.h",
196 ]
197
198 deps += [ "..:webrtc_common" ]
199
200 if (is_android) {
201 libs += [ "log" ]
202 }
203
204 if (is_posix) {
205 sources += [ "file_posix.cc" ]
206 }
207
208 if (is_win) {
209 sources += [ "file_win.cc" ]
210 }
211
212 if (build_with_chromium) {
213 # Dependency on chromium's logging (in //base).
214 deps += [ "//base:base" ]
215 sources += [
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200216 "../../webrtc_overrides/rtc_base/logging.cc",
217 "../../webrtc_overrides/rtc_base/logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200218 ]
219 } else {
220 sources += [
221 "logging.cc",
222 "logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200223 ]
224 }
225 if (is_component_build && is_win) {
226 # Copy the VS runtime DLLs into the isolate so that they don't have to be
227 # preinstalled on the target machine. The debug runtimes have a "d" at
228 # the end.
229 # This is a copy of https://codereview.chromium.org/1783973002.
230 # TODO(ehmaldonado): We'd like Chromium to make this changes easier to use,
231 # so we don't have to copy their changes and risk breakages.
232 # See http://crbug.com/653569
233 if (is_debug) {
234 vcrt_suffix = "d"
235 } else {
236 vcrt_suffix = ""
237 }
238
239 # These runtime files are copied to the output directory by the
240 # vs_toolchain script that runs as part of toolchain configuration.
241 data = [
242 "$root_out_dir/msvcp140${vcrt_suffix}.dll",
243 "$root_out_dir/vccorlib140${vcrt_suffix}.dll",
244 "$root_out_dir/vcruntime140${vcrt_suffix}.dll",
245
246 # Universal Windows 10 CRT files
247 "$root_out_dir/api-ms-win-core-console-l1-1-0.dll",
248 "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll",
249 "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll",
250 "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll",
251 "$root_out_dir/api-ms-win-core-file-l1-1-0.dll",
252 "$root_out_dir/api-ms-win-core-file-l1-2-0.dll",
253 "$root_out_dir/api-ms-win-core-file-l2-1-0.dll",
254 "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll",
255 "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll",
256 "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll",
257 "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll",
258 "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll",
259 "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll",
260 "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll",
261 "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll",
262 "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll",
263 "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll",
264 "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll",
265 "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll",
266 "$root_out_dir/api-ms-win-core-string-l1-1-0.dll",
267 "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll",
268 "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll",
269 "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll",
270 "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll",
271 "$root_out_dir/api-ms-win-core-util-l1-1-0.dll",
272 "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll",
273 "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll",
274 "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll",
275 "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll",
276 "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll",
277 "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll",
278 "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll",
279 "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll",
280 "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll",
281 "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll",
282 "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll",
283 "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll",
284 "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll",
285 "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll",
286 "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll",
287 "$root_out_dir/ucrtbase${vcrt_suffix}.dll",
288 ]
289 if (is_asan) {
290 if (current_cpu == "x64") {
291 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ]
292 } else {
293 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ]
294 }
295 }
296 }
297 if (is_nacl) {
298 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
299 }
300}
301
mbonadeibc378472017-09-11 03:43:34 -0700302if (is_mac && !build_with_chromium) {
303 config("rtc_base_approved_objc_all_dependent_config") {
304 visibility = [ ":rtc_base_approved_objc" ]
305 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
306 }
307
308 rtc_source_set("rtc_base_approved_objc") {
309 visibility = [ ":rtc_base_approved" ]
310 all_dependent_configs = [ ":rtc_base_approved_objc_all_dependent_config" ]
311 sources = [
312 "logging_mac.mm",
313 ]
314 deps = [
315 ":rtc_base_approved_generic",
316 ]
317 }
318}
319
perkj650fdae2017-08-25 05:00:11 -0700320rtc_source_set("rtc_task_queue") {
mbonadei95c8f652017-08-27 23:40:10 -0700321 deps = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200322 ":rtc_base_approved",
mbonadei95c8f652017-08-27 23:40:10 -0700323 ]
324 public_deps = [
perkj650fdae2017-08-25 05:00:11 -0700325 ":rtc_task_queue_api",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200326 ]
327
perkj650fdae2017-08-25 05:00:11 -0700328 if (rtc_link_task_queue_impl) {
mbonadei95c8f652017-08-27 23:40:10 -0700329 deps += [ ":rtc_task_queue_impl" ]
perkj650fdae2017-08-25 05:00:11 -0700330 }
331}
332
333# WebRTC targets must not directly depend on rtc_task_queue_api or
334# rtc_task_queue_impl. Instead, depend on rtc_task_queue.
335# The build flag |rtc_link_task_queue_impl| decides if WebRTC targets will link
336# to the default implemenation in rtc_task_queue_impl or if an externally
337# provided implementation should be used. An external implementation should
338# depend on rtc_task_queue_api.
339rtc_source_set("rtc_task_queue_api") {
nisse75dd6d42017-09-19 08:28:00 -0700340 sources = [
341 "task_queue.h",
342 ]
perkj650fdae2017-08-25 05:00:11 -0700343 deps = [
344 ":rtc_base_approved",
345 ]
346}
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200347
perkj650fdae2017-08-25 05:00:11 -0700348rtc_source_set("rtc_task_queue_impl") {
349 deps = [
350 ":rtc_base_approved",
351 ":rtc_task_queue_api",
352 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200353 if (rtc_build_libevent) {
354 deps += [ "//base/third_party/libevent" ]
355 }
356 if (rtc_enable_libevent) {
perkj650fdae2017-08-25 05:00:11 -0700357 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200358 "task_queue_libevent.cc",
359 "task_queue_posix.cc",
360 "task_queue_posix.h",
perkj650fdae2017-08-25 05:00:11 -0700361 ]
362 } else {
Niels Möller15c9cf72017-10-19 12:38:09 +0200363 if (is_mac || is_ios) {
Niels Möller17a04742017-09-27 10:53:21 +0200364 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200365 "task_queue_gcd.cc",
Henrik Boströma9a27712017-10-03 08:01:07 +0000366 "task_queue_posix.cc",
367 "task_queue_posix.h",
Niels Möller17a04742017-09-27 10:53:21 +0200368 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200369 }
370 if (is_win) {
371 sources = [
372 "task_queue_win.cc",
373 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200374 }
375 }
376}
377
378rtc_static_library("sequenced_task_checker") {
379 sources = [
380 "sequenced_task_checker.h",
381 "sequenced_task_checker_impl.cc",
382 "sequenced_task_checker_impl.h",
383 ]
384 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700385 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200386 ":rtc_task_queue",
387 ]
388}
389
390rtc_static_library("weak_ptr") {
391 sources = [
392 "weak_ptr.cc",
393 "weak_ptr.h",
394 ]
395 deps = [
396 ":rtc_base_approved",
397 ":sequenced_task_checker",
398 ]
399}
400
401rtc_static_library("rtc_numerics") {
402 sources = [
403 "numerics/exp_filter.cc",
404 "numerics/exp_filter.h",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +0100405 "numerics/moving_median_filter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200406 "numerics/percentile_filter.h",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200407 "numerics/sequence_number_util.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200408 ]
409 deps = [
410 ":rtc_base_approved",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200411 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200412 ]
413}
414
415config("rtc_base_warnings_config") {
416 if (is_win && is_clang) {
417 cflags = [
418 # Disable warnings failing when compiling with Clang on Windows.
419 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
420 "-Wno-sign-compare",
421 "-Wno-missing-braces",
422 ]
423 }
424}
425
426rtc_source_set("rtc_json") {
427 defines = []
428 sources = [
429 "json.cc",
430 "json.h",
431 ]
432 if (rtc_build_json) {
433 public_deps = [
434 "//third_party/jsoncpp",
435 ]
436 } else {
437 include_dirs = [ "$rtc_jsoncpp_root" ]
438
439 # When defined changes the include path for json.h to where it is
440 # expected to be when building json outside of the standalone build.
441 defines += [ "WEBRTC_EXTERNAL_JSON" ]
442 }
443}
444
mbonadei9c5e5112017-09-05 05:17:02 -0700445rtc_static_library("rtc_base") {
mbonadei310e32b2017-09-07 07:36:28 -0700446 public_deps = [
447 ":rtc_base_generic",
448 ]
449 if (is_win) {
450 sources = [
451 "noop.cc",
452 ]
453 }
454 if (is_ios || is_mac) {
455 sources = [
456 "noop.mm",
457 ]
458 public_deps += [ ":rtc_base_objc" ]
459 }
460}
461
462if (is_ios || is_mac) {
463 rtc_source_set("rtc_base_objc") {
464 sources = [
465 "thread_darwin.mm",
466 ]
467 deps = [
468 ":rtc_base_generic",
469 ]
470 visibility = [ ":rtc_base" ]
471 }
472}
473
474rtc_static_library("rtc_base_generic") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200475 cflags = []
476 cflags_cc = []
477 libs = []
478 defines = []
479 deps = [
480 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 08:43:13 -0700481 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200482 ]
483 public_deps = [
484 ":rtc_base_approved",
485 ]
486 public_configs = []
487
488 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
489
490 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200491 "asyncinvoker-inl.h",
492 "asyncinvoker.cc",
493 "asyncinvoker.h",
494 "asyncpacketsocket.cc",
495 "asyncpacketsocket.h",
496 "asyncresolverinterface.cc",
497 "asyncresolverinterface.h",
498 "asyncsocket.cc",
499 "asyncsocket.h",
500 "asynctcpsocket.cc",
501 "asynctcpsocket.h",
502 "asyncudpsocket.cc",
503 "asyncudpsocket.h",
504 "crc32.cc",
505 "crc32.h",
506 "cryptstring.cc",
507 "cryptstring.h",
508 "filerotatingstream.cc",
509 "filerotatingstream.h",
510 "fileutils.cc",
511 "fileutils.h",
512 "gunit_prod.h",
513 "helpers.cc",
514 "helpers.h",
515 "httpbase.cc",
516 "httpbase.h",
517 "httpcommon-inl.h",
518 "httpcommon.cc",
519 "httpcommon.h",
520 "ipaddress.cc",
521 "ipaddress.h",
522 "messagedigest.cc",
523 "messagedigest.h",
524 "messagehandler.cc",
525 "messagehandler.h",
526 "messagequeue.cc",
527 "messagequeue.h",
528 "nethelpers.cc",
529 "nethelpers.h",
530 "network.cc",
531 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200532 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200533 "networkmonitor.cc",
534 "networkmonitor.h",
535 "nullsocketserver.cc",
536 "nullsocketserver.h",
537 "openssl.h",
538 "openssladapter.cc",
539 "openssladapter.h",
540 "openssldigest.cc",
541 "openssldigest.h",
542 "opensslidentity.cc",
543 "opensslidentity.h",
544 "opensslstreamadapter.cc",
545 "opensslstreamadapter.h",
546 "physicalsocketserver.cc",
547 "physicalsocketserver.h",
548 "proxyinfo.cc",
549 "proxyinfo.h",
550 "ratelimiter.cc",
551 "ratelimiter.h",
552 "rtccertificate.cc",
553 "rtccertificate.h",
554 "rtccertificategenerator.cc",
555 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700556 "signalthread.cc",
557 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200558 "sigslot.cc",
559 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700560 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200561 "socket.h",
562 "socketadapters.cc",
563 "socketadapters.h",
564 "socketaddress.cc",
565 "socketaddress.h",
566 "socketaddresspair.cc",
567 "socketaddresspair.h",
568 "socketfactory.h",
569 "socketserver.h",
570 "socketstream.cc",
571 "socketstream.h",
572 "ssladapter.cc",
573 "ssladapter.h",
574 "sslfingerprint.cc",
575 "sslfingerprint.h",
576 "sslidentity.cc",
577 "sslidentity.h",
578 "sslstreamadapter.cc",
579 "sslstreamadapter.h",
580 "stream.cc",
581 "stream.h",
582 "thread.cc",
583 "thread.h",
584 ]
585
mbonadei310e32b2017-09-07 07:36:28 -0700586 visibility = [
587 ":rtc_base",
588 ":rtc_base_objc",
589 ]
590
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200591 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
592 # compiler settings.
593 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
594 configs += [ "//build/config/compiler:no_chromium_code" ]
595 if (!is_win) {
596 cflags += [ "-Wno-uninitialized" ]
597 }
598
599 if (build_with_chromium) {
600 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200601 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200602 }
603 include_dirs = [ "../../boringssl/src/include" ]
604 public_configs += [ ":rtc_base_chromium_config" ]
605 } else {
606 configs += [ ":rtc_base_warnings_config" ]
607 sources += [
608 "callback.h",
609 "logsinks.cc",
610 "logsinks.h",
611 "mathutils.h",
612 "optionsfile.cc",
613 "optionsfile.h",
614 "rollingaccumulator.h",
615 "sslroots.h",
616 "transformadapter.cc",
617 "transformadapter.h",
618 "window.h",
619 ]
620
621 if (is_win) {
622 sources += [
623 "win32socketinit.cc",
624 "win32socketinit.h",
625 "win32socketserver.cc",
626 "win32socketserver.h",
627 ]
628 }
629 } # !build_with_chromium
630
631 if (rtc_build_ssl) {
632 deps += [ "//third_party/boringssl" ]
633 } else {
634 configs += [ ":external_ssl_library" ]
635 }
636
637 if (is_android) {
638 sources += [
639 "ifaddrs-android.cc",
640 "ifaddrs-android.h",
641 ]
642
643 libs += [
644 "log",
645 "GLESv2",
646 ]
647 }
648
649 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700650 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200651 }
652
653 if (use_x11) {
654 libs += [
655 "dl",
656 "rt",
657 "Xext",
658 "X11",
659 "Xcomposite",
660 "Xrender",
661 ]
662 }
663
664 if (is_linux) {
665 libs += [
666 "dl",
667 "rt",
668 ]
669 }
670
671 if (is_mac) {
672 sources += [
673 "macutils.cc",
674 "macutils.h",
675 ]
676 libs += [
677 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
678 "ApplicationServices.framework",
679 ]
680 }
681
682 if (is_win) {
683 sources += [
684 "win32.cc",
685 "win32.h",
686 "win32filesystem.cc",
687 "win32filesystem.h",
688 "win32securityerrors.cc",
689 "win32window.cc",
690 "win32window.h",
691 ]
692
693 libs += [
694 "crypt32.lib",
695 "iphlpapi.lib",
696 "secur32.lib",
697 ]
698
699 cflags += [
700 # Suppress warnings about WIN32_LEAN_AND_MEAN.
701 "/wd4005",
702 "/wd4703",
703 ]
704
705 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
706 }
707
708 if (is_posix) {
709 sources += [
710 "ifaddrs_converter.cc",
711 "ifaddrs_converter.h",
712 "unixfilesystem.cc",
713 "unixfilesystem.h",
714 ]
715 }
716
717 if (is_nacl) {
718 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
719 defines += [ "timezone=_timezone" ]
720 sources -= [ "ifaddrs_converter.cc" ]
721 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200722}
723
724rtc_source_set("gtest_prod") {
725 sources = [
726 "gtest_prod_util.h",
727 ]
728}
729
730config("rtc_base_tests_utils_exported_config") {
731 defines = [ "GTEST_RELATIVE_PATH" ]
732}
733
734config("rtc_base_tests_utils_warnings_config") {
735 if (is_win && is_clang) {
736 cflags = [
737 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
738 "-Wno-reorder",
739 "-Wno-sign-compare",
740 ]
741 }
742}
743
744rtc_source_set("rtc_base_tests_utils") {
745 testonly = true
746 sources = [
747 # Also use this as a convenient dumping ground for misc files that are
748 # included by multiple targets below.
749 "cpu_time.cc",
750 "cpu_time.h",
751 "fakeclock.cc",
752 "fakeclock.h",
753 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700754 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200755 "fakesslidentity.h",
756 "firewallsocketserver.cc",
757 "firewallsocketserver.h",
758 "gunit.h",
759 "httpserver.cc",
760 "httpserver.h",
761 "md5.cc",
762 "md5.h",
763 "md5digest.cc",
764 "md5digest.h",
765 "memory_usage.cc",
766 "memory_usage.h",
767 "natserver.cc",
768 "natserver.h",
769 "natsocketfactory.cc",
770 "natsocketfactory.h",
771 "nattypes.cc",
772 "nattypes.h",
773 "proxyserver.cc",
774 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200775 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200776 "sha1.cc",
777 "sha1.h",
778 "sha1digest.cc",
779 "sha1digest.h",
780 "sigslottester.h",
781 "sigslottester.h.pump",
782 "testbase64.h",
783 "testclient.cc",
784 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700785 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200786 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700787 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200788 "testutils.h",
789 "timedelta.h",
790 "virtualsocketserver.cc",
791 "virtualsocketserver.h",
792 ]
793 configs += [ ":rtc_base_tests_utils_warnings_config" ]
794 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
795 deps = [
796 ":rtc_base",
797 "../test:field_trial",
798 "../test:test_support",
799 ]
800 public_deps = [
801 "//testing/gmock",
802 "//testing/gtest",
803 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200804}
805
806if (rtc_include_tests) {
807 rtc_source_set("rtc_base_tests_main") {
808 testonly = true
809 sources = [
810 "unittest_main.cc",
811 ]
812 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
813 deps = [
814 ":rtc_base",
815 ":rtc_base_approved",
816 ":rtc_base_tests_utils",
817 "../test:field_trial",
818 "../test:test_support",
819 ]
820
821 public_deps = [
822 "//testing/gmock",
823 "//testing/gtest",
824 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200825 }
826
827 rtc_source_set("rtc_base_nonparallel_tests") {
828 testonly = true
829
830 # Skip restricting visibility on mobile platforms since the tests on those
831 # gets additional generated targets which would require many lines here to
832 # cover (which would be confusing to read and hard to maintain).
833 if (!is_android && !is_ios) {
834 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800835 #visibility = [ "..:webrtc_nonparallel_tests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200836 }
837 sources = [
838 "cpu_time_unittest.cc",
839 "filerotatingstream_unittest.cc",
840 "nullsocketserver_unittest.cc",
841 "physicalsocketserver_unittest.cc",
842 "socket_unittest.cc",
843 "socket_unittest.h",
844 "socketaddress_unittest.cc",
845 ]
846 deps = [
847 ":rtc_base",
848 ":rtc_base_tests_main",
849 ":rtc_base_tests_utils",
850 "../system_wrappers:system_wrappers",
851 "../test:test_support",
852 "//testing/gtest",
853 ]
854 if (is_win) {
855 sources += [ "win32socketserver_unittest.cc" ]
856 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200857 }
858
859 rtc_source_set("rtc_base_approved_unittests") {
860 testonly = true
861
862 # Skip restricting visibility on mobile platforms since the tests on those
863 # gets additional generated targets which would require many lines here to
864 # cover (which would be confusing to read and hard to maintain).
865 if (!is_android && !is_ios) {
866 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800867 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200868 }
869 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200870 "atomicops_unittest.cc",
871 "base64_unittest.cc",
872 "basictypes_unittest.cc",
873 "bind_unittest.cc",
874 "bitbuffer_unittest.cc",
875 "buffer_unittest.cc",
876 "bufferqueue_unittest.cc",
877 "bytebuffer_unittest.cc",
878 "byteorder_unittest.cc",
879 "copyonwritebuffer_unittest.cc",
880 "criticalsection_unittest.cc",
881 "event_tracer_unittest.cc",
882 "event_unittest.cc",
883 "file_unittest.cc",
884 "function_view_unittest.cc",
Ilya Nikolaevskiyed23be92017-10-12 12:38:01 +0200885 "histogram_percentile_counter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200886 "logging_unittest.cc",
887 "md5digest_unittest.cc",
888 "mod_ops_unittest.cc",
ilnika79cc282017-08-23 05:24:10 -0700889 "moving_max_counter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200890 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200891 "pathutils_unittest.cc",
892 "platform_thread_unittest.cc",
893 "random_unittest.cc",
894 "rate_limiter_unittest.cc",
895 "rate_statistics_unittest.cc",
896 "ratetracker_unittest.cc",
897 "refcountedobject_unittest.cc",
898 "safe_compare_unittest.cc",
899 "safe_minmax_unittest.cc",
900 "string_to_number_unittest.cc",
901 "stringencode_unittest.cc",
902 "stringize_macros_unittest.cc",
903 "stringutils_unittest.cc",
904 "swap_queue_unittest.cc",
905 "thread_annotations_unittest.cc",
906 "thread_checker_unittest.cc",
907 "timestampaligner_unittest.cc",
908 "timeutils_unittest.cc",
909 "virtualsocket_unittest.cc",
910 ]
911 deps = [
912 ":rtc_base",
913 ":rtc_base_approved",
914 ":rtc_base_tests_main",
915 ":rtc_base_tests_utils",
916 ":rtc_task_queue",
kwiberg529662a2017-09-04 05:43:17 -0700917 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200918 "../system_wrappers:system_wrappers",
919 "../test:test_support",
920 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200921 }
922
923 rtc_source_set("rtc_task_queue_unittests") {
924 testonly = true
925
926 # Skip restricting visibility on mobile platforms since the tests on those
927 # gets additional generated targets which would require many lines here to
928 # cover (which would be confusing to read and hard to maintain).
929 if (!is_android && !is_ios) {
930 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800931 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200932 }
933 sources = [
934 "task_queue_unittest.cc",
935 ]
936 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700937 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200938 ":rtc_base_tests_main",
939 ":rtc_base_tests_utils",
940 ":rtc_task_queue",
941 "../test:test_support",
942 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200943 }
944
945 rtc_source_set("sequenced_task_checker_unittests") {
946 testonly = true
947
948 # Skip restricting visibility on mobile platforms since the tests on those
949 # gets additional generated targets which would require many lines here to
950 # cover (which would be confusing to read and hard to maintain).
951 if (!is_android && !is_ios) {
952 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800953 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200954 }
955 sources = [
956 "sequenced_task_checker_unittest.cc",
957 ]
958 deps = [
959 ":rtc_base_approved",
960 ":rtc_base_tests_main",
961 ":rtc_task_queue",
962 ":sequenced_task_checker",
963 "../test:test_support",
964 ]
965 }
966
967 rtc_source_set("weak_ptr_unittests") {
968 testonly = true
969
970 # Skip restricting visibility on mobile platforms since the tests on those
971 # gets additional generated targets which would require many lines here to
972 # cover (which would be confusing to read and hard to maintain).
973 if (!is_android && !is_ios) {
974 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800975 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200976 }
977 sources = [
978 "weak_ptr_unittest.cc",
979 ]
980 deps = [
981 ":rtc_base_tests_main",
982 ":rtc_base_tests_utils",
983 ":rtc_task_queue",
984 ":weak_ptr",
985 "../test:test_support",
986 ]
987 }
988
989 rtc_source_set("rtc_numerics_unittests") {
990 testonly = true
991
992 # Skip restricting visibility on mobile platforms since the tests on those
993 # gets additional generated targets which would require many lines here to
994 # cover (which would be confusing to read and hard to maintain).
995 if (!is_android && !is_ios) {
996 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800997 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200998 }
999 sources = [
1000 "numerics/exp_filter_unittest.cc",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +01001001 "numerics/moving_median_filter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001002 "numerics/percentile_filter_unittest.cc",
Bjorn Tereliusa194e582017-10-25 13:07:09 +02001003 "numerics/sequence_number_util_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001004 ]
1005 deps = [
1006 ":rtc_base_approved",
1007 ":rtc_base_tests_main",
1008 ":rtc_numerics",
1009 "../test:test_support",
1010 ]
1011 }
1012
1013 config("rtc_base_unittests_config") {
1014 if (is_clang) {
1015 cflags = [ "-Wno-unused-const-variable" ]
1016 }
1017 }
1018 rtc_source_set("rtc_base_unittests") {
1019 testonly = true
1020
1021 # Skip restricting visibility on mobile platforms since the tests on those
1022 # gets additional generated targets which would require many lines here to
1023 # cover (which would be confusing to read and hard to maintain).
1024 if (!is_android && !is_ios) {
1025 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +08001026 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001027 }
1028 sources = [
1029 "callback_unittest.cc",
1030 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001031 "helpers_unittest.cc",
1032 "httpbase_unittest.cc",
1033 "httpcommon_unittest.cc",
1034 "httpserver_unittest.cc",
1035 "ipaddress_unittest.cc",
1036 "memory_usage_unittest.cc",
1037 "messagedigest_unittest.cc",
1038 "messagequeue_unittest.cc",
1039 "nat_unittest.cc",
1040 "network_unittest.cc",
1041 "optionsfile_unittest.cc",
1042 "proxy_unittest.cc",
1043 "ptr_util_unittest.cc",
1044 "ratelimiter_unittest.cc",
1045 "rollingaccumulator_unittest.cc",
1046 "rtccertificate_unittest.cc",
1047 "rtccertificategenerator_unittest.cc",
1048 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001049 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001050 "sigslot_unittest.cc",
1051 "sigslottester_unittest.cc",
1052 "stream_unittest.cc",
1053 "testclient_unittest.cc",
1054 "thread_unittest.cc",
1055 ]
1056 if (is_win) {
1057 sources += [
1058 "win32_unittest.cc",
1059 "win32window_unittest.cc",
1060 ]
1061 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001062 if (is_posix) {
1063 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001064 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001065 "ssladapter_unittest.cc",
1066 "sslidentity_unittest.cc",
1067 "sslstreamadapter_unittest.cc",
1068 ]
1069 }
1070 deps = [
1071 ":rtc_base_tests_main",
1072 ":rtc_base_tests_utils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001073 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001074 "../test:test_support",
1075 ]
1076 public_deps = [
1077 ":rtc_base",
1078 ]
1079 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001080 if (build_with_chromium) {
1081 include_dirs = [ "../../boringssl/src/include" ]
1082 }
1083 if (rtc_build_ssl) {
1084 deps += [ "//third_party/boringssl" ]
1085 } else {
1086 configs += [ ":external_ssl_library" ]
1087 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001088 }
1089}
1090
Henrik Kjellander73e21802017-06-20 08:38:58 +02001091if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33 +00001092 rtc_android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001093 java_files = [
1094 "java/src/org/webrtc/ContextUtils.java",
1095 "java/src/org/webrtc/Logging.java",
1096 "java/src/org/webrtc/Size.java",
1097 "java/src/org/webrtc/ThreadUtils.java",
1098 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +02001099 }
1100}