blob: e64e4442dda7739bb1ffb601a62e88d4e716e607 [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",
99 "..:webrtc_common",
100 ]
101}
102
103rtc_source_set("type_traits") {
104 sources = [
105 "type_traits.h",
106 ]
107}
108
109rtc_source_set("sanitizer") {
110 sources = [
111 "sanitizer.h",
112 ]
113}
114
115rtc_source_set("safe_compare") {
116 sources = [
117 "numerics/safe_compare.h",
118 ]
119 deps = [
120 ":type_traits",
121 ]
122}
123
124rtc_source_set("rate_limiter") {
125 sources = [
126 "rate_limiter.cc",
127 "rate_limiter.h",
128 ]
129 deps = [
130 ":rtc_base_approved",
131 "../system_wrappers",
132 ]
133}
134
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200135# The subset of rtc_base approved for use outside of libjingle.
mbonadeibc378472017-09-11 03:43:34 -0700136rtc_source_set("rtc_base_approved_generic") {
137 visibility = [
138 ":rtc_base_approved",
139 ":rtc_base_approved_objc",
Tommi897e1362017-12-01 18:56:43 +0100140 ":weak_ptr_unittests",
mbonadeibc378472017-09-11 03:43:34 -0700141 ]
142
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100143 cflags = []
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200144 defines = []
145 libs = []
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100146 deps = [
147 ":checks",
148 ":safe_compare",
149 ":type_traits",
150 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200151
152 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200153 "arraysize.h",
154 "atomicops.h",
155 "base64.cc",
156 "base64.h",
157 "basictypes.h",
158 "bind.h",
159 "bitbuffer.cc",
160 "bitbuffer.h",
Alex Narest78609d52017-10-20 10:37:47 +0200161 "bitrateallocationstrategy.cc",
162 "bitrateallocationstrategy.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200163 "buffer.h",
164 "bufferqueue.cc",
165 "bufferqueue.h",
166 "bytebuffer.cc",
167 "bytebuffer.h",
168 "byteorder.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200169 "constructormagic.h",
170 "copyonwritebuffer.cc",
171 "copyonwritebuffer.h",
172 "criticalsection.cc",
173 "criticalsection.h",
174 "deprecation.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200175 "event_tracer.cc",
176 "event_tracer.h",
177 "file.cc",
178 "file.h",
179 "flags.cc",
180 "flags.h",
181 "format_macros.h",
182 "function_view.h",
183 "ignore_wundef.h",
184 "location.cc",
185 "location.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100186 "numerics/histogram_percentile_counter.cc",
187 "numerics/histogram_percentile_counter.h",
188 "numerics/mod_ops.h",
189 "numerics/moving_max_counter.h",
Karl Wiberge40468b2017-11-22 10:42:26 +0100190 "numerics/safe_conversions.h",
191 "numerics/safe_conversions_impl.h",
192 "numerics/safe_minmax.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200193 "onetimeevent.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200194 "pathutils.cc",
195 "pathutils.h",
196 "platform_file.cc",
197 "platform_file.h",
198 "platform_thread.cc",
199 "platform_thread.h",
200 "platform_thread_types.h",
201 "ptr_util.h",
202 "race_checker.cc",
203 "race_checker.h",
204 "random.cc",
205 "random.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200206 "rate_statistics.cc",
207 "rate_statistics.h",
208 "ratetracker.cc",
209 "ratetracker.h",
210 "refcount.h",
211 "refcountedobject.h",
Niels Möller9155e492017-10-23 11:22:30 +0200212 "refcounter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200213 "scoped_ref_ptr.h",
214 "string_to_number.cc",
215 "string_to_number.h",
216 "stringencode.cc",
217 "stringencode.h",
218 "stringize_macros.h",
219 "stringutils.cc",
220 "stringutils.h",
221 "swap_queue.h",
222 "template_util.h",
223 "thread_annotations.h",
224 "thread_checker.h",
225 "thread_checker_impl.cc",
226 "thread_checker_impl.h",
227 "timestampaligner.cc",
228 "timestampaligner.h",
229 "timeutils.cc",
230 "timeutils.h",
231 "trace_event.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200232 ]
233
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100234 deps += [
235 "..:webrtc_common",
236 "../api:array_view",
237 "../api:optional",
238 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200239
240 if (is_android) {
241 libs += [ "log" ]
242 }
243
244 if (is_posix) {
245 sources += [ "file_posix.cc" ]
246 }
247
248 if (is_win) {
249 sources += [ "file_win.cc" ]
250 }
251
252 if (build_with_chromium) {
253 # Dependency on chromium's logging (in //base).
254 deps += [ "//base:base" ]
255 sources += [
Tommi06483ca2017-11-26 18:22:52 +0100256 "../../webrtc_overrides/rtc_base/event.cc",
257 "../../webrtc_overrides/rtc_base/event.h",
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200258 "../../webrtc_overrides/rtc_base/logging.cc",
259 "../../webrtc_overrides/rtc_base/logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200260 ]
261 } else {
262 sources += [
Tommi06483ca2017-11-26 18:22:52 +0100263 "event.cc",
264 "event.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200265 "logging.cc",
266 "logging.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200267 ]
268 }
269 if (is_component_build && is_win) {
270 # Copy the VS runtime DLLs into the isolate so that they don't have to be
271 # preinstalled on the target machine. The debug runtimes have a "d" at
272 # the end.
273 # This is a copy of https://codereview.chromium.org/1783973002.
274 # TODO(ehmaldonado): We'd like Chromium to make this changes easier to use,
275 # so we don't have to copy their changes and risk breakages.
276 # See http://crbug.com/653569
277 if (is_debug) {
278 vcrt_suffix = "d"
279 } else {
280 vcrt_suffix = ""
281 }
282
283 # These runtime files are copied to the output directory by the
284 # vs_toolchain script that runs as part of toolchain configuration.
285 data = [
286 "$root_out_dir/msvcp140${vcrt_suffix}.dll",
287 "$root_out_dir/vccorlib140${vcrt_suffix}.dll",
288 "$root_out_dir/vcruntime140${vcrt_suffix}.dll",
289
290 # Universal Windows 10 CRT files
291 "$root_out_dir/api-ms-win-core-console-l1-1-0.dll",
292 "$root_out_dir/api-ms-win-core-datetime-l1-1-0.dll",
293 "$root_out_dir/api-ms-win-core-debug-l1-1-0.dll",
294 "$root_out_dir/api-ms-win-core-errorhandling-l1-1-0.dll",
295 "$root_out_dir/api-ms-win-core-file-l1-1-0.dll",
296 "$root_out_dir/api-ms-win-core-file-l1-2-0.dll",
297 "$root_out_dir/api-ms-win-core-file-l2-1-0.dll",
298 "$root_out_dir/api-ms-win-core-handle-l1-1-0.dll",
299 "$root_out_dir/api-ms-win-core-heap-l1-1-0.dll",
300 "$root_out_dir/api-ms-win-core-interlocked-l1-1-0.dll",
301 "$root_out_dir/api-ms-win-core-libraryloader-l1-1-0.dll",
302 "$root_out_dir/api-ms-win-core-localization-l1-2-0.dll",
303 "$root_out_dir/api-ms-win-core-memory-l1-1-0.dll",
304 "$root_out_dir/api-ms-win-core-namedpipe-l1-1-0.dll",
305 "$root_out_dir/api-ms-win-core-processenvironment-l1-1-0.dll",
306 "$root_out_dir/api-ms-win-core-processthreads-l1-1-0.dll",
307 "$root_out_dir/api-ms-win-core-processthreads-l1-1-1.dll",
308 "$root_out_dir/api-ms-win-core-profile-l1-1-0.dll",
309 "$root_out_dir/api-ms-win-core-rtlsupport-l1-1-0.dll",
310 "$root_out_dir/api-ms-win-core-string-l1-1-0.dll",
311 "$root_out_dir/api-ms-win-core-synch-l1-1-0.dll",
312 "$root_out_dir/api-ms-win-core-synch-l1-2-0.dll",
313 "$root_out_dir/api-ms-win-core-sysinfo-l1-1-0.dll",
314 "$root_out_dir/api-ms-win-core-timezone-l1-1-0.dll",
315 "$root_out_dir/api-ms-win-core-util-l1-1-0.dll",
316 "$root_out_dir/api-ms-win-crt-conio-l1-1-0.dll",
317 "$root_out_dir/api-ms-win-crt-convert-l1-1-0.dll",
318 "$root_out_dir/api-ms-win-crt-environment-l1-1-0.dll",
319 "$root_out_dir/api-ms-win-crt-filesystem-l1-1-0.dll",
320 "$root_out_dir/api-ms-win-crt-heap-l1-1-0.dll",
321 "$root_out_dir/api-ms-win-crt-locale-l1-1-0.dll",
322 "$root_out_dir/api-ms-win-crt-math-l1-1-0.dll",
323 "$root_out_dir/api-ms-win-crt-multibyte-l1-1-0.dll",
324 "$root_out_dir/api-ms-win-crt-private-l1-1-0.dll",
325 "$root_out_dir/api-ms-win-crt-process-l1-1-0.dll",
326 "$root_out_dir/api-ms-win-crt-runtime-l1-1-0.dll",
327 "$root_out_dir/api-ms-win-crt-stdio-l1-1-0.dll",
328 "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll",
329 "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll",
330 "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll",
331 "$root_out_dir/ucrtbase${vcrt_suffix}.dll",
332 ]
333 if (is_asan) {
334 if (current_cpu == "x64") {
335 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-x86_64.dll" ]
336 } else {
337 data += [ "$clang_base_path/lib/clang/$clang_version/lib/windows/clang_rt.asan_dynamic-i386.dll" ]
338 }
339 }
340 }
341 if (is_nacl) {
342 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
343 }
344}
345
mbonadeibc378472017-09-11 03:43:34 -0700346if (is_mac && !build_with_chromium) {
347 config("rtc_base_approved_objc_all_dependent_config") {
348 visibility = [ ":rtc_base_approved_objc" ]
349 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
350 }
351
352 rtc_source_set("rtc_base_approved_objc") {
353 visibility = [ ":rtc_base_approved" ]
354 all_dependent_configs = [ ":rtc_base_approved_objc_all_dependent_config" ]
355 sources = [
356 "logging_mac.mm",
357 ]
358 deps = [
359 ":rtc_base_approved_generic",
360 ]
361 }
362}
363
perkj650fdae2017-08-25 05:00:11 -0700364rtc_source_set("rtc_task_queue") {
mbonadei95c8f652017-08-27 23:40:10 -0700365 deps = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200366 ":rtc_base_approved",
mbonadei95c8f652017-08-27 23:40:10 -0700367 ]
368 public_deps = [
perkj650fdae2017-08-25 05:00:11 -0700369 ":rtc_task_queue_api",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200370 ]
371
perkj650fdae2017-08-25 05:00:11 -0700372 if (rtc_link_task_queue_impl) {
mbonadei95c8f652017-08-27 23:40:10 -0700373 deps += [ ":rtc_task_queue_impl" ]
perkj650fdae2017-08-25 05:00:11 -0700374 }
375}
376
377# WebRTC targets must not directly depend on rtc_task_queue_api or
378# rtc_task_queue_impl. Instead, depend on rtc_task_queue.
379# The build flag |rtc_link_task_queue_impl| decides if WebRTC targets will link
380# to the default implemenation in rtc_task_queue_impl or if an externally
381# provided implementation should be used. An external implementation should
382# depend on rtc_task_queue_api.
383rtc_source_set("rtc_task_queue_api") {
nisse75dd6d42017-09-19 08:28:00 -0700384 sources = [
385 "task_queue.h",
386 ]
perkj650fdae2017-08-25 05:00:11 -0700387 deps = [
388 ":rtc_base_approved",
389 ]
390}
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200391
perkj650fdae2017-08-25 05:00:11 -0700392rtc_source_set("rtc_task_queue_impl") {
393 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100394 ":checks",
perkj650fdae2017-08-25 05:00:11 -0700395 ":rtc_base_approved",
396 ":rtc_task_queue_api",
397 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200398 if (rtc_build_libevent) {
399 deps += [ "//base/third_party/libevent" ]
400 }
401 if (rtc_enable_libevent) {
perkj650fdae2017-08-25 05:00:11 -0700402 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200403 "task_queue_libevent.cc",
404 "task_queue_posix.cc",
405 "task_queue_posix.h",
perkj650fdae2017-08-25 05:00:11 -0700406 ]
407 } else {
Niels Möller15c9cf72017-10-19 12:38:09 +0200408 if (is_mac || is_ios) {
Niels Möller17a04742017-09-27 10:53:21 +0200409 sources = [
Niels Möller15c9cf72017-10-19 12:38:09 +0200410 "task_queue_gcd.cc",
Henrik Boströma9a27712017-10-03 08:01:07 +0000411 "task_queue_posix.cc",
412 "task_queue_posix.h",
Niels Möller17a04742017-09-27 10:53:21 +0200413 ]
Niels Möller15c9cf72017-10-19 12:38:09 +0200414 }
415 if (is_win) {
416 sources = [
417 "task_queue_win.cc",
418 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200419 }
420 }
421}
422
423rtc_static_library("sequenced_task_checker") {
424 sources = [
425 "sequenced_task_checker.h",
426 "sequenced_task_checker_impl.cc",
427 "sequenced_task_checker_impl.h",
428 ]
429 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100430 ":checks",
mbonadei95c8f652017-08-27 23:40:10 -0700431 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200432 ":rtc_task_queue",
433 ]
434}
435
436rtc_static_library("weak_ptr") {
437 sources = [
438 "weak_ptr.cc",
439 "weak_ptr.h",
440 ]
441 deps = [
442 ":rtc_base_approved",
443 ":sequenced_task_checker",
444 ]
445}
446
447rtc_static_library("rtc_numerics") {
448 sources = [
449 "numerics/exp_filter.cc",
450 "numerics/exp_filter.h",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +0100451 "numerics/moving_median_filter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200452 "numerics/percentile_filter.h",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200453 "numerics/sequence_number_util.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200454 ]
455 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100456 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200457 ":rtc_base_approved",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100458 ":safe_compare",
Bjorn Tereliusa194e582017-10-25 13:07:09 +0200459 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200460 ]
461}
462
463config("rtc_base_warnings_config") {
464 if (is_win && is_clang) {
465 cflags = [
466 # Disable warnings failing when compiling with Clang on Windows.
467 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
468 "-Wno-sign-compare",
469 "-Wno-missing-braces",
470 ]
471 }
472}
473
474rtc_source_set("rtc_json") {
475 defines = []
476 sources = [
477 "json.cc",
478 "json.h",
479 ]
480 if (rtc_build_json) {
481 public_deps = [
482 "//third_party/jsoncpp",
483 ]
484 } else {
485 include_dirs = [ "$rtc_jsoncpp_root" ]
486
487 # When defined changes the include path for json.h to where it is
488 # expected to be when building json outside of the standalone build.
489 defines += [ "WEBRTC_EXTERNAL_JSON" ]
490 }
491}
492
mbonadei9c5e5112017-09-05 05:17:02 -0700493rtc_static_library("rtc_base") {
mbonadei310e32b2017-09-07 07:36:28 -0700494 public_deps = [
495 ":rtc_base_generic",
496 ]
497 if (is_win) {
498 sources = [
499 "noop.cc",
500 ]
501 }
502 if (is_ios || is_mac) {
503 sources = [
504 "noop.mm",
505 ]
506 public_deps += [ ":rtc_base_objc" ]
507 }
508}
509
510if (is_ios || is_mac) {
511 rtc_source_set("rtc_base_objc") {
512 sources = [
513 "thread_darwin.mm",
514 ]
515 deps = [
516 ":rtc_base_generic",
517 ]
518 visibility = [ ":rtc_base" ]
519 }
520}
521
522rtc_static_library("rtc_base_generic") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200523 cflags = []
524 cflags_cc = []
525 libs = []
526 defines = []
527 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100528 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200529 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 08:43:13 -0700530 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200531 ]
532 public_deps = [
533 ":rtc_base_approved",
534 ]
535 public_configs = []
536
537 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
538
539 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200540 "asyncinvoker-inl.h",
541 "asyncinvoker.cc",
542 "asyncinvoker.h",
543 "asyncpacketsocket.cc",
544 "asyncpacketsocket.h",
545 "asyncresolverinterface.cc",
546 "asyncresolverinterface.h",
547 "asyncsocket.cc",
548 "asyncsocket.h",
549 "asynctcpsocket.cc",
550 "asynctcpsocket.h",
551 "asyncudpsocket.cc",
552 "asyncudpsocket.h",
553 "crc32.cc",
554 "crc32.h",
555 "cryptstring.cc",
556 "cryptstring.h",
557 "filerotatingstream.cc",
558 "filerotatingstream.h",
559 "fileutils.cc",
560 "fileutils.h",
561 "gunit_prod.h",
562 "helpers.cc",
563 "helpers.h",
564 "httpbase.cc",
565 "httpbase.h",
566 "httpcommon-inl.h",
567 "httpcommon.cc",
568 "httpcommon.h",
569 "ipaddress.cc",
570 "ipaddress.h",
571 "messagedigest.cc",
572 "messagedigest.h",
573 "messagehandler.cc",
574 "messagehandler.h",
575 "messagequeue.cc",
576 "messagequeue.h",
Zhi Huang942bc2e2017-11-13 13:26:07 -0800577 "nethelper.cc",
578 "nethelper.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200579 "nethelpers.cc",
580 "nethelpers.h",
581 "network.cc",
582 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200583 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200584 "networkmonitor.cc",
585 "networkmonitor.h",
586 "nullsocketserver.cc",
587 "nullsocketserver.h",
588 "openssl.h",
589 "openssladapter.cc",
590 "openssladapter.h",
591 "openssldigest.cc",
592 "openssldigest.h",
593 "opensslidentity.cc",
594 "opensslidentity.h",
595 "opensslstreamadapter.cc",
596 "opensslstreamadapter.h",
597 "physicalsocketserver.cc",
598 "physicalsocketserver.h",
599 "proxyinfo.cc",
600 "proxyinfo.h",
601 "ratelimiter.cc",
602 "ratelimiter.h",
603 "rtccertificate.cc",
604 "rtccertificate.h",
605 "rtccertificategenerator.cc",
606 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700607 "signalthread.cc",
608 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200609 "sigslot.cc",
610 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700611 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200612 "socket.h",
613 "socketadapters.cc",
614 "socketadapters.h",
615 "socketaddress.cc",
616 "socketaddress.h",
617 "socketaddresspair.cc",
618 "socketaddresspair.h",
619 "socketfactory.h",
620 "socketserver.h",
621 "socketstream.cc",
622 "socketstream.h",
623 "ssladapter.cc",
624 "ssladapter.h",
625 "sslfingerprint.cc",
626 "sslfingerprint.h",
627 "sslidentity.cc",
628 "sslidentity.h",
629 "sslstreamadapter.cc",
630 "sslstreamadapter.h",
631 "stream.cc",
632 "stream.h",
633 "thread.cc",
634 "thread.h",
635 ]
636
mbonadei310e32b2017-09-07 07:36:28 -0700637 visibility = [
638 ":rtc_base",
639 ":rtc_base_objc",
640 ]
641
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200642 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
643 # compiler settings.
644 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
645 configs += [ "//build/config/compiler:no_chromium_code" ]
646 if (!is_win) {
647 cflags += [ "-Wno-uninitialized" ]
648 }
649
650 if (build_with_chromium) {
651 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200652 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200653 }
654 include_dirs = [ "../../boringssl/src/include" ]
655 public_configs += [ ":rtc_base_chromium_config" ]
656 } else {
657 configs += [ ":rtc_base_warnings_config" ]
658 sources += [
659 "callback.h",
660 "logsinks.cc",
661 "logsinks.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100662 "numerics/mathutils.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200663 "optionsfile.cc",
664 "optionsfile.h",
665 "rollingaccumulator.h",
666 "sslroots.h",
667 "transformadapter.cc",
668 "transformadapter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200669 ]
670
671 if (is_win) {
672 sources += [
673 "win32socketinit.cc",
674 "win32socketinit.h",
675 "win32socketserver.cc",
676 "win32socketserver.h",
677 ]
678 }
679 } # !build_with_chromium
680
681 if (rtc_build_ssl) {
682 deps += [ "//third_party/boringssl" ]
683 } else {
684 configs += [ ":external_ssl_library" ]
685 }
686
687 if (is_android) {
688 sources += [
689 "ifaddrs-android.cc",
690 "ifaddrs-android.h",
691 ]
692
693 libs += [
694 "log",
695 "GLESv2",
696 ]
697 }
698
699 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700700 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200701 }
702
703 if (use_x11) {
704 libs += [
705 "dl",
706 "rt",
707 "Xext",
708 "X11",
709 "Xcomposite",
710 "Xrender",
711 ]
712 }
713
714 if (is_linux) {
715 libs += [
716 "dl",
717 "rt",
718 ]
719 }
720
721 if (is_mac) {
722 sources += [
723 "macutils.cc",
724 "macutils.h",
725 ]
726 libs += [
727 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
728 "ApplicationServices.framework",
729 ]
730 }
731
732 if (is_win) {
733 sources += [
734 "win32.cc",
735 "win32.h",
736 "win32filesystem.cc",
737 "win32filesystem.h",
738 "win32securityerrors.cc",
739 "win32window.cc",
740 "win32window.h",
741 ]
742
743 libs += [
744 "crypt32.lib",
745 "iphlpapi.lib",
746 "secur32.lib",
747 ]
748
749 cflags += [
750 # Suppress warnings about WIN32_LEAN_AND_MEAN.
751 "/wd4005",
752 "/wd4703",
753 ]
754
755 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
756 }
757
758 if (is_posix) {
759 sources += [
760 "ifaddrs_converter.cc",
761 "ifaddrs_converter.h",
762 "unixfilesystem.cc",
763 "unixfilesystem.h",
764 ]
765 }
766
767 if (is_nacl) {
768 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
769 defines += [ "timezone=_timezone" ]
770 sources -= [ "ifaddrs_converter.cc" ]
771 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200772}
773
774rtc_source_set("gtest_prod") {
775 sources = [
776 "gtest_prod_util.h",
777 ]
778}
779
780config("rtc_base_tests_utils_exported_config") {
781 defines = [ "GTEST_RELATIVE_PATH" ]
782}
783
784config("rtc_base_tests_utils_warnings_config") {
785 if (is_win && is_clang) {
786 cflags = [
787 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
788 "-Wno-reorder",
789 "-Wno-sign-compare",
790 ]
791 }
792}
793
794rtc_source_set("rtc_base_tests_utils") {
795 testonly = true
796 sources = [
797 # Also use this as a convenient dumping ground for misc files that are
798 # included by multiple targets below.
799 "cpu_time.cc",
800 "cpu_time.h",
801 "fakeclock.cc",
802 "fakeclock.h",
803 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700804 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200805 "fakesslidentity.h",
806 "firewallsocketserver.cc",
807 "firewallsocketserver.h",
808 "gunit.h",
809 "httpserver.cc",
810 "httpserver.h",
811 "md5.cc",
812 "md5.h",
813 "md5digest.cc",
814 "md5digest.h",
815 "memory_usage.cc",
816 "memory_usage.h",
817 "natserver.cc",
818 "natserver.h",
819 "natsocketfactory.cc",
820 "natsocketfactory.h",
821 "nattypes.cc",
822 "nattypes.h",
823 "proxyserver.cc",
824 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200825 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200826 "sha1.cc",
827 "sha1.h",
828 "sha1digest.cc",
829 "sha1digest.h",
830 "sigslottester.h",
831 "sigslottester.h.pump",
832 "testbase64.h",
833 "testclient.cc",
834 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700835 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200836 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700837 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200838 "testutils.h",
839 "timedelta.h",
840 "virtualsocketserver.cc",
841 "virtualsocketserver.h",
842 ]
843 configs += [ ":rtc_base_tests_utils_warnings_config" ]
844 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
845 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100846 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200847 ":rtc_base",
848 "../test:field_trial",
849 "../test:test_support",
850 ]
851 public_deps = [
852 "//testing/gmock",
853 "//testing/gtest",
854 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200855}
856
857if (rtc_include_tests) {
858 rtc_source_set("rtc_base_tests_main") {
859 testonly = true
860 sources = [
861 "unittest_main.cc",
862 ]
863 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
864 deps = [
865 ":rtc_base",
866 ":rtc_base_approved",
867 ":rtc_base_tests_utils",
868 "../test:field_trial",
869 "../test:test_support",
870 ]
871
872 public_deps = [
873 "//testing/gmock",
874 "//testing/gtest",
875 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200876 }
877
878 rtc_source_set("rtc_base_nonparallel_tests") {
879 testonly = true
880
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200881 sources = [
882 "cpu_time_unittest.cc",
883 "filerotatingstream_unittest.cc",
884 "nullsocketserver_unittest.cc",
885 "physicalsocketserver_unittest.cc",
886 "socket_unittest.cc",
887 "socket_unittest.h",
888 "socketaddress_unittest.cc",
889 ]
890 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100891 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200892 ":rtc_base",
893 ":rtc_base_tests_main",
894 ":rtc_base_tests_utils",
895 "../system_wrappers:system_wrappers",
896 "../test:test_support",
897 "//testing/gtest",
898 ]
899 if (is_win) {
900 sources += [ "win32socketserver_unittest.cc" ]
901 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200902 }
903
904 rtc_source_set("rtc_base_approved_unittests") {
905 testonly = true
906
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200907 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200908 "atomicops_unittest.cc",
909 "base64_unittest.cc",
910 "basictypes_unittest.cc",
911 "bind_unittest.cc",
912 "bitbuffer_unittest.cc",
Alex Narestd0e196b2017-11-22 17:22:35 +0100913 "bitrateallocationstrategy_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200914 "buffer_unittest.cc",
915 "bufferqueue_unittest.cc",
916 "bytebuffer_unittest.cc",
917 "byteorder_unittest.cc",
918 "copyonwritebuffer_unittest.cc",
919 "criticalsection_unittest.cc",
920 "event_tracer_unittest.cc",
921 "event_unittest.cc",
922 "file_unittest.cc",
923 "function_view_unittest.cc",
924 "logging_unittest.cc",
925 "md5digest_unittest.cc",
Karl Wiberg65c39222017-11-22 12:25:14 +0100926 "numerics/histogram_percentile_counter_unittest.cc",
927 "numerics/mod_ops_unittest.cc",
928 "numerics/moving_max_counter_unittest.cc",
Karl Wiberge40468b2017-11-22 10:42:26 +0100929 "numerics/safe_compare_unittest.cc",
930 "numerics/safe_minmax_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200931 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200932 "pathutils_unittest.cc",
933 "platform_thread_unittest.cc",
934 "random_unittest.cc",
935 "rate_limiter_unittest.cc",
936 "rate_statistics_unittest.cc",
937 "ratetracker_unittest.cc",
938 "refcountedobject_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200939 "string_to_number_unittest.cc",
940 "stringencode_unittest.cc",
941 "stringize_macros_unittest.cc",
942 "stringutils_unittest.cc",
943 "swap_queue_unittest.cc",
944 "thread_annotations_unittest.cc",
945 "thread_checker_unittest.cc",
946 "timestampaligner_unittest.cc",
947 "timeutils_unittest.cc",
948 "virtualsocket_unittest.cc",
949 ]
950 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100951 ":checks",
952 ":rate_limiter",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200953 ":rtc_base",
954 ":rtc_base_approved",
955 ":rtc_base_tests_main",
956 ":rtc_base_tests_utils",
957 ":rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100958 ":safe_compare",
kwiberg529662a2017-09-04 05:43:17 -0700959 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200960 "../system_wrappers:system_wrappers",
961 "../test:test_support",
962 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200963 }
964
965 rtc_source_set("rtc_task_queue_unittests") {
966 testonly = true
967
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200968 sources = [
969 "task_queue_unittest.cc",
970 ]
971 deps = [
mbonadei95c8f652017-08-27 23:40:10 -0700972 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200973 ":rtc_base_tests_main",
974 ":rtc_base_tests_utils",
975 ":rtc_task_queue",
976 "../test:test_support",
977 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200978 }
979
980 rtc_source_set("sequenced_task_checker_unittests") {
981 testonly = true
982
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200983 sources = [
984 "sequenced_task_checker_unittest.cc",
985 ]
986 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100987 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200988 ":rtc_base_approved",
989 ":rtc_base_tests_main",
990 ":rtc_task_queue",
991 ":sequenced_task_checker",
992 "../test:test_support",
993 ]
994 }
995
996 rtc_source_set("weak_ptr_unittests") {
997 testonly = true
998
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200999 sources = [
1000 "weak_ptr_unittest.cc",
1001 ]
1002 deps = [
Tommi897e1362017-12-01 18:56:43 +01001003 ":rtc_base_approved_generic",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001004 ":rtc_base_tests_main",
1005 ":rtc_base_tests_utils",
1006 ":rtc_task_queue",
1007 ":weak_ptr",
1008 "../test:test_support",
1009 ]
1010 }
1011
1012 rtc_source_set("rtc_numerics_unittests") {
1013 testonly = true
1014
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001015 sources = [
1016 "numerics/exp_filter_unittest.cc",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +01001017 "numerics/moving_median_filter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001018 "numerics/percentile_filter_unittest.cc",
Bjorn Tereliusa194e582017-10-25 13:07:09 +02001019 "numerics/sequence_number_util_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001020 ]
1021 deps = [
1022 ":rtc_base_approved",
1023 ":rtc_base_tests_main",
1024 ":rtc_numerics",
1025 "../test:test_support",
1026 ]
1027 }
1028
1029 config("rtc_base_unittests_config") {
1030 if (is_clang) {
1031 cflags = [ "-Wno-unused-const-variable" ]
1032 }
1033 }
1034 rtc_source_set("rtc_base_unittests") {
1035 testonly = true
1036
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001037 sources = [
1038 "callback_unittest.cc",
1039 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001040 "helpers_unittest.cc",
1041 "httpbase_unittest.cc",
1042 "httpcommon_unittest.cc",
1043 "httpserver_unittest.cc",
1044 "ipaddress_unittest.cc",
1045 "memory_usage_unittest.cc",
1046 "messagedigest_unittest.cc",
1047 "messagequeue_unittest.cc",
1048 "nat_unittest.cc",
1049 "network_unittest.cc",
1050 "optionsfile_unittest.cc",
1051 "proxy_unittest.cc",
1052 "ptr_util_unittest.cc",
1053 "ratelimiter_unittest.cc",
1054 "rollingaccumulator_unittest.cc",
1055 "rtccertificate_unittest.cc",
1056 "rtccertificategenerator_unittest.cc",
1057 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001058 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001059 "sigslot_unittest.cc",
1060 "sigslottester_unittest.cc",
1061 "stream_unittest.cc",
1062 "testclient_unittest.cc",
1063 "thread_unittest.cc",
1064 ]
1065 if (is_win) {
1066 sources += [
1067 "win32_unittest.cc",
1068 "win32window_unittest.cc",
1069 ]
1070 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001071 if (is_posix) {
1072 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001073 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001074 "ssladapter_unittest.cc",
1075 "sslidentity_unittest.cc",
1076 "sslstreamadapter_unittest.cc",
1077 ]
1078 }
1079 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001080 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001081 ":rtc_base_tests_main",
1082 ":rtc_base_tests_utils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001083 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001084 "../test:test_support",
1085 ]
1086 public_deps = [
1087 ":rtc_base",
1088 ]
1089 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001090 if (build_with_chromium) {
1091 include_dirs = [ "../../boringssl/src/include" ]
1092 }
1093 if (rtc_build_ssl) {
1094 deps += [ "//third_party/boringssl" ]
1095 } else {
1096 configs += [ ":external_ssl_library" ]
1097 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001098 }
1099}
1100
Henrik Kjellander73e21802017-06-20 08:38:58 +02001101if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33 +00001102 rtc_android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001103 java_files = [
1104 "java/src/org/webrtc/ContextUtils.java",
1105 "java/src/org/webrtc/Logging.java",
1106 "java/src/org/webrtc/Size.java",
1107 "java/src/org/webrtc/ThreadUtils.java",
1108 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +02001109 }
1110}