blob: ec92cce600266fb44de82b2d5211f736c2bbe1b5 [file] [log] [blame]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +00001# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2#
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
9import("//build/config/crypto.gni")
henrike@webrtc.orgfb1eb432014-08-15 14:44:13 +000010import("//build/config/ui.gni")
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000011import("../build/webrtc.gni")
12
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020013if (is_android) {
14 import("//build/config/android/config.gni")
15 import("//build/config/android/rules.gni")
16}
17
kjellander84ba8b62016-04-24 23:03:07 -070018config("rtc_base_approved_all_dependent_config") {
19 if (is_mac && !build_with_chromium) {
20 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
21 }
22}
23
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000024config("rtc_base_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000025 include_dirs = [
26 "//third_party/jsoncpp/overrides/include",
27 "//third_party/jsoncpp/source/include",
28 ]
29
30 defines = [
31 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000032 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000033 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000034}
35
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000036config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020037 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000038}
39
40config("openssl_config") {
41 defines = [
42 "SSL_USE_OPENSSL",
43 "HAVE_OPENSSL_SSL_H",
44 ]
45}
46
kjellanderb1f14062016-04-25 00:01:36 -070047config("rtc_base_all_dependent_config") {
48 if (is_ios) {
49 libs = [
50 "CFNetwork.framework",
Zeke Chin2d3b7e22015-07-14 12:55:44 -070051
kjellanderb1f14062016-04-25 00:01:36 -070052 #"Foundation.framework", # Already in //build/config:default_libs.
53 "Security.framework",
54 "SystemConfiguration.framework",
kjellander3bcedd32016-06-08 01:14:15 -070055 "UIKit.framework",
kjellanderb1f14062016-04-25 00:01:36 -070056 ]
57 }
58 if (is_mac) {
59 libs = [
60 "Cocoa.framework",
61 "Foundation.framework",
62 "IOKit.framework",
63 "Security.framework",
64 "SystemConfiguration.framework",
65 ]
kjellanderb1f14062016-04-25 00:01:36 -070066 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000067}
68
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000069if (is_linux && !build_with_chromium) {
70 # Provides the same functionality as the //crypto:platform target, which
71 # WebRTC cannot use as we don't sync src/crypto from Chromium.
72 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070073 deps = [
74 "//third_party/boringssl",
75 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000076 }
77}
78
kjellanderec5c9062016-08-19 01:07:30 -070079if (!rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000080 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000081 assert(rtc_ssl_root != "",
82 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
83 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000084 }
85}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000086
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000087# The subset of rtc_base approved for use outside of libjingle.
ehmaldonado38a21322016-09-02 04:10:34 -070088rtc_static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070089 defines = []
aleloi16f55a12016-08-23 08:08:23 -070090 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010091 deps = []
kjellander84ba8b62016-04-24 23:03:07 -070092 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000093
94 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +010095 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +020096 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +020097 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -070098 "bitbuffer.cc",
99 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200100 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200101 "bufferqueue.cc",
102 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700103 "bytebuffer.cc",
104 "bytebuffer.h",
105 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000106 "checks.cc",
107 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100108 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700109 "copyonwritebuffer.cc",
110 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200111 "criticalsection.cc",
112 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800113 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000114 "event.cc",
115 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000116 "event_tracer.cc",
117 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000118 "exp_filter.cc",
119 "exp_filter.h",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200120 "file.cc",
121 "file.h",
ivoc48052312016-08-25 04:43:45 -0700122 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700123 "location.cc",
124 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000125 "md5.cc",
126 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000127 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000128 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700129 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700130 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100131 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000132 "platform_file.cc",
133 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200134 "platform_thread.cc",
135 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800136 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200137 "race_checker.cc",
138 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800139 "random.cc",
140 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700141 "rate_limiter.cc",
142 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800143 "rate_statistics.cc",
144 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700145 "ratetracker.cc",
146 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800147 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800148 "safe_conversions.h",
149 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700150 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800151 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000152 "stringencode.cc",
153 "stringencode.h",
154 "stringutils.cc",
155 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700156 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700157 "systeminfo.cc",
158 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000159 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000160 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000161 "thread_checker.h",
162 "thread_checker_impl.cc",
163 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700164 "timestampaligner.cc",
165 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000166 "timeutils.cc",
167 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000168 "trace_event.h",
kwibergd3134032016-09-05 07:46:20 -0700169 "type_traits.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000170 ]
Noah Richards915590e2015-04-22 15:43:08 -0700171
aleloi16f55a12016-08-23 08:08:23 -0700172 if (is_android) {
173 libs += [ "log" ]
174 }
175
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200176 if (is_posix) {
177 sources += [ "file_posix.cc" ]
178 }
179
180 if (is_win) {
181 sources += [ "file_win.cc" ]
182 }
183
Peter Boström11e02292015-11-25 21:36:14 +0100184 if (build_with_chromium) {
185 # Dependency on chromium's logging (in //base).
186 deps += [ "//base:base" ]
187 sources += [
188 "../../webrtc_overrides/webrtc/base/logging.cc",
189 "../../webrtc_overrides/webrtc/base/logging.h",
190 ]
191 include_dirs = [ "../../webrtc_overrides" ]
192 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700193 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200194 "logging.cc",
195 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200196 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700197 ]
198 }
tommi09c60da2016-05-24 11:40:35 -0700199}
200
Per33b9c8f2016-07-15 08:25:42 +0200201config("enable_libevent_config") {
202 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
203}
204
ehmaldonado38a21322016-09-02 04:10:34 -0700205rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700206 public_deps = [
207 ":rtc_base_approved",
208 ]
tommi09c60da2016-05-24 11:40:35 -0700209
210 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700211 "sequenced_task_checker.h",
212 "sequenced_task_checker_impl.cc",
213 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700214 ]
tommic06b1332016-05-14 11:31:40 -0700215
perkj84bd5c72016-08-30 23:01:06 -0700216 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700217 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700218 "../../webrtc_overrides/webrtc/base/task_queue.cc",
219 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700220 ]
perkj84bd5c72016-08-30 23:01:06 -0700221 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700222 } else {
perkj84bd5c72016-08-30 23:01:06 -0700223 sources += [
224 "task_queue.h",
225 "task_queue_posix.h",
226 ]
227 if (rtc_build_libevent) {
228 deps = [
229 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700230 ]
231 }
perkj84bd5c72016-08-30 23:01:06 -0700232
233 if (rtc_enable_libevent) {
234 sources += [
235 "task_queue_libevent.cc",
236 "task_queue_posix.cc",
237 ]
238 all_dependent_configs = [ ":enable_libevent_config" ]
239 } else {
240 if (is_mac || is_ios) {
241 sources += [
242 "task_queue_gcd.cc",
243 "task_queue_posix.cc",
244 ]
245 }
246 if (is_win) {
247 sources += [ "task_queue_win.cc" ]
248 }
phoglundff274392016-05-17 03:44:28 -0700249 }
tommic06b1332016-05-14 11:31:40 -0700250 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000251}
252
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700253config("rtc_base_warnings_config") {
254 if (is_win && is_clang) {
255 cflags = [
256 # Disable warnings failing when compiling with Clang on Windows.
257 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
258 "-Wno-sign-compare",
259 "-Wno-missing-braces",
260 ]
261 }
262}
263
ehmaldonado38a21322016-09-02 04:10:34 -0700264rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000265 cflags = []
266 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000267 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700268 deps = [
269 "..:webrtc_common",
270 ]
Tommid44c0772016-03-11 17:12:32 -0800271 public_deps = [
272 ":rtc_base_approved",
273 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000274
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000275 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700276 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000277 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278 ]
279
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000280 public_configs = [
sdefresne0db3db92016-03-21 11:20:28 -0700281 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000282 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000283 ]
284
kjellanderb1f14062016-04-25 00:01:36 -0700285 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200286 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000287
288 sources = [
kthelgasond5472242016-09-09 03:19:48 -0700289 "applefilesystem.mm",
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000290 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000291 "asyncfile.cc",
292 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700293 "asyncinvoker-inl.h",
294 "asyncinvoker.cc",
295 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000296 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000297 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000298 "asyncresolverinterface.cc",
299 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000300 "asyncsocket.cc",
301 "asyncsocket.h",
302 "asynctcpsocket.cc",
303 "asynctcpsocket.h",
304 "asyncudpsocket.cc",
305 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000306 "autodetectproxy.cc",
307 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000308 "base64.cc",
309 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000310 "common.cc",
311 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000312 "crc32.cc",
313 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000314 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000315 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000316 "diskcache.cc",
317 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700318 "filerotatingstream.cc",
319 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000320 "fileutils.cc",
321 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000322 "firewallsocketserver.cc",
323 "firewallsocketserver.h",
324 "flags.cc",
325 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000326 "gunit_prod.h",
327 "helpers.cc",
328 "helpers.h",
329 "httpbase.cc",
330 "httpbase.h",
331 "httpclient.cc",
332 "httpclient.h",
333 "httpcommon-inl.h",
334 "httpcommon.cc",
335 "httpcommon.h",
336 "httprequest.cc",
337 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000338 "ipaddress.cc",
339 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000340 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000341 "messagedigest.cc",
342 "messagedigest.h",
343 "messagehandler.cc",
344 "messagehandler.h",
345 "messagequeue.cc",
346 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000347 "nethelpers.cc",
348 "nethelpers.h",
349 "network.cc",
350 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700351 "networkmonitor.cc",
352 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700353 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000354 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700355 "openssl.h",
356 "openssladapter.cc",
357 "openssladapter.h",
358 "openssldigest.cc",
359 "openssldigest.h",
360 "opensslidentity.cc",
361 "opensslidentity.h",
362 "opensslstreamadapter.cc",
363 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000364 "pathutils.cc",
365 "pathutils.h",
366 "physicalsocketserver.cc",
367 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000368 "proxydetect.cc",
369 "proxydetect.h",
370 "proxyinfo.cc",
371 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000372 "ratelimiter.cc",
373 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200374 "rtccertificate.cc",
375 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200376 "rtccertificategenerator.cc",
377 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000378 "sha1.cc",
379 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000380 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000381 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800382 "sharedexclusivelock.cc",
383 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000384 "signalthread.cc",
385 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000386 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000387 "sigslot.h",
388 "sigslotrepeater.h",
389 "socket.h",
390 "socketadapters.cc",
391 "socketadapters.h",
392 "socketaddress.cc",
393 "socketaddress.h",
394 "socketaddresspair.cc",
395 "socketaddresspair.h",
396 "socketfactory.h",
397 "socketpool.cc",
398 "socketpool.h",
399 "socketserver.h",
400 "socketstream.cc",
401 "socketstream.h",
402 "ssladapter.cc",
403 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000404 "sslfingerprint.cc",
405 "sslfingerprint.h",
406 "sslidentity.cc",
407 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000408 "sslsocketfactory.cc",
409 "sslsocketfactory.h",
410 "sslstreamadapter.cc",
411 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000412 "stream.cc",
413 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000414 "task.cc",
415 "task.h",
416 "taskparent.cc",
417 "taskparent.h",
418 "taskrunner.cc",
419 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000420 "thread.cc",
421 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000422 "timing.cc",
423 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000424 "urlencode.cc",
425 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000426 "worker.cc",
427 "worker.h",
428 ]
429
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700430 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
431 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700432 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700433 configs += [ "//build/config/compiler:no_chromium_code" ]
434 if (!is_win) {
435 cflags += [ "-Wno-uninitialized" ]
436 }
437
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000438 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000439 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700440 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000441 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000442
443 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700444 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000445 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000446 ]
447
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000448 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000449 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700450 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000451 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000452 "bandwidthsmoother.cc",
453 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000454 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000455 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000456 "httpserver.cc",
457 "httpserver.h",
458 "json.cc",
459 "json.h",
tkchin93411912015-07-22 12:12:17 -0700460 "logsinks.cc",
461 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000462 "mathutils.h",
463 "multipart.cc",
464 "multipart.h",
465 "natserver.cc",
466 "natserver.h",
467 "natsocketfactory.cc",
468 "natsocketfactory.h",
469 "nattypes.cc",
470 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000471 "optionsfile.cc",
472 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000473 "profiler.cc",
474 "profiler.h",
475 "proxyserver.cc",
476 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000477 "referencecountedsingletonfactory.h",
478 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200479 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000480 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000481 "sslconfig.h",
482 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700483 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000484 "testclient.cc",
485 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000486 "transformadapter.cc",
487 "transformadapter.h",
488 "versionparsing.cc",
489 "versionparsing.h",
490 "virtualsocketserver.cc",
491 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000492 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000493 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200494 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000495 ]
496
kjellandera8a7ef62016-04-05 08:13:31 -0700497 if (is_linux) {
498 sources += [
499 "dbus.cc",
500 "dbus.h",
501 "libdbusglibsymboltable.cc",
502 "libdbusglibsymboltable.h",
503 "linuxfdwalk.c",
504 "linuxfdwalk.h",
505 ]
506 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000507
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000508 if (is_posix) {
509 sources += [
510 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000511 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000512 "posix.cc",
513 "posix.h",
514 ]
515 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000516
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000517 if (is_mac) {
518 sources += [
519 "macasyncsocket.cc",
520 "macasyncsocket.h",
521 "maccocoasocketserver.h",
522 "maccocoasocketserver.mm",
523 "macsocketserver.cc",
524 "macsocketserver.h",
525 "macwindowpicker.cc",
526 "macwindowpicker.h",
527 ]
528 }
529
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000530 if (is_win) {
531 sources += [
532 "diskcache_win32.cc",
533 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000534 "win32regkey.cc",
535 "win32regkey.h",
536 "win32socketinit.cc",
537 "win32socketinit.h",
538 "win32socketserver.cc",
539 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000540 ]
541 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700542
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000543 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000544 deps += [ "//third_party/jsoncpp" ]
545 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700546 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000547
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000548 # When defined changes the include path for json.h to where it is
549 # expected to be when building json outside of the standalone build.
550 defines += [ "WEBRTC_EXTERNAL_JSON" ]
551 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000552 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000553
svaldez7f7a8192016-04-18 11:13:11 -0700554 if (rtc_build_ssl) {
555 deps += [ "//third_party/boringssl" ]
556 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700557 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000558 }
559
560 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000561 sources += [
562 "ifaddrs-android.cc",
563 "ifaddrs-android.h",
564 ]
565
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000566 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000567 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200568 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000569 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000570 }
571
kjellandera8a7ef62016-04-05 08:13:31 -0700572 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200573 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700574 "maccocoathreadhelper.h",
575 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200576 "macconversion.cc",
577 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700578 "macifaddrs_converter.cc",
579 "scoped_autorelease_pool.h",
580 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200581 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000582 }
583
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000584 if (use_x11) {
585 sources += [
586 "x11windowpicker.cc",
587 "x11windowpicker.h",
588 ]
589 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000590 "dl",
591 "rt",
592 "Xext",
593 "X11",
594 "Xcomposite",
595 "Xrender",
596 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000597 }
598
599 if (is_linux) {
600 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000601 "dl",
602 "rt",
603 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000604 }
605
606 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000607 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000608 "macutils.cc",
609 "macutils.h",
610 ]
kjellander3bcedd32016-06-08 01:14:15 -0700611 libs += [
612 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
613 "ApplicationServices.framework",
614
615 # For GetGestalt in macutils.cc.
616 "CoreServices.framework",
617 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000618 }
619
620 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000621 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000622 "win32.cc",
623 "win32.h",
624 "win32filesystem.cc",
625 "win32filesystem.h",
626 "win32securityerrors.cc",
627 "win32window.cc",
628 "win32window.h",
629 "win32windowpicker.cc",
630 "win32windowpicker.h",
631 "winfirewall.cc",
632 "winfirewall.h",
633 "winping.cc",
634 "winping.h",
635 ]
636
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000637 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000638 "crypt32.lib",
639 "iphlpapi.lib",
640 "secur32.lib",
641 ]
642
643 cflags += [
644 # Suppress warnings about WIN32_LEAN_AND_MEAN.
645 "/wd4005",
646 "/wd4703",
647 ]
648
649 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000650 }
651
kjellandera8a7ef62016-04-05 08:13:31 -0700652 if (is_posix) {
653 sources += [
654 "ifaddrs_converter.cc",
655 "ifaddrs_converter.h",
656 "unixfilesystem.cc",
657 "unixfilesystem.h",
658 ]
659 if (is_debug) {
660 # The Chromium build/common.gypi defines this for all posix
661 # _except_ for ios & mac. We want it there as well, e.g.
662 # because ASSERT and friends trigger off of it.
663 defines += [ "_DEBUG" ]
664 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000665 }
666
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000667 if (is_linux || is_android) {
668 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000669 "linux.cc",
670 "linux.h",
671 ]
672 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700673
674 if (is_nacl) {
675 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
676 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800677 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700678 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700679 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700680 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700681 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700682 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000683}
tkchin42f580e2015-11-26 23:18:23 -0800684
ehmaldonado38a21322016-09-02 04:10:34 -0700685rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800686 sources = [
687 "gtest_prod_util.h",
688 ]
689}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200690
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200691if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700692 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200693 defines = [ "GTEST_RELATIVE_PATH" ]
694 }
695
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700696 config("rtc_base_tests_utils_warnings_config") {
697 if (is_win && is_clang) {
698 cflags = [
699 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
700 "-Wno-reorder",
701 "-Wno-sign-compare",
702 ]
703 }
704 }
705
ehmaldonado38a21322016-09-02 04:10:34 -0700706 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200707 testonly = true
708 sources = [
709 # Also use this as a convenient dumping ground for misc files that are
710 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700711 "fakeclock.cc",
712 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200713 "fakenetwork.h",
714 "fakesslidentity.h",
715 "faketaskrunner.h",
716 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700717 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200718 "testbase64.h",
719 "testechoserver.h",
720 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700721 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200722 "unittest_main.cc",
723 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700724 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700725 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200726 deps = [
727 ":rtc_base",
728 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200729 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200730 ]
731 public_deps = [
732 "//testing/gtest",
733 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700734
735 if (is_clang) {
736 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700737 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700738 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200739 }
740}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200741
742if (is_android) {
743 android_library("base_java") {
744 java_files = [
745 "java/src/org/webrtc/Logging.java",
746 "java/src/org/webrtc/Size.java",
747 "java/src/org/webrtc/ThreadUtils.java",
748 ]
749
750 deps = [
751 "//base:base_java",
752 ]
753 }
754}