blob: 41bd74e8d2d6a83cf91bb4b9a48bf4d5bfadfa04 [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
Patrik Höglunda8005cf2017-12-13 16:05:42 +010092rtc_source_set("checks") {
93 sources = [
94 "checks.cc",
95 "checks.h",
96 ]
97 deps = [
98 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +010099 "..:typedefs",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100100 ]
101}
102
Patrik Höglund3e113432017-12-15 14:40:10 +0100103rtc_source_set("rate_limiter") {
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100104 sources = [
Patrik Höglund3e113432017-12-15 14:40:10 +0100105 "rate_limiter.cc",
106 "rate_limiter.h",
107 ]
108 deps = [
109 ":rtc_base_approved",
110 "../system_wrappers",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100111 ]
112}
113
114rtc_source_set("sanitizer") {
115 sources = [
116 "sanitizer.h",
117 ]
118}
119
120rtc_source_set("safe_compare") {
121 sources = [
122 "numerics/safe_compare.h",
123 ]
124 deps = [
125 ":type_traits",
126 ]
127}
128
Patrik Höglund3e113432017-12-15 14:40:10 +0100129rtc_source_set("stringutils") {
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100130 sources = [
Patrik Höglund3e113432017-12-15 14:40:10 +0100131 "stringutils.cc",
132 "stringutils.h",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100133 ]
134 deps = [
Patrik Höglund3e113432017-12-15 14:40:10 +0100135 ":checks",
136 ]
137}
138
139rtc_source_set("type_traits") {
140 sources = [
141 "type_traits.h",
142 ]
143}
144
145rtc_source_set("deprecation") {
146 sources = [
147 "deprecation.h",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100148 ]
149}
150
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200151# The subset of rtc_base approved for use outside of libjingle.
mbonadeibc378472017-09-11 03:43:34 -0700152rtc_source_set("rtc_base_approved_generic") {
153 visibility = [
154 ":rtc_base_approved",
155 ":rtc_base_approved_objc",
Tommi897e1362017-12-01 18:56:43 +0100156 ":weak_ptr_unittests",
mbonadeibc378472017-09-11 03:43:34 -0700157 ]
158
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100159 cflags = []
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200160 defines = []
161 libs = []
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100162 deps = [
163 ":checks",
164 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100165 ":stringutils",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100166 ":type_traits",
Patrik Höglund3e113432017-12-15 14:40:10 +0100167 "../:typedefs",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100168 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200169
170 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200171 "arraysize.h",
172 "atomicops.h",
173 "base64.cc",
174 "base64.h",
175 "basictypes.h",
176 "bind.h",
177 "bitbuffer.cc",
178 "bitbuffer.h",
Alex Narest78609d52017-10-20 10:37:47 +0200179 "bitrateallocationstrategy.cc",
180 "bitrateallocationstrategy.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200181 "buffer.h",
182 "bufferqueue.cc",
183 "bufferqueue.h",
184 "bytebuffer.cc",
185 "bytebuffer.h",
186 "byteorder.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200187 "constructormagic.h",
188 "copyonwritebuffer.cc",
189 "copyonwritebuffer.h",
190 "criticalsection.cc",
191 "criticalsection.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200192 "event_tracer.cc",
193 "event_tracer.h",
194 "file.cc",
195 "file.h",
196 "flags.cc",
197 "flags.h",
198 "format_macros.h",
199 "function_view.h",
200 "ignore_wundef.h",
201 "location.cc",
202 "location.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100203 "numerics/histogram_percentile_counter.cc",
204 "numerics/histogram_percentile_counter.h",
205 "numerics/mod_ops.h",
206 "numerics/moving_max_counter.h",
Karl Wiberge40468b2017-11-22 10:42:26 +0100207 "numerics/safe_conversions.h",
208 "numerics/safe_conversions_impl.h",
209 "numerics/safe_minmax.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200210 "onetimeevent.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200211 "pathutils.cc",
212 "pathutils.h",
213 "platform_file.cc",
214 "platform_file.h",
215 "platform_thread.cc",
216 "platform_thread.h",
217 "platform_thread_types.h",
218 "ptr_util.h",
219 "race_checker.cc",
220 "race_checker.h",
221 "random.cc",
222 "random.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200223 "rate_statistics.cc",
224 "rate_statistics.h",
225 "ratetracker.cc",
226 "ratetracker.h",
227 "refcount.h",
228 "refcountedobject.h",
Niels Möller9155e492017-10-23 11:22:30 +0200229 "refcounter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200230 "scoped_ref_ptr.h",
231 "string_to_number.cc",
232 "string_to_number.h",
233 "stringencode.cc",
234 "stringencode.h",
235 "stringize_macros.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200236 "swap_queue.h",
237 "template_util.h",
238 "thread_annotations.h",
239 "thread_checker.h",
240 "thread_checker_impl.cc",
241 "thread_checker_impl.h",
242 "timestampaligner.cc",
243 "timestampaligner.h",
244 "timeutils.cc",
245 "timeutils.h",
246 "trace_event.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200247 ]
248
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100249 deps += [
250 "..:webrtc_common",
251 "../api:array_view",
252 "../api:optional",
253 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200254
255 if (is_android) {
256 libs += [ "log" ]
257 }
258
259 if (is_posix) {
260 sources += [ "file_posix.cc" ]
261 }
262
263 if (is_win) {
264 sources += [ "file_win.cc" ]
265 }
266
267 if (build_with_chromium) {
268 # Dependency on chromium's logging (in //base).
269 deps += [ "//base:base" ]
270 sources += [
Tommi06483ca2017-11-26 18:22:52 +0100271 "../../webrtc_overrides/rtc_base/event.cc",
272 "../../webrtc_overrides/rtc_base/event.h",
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200273 "../../webrtc_overrides/rtc_base/logging.cc",
274 "../../webrtc_overrides/rtc_base/logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200275 ]
276 } else {
277 sources += [
Tommi06483ca2017-11-26 18:22:52 +0100278 "event.cc",
279 "event.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200280 "logging.cc",
281 "logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200282 ]
283 }
284 if (is_component_build && is_win) {
285 # Copy the VS runtime DLLs into the isolate so that they don't have to be
286 # preinstalled on the target machine. The debug runtimes have a "d" at
287 # the end.
288 # This is a copy of https://codereview.chromium.org/1783973002.
289 # TODO(ehmaldonado): We'd like Chromium to make this changes easier to use,
290 # so we don't have to copy their changes and risk breakages.
291 # See http://crbug.com/653569
292 if (is_debug) {
293 vcrt_suffix = "d"
294 } else {
295 vcrt_suffix = ""
296 }
297
298 # These runtime files are copied to the output directory by the
299 # vs_toolchain script that runs as part of toolchain configuration.
300 data = [
301 "$root_out_dir/msvcp140${vcrt_suffix}.dll",
302 "$root_out_dir/vccorlib140${vcrt_suffix}.dll",
303 "$root_out_dir/vcruntime140${vcrt_suffix}.dll",
304
305 # Universal Windows 10 CRT files
306 "$root_out_dir/api-ms-win-core-console-l1-1-0.dll",
307 "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll",
308 "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll",
309 "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll",
310 "$root_out_dir/api-ms-win-core-file-l1-1-0.dll",
311 "$root_out_dir/api-ms-win-core-file-l1-2-0.dll",
312 "$root_out_dir/api-ms-win-core-file-l2-1-0.dll",
313 "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll",
314 "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll",
315 "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll",
316 "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll",
317 "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll",
318 "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll",
319 "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll",
320 "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll",
321 "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll",
322 "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll",
323 "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll",
324 "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll",
325 "$root_out_dir/api-ms-win-core-string-l1-1-0.dll",
326 "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll",
327 "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll",
328 "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll",
329 "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll",
330 "$root_out_dir/api-ms-win-core-util-l1-1-0.dll",
331 "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll",
332 "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll",
333 "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll",
334 "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll",
335 "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll",
336 "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll",
337 "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll",
338 "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll",
339 "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll",
340 "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll",
341 "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll",
342 "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll",
343 "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll",
344 "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll",
345 "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll",
346 "$root_out_dir/ucrtbase${vcrt_suffix}.dll",
347 ]
348 if (is_asan) {
349 if (current_cpu == "x64") {
350 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ]
351 } else {
352 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ]
353 }
354 }
355 }
356 if (is_nacl) {
357 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
358 }
359}
360
mbonadeibc378472017-09-11 03:43:34 -0700361if (is_mac && !build_with_chromium) {
362 config("rtc_base_approved_objc_all_dependent_config") {
363 visibility = [ ":rtc_base_approved_objc" ]
364 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
365 }
366
367 rtc_source_set("rtc_base_approved_objc") {
368 visibility = [ ":rtc_base_approved" ]
369 all_dependent_configs = [ ":rtc_base_approved_objc_all_dependent_config" ]
370 sources = [
371 "logging_mac.mm",
372 ]
373 deps = [
374 ":rtc_base_approved_generic",
375 ]
376 }
377}
378
perkj650fdae2017-08-25 05:00:11 -0700379rtc_source_set("rtc_task_queue") {
mbonadei95c8f652017-08-27 23:40:10 -0700380 deps = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200381 ":rtc_base_approved",
mbonadei95c8f652017-08-27 23:40:10 -0700382 ]
383 public_deps = [
perkj650fdae2017-08-25 05:00:11 -0700384 ":rtc_task_queue_api",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200385 ]
386
perkj650fdae2017-08-25 05:00:11 -0700387 if (rtc_link_task_queue_impl) {
mbonadei95c8f652017-08-27 23:40:10 -0700388 deps += [ ":rtc_task_queue_impl" ]
perkj650fdae2017-08-25 05:00:11 -0700389 }
390}
391
392# WebRTC targets must not directly depend on rtc_task_queue_api or
393# rtc_task_queue_impl. Instead, depend on rtc_task_queue.
394# The build flag |rtc_link_task_queue_impl| decides if WebRTC targets will link
395# to the default implemenation in rtc_task_queue_impl or if an externally
396# provided implementation should be used. An external implementation should
397# depend on rtc_task_queue_api.
398rtc_source_set("rtc_task_queue_api") {
nisse75dd6d42017-09-19 08:28:00 -0700399 sources = [
400 "task_queue.h",
401 ]
perkj650fdae2017-08-25 05:00:11 -0700402 deps = [
403 ":rtc_base_approved",
404 ]
405}
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200406
perkj650fdae2017-08-25 05:00:11 -0700407rtc_source_set("rtc_task_queue_impl") {
408 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100409 ":checks",
perkj650fdae2017-08-25 05:00:11 -0700410 ":rtc_base_approved",
411 ":rtc_task_queue_api",
412 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200413 if (rtc_build_libevent) {
414 deps += [ "//base/third_party/libevent" ]
415 }
416 if (rtc_enable_libevent) {
perkj650fdae2017-08-25 05:00:11 -0700417 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200418 "task_queue_libevent.cc",
419 "task_queue_posix.cc",
420 "task_queue_posix.h",
perkj650fdae2017-08-25 05:00:11 -0700421 ]
422 } else {
Niels Möller15c9cf72017-10-19 12:38:09 +0200423 if (is_mac || is_ios) {
Niels Möller17a04742017-09-27 10:53:21 +0200424 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200425 "task_queue_gcd.cc",
Henrik Boströma9a27712017-10-03 08:01:07 +0000426 "task_queue_posix.cc",
427 "task_queue_posix.h",
Niels Möller17a04742017-09-27 10:53:21 +0200428 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200429 }
430 if (is_win) {
431 sources = [
432 "task_queue_win.cc",
433 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200434 }
435 }
436}
437
438rtc_static_library("sequenced_task_checker") {
439 sources = [
440 "sequenced_task_checker.h",
441 "sequenced_task_checker_impl.cc",
442 "sequenced_task_checker_impl.h",
443 ]
444 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100445 ":checks",
mbonadei95c8f652017-08-27 23:40:10 -0700446 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200447 ":rtc_task_queue",
448 ]
449}
450
451rtc_static_library("weak_ptr") {
452 sources = [
453 "weak_ptr.cc",
454 "weak_ptr.h",
455 ]
456 deps = [
457 ":rtc_base_approved",
458 ":sequenced_task_checker",
459 ]
460}
461
462rtc_static_library("rtc_numerics") {
463 sources = [
464 "numerics/exp_filter.cc",
465 "numerics/exp_filter.h",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +0100466 "numerics/moving_median_filter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200467 "numerics/percentile_filter.h",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200468 "numerics/sequence_number_util.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200469 ]
470 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100471 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200472 ":rtc_base_approved",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100473 ":safe_compare",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200474 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200475 ]
476}
477
478config("rtc_base_warnings_config") {
479 if (is_win && is_clang) {
480 cflags = [
481 # Disable warnings failing when compiling with Clang on Windows.
482 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
483 "-Wno-sign-compare",
484 "-Wno-missing-braces",
485 ]
486 }
487}
488
489rtc_source_set("rtc_json") {
490 defines = []
491 sources = [
492 "json.cc",
493 "json.h",
494 ]
495 if (rtc_build_json) {
496 public_deps = [
497 "//third_party/jsoncpp",
498 ]
499 } else {
500 include_dirs = [ "$rtc_jsoncpp_root" ]
501
502 # When defined changes the include path for json.h to where it is
503 # expected to be when building json outside of the standalone build.
504 defines += [ "WEBRTC_EXTERNAL_JSON" ]
505 }
506}
507
mbonadei9c5e5112017-09-05 05:17:02 -0700508rtc_static_library("rtc_base") {
mbonadei310e32b2017-09-07 07:36:28 -0700509 public_deps = [
510 ":rtc_base_generic",
511 ]
512 if (is_win) {
513 sources = [
514 "noop.cc",
515 ]
516 }
517 if (is_ios || is_mac) {
518 sources = [
519 "noop.mm",
520 ]
521 public_deps += [ ":rtc_base_objc" ]
522 }
523}
524
525if (is_ios || is_mac) {
526 rtc_source_set("rtc_base_objc") {
527 sources = [
528 "thread_darwin.mm",
529 ]
530 deps = [
531 ":rtc_base_generic",
532 ]
533 visibility = [ ":rtc_base" ]
534 }
535}
536
537rtc_static_library("rtc_base_generic") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200538 cflags = []
539 cflags_cc = []
540 libs = []
541 defines = []
542 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100543 ":checks",
Patrik Höglund3e113432017-12-15 14:40:10 +0100544 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200545 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 08:43:13 -0700546 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200547 ]
548 public_deps = [
549 ":rtc_base_approved",
550 ]
551 public_configs = []
552
553 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
554
555 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200556 "asyncinvoker-inl.h",
557 "asyncinvoker.cc",
558 "asyncinvoker.h",
559 "asyncpacketsocket.cc",
560 "asyncpacketsocket.h",
561 "asyncresolverinterface.cc",
562 "asyncresolverinterface.h",
563 "asyncsocket.cc",
564 "asyncsocket.h",
565 "asynctcpsocket.cc",
566 "asynctcpsocket.h",
567 "asyncudpsocket.cc",
568 "asyncudpsocket.h",
569 "crc32.cc",
570 "crc32.h",
571 "cryptstring.cc",
572 "cryptstring.h",
573 "filerotatingstream.cc",
574 "filerotatingstream.h",
575 "fileutils.cc",
576 "fileutils.h",
577 "gunit_prod.h",
578 "helpers.cc",
579 "helpers.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200580 "httpcommon-inl.h",
581 "httpcommon.cc",
582 "httpcommon.h",
583 "ipaddress.cc",
584 "ipaddress.h",
585 "messagedigest.cc",
586 "messagedigest.h",
587 "messagehandler.cc",
588 "messagehandler.h",
589 "messagequeue.cc",
590 "messagequeue.h",
Zhi Huang942bc2e2017-11-13 13:26:07 -0800591 "nethelper.cc",
592 "nethelper.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200593 "nethelpers.cc",
594 "nethelpers.h",
595 "network.cc",
596 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200597 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200598 "networkmonitor.cc",
599 "networkmonitor.h",
600 "nullsocketserver.cc",
601 "nullsocketserver.h",
602 "openssl.h",
603 "openssladapter.cc",
604 "openssladapter.h",
605 "openssldigest.cc",
606 "openssldigest.h",
607 "opensslidentity.cc",
608 "opensslidentity.h",
609 "opensslstreamadapter.cc",
610 "opensslstreamadapter.h",
611 "physicalsocketserver.cc",
612 "physicalsocketserver.h",
613 "proxyinfo.cc",
614 "proxyinfo.h",
615 "ratelimiter.cc",
616 "ratelimiter.h",
617 "rtccertificate.cc",
618 "rtccertificate.h",
619 "rtccertificategenerator.cc",
620 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700621 "signalthread.cc",
622 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200623 "sigslot.cc",
624 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700625 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200626 "socket.h",
627 "socketadapters.cc",
628 "socketadapters.h",
629 "socketaddress.cc",
630 "socketaddress.h",
631 "socketaddresspair.cc",
632 "socketaddresspair.h",
633 "socketfactory.h",
634 "socketserver.h",
635 "socketstream.cc",
636 "socketstream.h",
637 "ssladapter.cc",
638 "ssladapter.h",
639 "sslfingerprint.cc",
640 "sslfingerprint.h",
641 "sslidentity.cc",
642 "sslidentity.h",
643 "sslstreamadapter.cc",
644 "sslstreamadapter.h",
645 "stream.cc",
646 "stream.h",
647 "thread.cc",
648 "thread.h",
649 ]
650
mbonadei310e32b2017-09-07 07:36:28 -0700651 visibility = [
652 ":rtc_base",
653 ":rtc_base_objc",
654 ]
655
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200656 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
657 # compiler settings.
658 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
659 configs += [ "//build/config/compiler:no_chromium_code" ]
660 if (!is_win) {
661 cflags += [ "-Wno-uninitialized" ]
662 }
663
664 if (build_with_chromium) {
665 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200666 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200667 }
668 include_dirs = [ "../../boringssl/src/include" ]
669 public_configs += [ ":rtc_base_chromium_config" ]
670 } else {
671 configs += [ ":rtc_base_warnings_config" ]
672 sources += [
673 "callback.h",
674 "logsinks.cc",
675 "logsinks.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100676 "numerics/mathutils.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200677 "optionsfile.cc",
678 "optionsfile.h",
679 "rollingaccumulator.h",
680 "sslroots.h",
681 "transformadapter.cc",
682 "transformadapter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200683 ]
684
685 if (is_win) {
686 sources += [
687 "win32socketinit.cc",
688 "win32socketinit.h",
689 "win32socketserver.cc",
690 "win32socketserver.h",
691 ]
692 }
693 } # !build_with_chromium
694
695 if (rtc_build_ssl) {
696 deps += [ "//third_party/boringssl" ]
697 } else {
698 configs += [ ":external_ssl_library" ]
699 }
700
701 if (is_android) {
702 sources += [
703 "ifaddrs-android.cc",
704 "ifaddrs-android.h",
705 ]
706
707 libs += [
708 "log",
709 "GLESv2",
710 ]
711 }
712
713 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700714 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200715 }
716
717 if (use_x11) {
718 libs += [
719 "dl",
720 "rt",
721 "Xext",
722 "X11",
723 "Xcomposite",
724 "Xrender",
725 ]
726 }
727
728 if (is_linux) {
729 libs += [
730 "dl",
731 "rt",
732 ]
733 }
734
735 if (is_mac) {
736 sources += [
737 "macutils.cc",
738 "macutils.h",
739 ]
740 libs += [
741 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
742 "ApplicationServices.framework",
743 ]
744 }
745
746 if (is_win) {
747 sources += [
748 "win32.cc",
749 "win32.h",
750 "win32filesystem.cc",
751 "win32filesystem.h",
752 "win32securityerrors.cc",
753 "win32window.cc",
754 "win32window.h",
755 ]
756
757 libs += [
758 "crypt32.lib",
759 "iphlpapi.lib",
760 "secur32.lib",
761 ]
762
763 cflags += [
764 # Suppress warnings about WIN32_LEAN_AND_MEAN.
765 "/wd4005",
766 "/wd4703",
767 ]
768
769 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
770 }
771
772 if (is_posix) {
773 sources += [
774 "ifaddrs_converter.cc",
775 "ifaddrs_converter.h",
776 "unixfilesystem.cc",
777 "unixfilesystem.h",
778 ]
779 }
780
781 if (is_nacl) {
782 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
783 defines += [ "timezone=_timezone" ]
784 sources -= [ "ifaddrs_converter.cc" ]
785 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200786}
787
788rtc_source_set("gtest_prod") {
789 sources = [
790 "gtest_prod_util.h",
791 ]
792}
793
794config("rtc_base_tests_utils_exported_config") {
795 defines = [ "GTEST_RELATIVE_PATH" ]
796}
797
798config("rtc_base_tests_utils_warnings_config") {
799 if (is_win && is_clang) {
800 cflags = [
801 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
802 "-Wno-reorder",
803 "-Wno-sign-compare",
804 ]
805 }
806}
807
808rtc_source_set("rtc_base_tests_utils") {
809 testonly = true
810 sources = [
811 # Also use this as a convenient dumping ground for misc files that are
812 # included by multiple targets below.
813 "cpu_time.cc",
814 "cpu_time.h",
815 "fakeclock.cc",
816 "fakeclock.h",
817 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700818 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200819 "fakesslidentity.h",
820 "firewallsocketserver.cc",
821 "firewallsocketserver.h",
822 "gunit.h",
Niels Möller3c8a5f22017-12-15 16:04:21 +0100823 "httpbase.cc",
824 "httpbase.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200825 "httpserver.cc",
826 "httpserver.h",
827 "md5.cc",
828 "md5.h",
829 "md5digest.cc",
830 "md5digest.h",
831 "memory_usage.cc",
832 "memory_usage.h",
833 "natserver.cc",
834 "natserver.h",
835 "natsocketfactory.cc",
836 "natsocketfactory.h",
837 "nattypes.cc",
838 "nattypes.h",
839 "proxyserver.cc",
840 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200841 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200842 "sha1.cc",
843 "sha1.h",
844 "sha1digest.cc",
845 "sha1digest.h",
846 "sigslottester.h",
847 "sigslottester.h.pump",
848 "testbase64.h",
849 "testclient.cc",
850 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700851 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200852 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700853 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200854 "testutils.h",
855 "timedelta.h",
856 "virtualsocketserver.cc",
857 "virtualsocketserver.h",
858 ]
859 configs += [ ":rtc_base_tests_utils_warnings_config" ]
860 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
861 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100862 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200863 ":rtc_base",
Patrik Höglund3e113432017-12-15 14:40:10 +0100864 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200865 "../test:field_trial",
866 "../test:test_support",
867 ]
868 public_deps = [
869 "//testing/gmock",
870 "//testing/gtest",
871 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200872}
873
874if (rtc_include_tests) {
875 rtc_source_set("rtc_base_tests_main") {
876 testonly = true
877 sources = [
878 "unittest_main.cc",
879 ]
880 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
881 deps = [
882 ":rtc_base",
883 ":rtc_base_approved",
884 ":rtc_base_tests_utils",
885 "../test:field_trial",
886 "../test:test_support",
887 ]
888
889 public_deps = [
890 "//testing/gmock",
891 "//testing/gtest",
892 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200893 }
894
895 rtc_source_set("rtc_base_nonparallel_tests") {
896 testonly = true
897
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200898 sources = [
899 "cpu_time_unittest.cc",
900 "filerotatingstream_unittest.cc",
901 "nullsocketserver_unittest.cc",
902 "physicalsocketserver_unittest.cc",
903 "socket_unittest.cc",
904 "socket_unittest.h",
905 "socketaddress_unittest.cc",
906 ]
907 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100908 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200909 ":rtc_base",
910 ":rtc_base_tests_main",
911 ":rtc_base_tests_utils",
912 "../system_wrappers:system_wrappers",
913 "../test:test_support",
914 "//testing/gtest",
915 ]
916 if (is_win) {
917 sources += [ "win32socketserver_unittest.cc" ]
918 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200919 }
920
921 rtc_source_set("rtc_base_approved_unittests") {
922 testonly = true
923
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200924 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200925 "atomicops_unittest.cc",
926 "base64_unittest.cc",
927 "basictypes_unittest.cc",
928 "bind_unittest.cc",
929 "bitbuffer_unittest.cc",
Alex Narestd0e196b2017-11-22 17:22:35 +0100930 "bitrateallocationstrategy_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200931 "buffer_unittest.cc",
932 "bufferqueue_unittest.cc",
933 "bytebuffer_unittest.cc",
934 "byteorder_unittest.cc",
935 "copyonwritebuffer_unittest.cc",
936 "criticalsection_unittest.cc",
937 "event_tracer_unittest.cc",
938 "event_unittest.cc",
939 "file_unittest.cc",
940 "function_view_unittest.cc",
941 "logging_unittest.cc",
942 "md5digest_unittest.cc",
Karl Wiberg65c39222017-11-22 12:25:14 +0100943 "numerics/histogram_percentile_counter_unittest.cc",
944 "numerics/mod_ops_unittest.cc",
945 "numerics/moving_max_counter_unittest.cc",
Karl Wiberge40468b2017-11-22 10:42:26 +0100946 "numerics/safe_compare_unittest.cc",
947 "numerics/safe_minmax_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200948 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200949 "pathutils_unittest.cc",
950 "platform_thread_unittest.cc",
951 "random_unittest.cc",
952 "rate_limiter_unittest.cc",
953 "rate_statistics_unittest.cc",
954 "ratetracker_unittest.cc",
955 "refcountedobject_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200956 "string_to_number_unittest.cc",
957 "stringencode_unittest.cc",
958 "stringize_macros_unittest.cc",
959 "stringutils_unittest.cc",
960 "swap_queue_unittest.cc",
961 "thread_annotations_unittest.cc",
962 "thread_checker_unittest.cc",
963 "timestampaligner_unittest.cc",
964 "timeutils_unittest.cc",
965 "virtualsocket_unittest.cc",
966 ]
967 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100968 ":checks",
969 ":rate_limiter",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200970 ":rtc_base",
971 ":rtc_base_approved",
972 ":rtc_base_tests_main",
973 ":rtc_base_tests_utils",
974 ":rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100975 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100976 ":stringutils",
kwiberg529662a2017-09-04 05:43:17 -0700977 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200978 "../system_wrappers:system_wrappers",
979 "../test:test_support",
980 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200981 }
982
983 rtc_source_set("rtc_task_queue_unittests") {
984 testonly = true
985
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200986 sources = [
987 "task_queue_unittest.cc",
988 ]
989 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700990 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200991 ":rtc_base_tests_main",
992 ":rtc_base_tests_utils",
993 ":rtc_task_queue",
994 "../test:test_support",
995 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200996 }
997
998 rtc_source_set("sequenced_task_checker_unittests") {
999 testonly = true
1000
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001001 sources = [
1002 "sequenced_task_checker_unittest.cc",
1003 ]
1004 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001005 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001006 ":rtc_base_approved",
1007 ":rtc_base_tests_main",
1008 ":rtc_task_queue",
1009 ":sequenced_task_checker",
1010 "../test:test_support",
1011 ]
1012 }
1013
1014 rtc_source_set("weak_ptr_unittests") {
1015 testonly = true
1016
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001017 sources = [
1018 "weak_ptr_unittest.cc",
1019 ]
1020 deps = [
Tommi897e1362017-12-01 18:56:43 +01001021 ":rtc_base_approved_generic",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001022 ":rtc_base_tests_main",
1023 ":rtc_base_tests_utils",
1024 ":rtc_task_queue",
1025 ":weak_ptr",
1026 "../test:test_support",
1027 ]
1028 }
1029
1030 rtc_source_set("rtc_numerics_unittests") {
1031 testonly = true
1032
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001033 sources = [
1034 "numerics/exp_filter_unittest.cc",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +01001035 "numerics/moving_median_filter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001036 "numerics/percentile_filter_unittest.cc",
Bjorn Tereliusa194e582017-10-25 13:07:09 +02001037 "numerics/sequence_number_util_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001038 ]
1039 deps = [
1040 ":rtc_base_approved",
1041 ":rtc_base_tests_main",
1042 ":rtc_numerics",
1043 "../test:test_support",
1044 ]
1045 }
1046
1047 config("rtc_base_unittests_config") {
1048 if (is_clang) {
1049 cflags = [ "-Wno-unused-const-variable" ]
1050 }
1051 }
1052 rtc_source_set("rtc_base_unittests") {
1053 testonly = true
1054
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001055 sources = [
1056 "callback_unittest.cc",
1057 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001058 "helpers_unittest.cc",
1059 "httpbase_unittest.cc",
1060 "httpcommon_unittest.cc",
1061 "httpserver_unittest.cc",
1062 "ipaddress_unittest.cc",
1063 "memory_usage_unittest.cc",
1064 "messagedigest_unittest.cc",
1065 "messagequeue_unittest.cc",
1066 "nat_unittest.cc",
1067 "network_unittest.cc",
1068 "optionsfile_unittest.cc",
1069 "proxy_unittest.cc",
1070 "ptr_util_unittest.cc",
1071 "ratelimiter_unittest.cc",
1072 "rollingaccumulator_unittest.cc",
1073 "rtccertificate_unittest.cc",
1074 "rtccertificategenerator_unittest.cc",
1075 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001076 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001077 "sigslot_unittest.cc",
1078 "sigslottester_unittest.cc",
1079 "stream_unittest.cc",
1080 "testclient_unittest.cc",
1081 "thread_unittest.cc",
1082 ]
1083 if (is_win) {
1084 sources += [
1085 "win32_unittest.cc",
1086 "win32window_unittest.cc",
1087 ]
1088 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001089 if (is_posix) {
1090 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001091 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001092 "ssladapter_unittest.cc",
1093 "sslidentity_unittest.cc",
1094 "sslstreamadapter_unittest.cc",
1095 ]
1096 }
1097 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001098 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001099 ":rtc_base_tests_main",
1100 ":rtc_base_tests_utils",
Patrik Höglund3e113432017-12-15 14:40:10 +01001101 ":stringutils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001102 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001103 "../test:test_support",
1104 ]
1105 public_deps = [
1106 ":rtc_base",
1107 ]
1108 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001109 if (build_with_chromium) {
1110 include_dirs = [ "../../boringssl/src/include" ]
1111 }
1112 if (rtc_build_ssl) {
1113 deps += [ "//third_party/boringssl" ]
1114 } else {
1115 configs += [ ":external_ssl_library" ]
1116 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001117 }
1118}
1119
Henrik Kjellander73e21802017-06-20 08:38:58 +02001120if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33 +00001121 rtc_android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001122 java_files = [
1123 "java/src/org/webrtc/ContextUtils.java",
1124 "java/src/org/webrtc/Logging.java",
1125 "java/src/org/webrtc/Size.java",
1126 "java/src/org/webrtc/ThreadUtils.java",
1127 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +02001128 }
1129}