blob: 479f67f66bf5108a47b8b1953dc2449327ca616d [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") {
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 = [ "*" ]
mbonadei310e32b2017-09-07 07:36:28 -0700514 public_deps = [
515 ":rtc_base_generic",
516 ]
517 if (is_win) {
518 sources = [
519 "noop.cc",
520 ]
521 }
522 if (is_ios || is_mac) {
523 sources = [
524 "noop.mm",
525 ]
526 public_deps += [ ":rtc_base_objc" ]
527 }
528}
529
530if (is_ios || is_mac) {
531 rtc_source_set("rtc_base_objc") {
532 sources = [
533 "thread_darwin.mm",
534 ]
535 deps = [
536 ":rtc_base_generic",
537 ]
538 visibility = [ ":rtc_base" ]
539 }
540}
541
542rtc_static_library("rtc_base_generic") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200543 cflags = []
544 cflags_cc = []
545 libs = []
546 defines = []
547 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100548 ":checks",
Patrik Höglund3e113432017-12-15 14:40:10 +0100549 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200550 "..:webrtc_common",
kwiberg84f6a3f2017-09-05 08:43:13 -0700551 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200552 ]
553 public_deps = [
554 ":rtc_base_approved",
555 ]
556 public_configs = []
557
558 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
559
560 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200561 "asyncinvoker-inl.h",
562 "asyncinvoker.cc",
563 "asyncinvoker.h",
564 "asyncpacketsocket.cc",
565 "asyncpacketsocket.h",
566 "asyncresolverinterface.cc",
567 "asyncresolverinterface.h",
568 "asyncsocket.cc",
569 "asyncsocket.h",
570 "asynctcpsocket.cc",
571 "asynctcpsocket.h",
572 "asyncudpsocket.cc",
573 "asyncudpsocket.h",
574 "crc32.cc",
575 "crc32.h",
576 "cryptstring.cc",
577 "cryptstring.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100578 "dscp.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200579 "filerotatingstream.cc",
580 "filerotatingstream.h",
581 "fileutils.cc",
582 "fileutils.h",
583 "gunit_prod.h",
584 "helpers.cc",
585 "helpers.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200586 "httpcommon-inl.h",
587 "httpcommon.cc",
588 "httpcommon.h",
589 "ipaddress.cc",
590 "ipaddress.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100591 "keep_ref_until_done.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200592 "messagedigest.cc",
593 "messagedigest.h",
594 "messagehandler.cc",
595 "messagehandler.h",
596 "messagequeue.cc",
597 "messagequeue.h",
Zhi Huang942bc2e2017-11-13 13:26:07 -0800598 "nethelper.cc",
599 "nethelper.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200600 "nethelpers.cc",
601 "nethelpers.h",
602 "network.cc",
603 "network.h",
Patrik Höglunde2d6a062017-10-05 14:53:33 +0200604 "network_constants.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200605 "networkmonitor.cc",
606 "networkmonitor.h",
Patrik Höglund76df0df2017-12-19 11:50:21 +0100607 "networkroute.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200608 "nullsocketserver.cc",
609 "nullsocketserver.h",
610 "openssl.h",
611 "openssladapter.cc",
612 "openssladapter.h",
613 "openssldigest.cc",
614 "openssldigest.h",
615 "opensslidentity.cc",
616 "opensslidentity.h",
617 "opensslstreamadapter.cc",
618 "opensslstreamadapter.h",
619 "physicalsocketserver.cc",
620 "physicalsocketserver.h",
621 "proxyinfo.cc",
622 "proxyinfo.h",
623 "ratelimiter.cc",
624 "ratelimiter.h",
625 "rtccertificate.cc",
626 "rtccertificate.h",
627 "rtccertificategenerator.cc",
628 "rtccertificategenerator.h",
deadbeef8290ddf2017-07-11 16:56:05 -0700629 "signalthread.cc",
630 "signalthread.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200631 "sigslot.cc",
632 "sigslot.h",
Taylor Brandstettere68b6c92017-10-05 09:13:55 -0700633 "sigslotrepeater.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200634 "socket.h",
635 "socketadapters.cc",
636 "socketadapters.h",
637 "socketaddress.cc",
638 "socketaddress.h",
639 "socketaddresspair.cc",
640 "socketaddresspair.h",
641 "socketfactory.h",
642 "socketserver.h",
643 "socketstream.cc",
644 "socketstream.h",
645 "ssladapter.cc",
646 "ssladapter.h",
647 "sslfingerprint.cc",
648 "sslfingerprint.h",
649 "sslidentity.cc",
650 "sslidentity.h",
651 "sslstreamadapter.cc",
652 "sslstreamadapter.h",
653 "stream.cc",
654 "stream.h",
655 "thread.cc",
656 "thread.h",
657 ]
658
mbonadei310e32b2017-09-07 07:36:28 -0700659 visibility = [
660 ":rtc_base",
661 ":rtc_base_objc",
662 ]
663
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200664 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
665 # compiler settings.
666 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
667 configs += [ "//build/config/compiler:no_chromium_code" ]
668 if (!is_win) {
669 cflags += [ "-Wno-uninitialized" ]
670 }
671
672 if (build_with_chromium) {
673 if (is_win) {
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200674 sources += [ "../../webrtc_overrides/rtc_base/win32socketinit.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200675 }
676 include_dirs = [ "../../boringssl/src/include" ]
677 public_configs += [ ":rtc_base_chromium_config" ]
678 } else {
679 configs += [ ":rtc_base_warnings_config" ]
680 sources += [
681 "callback.h",
682 "logsinks.cc",
683 "logsinks.h",
Karl Wiberg65c39222017-11-22 12:25:14 +0100684 "numerics/mathutils.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200685 "optionsfile.cc",
686 "optionsfile.h",
687 "rollingaccumulator.h",
688 "sslroots.h",
689 "transformadapter.cc",
690 "transformadapter.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200691 ]
692
693 if (is_win) {
694 sources += [
695 "win32socketinit.cc",
696 "win32socketinit.h",
697 "win32socketserver.cc",
698 "win32socketserver.h",
699 ]
700 }
701 } # !build_with_chromium
702
703 if (rtc_build_ssl) {
704 deps += [ "//third_party/boringssl" ]
705 } else {
706 configs += [ ":external_ssl_library" ]
707 }
708
709 if (is_android) {
710 sources += [
711 "ifaddrs-android.cc",
712 "ifaddrs-android.h",
713 ]
714
715 libs += [
716 "log",
717 "GLESv2",
718 ]
719 }
720
721 if (is_ios || is_mac) {
mbonadei310e32b2017-09-07 07:36:28 -0700722 sources += [ "macifaddrs_converter.cc" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200723 }
724
Joachim Bauch75f18fc2017-12-20 21:25:47 +0100725 if (rtc_use_x11) {
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200726 libs += [
727 "dl",
728 "rt",
729 "Xext",
730 "X11",
731 "Xcomposite",
732 "Xrender",
733 ]
734 }
735
736 if (is_linux) {
737 libs += [
738 "dl",
739 "rt",
740 ]
741 }
742
743 if (is_mac) {
744 sources += [
745 "macutils.cc",
746 "macutils.h",
747 ]
748 libs += [
749 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
750 "ApplicationServices.framework",
751 ]
752 }
753
754 if (is_win) {
755 sources += [
756 "win32.cc",
757 "win32.h",
758 "win32filesystem.cc",
759 "win32filesystem.h",
760 "win32securityerrors.cc",
761 "win32window.cc",
762 "win32window.h",
763 ]
764
765 libs += [
766 "crypt32.lib",
767 "iphlpapi.lib",
768 "secur32.lib",
769 ]
770
771 cflags += [
772 # Suppress warnings about WIN32_LEAN_AND_MEAN.
773 "/wd4005",
774 "/wd4703",
775 ]
776
777 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
778 }
779
780 if (is_posix) {
781 sources += [
782 "ifaddrs_converter.cc",
783 "ifaddrs_converter.h",
784 "unixfilesystem.cc",
785 "unixfilesystem.h",
786 ]
787 }
788
789 if (is_nacl) {
790 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
791 defines += [ "timezone=_timezone" ]
792 sources -= [ "ifaddrs_converter.cc" ]
793 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200794}
795
796rtc_source_set("gtest_prod") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000797 visibility = [ "*" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200798 sources = [
799 "gtest_prod_util.h",
800 ]
801}
802
803config("rtc_base_tests_utils_exported_config") {
804 defines = [ "GTEST_RELATIVE_PATH" ]
805}
806
807config("rtc_base_tests_utils_warnings_config") {
808 if (is_win && is_clang) {
809 cflags = [
810 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
811 "-Wno-reorder",
812 "-Wno-sign-compare",
813 ]
814 }
815}
816
817rtc_source_set("rtc_base_tests_utils") {
818 testonly = true
819 sources = [
820 # Also use this as a convenient dumping ground for misc files that are
821 # included by multiple targets below.
822 "cpu_time.cc",
823 "cpu_time.h",
824 "fakeclock.cc",
825 "fakeclock.h",
826 "fakenetwork.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700827 "fakesslidentity.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200828 "fakesslidentity.h",
829 "firewallsocketserver.cc",
830 "firewallsocketserver.h",
831 "gunit.h",
Niels Möller3c8a5f22017-12-15 16:04:21 +0100832 "httpbase.cc",
833 "httpbase.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200834 "httpserver.cc",
835 "httpserver.h",
836 "md5.cc",
837 "md5.h",
838 "md5digest.cc",
839 "md5digest.h",
840 "memory_usage.cc",
841 "memory_usage.h",
842 "natserver.cc",
843 "natserver.h",
844 "natsocketfactory.cc",
845 "natsocketfactory.h",
846 "nattypes.cc",
847 "nattypes.h",
848 "proxyserver.cc",
849 "proxyserver.h",
Patrik Höglund563934e2017-09-15 09:04:28 +0200850 "refcount.h",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200851 "sha1.cc",
852 "sha1.h",
853 "sha1digest.cc",
854 "sha1digest.h",
855 "sigslottester.h",
856 "sigslottester.h.pump",
857 "testbase64.h",
858 "testclient.cc",
859 "testclient.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700860 "testechoserver.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200861 "testechoserver.h",
Steve Anton9de3aac2017-10-24 10:08:26 -0700862 "testutils.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200863 "testutils.h",
864 "timedelta.h",
865 "virtualsocketserver.cc",
866 "virtualsocketserver.h",
867 ]
868 configs += [ ":rtc_base_tests_utils_warnings_config" ]
869 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
870 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100871 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200872 ":rtc_base",
Patrik Höglund3e113432017-12-15 14:40:10 +0100873 ":stringutils",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200874 "../test:field_trial",
875 "../test:test_support",
876 ]
877 public_deps = [
878 "//testing/gmock",
879 "//testing/gtest",
880 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200881}
882
883if (rtc_include_tests) {
884 rtc_source_set("rtc_base_tests_main") {
885 testonly = true
886 sources = [
887 "unittest_main.cc",
888 ]
889 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
890 deps = [
891 ":rtc_base",
892 ":rtc_base_approved",
893 ":rtc_base_tests_utils",
894 "../test:field_trial",
895 "../test:test_support",
896 ]
897
898 public_deps = [
899 "//testing/gmock",
900 "//testing/gtest",
901 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200902 }
903
904 rtc_source_set("rtc_base_nonparallel_tests") {
905 testonly = true
906
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200907 sources = [
908 "cpu_time_unittest.cc",
909 "filerotatingstream_unittest.cc",
910 "nullsocketserver_unittest.cc",
911 "physicalsocketserver_unittest.cc",
912 "socket_unittest.cc",
913 "socket_unittest.h",
914 "socketaddress_unittest.cc",
915 ]
916 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100917 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200918 ":rtc_base",
919 ":rtc_base_tests_main",
920 ":rtc_base_tests_utils",
921 "../system_wrappers:system_wrappers",
922 "../test:test_support",
923 "//testing/gtest",
924 ]
925 if (is_win) {
926 sources += [ "win32socketserver_unittest.cc" ]
927 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200928 }
929
930 rtc_source_set("rtc_base_approved_unittests") {
931 testonly = true
932
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200933 sources = [
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200934 "atomicops_unittest.cc",
935 "base64_unittest.cc",
936 "basictypes_unittest.cc",
937 "bind_unittest.cc",
938 "bitbuffer_unittest.cc",
Alex Narestd0e196b2017-11-22 17:22:35 +0100939 "bitrateallocationstrategy_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200940 "buffer_unittest.cc",
941 "bufferqueue_unittest.cc",
942 "bytebuffer_unittest.cc",
943 "byteorder_unittest.cc",
944 "copyonwritebuffer_unittest.cc",
945 "criticalsection_unittest.cc",
946 "event_tracer_unittest.cc",
947 "event_unittest.cc",
948 "file_unittest.cc",
949 "function_view_unittest.cc",
950 "logging_unittest.cc",
951 "md5digest_unittest.cc",
Karl Wiberg65c39222017-11-22 12:25:14 +0100952 "numerics/histogram_percentile_counter_unittest.cc",
953 "numerics/mod_ops_unittest.cc",
954 "numerics/moving_max_counter_unittest.cc",
Karl Wiberge40468b2017-11-22 10:42:26 +0100955 "numerics/safe_compare_unittest.cc",
956 "numerics/safe_minmax_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200957 "onetimeevent_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200958 "pathutils_unittest.cc",
959 "platform_thread_unittest.cc",
960 "random_unittest.cc",
961 "rate_limiter_unittest.cc",
962 "rate_statistics_unittest.cc",
963 "ratetracker_unittest.cc",
964 "refcountedobject_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200965 "string_to_number_unittest.cc",
966 "stringencode_unittest.cc",
967 "stringize_macros_unittest.cc",
968 "stringutils_unittest.cc",
969 "swap_queue_unittest.cc",
970 "thread_annotations_unittest.cc",
971 "thread_checker_unittest.cc",
972 "timestampaligner_unittest.cc",
973 "timeutils_unittest.cc",
974 "virtualsocket_unittest.cc",
975 ]
976 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100977 ":checks",
978 ":rate_limiter",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200979 ":rtc_base",
980 ":rtc_base_approved",
981 ":rtc_base_tests_main",
982 ":rtc_base_tests_utils",
983 ":rtc_task_queue",
Patrik Höglunda8005cf2017-12-13 16:05:42 +0100984 ":safe_compare",
Patrik Höglund3e113432017-12-15 14:40:10 +0100985 ":stringutils",
kwiberg529662a2017-09-04 05:43:17 -0700986 "../api:array_view",
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200987 "../system_wrappers:system_wrappers",
988 "../test:test_support",
989 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200990 }
991
992 rtc_source_set("rtc_task_queue_unittests") {
Per Kjellandera7f2d842018-01-10 15:54:53 +0000993 visibility = [ "*" ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200994 testonly = true
995
Henrik Kjellanderc0362762017-06-29 08:03:04 +0200996 sources = [
997 "task_queue_unittest.cc",
998 ]
999 deps = [
mbonadei95c8f652017-08-27 23:40:10 -07001000 ":rtc_base_approved",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001001 ":rtc_base_tests_main",
1002 ":rtc_base_tests_utils",
1003 ":rtc_task_queue",
1004 "../test:test_support",
1005 ]
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001006 }
1007
1008 rtc_source_set("sequenced_task_checker_unittests") {
1009 testonly = true
1010
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001011 sources = [
1012 "sequenced_task_checker_unittest.cc",
1013 ]
1014 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001015 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001016 ":rtc_base_approved",
1017 ":rtc_base_tests_main",
1018 ":rtc_task_queue",
1019 ":sequenced_task_checker",
1020 "../test:test_support",
1021 ]
1022 }
1023
1024 rtc_source_set("weak_ptr_unittests") {
1025 testonly = true
1026
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001027 sources = [
1028 "weak_ptr_unittest.cc",
1029 ]
1030 deps = [
Tommi897e1362017-12-01 18:56:43 +01001031 ":rtc_base_approved_generic",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001032 ":rtc_base_tests_main",
1033 ":rtc_base_tests_utils",
1034 ":rtc_task_queue",
1035 ":weak_ptr",
1036 "../test:test_support",
1037 ]
1038 }
1039
1040 rtc_source_set("rtc_numerics_unittests") {
1041 testonly = true
1042
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001043 sources = [
1044 "numerics/exp_filter_unittest.cc",
Ilya Nikolaevskiyb9685752017-11-01 14:01:00 +01001045 "numerics/moving_median_filter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001046 "numerics/percentile_filter_unittest.cc",
Bjorn Tereliusa194e582017-10-25 13:07:09 +02001047 "numerics/sequence_number_util_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001048 ]
1049 deps = [
1050 ":rtc_base_approved",
1051 ":rtc_base_tests_main",
1052 ":rtc_numerics",
1053 "../test:test_support",
1054 ]
1055 }
1056
1057 config("rtc_base_unittests_config") {
1058 if (is_clang) {
1059 cflags = [ "-Wno-unused-const-variable" ]
1060 }
1061 }
1062 rtc_source_set("rtc_base_unittests") {
1063 testonly = true
1064
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001065 sources = [
1066 "callback_unittest.cc",
1067 "crc32_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001068 "helpers_unittest.cc",
1069 "httpbase_unittest.cc",
1070 "httpcommon_unittest.cc",
1071 "httpserver_unittest.cc",
1072 "ipaddress_unittest.cc",
1073 "memory_usage_unittest.cc",
1074 "messagedigest_unittest.cc",
1075 "messagequeue_unittest.cc",
1076 "nat_unittest.cc",
1077 "network_unittest.cc",
1078 "optionsfile_unittest.cc",
1079 "proxy_unittest.cc",
1080 "ptr_util_unittest.cc",
1081 "ratelimiter_unittest.cc",
1082 "rollingaccumulator_unittest.cc",
1083 "rtccertificate_unittest.cc",
1084 "rtccertificategenerator_unittest.cc",
1085 "sha1digest_unittest.cc",
deadbeef8290ddf2017-07-11 16:56:05 -07001086 "signalthread_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001087 "sigslot_unittest.cc",
1088 "sigslottester_unittest.cc",
1089 "stream_unittest.cc",
1090 "testclient_unittest.cc",
1091 "thread_unittest.cc",
1092 ]
1093 if (is_win) {
1094 sources += [
1095 "win32_unittest.cc",
1096 "win32window_unittest.cc",
1097 ]
1098 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001099 if (is_posix) {
1100 sources += [
Diogo Real1dca9d52017-08-29 12:18:32 -07001101 "openssladapter_unittest.cc",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001102 "ssladapter_unittest.cc",
1103 "sslidentity_unittest.cc",
1104 "sslstreamadapter_unittest.cc",
1105 ]
1106 }
1107 deps = [
Patrik Höglunda8005cf2017-12-13 16:05:42 +01001108 ":checks",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001109 ":rtc_base_tests_main",
1110 ":rtc_base_tests_utils",
Patrik Höglund3e113432017-12-15 14:40:10 +01001111 ":stringutils",
kwiberg84f6a3f2017-09-05 08:43:13 -07001112 "../api:optional",
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001113 "../test:test_support",
1114 ]
1115 public_deps = [
1116 ":rtc_base",
1117 ]
1118 configs += [ ":rtc_base_unittests_config" ]
Diogo Real1dca9d52017-08-29 12:18:32 -07001119 if (build_with_chromium) {
1120 include_dirs = [ "../../boringssl/src/include" ]
1121 }
1122 if (rtc_build_ssl) {
1123 deps += [ "//third_party/boringssl" ]
1124 } else {
1125 configs += [ ":external_ssl_library" ]
1126 }
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001127 }
1128}
1129
Henrik Kjellander73e21802017-06-20 08:38:58 +02001130if (is_android) {
Mirko Bonadeifbb3b7d2017-11-07 15:36:33 +00001131 rtc_android_library("base_java") {
Henrik Kjellanderc0362762017-06-29 08:03:04 +02001132 java_files = [
1133 "java/src/org/webrtc/ContextUtils.java",
1134 "java/src/org/webrtc/Logging.java",
1135 "java/src/org/webrtc/Size.java",
1136 "java/src/org/webrtc/ThreadUtils.java",
1137 ]
Henrik Kjellander73e21802017-06-20 08:38:58 +02001138 }
1139}