blob: 74bb964aca367c302556c5aa469aa2ac89aaa8d8 [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
Dan Minor9c686132018-01-15 10:20:00 -050058if (!rtc_build_ssl && !build_with_mozilla) {
Henrik Kjellanderc0362762017-06-29 08:03:04 +020059 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") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000067 visibility = [ "*" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +020068 sources = [
69 "protobuf_utils.h",
70 ]
71 if (rtc_enable_protobuf) {
72 public_deps = [
73 "//third_party/protobuf:protobuf_lite",
74 ]
75 }
76}
77
78source_set("compile_assert_c") {
79 sources = [
80 "compile_assert_c.h",
81 ]
82}
83
mbonadeibc378472017-09-11 03:43:34 -070084rtc_source_set("rtc_base_approved") {
Per Kjellandera7f2d842018-01-10 15:54:53 +000085 visibility = [ "*" ]
mbonadeibc378472017-09-11 03:43:34 -070086 public_deps = [
87 ":rtc_base_approved_generic",
88 ]
89 if (is_mac && !build_with_chromium) {
90 public_deps += [ ":rtc_base_approved_objc" ]
91 }
92}
93
Patrik Höglunda8005cf2017-12-13 16:05:42 +010094rtc_source_set("checks") {
95 sources = [
96 "checks.cc",
97 "checks.h",
98 ]
99 deps = [
100 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100101 "..:typedefs",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100102 ]
103}
104
Patrik Höglund3e113432017-12-15 14:40:10 +0100105rtc_source_set("rate_limiter") {
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100106 sources = [
Patrik Höglund3e113432017-12-15 14:40:10 +0100107 "rate_limiter.cc",
108 "rate_limiter.h",
109 ]
110 deps = [
111 ":rtc_base_approved",
112 "../system_wrappers",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100113 ]
114}
115
116rtc_source_set("sanitizer") {
117 sources = [
118 "sanitizer.h",
119 ]
120}
121
122rtc_source_set("safe_compare") {
123 sources = [
124 "numerics/safe_compare.h",
125 ]
126 deps = [
127 ":type_traits",
128 ]
129}
130
Patrik Höglund3e113432017-12-15 14:40:10 +0100131rtc_source_set("stringutils") {
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100132 sources = [
Patrik Höglund3e113432017-12-15 14:40:10 +0100133 "stringutils.cc",
134 "stringutils.h",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100135 ]
136 deps = [
Patrik Höglund3e113432017-12-15 14:40:10 +0100137 ":checks",
138 ]
139}
140
141rtc_source_set("type_traits") {
142 sources = [
143 "type_traits.h",
144 ]
145}
146
147rtc_source_set("deprecation") {
148 sources = [
149 "deprecation.h",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100150 ]
151}
152
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200153# The subset of rtc_base approved for use outside of libjingle.
mbonadeibc378472017-09-11 03:43:34 -0700154rtc_source_set("rtc_base_approved_generic") {
155 visibility = [
156 ":rtc_base_approved",
157 ":rtc_base_approved_objc",
Tommi897e1362017-12-01 18:56:43 +0100158 ":weak_ptr_unittests",
mbonadeibc378472017-09-11 03:43:34 -0700159 ]
160
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100161 cflags = []
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200162 defines = []
163 libs = []
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100164 deps = [
165 ":checks",
166 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100167 ":stringutils",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100168 ":type_traits",
Patrik Höglund3e113432017-12-15 14:40:10 +0100169 "../:typedefs",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100170 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200171
172 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200173 "arraysize.h",
174 "atomicops.h",
175 "base64.cc",
176 "base64.h",
177 "basictypes.h",
178 "bind.h",
179 "bitbuffer.cc",
180 "bitbuffer.h",
Alex Narest78609d52017-10-20 10:37:47 +0200181 "bitrateallocationstrategy.cc",
182 "bitrateallocationstrategy.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200183 "buffer.h",
184 "bufferqueue.cc",
185 "bufferqueue.h",
186 "bytebuffer.cc",
187 "bytebuffer.h",
188 "byteorder.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200189 "constructormagic.h",
190 "copyonwritebuffer.cc",
191 "copyonwritebuffer.h",
192 "criticalsection.cc",
193 "criticalsection.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200194 "event_tracer.cc",
195 "event_tracer.h",
196 "file.cc",
197 "file.h",
198 "flags.cc",
199 "flags.h",
200 "format_macros.h",
201 "function_view.h",
202 "ignore_wundef.h",
203 "location.cc",
204 "location.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100205 "numerics/histogram_percentile_counter.cc",
206 "numerics/histogram_percentile_counter.h",
207 "numerics/mod_ops.h",
208 "numerics/moving_max_counter.h",
Karl Wiberge40468b2017-11-22 10:42:26 +0100209 "numerics/safe_conversions.h",
210 "numerics/safe_conversions_impl.h",
211 "numerics/safe_minmax.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200212 "onetimeevent.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200213 "pathutils.cc",
214 "pathutils.h",
215 "platform_file.cc",
216 "platform_file.h",
217 "platform_thread.cc",
218 "platform_thread.h",
219 "platform_thread_types.h",
220 "ptr_util.h",
221 "race_checker.cc",
222 "race_checker.h",
223 "random.cc",
224 "random.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200225 "rate_statistics.cc",
226 "rate_statistics.h",
227 "ratetracker.cc",
228 "ratetracker.h",
229 "refcount.h",
230 "refcountedobject.h",
Niels Möller9155e492017-10-23 11:22:30 +0200231 "refcounter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200232 "scoped_ref_ptr.h",
233 "string_to_number.cc",
234 "string_to_number.h",
235 "stringencode.cc",
236 "stringencode.h",
237 "stringize_macros.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200238 "swap_queue.h",
239 "template_util.h",
240 "thread_annotations.h",
241 "thread_checker.h",
242 "thread_checker_impl.cc",
243 "thread_checker_impl.h",
244 "timestampaligner.cc",
245 "timestampaligner.h",
246 "timeutils.cc",
247 "timeutils.h",
248 "trace_event.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200249 ]
250
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100251 deps += [
252 "..:webrtc_common",
253 "../api:array_view",
254 "../api:optional",
255 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200256
257 if (is_android) {
258 libs += [ "log" ]
259 }
260
261 if (is_posix) {
262 sources += [ "file_posix.cc" ]
263 }
264
265 if (is_win) {
266 sources += [ "file_win.cc" ]
267 }
268
269 if (build_with_chromium) {
270 # Dependency on chromium's logging (in //base).
271 deps += [ "//base:base" ]
272 sources += [
Tommi06483ca2017-11-26 18:22:52 +0100273 "../../webrtc_overrides/rtc_base/event.cc",
274 "../../webrtc_overrides/rtc_base/event.h",
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200275 "../../webrtc_overrides/rtc_base/logging.cc",
276 "../../webrtc_overrides/rtc_base/logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200277 ]
278 } else {
279 sources += [
Tommi06483ca2017-11-26 18:22:52 +0100280 "event.cc",
281 "event.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200282 "logging.cc",
283 "logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200284 ]
285 }
286 if (is_component_build && is_win) {
287 # Copy the VS runtime DLLs into the isolate so that they don't have to be
288 # preinstalled on the target machine. The debug runtimes have a "d" at
289 # the end.
290 # This is a copy of https://codereview.chromium.org/1783973002.
291 # TODO(ehmaldonado): We'd like Chromium to make this changes easier to use,
292 # so we don't have to copy their changes and risk breakages.
293 # See http://crbug.com/653569
294 if (is_debug) {
295 vcrt_suffix = "d"
296 } else {
297 vcrt_suffix = ""
298 }
299
300 # These runtime files are copied to the output directory by the
301 # vs_toolchain script that runs as part of toolchain configuration.
302 data = [
303 "$root_out_dir/msvcp140${vcrt_suffix}.dll",
304 "$root_out_dir/vccorlib140${vcrt_suffix}.dll",
305 "$root_out_dir/vcruntime140${vcrt_suffix}.dll",
306
307 # Universal Windows 10 CRT files
308 "$root_out_dir/api-ms-win-core-console-l1-1-0.dll",
309 "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll",
310 "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll",
311 "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll",
312 "$root_out_dir/api-ms-win-core-file-l1-1-0.dll",
313 "$root_out_dir/api-ms-win-core-file-l1-2-0.dll",
314 "$root_out_dir/api-ms-win-core-file-l2-1-0.dll",
315 "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll",
316 "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll",
317 "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll",
318 "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll",
319 "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll",
320 "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll",
321 "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll",
322 "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll",
323 "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll",
324 "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll",
325 "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll",
326 "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll",
327 "$root_out_dir/api-ms-win-core-string-l1-1-0.dll",
328 "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll",
329 "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll",
330 "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll",
331 "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll",
332 "$root_out_dir/api-ms-win-core-util-l1-1-0.dll",
333 "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll",
334 "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll",
335 "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll",
336 "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll",
337 "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll",
338 "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll",
339 "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll",
340 "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll",
341 "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll",
342 "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll",
343 "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll",
344 "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll",
345 "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll",
346 "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll",
347 "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll",
348 "$root_out_dir/ucrtbase${vcrt_suffix}.dll",
349 ]
350 if (is_asan) {
351 if (current_cpu == "x64") {
352 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ]
353 } else {
354 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ]
355 }
356 }
357 }
358 if (is_nacl) {
359 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
360 }
361}
362
mbonadeibc378472017-09-11 03:43:34 -0700363if (is_mac && !build_with_chromium) {
364 config("rtc_base_approved_objc_all_dependent_config") {
365 visibility = [ ":rtc_base_approved_objc" ]
366 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
367 }
368
369 rtc_source_set("rtc_base_approved_objc") {
370 visibility = [ ":rtc_base_approved" ]
371 all_dependent_configs = [ ":rtc_base_approved_objc_all_dependent_config" ]
372 sources = [
373 "logging_mac.mm",
374 ]
375 deps = [
376 ":rtc_base_approved_generic",
377 ]
378 }
379}
380
perkj650fdae2017-08-25 05:00:11 -0700381rtc_source_set("rtc_task_queue") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000382 visibility = [ "*" ]
mbonadei95c8f652017-08-27 23:40:10 -0700383 deps = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200384 ":rtc_base_approved",
mbonadei95c8f652017-08-27 23:40:10 -0700385 ]
386 public_deps = [
perkj650fdae2017-08-25 05:00:11 -0700387 ":rtc_task_queue_api",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200388 ]
389
perkj650fdae2017-08-25 05:00:11 -0700390 if (rtc_link_task_queue_impl) {
mbonadei95c8f652017-08-27 23:40:10 -0700391 deps += [ ":rtc_task_queue_impl" ]
perkj650fdae2017-08-25 05:00:11 -0700392 }
393}
394
395# WebRTC targets must not directly depend on rtc_task_queue_api or
396# rtc_task_queue_impl. Instead, depend on rtc_task_queue.
397# The build flag |rtc_link_task_queue_impl| decides if WebRTC targets will link
398# to the default implemenation in rtc_task_queue_impl or if an externally
399# provided implementation should be used. An external implementation should
400# depend on rtc_task_queue_api.
401rtc_source_set("rtc_task_queue_api") {
nisse75dd6d42017-09-19 08:28:00 -0700402 sources = [
403 "task_queue.h",
404 ]
perkj650fdae2017-08-25 05:00:11 -0700405 deps = [
406 ":rtc_base_approved",
407 ]
408}
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200409
perkj650fdae2017-08-25 05:00:11 -0700410rtc_source_set("rtc_task_queue_impl") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000411 visibility = [ "*" ]
perkj650fdae2017-08-25 05:00:11 -0700412 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100413 ":checks",
perkj650fdae2017-08-25 05:00:11 -0700414 ":rtc_base_approved",
415 ":rtc_task_queue_api",
416 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200417 if (rtc_build_libevent) {
418 deps += [ "//base/third_party/libevent" ]
419 }
420 if (rtc_enable_libevent) {
perkj650fdae2017-08-25 05:00:11 -0700421 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200422 "task_queue_libevent.cc",
423 "task_queue_posix.cc",
424 "task_queue_posix.h",
perkj650fdae2017-08-25 05:00:11 -0700425 ]
426 } else {
Niels Möller15c9cf72017-10-19 12:38:09 +0200427 if (is_mac || is_ios) {
Niels Möller17a04742017-09-27 10:53:21 +0200428 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200429 "task_queue_gcd.cc",
Henrik Boströma9a27712017-10-03 08:01:07 +0000430 "task_queue_posix.cc",
431 "task_queue_posix.h",
Niels Möller17a04742017-09-27 10:53:21 +0200432 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200433 }
434 if (is_win) {
435 sources = [
436 "task_queue_win.cc",
437 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200438 }
439 }
440}
441
442rtc_static_library("sequenced_task_checker") {
443 sources = [
444 "sequenced_task_checker.h",
445 "sequenced_task_checker_impl.cc",
446 "sequenced_task_checker_impl.h",
447 ]
448 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100449 ":checks",
mbonadei95c8f652017-08-27 23:40:10 -0700450 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200451 ":rtc_task_queue",
452 ]
453}
454
455rtc_static_library("weak_ptr") {
456 sources = [
457 "weak_ptr.cc",
458 "weak_ptr.h",
459 ]
460 deps = [
461 ":rtc_base_approved",
462 ":sequenced_task_checker",
463 ]
464}
465
466rtc_static_library("rtc_numerics") {
467 sources = [
468 "numerics/exp_filter.cc",
469 "numerics/exp_filter.h",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +0100470 "numerics/moving_median_filter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200471 "numerics/percentile_filter.h",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200472 "numerics/sequence_number_util.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200473 ]
474 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100475 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200476 ":rtc_base_approved",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100477 ":safe_compare",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200478 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200479 ]
480}
481
482config("rtc_base_warnings_config") {
483 if (is_win && is_clang) {
484 cflags = [
485 # Disable warnings failing when compiling with Clang on Windows.
486 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
487 "-Wno-sign-compare",
488 "-Wno-missing-braces",
489 ]
490 }
491}
492
493rtc_source_set("rtc_json") {
494 defines = []
495 sources = [
496 "json.cc",
497 "json.h",
498 ]
499 if (rtc_build_json) {
500 public_deps = [
501 "//third_party/jsoncpp",
502 ]
503 } else {
504 include_dirs = [ "$rtc_jsoncpp_root" ]
505
506 # When defined changes the include path for json.h to where it is
507 # expected to be when building json outside of the standalone build.
508 defines += [ "WEBRTC_EXTERNAL_JSON" ]
509 }
510}
511
mbonadei9c5e5112017-09-05 05:17:02 -0700512rtc_static_library("rtc_base") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000513 visibility = [ "*" ]
Dan Minor9c686132018-01-15 10:20:00 -0500514 public_deps = []
515 if (!build_with_mozilla) {
516 public_deps += [ ":rtc_base_generic" ]
517 }
mbonadei310e32b2017-09-07 07:36:28 -0700518 if (is_win) {
519 sources = [
520 "noop.cc",
521 ]
522 }
523 if (is_ios || is_mac) {
524 sources = [
525 "noop.mm",
526 ]
527 public_deps += [ ":rtc_base_objc" ]
528 }
529}
530
531if (is_ios || is_mac) {
532 rtc_source_set("rtc_base_objc") {
533 sources = [
534 "thread_darwin.mm",
535 ]
536 deps = [
537 ":rtc_base_generic",
538 ]
539 visibility = [ ":rtc_base" ]
540 }
541}
542
543rtc_static_library("rtc_base_generic") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200544 cflags = []
545 cflags_cc = []
546 libs = []
547 defines = []
548 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100549 ":checks",
Patrik Höglund3e113432017-12-15 14:40:10 +0100550 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200551 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 08:43:13 -0700552 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200553 ]
554 public_deps = [
555 ":rtc_base_approved",
556 ]
557 public_configs = []
558
559 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
560
561 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200562 "asyncinvoker-inl.h",
563 "asyncinvoker.cc",
564 "asyncinvoker.h",
565 "asyncpacketsocket.cc",
566 "asyncpacketsocket.h",
567 "asyncresolverinterface.cc",
568 "asyncresolverinterface.h",
569 "asyncsocket.cc",
570 "asyncsocket.h",
571 "asynctcpsocket.cc",
572 "asynctcpsocket.h",
573 "asyncudpsocket.cc",
574 "asyncudpsocket.h",
575 "crc32.cc",
576 "crc32.h",
577 "cryptstring.cc",
578 "cryptstring.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100579 "dscp.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200580 "filerotatingstream.cc",
581 "filerotatingstream.h",
582 "fileutils.cc",
583 "fileutils.h",
584 "gunit_prod.h",
585 "helpers.cc",
586 "helpers.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200587 "httpcommon-inl.h",
588 "httpcommon.cc",
589 "httpcommon.h",
590 "ipaddress.cc",
591 "ipaddress.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100592 "keep_ref_until_done.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200593 "messagedigest.cc",
594 "messagedigest.h",
595 "messagehandler.cc",
596 "messagehandler.h",
597 "messagequeue.cc",
598 "messagequeue.h",
Zhi Huang942bc2e2017-11-13 13:26:07 -0800599 "nethelper.cc",
600 "nethelper.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200601 "nethelpers.cc",
602 "nethelpers.h",
603 "network.cc",
604 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200605 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200606 "networkmonitor.cc",
607 "networkmonitor.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100608 "networkroute.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200609 "nullsocketserver.cc",
610 "nullsocketserver.h",
611 "openssl.h",
612 "openssladapter.cc",
613 "openssladapter.h",
614 "openssldigest.cc",
615 "openssldigest.h",
616 "opensslidentity.cc",
617 "opensslidentity.h",
618 "opensslstreamadapter.cc",
619 "opensslstreamadapter.h",
620 "physicalsocketserver.cc",
621 "physicalsocketserver.h",
622 "proxyinfo.cc",
623 "proxyinfo.h",
624 "ratelimiter.cc",
625 "ratelimiter.h",
626 "rtccertificate.cc",
627 "rtccertificate.h",
628 "rtccertificategenerator.cc",
629 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700630 "signalthread.cc",
631 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200632 "sigslot.cc",
633 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700634 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200635 "socket.h",
636 "socketadapters.cc",
637 "socketadapters.h",
638 "socketaddress.cc",
639 "socketaddress.h",
640 "socketaddresspair.cc",
641 "socketaddresspair.h",
642 "socketfactory.h",
643 "socketserver.h",
644 "socketstream.cc",
645 "socketstream.h",
646 "ssladapter.cc",
647 "ssladapter.h",
648 "sslfingerprint.cc",
649 "sslfingerprint.h",
650 "sslidentity.cc",
651 "sslidentity.h",
652 "sslstreamadapter.cc",
653 "sslstreamadapter.h",
654 "stream.cc",
655 "stream.h",
656 "thread.cc",
657 "thread.h",
658 ]
659
mbonadei310e32b2017-09-07 07:36:28 -0700660 visibility = [
661 ":rtc_base",
662 ":rtc_base_objc",
663 ]
664
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200665 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
666 # compiler settings.
667 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
668 configs += [ "//build/config/compiler:no_chromium_code" ]
669 if (!is_win) {
670 cflags += [ "-Wno-uninitialized" ]
671 }
672
673 if (build_with_chromium) {
674 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200675 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200676 }
677 include_dirs = [ "../../boringssl/src/include" ]
678 public_configs += [ ":rtc_base_chromium_config" ]
679 } else {
680 configs += [ ":rtc_base_warnings_config" ]
681 sources += [
682 "callback.h",
683 "logsinks.cc",
684 "logsinks.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100685 "numerics/mathutils.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200686 "optionsfile.cc",
687 "optionsfile.h",
688 "rollingaccumulator.h",
689 "sslroots.h",
690 "transformadapter.cc",
691 "transformadapter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200692 ]
693
694 if (is_win) {
695 sources += [
696 "win32socketinit.cc",
697 "win32socketinit.h",
698 "win32socketserver.cc",
699 "win32socketserver.h",
700 ]
701 }
702 } # !build_with_chromium
703
704 if (rtc_build_ssl) {
705 deps += [ "//third_party/boringssl" ]
Dan Minor9c686132018-01-15 10:20:00 -0500706 } else if (!build_with_mozilla) {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200707 configs += [ ":external_ssl_library" ]
708 }
709
710 if (is_android) {
711 sources += [
712 "ifaddrs-android.cc",
713 "ifaddrs-android.h",
714 ]
715
716 libs += [
717 "log",
718 "GLESv2",
719 ]
720 }
721
722 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700723 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200724 }
725
Joachim Bauch75f18fc2017-12-20 21:25:47 +0100726 if (rtc_use_x11) {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200727 libs += [
728 "dl",
729 "rt",
730 "Xext",
731 "X11",
732 "Xcomposite",
733 "Xrender",
734 ]
735 }
736
737 if (is_linux) {
738 libs += [
739 "dl",
740 "rt",
741 ]
742 }
743
744 if (is_mac) {
745 sources += [
746 "macutils.cc",
747 "macutils.h",
748 ]
749 libs += [
750 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
751 "ApplicationServices.framework",
752 ]
753 }
754
755 if (is_win) {
756 sources += [
757 "win32.cc",
758 "win32.h",
759 "win32filesystem.cc",
760 "win32filesystem.h",
761 "win32securityerrors.cc",
762 "win32window.cc",
763 "win32window.h",
764 ]
765
766 libs += [
767 "crypt32.lib",
768 "iphlpapi.lib",
769 "secur32.lib",
770 ]
771
772 cflags += [
773 # Suppress warnings about WIN32_LEAN_AND_MEAN.
774 "/wd4005",
775 "/wd4703",
776 ]
777
778 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
779 }
780
781 if (is_posix) {
782 sources += [
783 "ifaddrs_converter.cc",
784 "ifaddrs_converter.h",
785 "unixfilesystem.cc",
786 "unixfilesystem.h",
787 ]
788 }
789
790 if (is_nacl) {
791 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
792 defines += [ "timezone=_timezone" ]
793 sources -= [ "ifaddrs_converter.cc" ]
794 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200795}
796
797rtc_source_set("gtest_prod") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000798 visibility = [ "*" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200799 sources = [
800 "gtest_prod_util.h",
801 ]
802}
803
804config("rtc_base_tests_utils_exported_config") {
805 defines = [ "GTEST_RELATIVE_PATH" ]
806}
807
808config("rtc_base_tests_utils_warnings_config") {
809 if (is_win && is_clang) {
810 cflags = [
811 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
812 "-Wno-reorder",
813 "-Wno-sign-compare",
814 ]
815 }
816}
817
818rtc_source_set("rtc_base_tests_utils") {
819 testonly = true
820 sources = [
821 # Also use this as a convenient dumping ground for misc files that are
822 # included by multiple targets below.
823 "cpu_time.cc",
824 "cpu_time.h",
825 "fakeclock.cc",
826 "fakeclock.h",
827 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700828 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200829 "fakesslidentity.h",
830 "firewallsocketserver.cc",
831 "firewallsocketserver.h",
832 "gunit.h",
Niels Möller3c8a5f22017-12-15 16:04:21 +0100833 "httpbase.cc",
834 "httpbase.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200835 "httpserver.cc",
836 "httpserver.h",
837 "md5.cc",
838 "md5.h",
839 "md5digest.cc",
840 "md5digest.h",
841 "memory_usage.cc",
842 "memory_usage.h",
843 "natserver.cc",
844 "natserver.h",
845 "natsocketfactory.cc",
846 "natsocketfactory.h",
847 "nattypes.cc",
848 "nattypes.h",
849 "proxyserver.cc",
850 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200851 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200852 "sha1.cc",
853 "sha1.h",
854 "sha1digest.cc",
855 "sha1digest.h",
856 "sigslottester.h",
857 "sigslottester.h.pump",
858 "testbase64.h",
859 "testclient.cc",
860 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700861 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200862 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700863 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200864 "testutils.h",
865 "timedelta.h",
866 "virtualsocketserver.cc",
867 "virtualsocketserver.h",
868 ]
869 configs += [ ":rtc_base_tests_utils_warnings_config" ]
870 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
871 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100872 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200873 ":rtc_base",
Patrik Höglund3e113432017-12-15 14:40:10 +0100874 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200875 "../test:field_trial",
876 "../test:test_support",
877 ]
878 public_deps = [
879 "//testing/gmock",
880 "//testing/gtest",
881 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200882}
883
884if (rtc_include_tests) {
885 rtc_source_set("rtc_base_tests_main") {
886 testonly = true
887 sources = [
888 "unittest_main.cc",
889 ]
890 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
891 deps = [
892 ":rtc_base",
893 ":rtc_base_approved",
894 ":rtc_base_tests_utils",
895 "../test:field_trial",
896 "../test:test_support",
897 ]
898
899 public_deps = [
900 "//testing/gmock",
901 "//testing/gtest",
902 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200903 }
904
905 rtc_source_set("rtc_base_nonparallel_tests") {
906 testonly = true
907
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200908 sources = [
909 "cpu_time_unittest.cc",
910 "filerotatingstream_unittest.cc",
911 "nullsocketserver_unittest.cc",
912 "physicalsocketserver_unittest.cc",
913 "socket_unittest.cc",
914 "socket_unittest.h",
915 "socketaddress_unittest.cc",
916 ]
917 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100918 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200919 ":rtc_base",
920 ":rtc_base_tests_main",
921 ":rtc_base_tests_utils",
922 "../system_wrappers:system_wrappers",
923 "../test:test_support",
924 "//testing/gtest",
925 ]
926 if (is_win) {
927 sources += [ "win32socketserver_unittest.cc" ]
928 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200929 }
930
931 rtc_source_set("rtc_base_approved_unittests") {
932 testonly = true
933
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200934 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200935 "atomicops_unittest.cc",
936 "base64_unittest.cc",
937 "basictypes_unittest.cc",
938 "bind_unittest.cc",
939 "bitbuffer_unittest.cc",
Alex Narestd0e196b2017-11-22 17:22:35 +0100940 "bitrateallocationstrategy_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200941 "buffer_unittest.cc",
942 "bufferqueue_unittest.cc",
943 "bytebuffer_unittest.cc",
944 "byteorder_unittest.cc",
945 "copyonwritebuffer_unittest.cc",
946 "criticalsection_unittest.cc",
947 "event_tracer_unittest.cc",
948 "event_unittest.cc",
949 "file_unittest.cc",
950 "function_view_unittest.cc",
951 "logging_unittest.cc",
952 "md5digest_unittest.cc",
Karl Wiberg65c39222017-11-22 12:25:14 +0100953 "numerics/histogram_percentile_counter_unittest.cc",
954 "numerics/mod_ops_unittest.cc",
955 "numerics/moving_max_counter_unittest.cc",
Karl Wiberge40468b2017-11-22 10:42:26 +0100956 "numerics/safe_compare_unittest.cc",
957 "numerics/safe_minmax_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200958 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200959 "pathutils_unittest.cc",
960 "platform_thread_unittest.cc",
961 "random_unittest.cc",
962 "rate_limiter_unittest.cc",
963 "rate_statistics_unittest.cc",
964 "ratetracker_unittest.cc",
965 "refcountedobject_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200966 "string_to_number_unittest.cc",
967 "stringencode_unittest.cc",
968 "stringize_macros_unittest.cc",
969 "stringutils_unittest.cc",
970 "swap_queue_unittest.cc",
971 "thread_annotations_unittest.cc",
972 "thread_checker_unittest.cc",
973 "timestampaligner_unittest.cc",
974 "timeutils_unittest.cc",
975 "virtualsocket_unittest.cc",
976 ]
977 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100978 ":checks",
979 ":rate_limiter",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200980 ":rtc_base",
981 ":rtc_base_approved",
982 ":rtc_base_tests_main",
983 ":rtc_base_tests_utils",
984 ":rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100985 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100986 ":stringutils",
kwiberg529662a2017-09-04 05:43:17 -0700987 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200988 "../system_wrappers:system_wrappers",
989 "../test:test_support",
990 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200991 }
992
993 rtc_source_set("rtc_task_queue_unittests") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000994 visibility = [ "*" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200995 testonly = true
996
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200997 sources = [
998 "task_queue_unittest.cc",
999 ]
1000 deps = [
mbonadei95c8f652017-08-27 23:40:10 -07001001 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001002 ":rtc_base_tests_main",
1003 ":rtc_base_tests_utils",
1004 ":rtc_task_queue",
1005 "../test:test_support",
1006 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001007 }
1008
1009 rtc_source_set("sequenced_task_checker_unittests") {
1010 testonly = true
1011
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001012 sources = [
1013 "sequenced_task_checker_unittest.cc",
1014 ]
1015 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001016 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001017 ":rtc_base_approved",
1018 ":rtc_base_tests_main",
1019 ":rtc_task_queue",
1020 ":sequenced_task_checker",
1021 "../test:test_support",
1022 ]
1023 }
1024
1025 rtc_source_set("weak_ptr_unittests") {
1026 testonly = true
1027
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001028 sources = [
1029 "weak_ptr_unittest.cc",
1030 ]
1031 deps = [
Tommi897e1362017-12-01 18:56:43 +01001032 ":rtc_base_approved_generic",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001033 ":rtc_base_tests_main",
1034 ":rtc_base_tests_utils",
1035 ":rtc_task_queue",
1036 ":weak_ptr",
1037 "../test:test_support",
1038 ]
1039 }
1040
1041 rtc_source_set("rtc_numerics_unittests") {
1042 testonly = true
1043
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001044 sources = [
1045 "numerics/exp_filter_unittest.cc",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +01001046 "numerics/moving_median_filter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001047 "numerics/percentile_filter_unittest.cc",
Bjorn Tereliusa194e582017-10-25 13:07:09 +02001048 "numerics/sequence_number_util_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001049 ]
1050 deps = [
1051 ":rtc_base_approved",
1052 ":rtc_base_tests_main",
1053 ":rtc_numerics",
1054 "../test:test_support",
1055 ]
1056 }
1057
1058 config("rtc_base_unittests_config") {
1059 if (is_clang) {
1060 cflags = [ "-Wno-unused-const-variable" ]
1061 }
1062 }
1063 rtc_source_set("rtc_base_unittests") {
1064 testonly = true
1065
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001066 sources = [
1067 "callback_unittest.cc",
1068 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001069 "helpers_unittest.cc",
1070 "httpbase_unittest.cc",
1071 "httpcommon_unittest.cc",
1072 "httpserver_unittest.cc",
1073 "ipaddress_unittest.cc",
1074 "memory_usage_unittest.cc",
1075 "messagedigest_unittest.cc",
1076 "messagequeue_unittest.cc",
1077 "nat_unittest.cc",
1078 "network_unittest.cc",
1079 "optionsfile_unittest.cc",
1080 "proxy_unittest.cc",
1081 "ptr_util_unittest.cc",
1082 "ratelimiter_unittest.cc",
1083 "rollingaccumulator_unittest.cc",
1084 "rtccertificate_unittest.cc",
1085 "rtccertificategenerator_unittest.cc",
1086 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001087 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001088 "sigslot_unittest.cc",
1089 "sigslottester_unittest.cc",
1090 "stream_unittest.cc",
1091 "testclient_unittest.cc",
1092 "thread_unittest.cc",
1093 ]
1094 if (is_win) {
1095 sources += [
1096 "win32_unittest.cc",
1097 "win32window_unittest.cc",
1098 ]
1099 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001100 if (is_posix) {
1101 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001102 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001103 "ssladapter_unittest.cc",
1104 "sslidentity_unittest.cc",
1105 "sslstreamadapter_unittest.cc",
1106 ]
1107 }
1108 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001109 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001110 ":rtc_base_tests_main",
1111 ":rtc_base_tests_utils",
Patrik Höglund3e113432017-12-15 14:40:10 +01001112 ":stringutils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001113 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001114 "../test:test_support",
1115 ]
1116 public_deps = [
1117 ":rtc_base",
1118 ]
1119 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001120 if (build_with_chromium) {
1121 include_dirs = [ "../../boringssl/src/include" ]
1122 }
1123 if (rtc_build_ssl) {
1124 deps += [ "//third_party/boringssl" ]
1125 } else {
1126 configs += [ ":external_ssl_library" ]
1127 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001128 }
1129}
1130
Henrik Kjellander73e21802017-06-20 08:38:58 +02001131if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33 +00001132 rtc_android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001133 java_files = [
1134 "java/src/org/webrtc/ContextUtils.java",
1135 "java/src/org/webrtc/Logging.java",
1136 "java/src/org/webrtc/Size.java",
1137 "java/src/org/webrtc/ThreadUtils.java",
1138 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +02001139 }
1140}