blob: 8d9387093158d760a482a5853834fa61063e5640 [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",
116 "buffer.h",
117 "bufferqueue.cc",
118 "bufferqueue.h",
119 "bytebuffer.cc",
120 "bytebuffer.h",
121 "byteorder.h",
122 "checks.cc",
123 "checks.h",
124 "constructormagic.h",
125 "copyonwritebuffer.cc",
126 "copyonwritebuffer.h",
127 "criticalsection.cc",
128 "criticalsection.h",
129 "deprecation.h",
130 "event.cc",
131 "event.h",
132 "event_tracer.cc",
133 "event_tracer.h",
134 "file.cc",
135 "file.h",
136 "flags.cc",
137 "flags.h",
138 "format_macros.h",
139 "function_view.h",
140 "ignore_wundef.h",
141 "location.cc",
142 "location.h",
143 "mod_ops.h",
ilnika79cc282017-08-23 05:24:10 -0700144 "moving_max_counter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200145 "onetimeevent.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200146 "pathutils.cc",
147 "pathutils.h",
148 "platform_file.cc",
149 "platform_file.h",
150 "platform_thread.cc",
151 "platform_thread.h",
152 "platform_thread_types.h",
153 "ptr_util.h",
154 "race_checker.cc",
155 "race_checker.h",
156 "random.cc",
157 "random.h",
158 "rate_limiter.cc",
159 "rate_limiter.h",
160 "rate_statistics.cc",
161 "rate_statistics.h",
162 "ratetracker.cc",
163 "ratetracker.h",
164 "refcount.h",
165 "refcountedobject.h",
166 "safe_compare.h",
167 "safe_conversions.h",
168 "safe_conversions_impl.h",
169 "safe_minmax.h",
170 "sanitizer.h",
171 "scoped_ref_ptr.h",
172 "string_to_number.cc",
173 "string_to_number.h",
174 "stringencode.cc",
175 "stringencode.h",
176 "stringize_macros.h",
177 "stringutils.cc",
178 "stringutils.h",
179 "swap_queue.h",
180 "template_util.h",
181 "thread_annotations.h",
182 "thread_checker.h",
183 "thread_checker_impl.cc",
184 "thread_checker_impl.h",
185 "timestampaligner.cc",
186 "timestampaligner.h",
187 "timeutils.cc",
188 "timeutils.h",
189 "trace_event.h",
190 "type_traits.h",
191 ]
192
193 deps += [ "..:webrtc_common" ]
194
195 if (is_android) {
196 libs += [ "log" ]
197 }
198
199 if (is_posix) {
200 sources += [ "file_posix.cc" ]
201 }
202
203 if (is_win) {
204 sources += [ "file_win.cc" ]
205 }
206
207 if (build_with_chromium) {
208 # Dependency on chromium's logging (in //base).
209 deps += [ "//base:base" ]
210 sources += [
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200211 "../../webrtc_overrides/rtc_base/logging.cc",
212 "../../webrtc_overrides/rtc_base/logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200213 ]
214 } else {
215 sources += [
216 "logging.cc",
217 "logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200218 ]
219 }
220 if (is_component_build && is_win) {
221 # Copy the VS runtime DLLs into the isolate so that they don't have to be
222 # preinstalled on the target machine. The debug runtimes have a "d" at
223 # the end.
224 # This is a copy of https://codereview.chromium.org/1783973002.
225 # TODO(ehmaldonado): We'd like Chromium to make this changes easier to use,
226 # so we don't have to copy their changes and risk breakages.
227 # See http://crbug.com/653569
228 if (is_debug) {
229 vcrt_suffix = "d"
230 } else {
231 vcrt_suffix = ""
232 }
233
234 # These runtime files are copied to the output directory by the
235 # vs_toolchain script that runs as part of toolchain configuration.
236 data = [
237 "$root_out_dir/msvcp140${vcrt_suffix}.dll",
238 "$root_out_dir/vccorlib140${vcrt_suffix}.dll",
239 "$root_out_dir/vcruntime140${vcrt_suffix}.dll",
240
241 # Universal Windows 10 CRT files
242 "$root_out_dir/api-ms-win-core-console-l1-1-0.dll",
243 "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll",
244 "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll",
245 "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll",
246 "$root_out_dir/api-ms-win-core-file-l1-1-0.dll",
247 "$root_out_dir/api-ms-win-core-file-l1-2-0.dll",
248 "$root_out_dir/api-ms-win-core-file-l2-1-0.dll",
249 "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll",
250 "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll",
251 "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll",
252 "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll",
253 "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll",
254 "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll",
255 "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll",
256 "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll",
257 "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll",
258 "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll",
259 "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll",
260 "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll",
261 "$root_out_dir/api-ms-win-core-string-l1-1-0.dll",
262 "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll",
263 "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll",
264 "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll",
265 "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll",
266 "$root_out_dir/api-ms-win-core-util-l1-1-0.dll",
267 "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll",
268 "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll",
269 "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll",
270 "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll",
271 "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll",
272 "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll",
273 "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll",
274 "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll",
275 "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll",
276 "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll",
277 "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll",
278 "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll",
279 "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll",
280 "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll",
281 "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll",
282 "$root_out_dir/ucrtbase${vcrt_suffix}.dll",
283 ]
284 if (is_asan) {
285 if (current_cpu == "x64") {
286 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ]
287 } else {
288 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ]
289 }
290 }
291 }
292 if (is_nacl) {
293 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
294 }
295}
296
mbonadeibc378472017-09-11 03:43:34 -0700297if (is_mac && !build_with_chromium) {
298 config("rtc_base_approved_objc_all_dependent_config") {
299 visibility = [ ":rtc_base_approved_objc" ]
300 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
301 }
302
303 rtc_source_set("rtc_base_approved_objc") {
304 visibility = [ ":rtc_base_approved" ]
305 all_dependent_configs = [ ":rtc_base_approved_objc_all_dependent_config" ]
306 sources = [
307 "logging_mac.mm",
308 ]
309 deps = [
310 ":rtc_base_approved_generic",
311 ]
312 }
313}
314
perkj650fdae2017-08-25 05:00:11 -0700315rtc_source_set("rtc_task_queue") {
mbonadei95c8f652017-08-27 23:40:10 -0700316 deps = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200317 ":rtc_base_approved",
mbonadei95c8f652017-08-27 23:40:10 -0700318 ]
319 public_deps = [
perkj650fdae2017-08-25 05:00:11 -0700320 ":rtc_task_queue_api",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200321 ]
322
perkj650fdae2017-08-25 05:00:11 -0700323 if (rtc_link_task_queue_impl) {
mbonadei95c8f652017-08-27 23:40:10 -0700324 deps += [ ":rtc_task_queue_impl" ]
perkj650fdae2017-08-25 05:00:11 -0700325 }
326}
327
328# WebRTC targets must not directly depend on rtc_task_queue_api or
329# rtc_task_queue_impl. Instead, depend on rtc_task_queue.
330# The build flag |rtc_link_task_queue_impl| decides if WebRTC targets will link
331# to the default implemenation in rtc_task_queue_impl or if an externally
332# provided implementation should be used. An external implementation should
333# depend on rtc_task_queue_api.
334rtc_source_set("rtc_task_queue_api") {
nisse75dd6d42017-09-19 08:28:00 -0700335 sources = [
336 "task_queue.h",
337 ]
perkj650fdae2017-08-25 05:00:11 -0700338 deps = [
339 ":rtc_base_approved",
340 ]
341}
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200342
perkj650fdae2017-08-25 05:00:11 -0700343rtc_source_set("rtc_task_queue_impl") {
344 deps = [
345 ":rtc_base_approved",
346 ":rtc_task_queue_api",
347 ]
Henrik Boströma9a27712017-10-03 08:01:07 +0000348 if (build_with_chromium) {
perkj650fdae2017-08-25 05:00:11 -0700349 sources = [
Henrik Boströma9a27712017-10-03 08:01:07 +0000350 "../../webrtc_overrides/rtc_base/task_queue.cc",
perkj650fdae2017-08-25 05:00:11 -0700351 ]
352 } else {
Henrik Boströma9a27712017-10-03 08:01:07 +0000353 if (rtc_build_libevent) {
354 deps += [ "//base/third_party/libevent" ]
Niels Möller17a04742017-09-27 10:53:21 +0200355 }
Henrik Boströma9a27712017-10-03 08:01:07 +0000356 if (rtc_enable_libevent) {
Niels Möller17a04742017-09-27 10:53:21 +0200357 sources = [
Henrik Boströma9a27712017-10-03 08:01:07 +0000358 "task_queue_libevent.cc",
359 "task_queue_posix.cc",
360 "task_queue_posix.h",
Niels Möller17a04742017-09-27 10:53:21 +0200361 ]
Henrik Boströma9a27712017-10-03 08:01:07 +0000362 } else {
363 if (is_mac || is_ios) {
364 sources = [
365 "task_queue_gcd.cc",
366 "task_queue_posix.cc",
367 ]
368 }
369 if (is_win) {
370 sources = [
371 "task_queue_win.cc",
372 ]
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",
405 "numerics/percentile_filter.h",
406 ]
407 deps = [
408 ":rtc_base_approved",
409 ]
410}
411
412config("rtc_base_warnings_config") {
413 if (is_win && is_clang) {
414 cflags = [
415 # Disable warnings failing when compiling with Clang on Windows.
416 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
417 "-Wno-sign-compare",
418 "-Wno-missing-braces",
419 ]
420 }
421}
422
423rtc_source_set("rtc_json") {
424 defines = []
425 sources = [
426 "json.cc",
427 "json.h",
428 ]
429 if (rtc_build_json) {
430 public_deps = [
431 "//third_party/jsoncpp",
432 ]
433 } else {
434 include_dirs = [ "$rtc_jsoncpp_root" ]
435
436 # When defined changes the include path for json.h to where it is
437 # expected to be when building json outside of the standalone build.
438 defines += [ "WEBRTC_EXTERNAL_JSON" ]
439 }
440}
441
mbonadei9c5e5112017-09-05 05:17:02 -0700442rtc_static_library("rtc_base") {
mbonadei310e32b2017-09-07 07:36:28 -0700443 public_deps = [
444 ":rtc_base_generic",
445 ]
446 if (is_win) {
447 sources = [
448 "noop.cc",
449 ]
450 }
451 if (is_ios || is_mac) {
452 sources = [
453 "noop.mm",
454 ]
455 public_deps += [ ":rtc_base_objc" ]
456 }
457}
458
459if (is_ios || is_mac) {
460 rtc_source_set("rtc_base_objc") {
461 sources = [
462 "thread_darwin.mm",
463 ]
464 deps = [
465 ":rtc_base_generic",
466 ]
467 visibility = [ ":rtc_base" ]
468 }
469}
470
471rtc_static_library("rtc_base_generic") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200472 cflags = []
473 cflags_cc = []
474 libs = []
475 defines = []
476 deps = [
477 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 08:43:13 -0700478 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200479 ]
480 public_deps = [
481 ":rtc_base_approved",
482 ]
483 public_configs = []
484
485 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
486
487 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200488 "asyncinvoker-inl.h",
489 "asyncinvoker.cc",
490 "asyncinvoker.h",
491 "asyncpacketsocket.cc",
492 "asyncpacketsocket.h",
493 "asyncresolverinterface.cc",
494 "asyncresolverinterface.h",
495 "asyncsocket.cc",
496 "asyncsocket.h",
497 "asynctcpsocket.cc",
498 "asynctcpsocket.h",
499 "asyncudpsocket.cc",
500 "asyncudpsocket.h",
501 "crc32.cc",
502 "crc32.h",
503 "cryptstring.cc",
504 "cryptstring.h",
505 "filerotatingstream.cc",
506 "filerotatingstream.h",
507 "fileutils.cc",
508 "fileutils.h",
509 "gunit_prod.h",
510 "helpers.cc",
511 "helpers.h",
512 "httpbase.cc",
513 "httpbase.h",
514 "httpcommon-inl.h",
515 "httpcommon.cc",
516 "httpcommon.h",
517 "ipaddress.cc",
518 "ipaddress.h",
519 "messagedigest.cc",
520 "messagedigest.h",
521 "messagehandler.cc",
522 "messagehandler.h",
523 "messagequeue.cc",
524 "messagequeue.h",
525 "nethelpers.cc",
526 "nethelpers.h",
527 "network.cc",
528 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200529 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200530 "networkmonitor.cc",
531 "networkmonitor.h",
532 "nullsocketserver.cc",
533 "nullsocketserver.h",
534 "openssl.h",
535 "openssladapter.cc",
536 "openssladapter.h",
537 "openssldigest.cc",
538 "openssldigest.h",
539 "opensslidentity.cc",
540 "opensslidentity.h",
541 "opensslstreamadapter.cc",
542 "opensslstreamadapter.h",
543 "physicalsocketserver.cc",
544 "physicalsocketserver.h",
545 "proxyinfo.cc",
546 "proxyinfo.h",
547 "ratelimiter.cc",
548 "ratelimiter.h",
549 "rtccertificate.cc",
550 "rtccertificate.h",
551 "rtccertificategenerator.cc",
552 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700553 "signalthread.cc",
554 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200555 "sigslot.cc",
556 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700557 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200558 "socket.h",
559 "socketadapters.cc",
560 "socketadapters.h",
561 "socketaddress.cc",
562 "socketaddress.h",
563 "socketaddresspair.cc",
564 "socketaddresspair.h",
565 "socketfactory.h",
566 "socketserver.h",
567 "socketstream.cc",
568 "socketstream.h",
569 "ssladapter.cc",
570 "ssladapter.h",
571 "sslfingerprint.cc",
572 "sslfingerprint.h",
573 "sslidentity.cc",
574 "sslidentity.h",
575 "sslstreamadapter.cc",
576 "sslstreamadapter.h",
577 "stream.cc",
578 "stream.h",
579 "thread.cc",
580 "thread.h",
581 ]
582
mbonadei310e32b2017-09-07 07:36:28 -0700583 visibility = [
584 ":rtc_base",
585 ":rtc_base_objc",
586 ]
587
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200588 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
589 # compiler settings.
590 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
591 configs += [ "//build/config/compiler:no_chromium_code" ]
592 if (!is_win) {
593 cflags += [ "-Wno-uninitialized" ]
594 }
595
596 if (build_with_chromium) {
597 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200598 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200599 }
600 include_dirs = [ "../../boringssl/src/include" ]
601 public_configs += [ ":rtc_base_chromium_config" ]
602 } else {
603 configs += [ ":rtc_base_warnings_config" ]
604 sources += [
605 "callback.h",
606 "logsinks.cc",
607 "logsinks.h",
608 "mathutils.h",
609 "optionsfile.cc",
610 "optionsfile.h",
611 "rollingaccumulator.h",
612 "sslroots.h",
613 "transformadapter.cc",
614 "transformadapter.h",
615 "window.h",
616 ]
617
618 if (is_win) {
619 sources += [
620 "win32socketinit.cc",
621 "win32socketinit.h",
622 "win32socketserver.cc",
623 "win32socketserver.h",
624 ]
625 }
626 } # !build_with_chromium
627
628 if (rtc_build_ssl) {
629 deps += [ "//third_party/boringssl" ]
630 } else {
631 configs += [ ":external_ssl_library" ]
632 }
633
634 if (is_android) {
635 sources += [
636 "ifaddrs-android.cc",
637 "ifaddrs-android.h",
638 ]
639
640 libs += [
641 "log",
642 "GLESv2",
643 ]
644 }
645
646 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700647 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200648 }
649
650 if (use_x11) {
651 libs += [
652 "dl",
653 "rt",
654 "Xext",
655 "X11",
656 "Xcomposite",
657 "Xrender",
658 ]
659 }
660
661 if (is_linux) {
662 libs += [
663 "dl",
664 "rt",
665 ]
666 }
667
668 if (is_mac) {
669 sources += [
670 "macutils.cc",
671 "macutils.h",
672 ]
673 libs += [
674 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
675 "ApplicationServices.framework",
676 ]
677 }
678
679 if (is_win) {
680 sources += [
681 "win32.cc",
682 "win32.h",
683 "win32filesystem.cc",
684 "win32filesystem.h",
685 "win32securityerrors.cc",
686 "win32window.cc",
687 "win32window.h",
688 ]
689
690 libs += [
691 "crypt32.lib",
692 "iphlpapi.lib",
693 "secur32.lib",
694 ]
695
696 cflags += [
697 # Suppress warnings about WIN32_LEAN_AND_MEAN.
698 "/wd4005",
699 "/wd4703",
700 ]
701
702 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
703 }
704
705 if (is_posix) {
706 sources += [
707 "ifaddrs_converter.cc",
708 "ifaddrs_converter.h",
709 "unixfilesystem.cc",
710 "unixfilesystem.h",
711 ]
712 }
713
714 if (is_nacl) {
715 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
716 defines += [ "timezone=_timezone" ]
717 sources -= [ "ifaddrs_converter.cc" ]
718 }
719 if (is_win && is_clang) {
720 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
721 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
722 }
723}
724
725rtc_source_set("gtest_prod") {
726 sources = [
727 "gtest_prod_util.h",
728 ]
729}
730
731config("rtc_base_tests_utils_exported_config") {
732 defines = [ "GTEST_RELATIVE_PATH" ]
733}
734
735config("rtc_base_tests_utils_warnings_config") {
736 if (is_win && is_clang) {
737 cflags = [
738 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
739 "-Wno-reorder",
740 "-Wno-sign-compare",
741 ]
742 }
743}
744
745rtc_source_set("rtc_base_tests_utils") {
746 testonly = true
747 sources = [
748 # Also use this as a convenient dumping ground for misc files that are
749 # included by multiple targets below.
750 "cpu_time.cc",
751 "cpu_time.h",
752 "fakeclock.cc",
753 "fakeclock.h",
754 "fakenetwork.h",
755 "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",
785 "testechoserver.h",
786 "testutils.h",
787 "timedelta.h",
788 "virtualsocketserver.cc",
789 "virtualsocketserver.h",
790 ]
791 configs += [ ":rtc_base_tests_utils_warnings_config" ]
792 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
793 deps = [
794 ":rtc_base",
795 "../test:field_trial",
796 "../test:test_support",
797 ]
798 public_deps = [
799 "//testing/gmock",
800 "//testing/gtest",
801 ]
802
803 if (!build_with_chromium && is_clang) {
804 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
805 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
806 }
807}
808
809if (rtc_include_tests) {
810 rtc_source_set("rtc_base_tests_main") {
811 testonly = true
812 sources = [
813 "unittest_main.cc",
814 ]
815 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
816 deps = [
817 ":rtc_base",
818 ":rtc_base_approved",
819 ":rtc_base_tests_utils",
820 "../test:field_trial",
821 "../test:test_support",
822 ]
823
824 public_deps = [
825 "//testing/gmock",
826 "//testing/gtest",
827 ]
828
829 if (!build_with_chromium && is_clang) {
830 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
831 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
832 }
833 }
834
835 rtc_source_set("rtc_base_nonparallel_tests") {
836 testonly = true
837
838 # Skip restricting visibility on mobile platforms since the tests on those
839 # gets additional generated targets which would require many lines here to
840 # cover (which would be confusing to read and hard to maintain).
841 if (!is_android && !is_ios) {
842 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800843 #visibility = [ "..:webrtc_nonparallel_tests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200844 }
845 sources = [
846 "cpu_time_unittest.cc",
847 "filerotatingstream_unittest.cc",
848 "nullsocketserver_unittest.cc",
849 "physicalsocketserver_unittest.cc",
850 "socket_unittest.cc",
851 "socket_unittest.h",
852 "socketaddress_unittest.cc",
853 ]
854 deps = [
855 ":rtc_base",
856 ":rtc_base_tests_main",
857 ":rtc_base_tests_utils",
858 "../system_wrappers:system_wrappers",
859 "../test:test_support",
860 "//testing/gtest",
861 ]
862 if (is_win) {
863 sources += [ "win32socketserver_unittest.cc" ]
864 }
865
866 if (!build_with_chromium && is_clang) {
867 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
868 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
869 }
870 }
871
872 rtc_source_set("rtc_base_approved_unittests") {
873 testonly = true
874
875 # Skip restricting visibility on mobile platforms since the tests on those
876 # gets additional generated targets which would require many lines here to
877 # cover (which would be confusing to read and hard to maintain).
878 if (!is_android && !is_ios) {
879 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800880 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200881 }
882 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200883 "atomicops_unittest.cc",
884 "base64_unittest.cc",
885 "basictypes_unittest.cc",
886 "bind_unittest.cc",
887 "bitbuffer_unittest.cc",
888 "buffer_unittest.cc",
889 "bufferqueue_unittest.cc",
890 "bytebuffer_unittest.cc",
891 "byteorder_unittest.cc",
892 "copyonwritebuffer_unittest.cc",
893 "criticalsection_unittest.cc",
894 "event_tracer_unittest.cc",
895 "event_unittest.cc",
896 "file_unittest.cc",
897 "function_view_unittest.cc",
898 "logging_unittest.cc",
899 "md5digest_unittest.cc",
900 "mod_ops_unittest.cc",
ilnika79cc282017-08-23 05:24:10 -0700901 "moving_max_counter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200902 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200903 "pathutils_unittest.cc",
904 "platform_thread_unittest.cc",
905 "random_unittest.cc",
906 "rate_limiter_unittest.cc",
907 "rate_statistics_unittest.cc",
908 "ratetracker_unittest.cc",
909 "refcountedobject_unittest.cc",
910 "safe_compare_unittest.cc",
911 "safe_minmax_unittest.cc",
912 "string_to_number_unittest.cc",
913 "stringencode_unittest.cc",
914 "stringize_macros_unittest.cc",
915 "stringutils_unittest.cc",
916 "swap_queue_unittest.cc",
917 "thread_annotations_unittest.cc",
918 "thread_checker_unittest.cc",
919 "timestampaligner_unittest.cc",
920 "timeutils_unittest.cc",
921 "virtualsocket_unittest.cc",
922 ]
923 deps = [
924 ":rtc_base",
925 ":rtc_base_approved",
926 ":rtc_base_tests_main",
927 ":rtc_base_tests_utils",
928 ":rtc_task_queue",
kwiberg529662a2017-09-04 05:43:17 -0700929 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200930 "../system_wrappers:system_wrappers",
931 "../test:test_support",
932 ]
933 if (!build_with_chromium && is_clang) {
934 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
935 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
936 }
937 }
938
939 rtc_source_set("rtc_task_queue_unittests") {
940 testonly = true
941
942 # Skip restricting visibility on mobile platforms since the tests on those
943 # gets additional generated targets which would require many lines here to
944 # cover (which would be confusing to read and hard to maintain).
945 if (!is_android && !is_ios) {
946 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800947 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200948 }
949 sources = [
950 "task_queue_unittest.cc",
951 ]
952 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700953 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200954 ":rtc_base_tests_main",
955 ":rtc_base_tests_utils",
956 ":rtc_task_queue",
957 "../test:test_support",
958 ]
959 if (!build_with_chromium && is_clang) {
960 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
961 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
962 }
963 }
964
965 rtc_source_set("sequenced_task_checker_unittests") {
966 testonly = true
967
968 # Skip restricting visibility on mobile platforms since the tests on those
969 # gets additional generated targets which would require many lines here to
970 # cover (which would be confusing to read and hard to maintain).
971 if (!is_android && !is_ios) {
972 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800973 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200974 }
975 sources = [
976 "sequenced_task_checker_unittest.cc",
977 ]
978 deps = [
979 ":rtc_base_approved",
980 ":rtc_base_tests_main",
981 ":rtc_task_queue",
982 ":sequenced_task_checker",
983 "../test:test_support",
984 ]
985 }
986
987 rtc_source_set("weak_ptr_unittests") {
988 testonly = true
989
990 # Skip restricting visibility on mobile platforms since the tests on those
991 # gets additional generated targets which would require many lines here to
992 # cover (which would be confusing to read and hard to maintain).
993 if (!is_android && !is_ios) {
994 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800995 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200996 }
997 sources = [
998 "weak_ptr_unittest.cc",
999 ]
1000 deps = [
1001 ":rtc_base_tests_main",
1002 ":rtc_base_tests_utils",
1003 ":rtc_task_queue",
1004 ":weak_ptr",
1005 "../test:test_support",
1006 ]
1007 }
1008
1009 rtc_source_set("rtc_numerics_unittests") {
1010 testonly = true
1011
1012 # Skip restricting visibility on mobile platforms since the tests on those
1013 # gets additional generated targets which would require many lines here to
1014 # cover (which would be confusing to read and hard to maintain).
1015 if (!is_android && !is_ios) {
1016 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +08001017 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001018 }
1019 sources = [
1020 "numerics/exp_filter_unittest.cc",
1021 "numerics/percentile_filter_unittest.cc",
1022 ]
1023 deps = [
1024 ":rtc_base_approved",
1025 ":rtc_base_tests_main",
1026 ":rtc_numerics",
1027 "../test:test_support",
1028 ]
1029 }
1030
1031 config("rtc_base_unittests_config") {
1032 if (is_clang) {
1033 cflags = [ "-Wno-unused-const-variable" ]
1034 }
1035 }
1036 rtc_source_set("rtc_base_unittests") {
1037 testonly = true
1038
1039 # Skip restricting visibility on mobile platforms since the tests on those
1040 # gets additional generated targets which would require many lines here to
1041 # cover (which would be confusing to read and hard to maintain).
1042 if (!is_android && !is_ios) {
1043 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +08001044 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001045 }
1046 sources = [
1047 "callback_unittest.cc",
1048 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001049 "helpers_unittest.cc",
1050 "httpbase_unittest.cc",
1051 "httpcommon_unittest.cc",
1052 "httpserver_unittest.cc",
1053 "ipaddress_unittest.cc",
1054 "memory_usage_unittest.cc",
1055 "messagedigest_unittest.cc",
1056 "messagequeue_unittest.cc",
1057 "nat_unittest.cc",
1058 "network_unittest.cc",
1059 "optionsfile_unittest.cc",
1060 "proxy_unittest.cc",
1061 "ptr_util_unittest.cc",
1062 "ratelimiter_unittest.cc",
1063 "rollingaccumulator_unittest.cc",
1064 "rtccertificate_unittest.cc",
1065 "rtccertificategenerator_unittest.cc",
1066 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001067 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001068 "sigslot_unittest.cc",
1069 "sigslottester_unittest.cc",
1070 "stream_unittest.cc",
1071 "testclient_unittest.cc",
1072 "thread_unittest.cc",
1073 ]
1074 if (is_win) {
1075 sources += [
1076 "win32_unittest.cc",
1077 "win32window_unittest.cc",
1078 ]
1079 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001080 if (is_posix) {
1081 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001082 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001083 "ssladapter_unittest.cc",
1084 "sslidentity_unittest.cc",
1085 "sslstreamadapter_unittest.cc",
1086 ]
1087 }
1088 deps = [
1089 ":rtc_base_tests_main",
1090 ":rtc_base_tests_utils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001091 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001092 "../test:test_support",
1093 ]
1094 public_deps = [
1095 ":rtc_base",
1096 ]
1097 configs += [ ":rtc_base_unittests_config" ]
1098 if (!build_with_chromium && is_clang) {
1099 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
1100 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
1101 }
Diogo Real1dca9d52017-08-29 12:18:32 -07001102 if (build_with_chromium) {
1103 include_dirs = [ "../../boringssl/src/include" ]
1104 }
1105 if (rtc_build_ssl) {
1106 deps += [ "//third_party/boringssl" ]
1107 } else {
1108 configs += [ ":external_ssl_library" ]
1109 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001110 }
1111}
1112
Henrik Kjellander73e21802017-06-20 08:38:58 +02001113if (is_android) {
1114 android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001115 java_files = [
1116 "java/src/org/webrtc/ContextUtils.java",
1117 "java/src/org/webrtc/Logging.java",
1118 "java/src/org/webrtc/Size.java",
1119 "java/src/org/webrtc/ThreadUtils.java",
1120 ]
charujain474acce2017-08-25 06:21:52 -07001121
1122 # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
1123 no_build_hooks = true
Henrik Kjellander73e21802017-06-20 08:38:58 +02001124 }
1125}