blob: 8490a60351e8341cc8f838fddcdbe95569690231 [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",
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 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200719}
720
721rtc_source_set("gtest_prod") {
722 sources = [
723 "gtest_prod_util.h",
724 ]
725}
726
727config("rtc_base_tests_utils_exported_config") {
728 defines = [ "GTEST_RELATIVE_PATH" ]
729}
730
731config("rtc_base_tests_utils_warnings_config") {
732 if (is_win && is_clang) {
733 cflags = [
734 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
735 "-Wno-reorder",
736 "-Wno-sign-compare",
737 ]
738 }
739}
740
741rtc_source_set("rtc_base_tests_utils") {
742 testonly = true
743 sources = [
744 # Also use this as a convenient dumping ground for misc files that are
745 # included by multiple targets below.
746 "cpu_time.cc",
747 "cpu_time.h",
748 "fakeclock.cc",
749 "fakeclock.h",
750 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700751 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200752 "fakesslidentity.h",
753 "firewallsocketserver.cc",
754 "firewallsocketserver.h",
755 "gunit.h",
756 "httpserver.cc",
757 "httpserver.h",
758 "md5.cc",
759 "md5.h",
760 "md5digest.cc",
761 "md5digest.h",
762 "memory_usage.cc",
763 "memory_usage.h",
764 "natserver.cc",
765 "natserver.h",
766 "natsocketfactory.cc",
767 "natsocketfactory.h",
768 "nattypes.cc",
769 "nattypes.h",
770 "proxyserver.cc",
771 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200772 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200773 "sha1.cc",
774 "sha1.h",
775 "sha1digest.cc",
776 "sha1digest.h",
777 "sigslottester.h",
778 "sigslottester.h.pump",
779 "testbase64.h",
780 "testclient.cc",
781 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700782 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200783 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700784 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200785 "testutils.h",
786 "timedelta.h",
787 "virtualsocketserver.cc",
788 "virtualsocketserver.h",
789 ]
790 configs += [ ":rtc_base_tests_utils_warnings_config" ]
791 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
792 deps = [
793 ":rtc_base",
794 "../test:field_trial",
795 "../test:test_support",
796 ]
797 public_deps = [
798 "//testing/gmock",
799 "//testing/gtest",
800 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200801}
802
803if (rtc_include_tests) {
804 rtc_source_set("rtc_base_tests_main") {
805 testonly = true
806 sources = [
807 "unittest_main.cc",
808 ]
809 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
810 deps = [
811 ":rtc_base",
812 ":rtc_base_approved",
813 ":rtc_base_tests_utils",
814 "../test:field_trial",
815 "../test:test_support",
816 ]
817
818 public_deps = [
819 "//testing/gmock",
820 "//testing/gtest",
821 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200822 }
823
824 rtc_source_set("rtc_base_nonparallel_tests") {
825 testonly = true
826
827 # Skip restricting visibility on mobile platforms since the tests on those
828 # gets additional generated targets which would require many lines here to
829 # cover (which would be confusing to read and hard to maintain).
830 if (!is_android && !is_ios) {
831 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800832 #visibility = [ "..:webrtc_nonparallel_tests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200833 }
834 sources = [
835 "cpu_time_unittest.cc",
836 "filerotatingstream_unittest.cc",
837 "nullsocketserver_unittest.cc",
838 "physicalsocketserver_unittest.cc",
839 "socket_unittest.cc",
840 "socket_unittest.h",
841 "socketaddress_unittest.cc",
842 ]
843 deps = [
844 ":rtc_base",
845 ":rtc_base_tests_main",
846 ":rtc_base_tests_utils",
847 "../system_wrappers:system_wrappers",
848 "../test:test_support",
849 "//testing/gtest",
850 ]
851 if (is_win) {
852 sources += [ "win32socketserver_unittest.cc" ]
853 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200854 }
855
856 rtc_source_set("rtc_base_approved_unittests") {
857 testonly = true
858
859 # Skip restricting visibility on mobile platforms since the tests on those
860 # gets additional generated targets which would require many lines here to
861 # cover (which would be confusing to read and hard to maintain).
862 if (!is_android && !is_ios) {
863 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800864 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200865 }
866 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200867 "atomicops_unittest.cc",
868 "base64_unittest.cc",
869 "basictypes_unittest.cc",
870 "bind_unittest.cc",
871 "bitbuffer_unittest.cc",
872 "buffer_unittest.cc",
873 "bufferqueue_unittest.cc",
874 "bytebuffer_unittest.cc",
875 "byteorder_unittest.cc",
876 "copyonwritebuffer_unittest.cc",
877 "criticalsection_unittest.cc",
878 "event_tracer_unittest.cc",
879 "event_unittest.cc",
880 "file_unittest.cc",
881 "function_view_unittest.cc",
Ilya Nikolaevskiyed23be92017-10-12 12:38:01 +0200882 "histogram_percentile_counter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200883 "logging_unittest.cc",
884 "md5digest_unittest.cc",
885 "mod_ops_unittest.cc",
ilnika79cc282017-08-23 05:24:10 -0700886 "moving_max_counter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200887 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200888 "pathutils_unittest.cc",
889 "platform_thread_unittest.cc",
890 "random_unittest.cc",
891 "rate_limiter_unittest.cc",
892 "rate_statistics_unittest.cc",
893 "ratetracker_unittest.cc",
894 "refcountedobject_unittest.cc",
895 "safe_compare_unittest.cc",
896 "safe_minmax_unittest.cc",
897 "string_to_number_unittest.cc",
898 "stringencode_unittest.cc",
899 "stringize_macros_unittest.cc",
900 "stringutils_unittest.cc",
901 "swap_queue_unittest.cc",
902 "thread_annotations_unittest.cc",
903 "thread_checker_unittest.cc",
904 "timestampaligner_unittest.cc",
905 "timeutils_unittest.cc",
906 "virtualsocket_unittest.cc",
907 ]
908 deps = [
909 ":rtc_base",
910 ":rtc_base_approved",
911 ":rtc_base_tests_main",
912 ":rtc_base_tests_utils",
913 ":rtc_task_queue",
kwiberg529662a2017-09-04 05:43:17 -0700914 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200915 "../system_wrappers:system_wrappers",
916 "../test:test_support",
917 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200918 }
919
920 rtc_source_set("rtc_task_queue_unittests") {
921 testonly = true
922
923 # Skip restricting visibility on mobile platforms since the tests on those
924 # gets additional generated targets which would require many lines here to
925 # cover (which would be confusing to read and hard to maintain).
926 if (!is_android && !is_ios) {
927 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800928 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200929 }
930 sources = [
931 "task_queue_unittest.cc",
932 ]
933 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700934 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200935 ":rtc_base_tests_main",
936 ":rtc_base_tests_utils",
937 ":rtc_task_queue",
938 "../test:test_support",
939 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200940 }
941
942 rtc_source_set("sequenced_task_checker_unittests") {
943 testonly = true
944
945 # Skip restricting visibility on mobile platforms since the tests on those
946 # gets additional generated targets which would require many lines here to
947 # cover (which would be confusing to read and hard to maintain).
948 if (!is_android && !is_ios) {
949 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800950 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200951 }
952 sources = [
953 "sequenced_task_checker_unittest.cc",
954 ]
955 deps = [
956 ":rtc_base_approved",
957 ":rtc_base_tests_main",
958 ":rtc_task_queue",
959 ":sequenced_task_checker",
960 "../test:test_support",
961 ]
962 }
963
964 rtc_source_set("weak_ptr_unittests") {
965 testonly = true
966
967 # Skip restricting visibility on mobile platforms since the tests on those
968 # gets additional generated targets which would require many lines here to
969 # cover (which would be confusing to read and hard to maintain).
970 if (!is_android && !is_ios) {
971 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800972 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200973 }
974 sources = [
975 "weak_ptr_unittest.cc",
976 ]
977 deps = [
978 ":rtc_base_tests_main",
979 ":rtc_base_tests_utils",
980 ":rtc_task_queue",
981 ":weak_ptr",
982 "../test:test_support",
983 ]
984 }
985
986 rtc_source_set("rtc_numerics_unittests") {
987 testonly = true
988
989 # Skip restricting visibility on mobile platforms since the tests on those
990 # gets additional generated targets which would require many lines here to
991 # cover (which would be confusing to read and hard to maintain).
992 if (!is_android && !is_ios) {
993 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +0800994 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200995 }
996 sources = [
997 "numerics/exp_filter_unittest.cc",
998 "numerics/percentile_filter_unittest.cc",
999 ]
1000 deps = [
1001 ":rtc_base_approved",
1002 ":rtc_base_tests_main",
1003 ":rtc_numerics",
1004 "../test:test_support",
1005 ]
1006 }
1007
1008 config("rtc_base_unittests_config") {
1009 if (is_clang) {
1010 cflags = [ "-Wno-unused-const-variable" ]
1011 }
1012 }
1013 rtc_source_set("rtc_base_unittests") {
1014 testonly = true
1015
1016 # Skip restricting visibility on mobile platforms since the tests on those
1017 # gets additional generated targets which would require many lines here to
1018 # cover (which would be confusing to read and hard to maintain).
1019 if (!is_android && !is_ios) {
1020 # TODO(kjellander): Reenable after finishing https://bugs.webrtc.org/7634.
Jianjun Zhu037f3e42017-08-15 21:48:37 +08001021 #visibility = [ "..:rtc_unittests" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001022 }
1023 sources = [
1024 "callback_unittest.cc",
1025 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001026 "helpers_unittest.cc",
1027 "httpbase_unittest.cc",
1028 "httpcommon_unittest.cc",
1029 "httpserver_unittest.cc",
1030 "ipaddress_unittest.cc",
1031 "memory_usage_unittest.cc",
1032 "messagedigest_unittest.cc",
1033 "messagequeue_unittest.cc",
1034 "nat_unittest.cc",
1035 "network_unittest.cc",
1036 "optionsfile_unittest.cc",
1037 "proxy_unittest.cc",
1038 "ptr_util_unittest.cc",
1039 "ratelimiter_unittest.cc",
1040 "rollingaccumulator_unittest.cc",
1041 "rtccertificate_unittest.cc",
1042 "rtccertificategenerator_unittest.cc",
1043 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001044 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001045 "sigslot_unittest.cc",
1046 "sigslottester_unittest.cc",
1047 "stream_unittest.cc",
1048 "testclient_unittest.cc",
1049 "thread_unittest.cc",
1050 ]
1051 if (is_win) {
1052 sources += [
1053 "win32_unittest.cc",
1054 "win32window_unittest.cc",
1055 ]
1056 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001057 if (is_posix) {
1058 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001059 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001060 "ssladapter_unittest.cc",
1061 "sslidentity_unittest.cc",
1062 "sslstreamadapter_unittest.cc",
1063 ]
1064 }
1065 deps = [
1066 ":rtc_base_tests_main",
1067 ":rtc_base_tests_utils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001068 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001069 "../test:test_support",
1070 ]
1071 public_deps = [
1072 ":rtc_base",
1073 ]
1074 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001075 if (build_with_chromium) {
1076 include_dirs = [ "../../boringssl/src/include" ]
1077 }
1078 if (rtc_build_ssl) {
1079 deps += [ "//third_party/boringssl" ]
1080 } else {
1081 configs += [ ":external_ssl_library" ]
1082 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001083 }
1084}
1085
Henrik Kjellander73e21802017-06-20 08:38:58 +02001086if (is_android) {
1087 android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001088 java_files = [
1089 "java/src/org/webrtc/ContextUtils.java",
1090 "java/src/org/webrtc/Logging.java",
1091 "java/src/org/webrtc/Size.java",
1092 "java/src/org/webrtc/ThreadUtils.java",
1093 ]
charujain474acce2017-08-25 06:21:52 -07001094
1095 # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
1096 no_build_hooks = true
Henrik Kjellander73e21802017-06-20 08:38:58 +02001097 }
1098}