blob: 7349f17c40207f447ac3a4636f9a1b2e83cd5c3c [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",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100573 "dscp.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200574 "filerotatingstream.cc",
575 "filerotatingstream.h",
576 "fileutils.cc",
577 "fileutils.h",
578 "gunit_prod.h",
579 "helpers.cc",
580 "helpers.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200581 "httpcommon-inl.h",
582 "httpcommon.cc",
583 "httpcommon.h",
584 "ipaddress.cc",
585 "ipaddress.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100586 "keep_ref_until_done.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200587 "messagedigest.cc",
588 "messagedigest.h",
589 "messagehandler.cc",
590 "messagehandler.h",
591 "messagequeue.cc",
592 "messagequeue.h",
Zhi Huang942bc2e2017-11-13 13:26:07 -0800593 "nethelper.cc",
594 "nethelper.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200595 "nethelpers.cc",
596 "nethelpers.h",
597 "network.cc",
598 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200599 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200600 "networkmonitor.cc",
601 "networkmonitor.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100602 "networkroute.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200603 "nullsocketserver.cc",
604 "nullsocketserver.h",
605 "openssl.h",
606 "openssladapter.cc",
607 "openssladapter.h",
608 "openssldigest.cc",
609 "openssldigest.h",
610 "opensslidentity.cc",
611 "opensslidentity.h",
612 "opensslstreamadapter.cc",
613 "opensslstreamadapter.h",
614 "physicalsocketserver.cc",
615 "physicalsocketserver.h",
616 "proxyinfo.cc",
617 "proxyinfo.h",
618 "ratelimiter.cc",
619 "ratelimiter.h",
620 "rtccertificate.cc",
621 "rtccertificate.h",
622 "rtccertificategenerator.cc",
623 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700624 "signalthread.cc",
625 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200626 "sigslot.cc",
627 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700628 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200629 "socket.h",
630 "socketadapters.cc",
631 "socketadapters.h",
632 "socketaddress.cc",
633 "socketaddress.h",
634 "socketaddresspair.cc",
635 "socketaddresspair.h",
636 "socketfactory.h",
637 "socketserver.h",
638 "socketstream.cc",
639 "socketstream.h",
640 "ssladapter.cc",
641 "ssladapter.h",
642 "sslfingerprint.cc",
643 "sslfingerprint.h",
644 "sslidentity.cc",
645 "sslidentity.h",
646 "sslstreamadapter.cc",
647 "sslstreamadapter.h",
648 "stream.cc",
649 "stream.h",
650 "thread.cc",
651 "thread.h",
652 ]
653
mbonadei310e32b2017-09-07 07:36:28 -0700654 visibility = [
655 ":rtc_base",
656 ":rtc_base_objc",
657 ]
658
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200659 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
660 # compiler settings.
661 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
662 configs += [ "//build/config/compiler:no_chromium_code" ]
663 if (!is_win) {
664 cflags += [ "-Wno-uninitialized" ]
665 }
666
667 if (build_with_chromium) {
668 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200669 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200670 }
671 include_dirs = [ "../../boringssl/src/include" ]
672 public_configs += [ ":rtc_base_chromium_config" ]
673 } else {
674 configs += [ ":rtc_base_warnings_config" ]
675 sources += [
676 "callback.h",
677 "logsinks.cc",
678 "logsinks.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100679 "numerics/mathutils.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200680 "optionsfile.cc",
681 "optionsfile.h",
682 "rollingaccumulator.h",
683 "sslroots.h",
684 "transformadapter.cc",
685 "transformadapter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200686 ]
687
688 if (is_win) {
689 sources += [
690 "win32socketinit.cc",
691 "win32socketinit.h",
692 "win32socketserver.cc",
693 "win32socketserver.h",
694 ]
695 }
696 } # !build_with_chromium
697
698 if (rtc_build_ssl) {
699 deps += [ "//third_party/boringssl" ]
700 } else {
701 configs += [ ":external_ssl_library" ]
702 }
703
704 if (is_android) {
705 sources += [
706 "ifaddrs-android.cc",
707 "ifaddrs-android.h",
708 ]
709
710 libs += [
711 "log",
712 "GLESv2",
713 ]
714 }
715
716 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700717 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200718 }
719
720 if (use_x11) {
721 libs += [
722 "dl",
723 "rt",
724 "Xext",
725 "X11",
726 "Xcomposite",
727 "Xrender",
728 ]
729 }
730
731 if (is_linux) {
732 libs += [
733 "dl",
734 "rt",
735 ]
736 }
737
738 if (is_mac) {
739 sources += [
740 "macutils.cc",
741 "macutils.h",
742 ]
743 libs += [
744 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
745 "ApplicationServices.framework",
746 ]
747 }
748
749 if (is_win) {
750 sources += [
751 "win32.cc",
752 "win32.h",
753 "win32filesystem.cc",
754 "win32filesystem.h",
755 "win32securityerrors.cc",
756 "win32window.cc",
757 "win32window.h",
758 ]
759
760 libs += [
761 "crypt32.lib",
762 "iphlpapi.lib",
763 "secur32.lib",
764 ]
765
766 cflags += [
767 # Suppress warnings about WIN32_LEAN_AND_MEAN.
768 "/wd4005",
769 "/wd4703",
770 ]
771
772 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
773 }
774
775 if (is_posix) {
776 sources += [
777 "ifaddrs_converter.cc",
778 "ifaddrs_converter.h",
779 "unixfilesystem.cc",
780 "unixfilesystem.h",
781 ]
782 }
783
784 if (is_nacl) {
785 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
786 defines += [ "timezone=_timezone" ]
787 sources -= [ "ifaddrs_converter.cc" ]
788 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200789}
790
791rtc_source_set("gtest_prod") {
792 sources = [
793 "gtest_prod_util.h",
794 ]
795}
796
797config("rtc_base_tests_utils_exported_config") {
798 defines = [ "GTEST_RELATIVE_PATH" ]
799}
800
801config("rtc_base_tests_utils_warnings_config") {
802 if (is_win && is_clang) {
803 cflags = [
804 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
805 "-Wno-reorder",
806 "-Wno-sign-compare",
807 ]
808 }
809}
810
811rtc_source_set("rtc_base_tests_utils") {
812 testonly = true
813 sources = [
814 # Also use this as a convenient dumping ground for misc files that are
815 # included by multiple targets below.
816 "cpu_time.cc",
817 "cpu_time.h",
818 "fakeclock.cc",
819 "fakeclock.h",
820 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700821 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200822 "fakesslidentity.h",
823 "firewallsocketserver.cc",
824 "firewallsocketserver.h",
825 "gunit.h",
Niels Möller3c8a5f22017-12-15 16:04:21 +0100826 "httpbase.cc",
827 "httpbase.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200828 "httpserver.cc",
829 "httpserver.h",
830 "md5.cc",
831 "md5.h",
832 "md5digest.cc",
833 "md5digest.h",
834 "memory_usage.cc",
835 "memory_usage.h",
836 "natserver.cc",
837 "natserver.h",
838 "natsocketfactory.cc",
839 "natsocketfactory.h",
840 "nattypes.cc",
841 "nattypes.h",
842 "proxyserver.cc",
843 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200844 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200845 "sha1.cc",
846 "sha1.h",
847 "sha1digest.cc",
848 "sha1digest.h",
849 "sigslottester.h",
850 "sigslottester.h.pump",
851 "testbase64.h",
852 "testclient.cc",
853 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700854 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200855 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700856 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200857 "testutils.h",
858 "timedelta.h",
859 "virtualsocketserver.cc",
860 "virtualsocketserver.h",
861 ]
862 configs += [ ":rtc_base_tests_utils_warnings_config" ]
863 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
864 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100865 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200866 ":rtc_base",
Patrik Höglund3e113432017-12-15 14:40:10 +0100867 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200868 "../test:field_trial",
869 "../test:test_support",
870 ]
871 public_deps = [
872 "//testing/gmock",
873 "//testing/gtest",
874 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200875}
876
877if (rtc_include_tests) {
878 rtc_source_set("rtc_base_tests_main") {
879 testonly = true
880 sources = [
881 "unittest_main.cc",
882 ]
883 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
884 deps = [
885 ":rtc_base",
886 ":rtc_base_approved",
887 ":rtc_base_tests_utils",
888 "../test:field_trial",
889 "../test:test_support",
890 ]
891
892 public_deps = [
893 "//testing/gmock",
894 "//testing/gtest",
895 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200896 }
897
898 rtc_source_set("rtc_base_nonparallel_tests") {
899 testonly = true
900
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200901 sources = [
902 "cpu_time_unittest.cc",
903 "filerotatingstream_unittest.cc",
904 "nullsocketserver_unittest.cc",
905 "physicalsocketserver_unittest.cc",
906 "socket_unittest.cc",
907 "socket_unittest.h",
908 "socketaddress_unittest.cc",
909 ]
910 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100911 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200912 ":rtc_base",
913 ":rtc_base_tests_main",
914 ":rtc_base_tests_utils",
915 "../system_wrappers:system_wrappers",
916 "../test:test_support",
917 "//testing/gtest",
918 ]
919 if (is_win) {
920 sources += [ "win32socketserver_unittest.cc" ]
921 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200922 }
923
924 rtc_source_set("rtc_base_approved_unittests") {
925 testonly = true
926
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200927 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200928 "atomicops_unittest.cc",
929 "base64_unittest.cc",
930 "basictypes_unittest.cc",
931 "bind_unittest.cc",
932 "bitbuffer_unittest.cc",
Alex Narestd0e196b2017-11-22 17:22:35 +0100933 "bitrateallocationstrategy_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200934 "buffer_unittest.cc",
935 "bufferqueue_unittest.cc",
936 "bytebuffer_unittest.cc",
937 "byteorder_unittest.cc",
938 "copyonwritebuffer_unittest.cc",
939 "criticalsection_unittest.cc",
940 "event_tracer_unittest.cc",
941 "event_unittest.cc",
942 "file_unittest.cc",
943 "function_view_unittest.cc",
944 "logging_unittest.cc",
945 "md5digest_unittest.cc",
Karl Wiberg65c39222017-11-22 12:25:14 +0100946 "numerics/histogram_percentile_counter_unittest.cc",
947 "numerics/mod_ops_unittest.cc",
948 "numerics/moving_max_counter_unittest.cc",
Karl Wiberge40468b2017-11-22 10:42:26 +0100949 "numerics/safe_compare_unittest.cc",
950 "numerics/safe_minmax_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200951 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200952 "pathutils_unittest.cc",
953 "platform_thread_unittest.cc",
954 "random_unittest.cc",
955 "rate_limiter_unittest.cc",
956 "rate_statistics_unittest.cc",
957 "ratetracker_unittest.cc",
958 "refcountedobject_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200959 "string_to_number_unittest.cc",
960 "stringencode_unittest.cc",
961 "stringize_macros_unittest.cc",
962 "stringutils_unittest.cc",
963 "swap_queue_unittest.cc",
964 "thread_annotations_unittest.cc",
965 "thread_checker_unittest.cc",
966 "timestampaligner_unittest.cc",
967 "timeutils_unittest.cc",
968 "virtualsocket_unittest.cc",
969 ]
970 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100971 ":checks",
972 ":rate_limiter",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200973 ":rtc_base",
974 ":rtc_base_approved",
975 ":rtc_base_tests_main",
976 ":rtc_base_tests_utils",
977 ":rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100978 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100979 ":stringutils",
kwiberg529662a2017-09-04 05:43:17 -0700980 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200981 "../system_wrappers:system_wrappers",
982 "../test:test_support",
983 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200984 }
985
986 rtc_source_set("rtc_task_queue_unittests") {
987 testonly = true
988
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200989 sources = [
990 "task_queue_unittest.cc",
991 ]
992 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700993 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200994 ":rtc_base_tests_main",
995 ":rtc_base_tests_utils",
996 ":rtc_task_queue",
997 "../test:test_support",
998 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200999 }
1000
1001 rtc_source_set("sequenced_task_checker_unittests") {
1002 testonly = true
1003
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001004 sources = [
1005 "sequenced_task_checker_unittest.cc",
1006 ]
1007 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001008 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001009 ":rtc_base_approved",
1010 ":rtc_base_tests_main",
1011 ":rtc_task_queue",
1012 ":sequenced_task_checker",
1013 "../test:test_support",
1014 ]
1015 }
1016
1017 rtc_source_set("weak_ptr_unittests") {
1018 testonly = true
1019
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001020 sources = [
1021 "weak_ptr_unittest.cc",
1022 ]
1023 deps = [
Tommi897e1362017-12-01 18:56:43 +01001024 ":rtc_base_approved_generic",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001025 ":rtc_base_tests_main",
1026 ":rtc_base_tests_utils",
1027 ":rtc_task_queue",
1028 ":weak_ptr",
1029 "../test:test_support",
1030 ]
1031 }
1032
1033 rtc_source_set("rtc_numerics_unittests") {
1034 testonly = true
1035
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001036 sources = [
1037 "numerics/exp_filter_unittest.cc",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +01001038 "numerics/moving_median_filter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001039 "numerics/percentile_filter_unittest.cc",
Bjorn Tereliusa194e582017-10-25 13:07:09 +02001040 "numerics/sequence_number_util_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001041 ]
1042 deps = [
1043 ":rtc_base_approved",
1044 ":rtc_base_tests_main",
1045 ":rtc_numerics",
1046 "../test:test_support",
1047 ]
1048 }
1049
1050 config("rtc_base_unittests_config") {
1051 if (is_clang) {
1052 cflags = [ "-Wno-unused-const-variable" ]
1053 }
1054 }
1055 rtc_source_set("rtc_base_unittests") {
1056 testonly = true
1057
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001058 sources = [
1059 "callback_unittest.cc",
1060 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001061 "helpers_unittest.cc",
1062 "httpbase_unittest.cc",
1063 "httpcommon_unittest.cc",
1064 "httpserver_unittest.cc",
1065 "ipaddress_unittest.cc",
1066 "memory_usage_unittest.cc",
1067 "messagedigest_unittest.cc",
1068 "messagequeue_unittest.cc",
1069 "nat_unittest.cc",
1070 "network_unittest.cc",
1071 "optionsfile_unittest.cc",
1072 "proxy_unittest.cc",
1073 "ptr_util_unittest.cc",
1074 "ratelimiter_unittest.cc",
1075 "rollingaccumulator_unittest.cc",
1076 "rtccertificate_unittest.cc",
1077 "rtccertificategenerator_unittest.cc",
1078 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001079 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001080 "sigslot_unittest.cc",
1081 "sigslottester_unittest.cc",
1082 "stream_unittest.cc",
1083 "testclient_unittest.cc",
1084 "thread_unittest.cc",
1085 ]
1086 if (is_win) {
1087 sources += [
1088 "win32_unittest.cc",
1089 "win32window_unittest.cc",
1090 ]
1091 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001092 if (is_posix) {
1093 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001094 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001095 "ssladapter_unittest.cc",
1096 "sslidentity_unittest.cc",
1097 "sslstreamadapter_unittest.cc",
1098 ]
1099 }
1100 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001101 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001102 ":rtc_base_tests_main",
1103 ":rtc_base_tests_utils",
Patrik Höglund3e113432017-12-15 14:40:10 +01001104 ":stringutils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001105 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001106 "../test:test_support",
1107 ]
1108 public_deps = [
1109 ":rtc_base",
1110 ]
1111 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001112 if (build_with_chromium) {
1113 include_dirs = [ "../../boringssl/src/include" ]
1114 }
1115 if (rtc_build_ssl) {
1116 deps += [ "//third_party/boringssl" ]
1117 } else {
1118 configs += [ ":external_ssl_library" ]
1119 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001120 }
1121}
1122
Henrik Kjellander73e21802017-06-20 08:38:58 +02001123if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33 +00001124 rtc_android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001125 java_files = [
1126 "java/src/org/webrtc/ContextUtils.java",
1127 "java/src/org/webrtc/Logging.java",
1128 "java/src/org/webrtc/Size.java",
1129 "java/src/org/webrtc/ThreadUtils.java",
1130 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +02001131 }
1132}