blob: ac1b30b6af5fe6a50711c05f51c7156fb7eab9da [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
kjellander70bed7d2015-11-23 17:23:44 -080013import("//build_overrides/webrtc.gni")
kjellander70bed7d2015-11-23 17:23:44 -080014
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +020015if (is_android) {
16 import("//build/config/android/config.gni")
17 import("//build/config/android/rules.gni")
18}
19
kjellander84ba8b62016-04-24 23:03:07 -070020config("rtc_base_approved_all_dependent_config") {
21 if (is_mac && !build_with_chromium) {
22 libs = [ "Foundation.framework" ] # needed for logging_mac.mm
23 }
24}
25
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000026config("rtc_base_config") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000027 include_dirs = [
28 "//third_party/jsoncpp/overrides/include",
29 "//third_party/jsoncpp/source/include",
30 ]
31
32 defines = [
33 "FEATURE_ENABLE_SSL",
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000034 "LOGGING=1",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000035 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000036}
37
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +000038config("rtc_base_chromium_config") {
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020039 defines = [ "NO_MAIN_THREAD_WRAPPING" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000040}
41
42config("openssl_config") {
43 defines = [
44 "SSL_USE_OPENSSL",
45 "HAVE_OPENSSL_SSL_H",
46 ]
47}
48
kjellanderb1f14062016-04-25 00:01:36 -070049config("rtc_base_all_dependent_config") {
50 if (is_ios) {
51 libs = [
52 "CFNetwork.framework",
Zeke Chin2d3b7e22015-07-14 12:55:44 -070053
kjellanderb1f14062016-04-25 00:01:36 -070054 #"Foundation.framework", # Already in //build/config:default_libs.
55 "Security.framework",
56 "SystemConfiguration.framework",
kjellander3bcedd32016-06-08 01:14:15 -070057 "UIKit.framework",
kjellanderb1f14062016-04-25 00:01:36 -070058 ]
59 }
60 if (is_mac) {
61 libs = [
62 "Cocoa.framework",
63 "Foundation.framework",
64 "IOKit.framework",
65 "Security.framework",
66 "SystemConfiguration.framework",
67 ]
68 if (current_cpu == "x86") {
kjellander781e0c02016-06-13 05:41:11 -070069 libs += [ "Carbon.framework" ]
kjellanderb1f14062016-04-25 00:01:36 -070070 }
71 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000072}
73
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000074if (is_linux && !build_with_chromium) {
75 # Provides the same functionality as the //crypto:platform target, which
76 # WebRTC cannot use as we don't sync src/crypto from Chromium.
77 group("linux_system_ssl") {
svaldez7f7a8192016-04-18 11:13:11 -070078 deps = [
79 "//third_party/boringssl",
80 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +000081 }
82}
83
kjellanderec5c9062016-08-19 01:07:30 -070084if (!rtc_build_ssl) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000085 config("external_ssl_library") {
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +000086 assert(rtc_ssl_root != "",
87 "You must specify rtc_ssl_root when rtc_build_ssl==0.")
88 include_dirs = [ rtc_ssl_root ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +000089 }
90}
kjellander@webrtc.org4a251992014-08-18 17:56:28 +000091
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000092# The subset of rtc_base approved for use outside of libjingle.
ehmaldonado38a21322016-09-02 04:10:34 -070093rtc_static_library("rtc_base_approved") {
tommic06b1332016-05-14 11:31:40 -070094 defines = []
aleloi16f55a12016-08-23 08:08:23 -070095 libs = []
Peter Boström11e02292015-11-25 21:36:14 +010096 deps = []
kjellander84ba8b62016-04-24 23:03:07 -070097 all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +000098
99 sources = [
Karl Wiberge2a83ee2015-10-26 19:51:29 +0100100 "array_view.h",
Peter Boströmff019b02015-04-30 14:16:07 +0200101 "atomicops.h",
Tommicc4fdde2016-04-22 19:34:59 +0200102 "bind.h",
Noah Richards915590e2015-04-22 15:43:08 -0700103 "bitbuffer.cc",
104 "bitbuffer.h",
Karl Wiberg94784372015-04-20 14:03:07 +0200105 "buffer.h",
Joachim Bauch6f2ef742015-05-21 17:52:01 +0200106 "bufferqueue.cc",
107 "bufferqueue.h",
Noah Richards915590e2015-04-22 15:43:08 -0700108 "bytebuffer.cc",
109 "bytebuffer.h",
110 "byteorder.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000111 "checks.cc",
112 "checks.h",
Peter Boströmfd5dae32015-11-26 12:54:24 +0100113 "constructormagic.h",
tommiebfbab52016-03-19 11:36:18 -0700114 "copyonwritebuffer.cc",
115 "copyonwritebuffer.h",
Tommi494f2092015-04-27 17:39:23 +0200116 "criticalsection.cc",
117 "criticalsection.h",
kwiberg45fd9fe2015-12-16 01:09:16 -0800118 "deprecation.h",
tommi@webrtc.org4c0fd962015-02-09 10:23:27 +0000119 "event.cc",
120 "event.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000121 "event_tracer.cc",
122 "event_tracer.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000123 "exp_filter.cc",
124 "exp_filter.h",
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200125 "file.cc",
126 "file.h",
ivoc48052312016-08-25 04:43:45 -0700127 "format_macros.h",
Taylor Brandstetter5d97a9a2016-06-10 14:17:27 -0700128 "location.cc",
129 "location.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000130 "md5.cc",
131 "md5.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000132 "md5digest.cc",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000133 "md5digest.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700134 "mod_ops.h",
skvlad98bb6642016-04-07 15:36:45 -0700135 "onetimeevent.h",
Karl Wibergbe579832015-11-10 22:34:18 +0100136 "optional.h",
xians@webrtc.orge46bc772014-10-10 08:36:56 +0000137 "platform_file.cc",
138 "platform_file.h",
Tommibebc6902015-05-18 09:51:42 +0200139 "platform_thread.cc",
140 "platform_thread.h",
pbos12411ef2015-11-23 14:47:56 -0800141 "platform_thread_types.h",
Peter Boström02bafc62016-07-01 12:45:15 +0200142 "race_checker.cc",
143 "race_checker.h",
terelius84e78f92015-12-10 01:50:55 -0800144 "random.cc",
145 "random.h",
sprangcd349d92016-07-13 09:11:28 -0700146 "rate_limiter.cc",
147 "rate_limiter.h",
tkchinf75d0082016-02-23 22:49:42 -0800148 "rate_statistics.cc",
149 "rate_statistics.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700150 "ratetracker.cc",
151 "ratetracker.h",
tommi04af8392016-02-14 08:11:10 -0800152 "refcount.h",
Tommid44c0772016-03-11 17:12:32 -0800153 "safe_conversions.h",
154 "safe_conversions_impl.h",
kwibergac554ee2016-09-02 00:39:33 -0700155 "sanitizer.h",
tommi04af8392016-02-14 08:11:10 -0800156 "scoped_ref_ptr.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000157 "stringencode.cc",
158 "stringencode.h",
159 "stringutils.cc",
160 "stringutils.h",
terelius85fa7d52016-03-24 01:51:52 -0700161 "swap_queue.h",
tommiefefda62015-08-20 05:04:09 -0700162 "systeminfo.cc",
163 "systeminfo.h",
kwiberg@webrtc.orgaf9d56f2015-01-13 20:32:04 +0000164 "template_util.h",
pbos@webrtc.org38344ed2014-09-24 06:05:00 +0000165 "thread_annotations.h",
tommi@webrtc.org04cd4662015-01-26 15:27:29 +0000166 "thread_checker.h",
167 "thread_checker_impl.cc",
168 "thread_checker_impl.h",
nisse191b3592016-06-22 08:36:53 -0700169 "timestampaligner.cc",
170 "timestampaligner.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000171 "timeutils.cc",
172 "timeutils.h",
tommi@webrtc.org7c64ed22015-03-17 14:25:37 +0000173 "trace_event.h",
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000174 ]
Noah Richards915590e2015-04-22 15:43:08 -0700175
aleloi16f55a12016-08-23 08:08:23 -0700176 if (is_android) {
177 libs += [ "log" ]
178 }
179
Viktor Palmkvist4ec6a0c2016-09-02 13:38:32 +0200180 if (is_posix) {
181 sources += [ "file_posix.cc" ]
182 }
183
184 if (is_win) {
185 sources += [ "file_win.cc" ]
186 }
187
Peter Boström11e02292015-11-25 21:36:14 +0100188 if (build_with_chromium) {
189 # Dependency on chromium's logging (in //base).
190 deps += [ "//base:base" ]
191 sources += [
192 "../../webrtc_overrides/webrtc/base/logging.cc",
193 "../../webrtc_overrides/webrtc/base/logging.h",
194 ]
195 include_dirs = [ "../../webrtc_overrides" ]
196 } else {
Noah Richards915590e2015-04-22 15:43:08 -0700197 sources += [
Tommi23edcff2015-05-25 10:45:43 +0200198 "logging.cc",
199 "logging.h",
Tommi09ca02e2016-04-24 17:32:48 +0200200 "logging_mac.mm",
Noah Richards915590e2015-04-22 15:43:08 -0700201 ]
202 }
tommi09c60da2016-05-24 11:40:35 -0700203}
204
Per33b9c8f2016-07-15 08:25:42 +0200205config("enable_libevent_config") {
206 defines = [ "WEBRTC_BUILD_LIBEVENT" ]
207}
208
ehmaldonado38a21322016-09-02 04:10:34 -0700209rtc_static_library("rtc_task_queue") {
kjellanderbac04122016-06-02 02:18:48 -0700210 public_deps = [
211 ":rtc_base_approved",
212 ]
tommi09c60da2016-05-24 11:40:35 -0700213
214 sources = [
perkj9c16fe82016-07-12 15:04:07 -0700215 "sequenced_task_checker.h",
216 "sequenced_task_checker_impl.cc",
217 "sequenced_task_checker_impl.h",
tommi09c60da2016-05-24 11:40:35 -0700218 ]
tommic06b1332016-05-14 11:31:40 -0700219
perkj84bd5c72016-08-30 23:01:06 -0700220 if (build_with_chromium) {
phoglundff274392016-05-17 03:44:28 -0700221 sources += [
perkj84bd5c72016-08-30 23:01:06 -0700222 "../../webrtc_overrides/webrtc/base/task_queue.cc",
223 "../../webrtc_overrides/webrtc/base/task_queue.h",
phoglundff274392016-05-17 03:44:28 -0700224 ]
perkj84bd5c72016-08-30 23:01:06 -0700225 include_dirs = [ "../../webrtc_overrides" ]
phoglundff274392016-05-17 03:44:28 -0700226 } else {
perkj84bd5c72016-08-30 23:01:06 -0700227 sources += [
228 "task_queue.h",
229 "task_queue_posix.h",
230 ]
231 if (rtc_build_libevent) {
232 deps = [
233 "//base/third_party/libevent",
phoglundff274392016-05-17 03:44:28 -0700234 ]
235 }
perkj84bd5c72016-08-30 23:01:06 -0700236
237 if (rtc_enable_libevent) {
238 sources += [
239 "task_queue_libevent.cc",
240 "task_queue_posix.cc",
241 ]
242 all_dependent_configs = [ ":enable_libevent_config" ]
243 } else {
244 if (is_mac || is_ios) {
245 sources += [
246 "task_queue_gcd.cc",
247 "task_queue_posix.cc",
248 ]
249 }
250 if (is_win) {
251 sources += [ "task_queue_win.cc" ]
252 }
phoglundff274392016-05-17 03:44:28 -0700253 }
tommic06b1332016-05-14 11:31:40 -0700254 }
andrew@webrtc.org6ae5a6d2014-09-16 01:03:29 +0000255}
256
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700257config("rtc_base_warnings_config") {
258 if (is_win && is_clang) {
259 cflags = [
260 # Disable warnings failing when compiling with Clang on Windows.
261 # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
262 "-Wno-sign-compare",
263 "-Wno-missing-braces",
264 ]
265 }
266}
267
ehmaldonado38a21322016-09-02 04:10:34 -0700268rtc_static_library("rtc_base") {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000269 cflags = []
270 cflags_cc = []
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000271 libs = []
kjellandera8a7ef62016-04-05 08:13:31 -0700272 deps = [
273 "..:webrtc_common",
274 ]
Tommid44c0772016-03-11 17:12:32 -0800275 public_deps = [
276 ":rtc_base_approved",
277 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000278
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000279 configs += [
sdefresne0db3db92016-03-21 11:20:28 -0700280 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000281 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000282 ]
283
kjellander@webrtc.orgf21ea912014-09-28 17:37:22 +0000284 public_configs = [
sdefresne0db3db92016-03-21 11:20:28 -0700285 ":openssl_config",
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000286 ":rtc_base_config",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000287 ]
288
kjellanderb1f14062016-04-25 00:01:36 -0700289 all_dependent_configs = [ ":rtc_base_all_dependent_config" ]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200290 defines = [ "LOGGING=1" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000291
292 sources = [
pkasting@chromium.orge7a4a122015-01-28 21:36:55 +0000293 "arraysize.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000294 "asyncfile.cc",
295 "asyncfile.h",
Guo-wei Shiehecb9a70c2015-06-21 23:37:01 -0700296 "asyncinvoker-inl.h",
297 "asyncinvoker.cc",
298 "asyncinvoker.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000299 "asyncpacketsocket.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000300 "asyncpacketsocket.h",
kwiberg@webrtc.orgdad85aa2015-03-10 00:59:54 +0000301 "asyncresolverinterface.cc",
302 "asyncresolverinterface.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000303 "asyncsocket.cc",
304 "asyncsocket.h",
305 "asynctcpsocket.cc",
306 "asynctcpsocket.h",
307 "asyncudpsocket.cc",
308 "asyncudpsocket.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000309 "autodetectproxy.cc",
310 "autodetectproxy.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000311 "base64.cc",
312 "base64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000313 "common.cc",
314 "common.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000315 "crc32.cc",
316 "crc32.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000317 "cryptstring.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000318 "cryptstring.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000319 "diskcache.cc",
320 "diskcache.h",
tkchin93411912015-07-22 12:12:17 -0700321 "filerotatingstream.cc",
322 "filerotatingstream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000323 "fileutils.cc",
324 "fileutils.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000325 "firewallsocketserver.cc",
326 "firewallsocketserver.h",
327 "flags.cc",
328 "flags.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000329 "gunit_prod.h",
330 "helpers.cc",
331 "helpers.h",
332 "httpbase.cc",
333 "httpbase.h",
334 "httpclient.cc",
335 "httpclient.h",
336 "httpcommon-inl.h",
337 "httpcommon.cc",
338 "httpcommon.h",
339 "httprequest.cc",
340 "httprequest.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000341 "iosfilesystem.mm",
342 "ipaddress.cc",
343 "ipaddress.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000344 "linked_ptr.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000345 "messagedigest.cc",
346 "messagedigest.h",
347 "messagehandler.cc",
348 "messagehandler.h",
349 "messagequeue.cc",
350 "messagequeue.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000351 "nethelpers.cc",
352 "nethelpers.h",
353 "network.cc",
354 "network.h",
honghaiz023f3ef2015-10-19 09:39:32 -0700355 "networkmonitor.cc",
356 "networkmonitor.h",
danilchapbebf54c2016-04-28 01:32:48 -0700357 "nullsocketserver.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000358 "nullsocketserver.h",
svaldez7f7a8192016-04-18 11:13:11 -0700359 "openssl.h",
360 "openssladapter.cc",
361 "openssladapter.h",
362 "openssldigest.cc",
363 "openssldigest.h",
364 "opensslidentity.cc",
365 "opensslidentity.h",
366 "opensslstreamadapter.cc",
367 "opensslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000368 "pathutils.cc",
369 "pathutils.h",
370 "physicalsocketserver.cc",
371 "physicalsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000372 "proxydetect.cc",
373 "proxydetect.h",
374 "proxyinfo.cc",
375 "proxyinfo.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000376 "ratelimiter.cc",
377 "ratelimiter.h",
Henrik Boström41b3a382015-08-20 12:15:54 +0200378 "rtccertificate.cc",
379 "rtccertificate.h",
Henrik Boströmda3a1da2016-04-15 17:55:21 +0200380 "rtccertificategenerator.cc",
381 "rtccertificategenerator.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000382 "sha1.cc",
383 "sha1.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000384 "sha1digest.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000385 "sha1digest.h",
jbaucha18f6382016-02-21 01:56:16 -0800386 "sharedexclusivelock.cc",
387 "sharedexclusivelock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000388 "signalthread.cc",
389 "signalthread.h",
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000390 "sigslot.cc",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000391 "sigslot.h",
392 "sigslotrepeater.h",
393 "socket.h",
394 "socketadapters.cc",
395 "socketadapters.h",
396 "socketaddress.cc",
397 "socketaddress.h",
398 "socketaddresspair.cc",
399 "socketaddresspair.h",
400 "socketfactory.h",
401 "socketpool.cc",
402 "socketpool.h",
403 "socketserver.h",
404 "socketstream.cc",
405 "socketstream.h",
406 "ssladapter.cc",
407 "ssladapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000408 "sslfingerprint.cc",
409 "sslfingerprint.h",
410 "sslidentity.cc",
411 "sslidentity.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000412 "sslsocketfactory.cc",
413 "sslsocketfactory.h",
414 "sslstreamadapter.cc",
415 "sslstreamadapter.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000416 "stream.cc",
417 "stream.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000418 "task.cc",
419 "task.h",
420 "taskparent.cc",
421 "taskparent.h",
422 "taskrunner.cc",
423 "taskrunner.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000424 "thread.cc",
425 "thread.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000426 "timing.cc",
427 "timing.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000428 "urlencode.cc",
429 "urlencode.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000430 "worker.cc",
431 "worker.h",
432 ]
433
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700434 # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
435 # compiler settings.
ehmaldonado38a21322016-09-02 04:10:34 -0700436 suppressed_configs += [ "//build/config/compiler:chromium_code" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700437 configs += [ "//build/config/compiler:no_chromium_code" ]
438 if (!is_win) {
439 cflags += [ "-Wno-uninitialized" ]
440 }
441
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000442 if (build_with_chromium) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000443 if (is_win) {
henrikgee2bf412015-09-30 03:48:52 -0700444 sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000445 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000446
447 include_dirs = [
henrikgee2bf412015-09-30 03:48:52 -0700448 "../../webrtc_overrides",
henrike@webrtc.org6ac22e62014-08-11 21:06:30 +0000449 "../../boringssl/src/include",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000450 ]
451
kjellander@webrtc.orgc429b822015-01-21 20:22:33 +0000452 public_configs += [ ":rtc_base_chromium_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000453 } else {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700454 configs += [ ":rtc_base_warnings_config" ]
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000455 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000456 "bandwidthsmoother.cc",
457 "bandwidthsmoother.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000458 "callback.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000459 "fileutils_mock.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000460 "httpserver.cc",
461 "httpserver.h",
462 "json.cc",
463 "json.h",
tkchin93411912015-07-22 12:12:17 -0700464 "logsinks.cc",
465 "logsinks.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000466 "mathutils.h",
467 "multipart.cc",
468 "multipart.h",
469 "natserver.cc",
470 "natserver.h",
471 "natsocketfactory.cc",
472 "natsocketfactory.h",
473 "nattypes.cc",
474 "nattypes.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000475 "optionsfile.cc",
476 "optionsfile.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000477 "profiler.cc",
478 "profiler.h",
479 "proxyserver.cc",
480 "proxyserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000481 "referencecountedsingletonfactory.h",
482 "rollingaccumulator.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200483 "scopedptrcollection.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000484 "sec_buffer.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000485 "sslconfig.h",
486 "sslroots.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700487 "testbase64.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000488 "testclient.cc",
489 "testclient.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000490 "transformadapter.cc",
491 "transformadapter.h",
492 "versionparsing.cc",
493 "versionparsing.h",
494 "virtualsocketserver.cc",
495 "virtualsocketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000496 "window.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000497 "windowpicker.h",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200498 "windowpickerfactory.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000499 ]
500
kjellandera8a7ef62016-04-05 08:13:31 -0700501 if (is_linux) {
502 sources += [
503 "dbus.cc",
504 "dbus.h",
505 "libdbusglibsymboltable.cc",
506 "libdbusglibsymboltable.h",
507 "linuxfdwalk.c",
508 "linuxfdwalk.h",
509 ]
510 }
kwiberg@webrtc.orgac2d27d2015-02-26 13:59:22 +0000511
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000512 if (is_posix) {
513 sources += [
514 "latebindingsymboltable.cc",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000515 "latebindingsymboltable.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000516 "posix.cc",
517 "posix.h",
518 ]
519 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000520
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000521 if (is_mac) {
522 sources += [
523 "macasyncsocket.cc",
524 "macasyncsocket.h",
525 "maccocoasocketserver.h",
526 "maccocoasocketserver.mm",
527 "macsocketserver.cc",
528 "macsocketserver.h",
529 "macwindowpicker.cc",
530 "macwindowpicker.h",
531 ]
532 }
533
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000534 if (is_win) {
535 sources += [
536 "diskcache_win32.cc",
537 "diskcache_win32.h",
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000538 "win32regkey.cc",
539 "win32regkey.h",
540 "win32socketinit.cc",
541 "win32socketinit.h",
542 "win32socketserver.cc",
543 "win32socketserver.h",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000544 ]
545 }
ehmaldonado4bc4d272016-08-25 04:15:40 -0700546
kjellander@webrtc.org6d08ca62014-09-07 17:36:10 +0000547 if (rtc_build_json) {
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000548 deps += [ "//third_party/jsoncpp" ]
549 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700550 include_dirs = [ "$rtc_jsoncpp_root" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000551
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000552 # When defined changes the include path for json.h to where it is
553 # expected to be when building json outside of the standalone build.
554 defines += [ "WEBRTC_EXTERNAL_JSON" ]
555 }
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000556 } # !build_with_chromium
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000557
svaldez7f7a8192016-04-18 11:13:11 -0700558 if (rtc_build_ssl) {
559 deps += [ "//third_party/boringssl" ]
560 } else {
kjellanderec5c9062016-08-19 01:07:30 -0700561 configs += [ ":external_ssl_library" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000562 }
563
564 if (is_android) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000565 sources += [
566 "ifaddrs-android.cc",
567 "ifaddrs-android.h",
568 ]
569
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000570 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000571 "log",
Henrik Kjellander57e5fd22015-05-25 12:55:39 +0200572 "GLESv2",
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000573 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000574 }
575
kjellandera8a7ef62016-04-05 08:13:31 -0700576 if (is_ios || is_mac) {
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200577 sources += [
sdefresne60624cd2016-03-22 03:32:14 -0700578 "maccocoathreadhelper.h",
579 "maccocoathreadhelper.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200580 "macconversion.cc",
581 "macconversion.h",
kjellandera8a7ef62016-04-05 08:13:31 -0700582 "macifaddrs_converter.cc",
583 "scoped_autorelease_pool.h",
584 "scoped_autorelease_pool.mm",
Yuriy Shevchuk02ff9112015-05-21 13:50:59 +0200585 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000586 }
587
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000588 if (use_x11) {
589 sources += [
590 "x11windowpicker.cc",
591 "x11windowpicker.h",
592 ]
593 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000594 "dl",
595 "rt",
596 "Xext",
597 "X11",
598 "Xcomposite",
599 "Xrender",
600 ]
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000601 }
602
603 if (is_linux) {
604 libs += [
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000605 "dl",
606 "rt",
607 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000608 }
609
610 if (is_mac) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000611 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000612 "macutils.cc",
613 "macutils.h",
614 ]
kjellander3bcedd32016-06-08 01:14:15 -0700615 libs += [
616 # For ProcessInformationCopyDictionary in unixfilesystem.cc.
617 "ApplicationServices.framework",
618
619 # For GetGestalt in macutils.cc.
620 "CoreServices.framework",
621 ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000622 }
623
624 if (is_win) {
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000625 sources += [
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000626 "win32.cc",
627 "win32.h",
628 "win32filesystem.cc",
629 "win32filesystem.h",
630 "win32securityerrors.cc",
631 "win32window.cc",
632 "win32window.h",
633 "win32windowpicker.cc",
634 "win32windowpicker.h",
635 "winfirewall.cc",
636 "winfirewall.h",
637 "winping.cc",
638 "winping.h",
639 ]
640
kjellander@webrtc.orge281f7f2014-09-02 11:22:06 +0000641 libs += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000642 "crypt32.lib",
643 "iphlpapi.lib",
644 "secur32.lib",
645 ]
646
647 cflags += [
648 # Suppress warnings about WIN32_LEAN_AND_MEAN.
649 "/wd4005",
650 "/wd4703",
651 ]
652
653 defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ]
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000654 }
655
kjellandera8a7ef62016-04-05 08:13:31 -0700656 if (is_posix) {
657 sources += [
658 "ifaddrs_converter.cc",
659 "ifaddrs_converter.h",
660 "unixfilesystem.cc",
661 "unixfilesystem.h",
662 ]
663 if (is_debug) {
664 # The Chromium build/common.gypi defines this for all posix
665 # _except_ for ios & mac. We want it there as well, e.g.
666 # because ASSERT and friends trigger off of it.
667 defines += [ "_DEBUG" ]
668 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000669 }
670
kjellander@webrtc.org72273912015-02-23 19:08:31 +0000671 if (is_ios || (is_mac && current_cpu != "x86")) {
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000672 defines += [ "CARBON_DEPRECATED=YES" ]
673 }
674
kjellander@webrtc.org7497fa72014-06-28 18:05:22 +0000675 if (is_linux || is_android) {
676 sources += [
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000677 "linux.cc",
678 "linux.h",
679 ]
680 }
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700681
682 if (is_nacl) {
683 deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
684 defines += [ "timezone=_timezone" ]
Guo-wei Shiehdb21f632016-01-09 13:12:04 -0800685 sources -= [ "ifaddrs_converter.cc" ]
Sergey Ulanov098c1de2015-09-01 11:36:40 -0700686 }
ehmaldonado3e3b6f22016-08-29 02:56:06 -0700687 if (is_win && is_clang) {
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700688 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700689 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700690 }
kjellander@webrtc.org851a09e2014-06-17 08:54:03 +0000691}
tkchin42f580e2015-11-26 23:18:23 -0800692
ehmaldonado38a21322016-09-02 04:10:34 -0700693rtc_source_set("gtest_prod") {
kjellander988d31e2016-02-05 00:23:50 -0800694 sources = [
695 "gtest_prod_util.h",
696 ]
697}
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200698
kjellander@webrtc.orgaff499c2016-06-06 23:04:31 +0200699if (rtc_include_tests) {
kjellander82a94492016-06-12 22:12:01 -0700700 config("rtc_base_tests_utils_exported_config") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200701 defines = [ "GTEST_RELATIVE_PATH" ]
702 }
703
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700704 config("rtc_base_tests_utils_warnings_config") {
705 if (is_win && is_clang) {
706 cflags = [
707 # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6270
708 "-Wno-reorder",
709 "-Wno-sign-compare",
710 ]
711 }
712 }
713
ehmaldonado38a21322016-09-02 04:10:34 -0700714 rtc_source_set("rtc_base_tests_utils") {
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200715 testonly = true
716 sources = [
717 # Also use this as a convenient dumping ground for misc files that are
718 # included by multiple targets below.
kjellander82a94492016-06-12 22:12:01 -0700719 "fakeclock.cc",
720 "fakeclock.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200721 "fakenetwork.h",
722 "fakesslidentity.h",
723 "faketaskrunner.h",
724 "gunit.h",
hbos8f956de2016-08-15 06:59:59 -0700725 "test/faketiming.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200726 "testbase64.h",
727 "testechoserver.h",
728 "testutils.h",
kjellander82a94492016-06-12 22:12:01 -0700729 "timedelta.h",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200730 "unittest_main.cc",
731 ]
ehmaldonado7a2ce0b2016-09-05 01:35:44 -0700732 configs += [ ":rtc_base_tests_utils_warnings_config" ]
ehmaldonadoe9cc6862016-09-05 06:10:18 -0700733 public_configs = [ ":rtc_base_tests_utils_exported_config" ]
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200734 deps = [
735 ":rtc_base",
736 "../test:field_trial",
Niels Möllerb00dc382016-06-16 12:44:30 +0200737 "../test:test_support",
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200738 ]
739 public_deps = [
740 "//testing/gtest",
741 ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700742
743 if (is_clang) {
744 # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
ehmaldonado38a21322016-09-02 04:10:34 -0700745 suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
ehmaldonadod02fe4b2016-08-26 13:31:24 -0700746 }
kjellander@webrtc.org3ee56142016-06-03 15:57:02 +0200747 }
748}
Sami Kalliomaki9c0c75b2016-06-29 14:55:00 +0200749
750if (is_android) {
751 android_library("base_java") {
752 java_files = [
753 "java/src/org/webrtc/Logging.java",
754 "java/src/org/webrtc/Size.java",
755 "java/src/org/webrtc/ThreadUtils.java",
756 ]
757
758 deps = [
759 "//base:base_java",
760 ]
761 }
762}